//************************************************** **************** **************************************************//
//************************************************** SEFICOM_CALENDAR **************************************************//
//************************************************** **************** **************************************************//



function create_calendar()
{


	//************************* DEFAULTS *************************//
	this.ca_weekdays = new Array("Mo", "Di", "Mi", "Do", "Fr", "Sa", "So");
	this.ca_months = new Array("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember");
	
	this.selected_date = null;
	
	this.box_width = null;
	this.box_height = null;
	
	this.createID = null;
	this.rootdir = null;
	//************************* DEFAULTS *************************//
	
	
	
	//************************* CONSTRUCTOR *************************//
	this.constructor = function(selDate, CID, rDir, bWidth, bHeight)
	{
		if(selDate == false || selDate == null || selDate== "")
		{
			this.selected_date = new Date();
		}
		else
		{
			this.selected_date = selDate;
		}
		
		this.createID = CID;
		this.rootdir = rDir;
		this.box_width = bWidth;
		this.box_height = bHeight;
		
		this.layout();
		this.days();
	}
	//************************* CONSTRUCTOR *************************//
	
	
	//************************* GETCW *************************//
	this.getCW = function(date)
	{
	    DoDat=this.donnerstag(date);
	    kwjahr=DoDat.getFullYear();
	    DoKW1=this.donnerstag(new Date(kwjahr,0,4));
	    kw=Math.floor(1.5+(DoDat.getTime()-DoKW1.getTime())/86400000/7);
	    return kw;
	}
	
	this.donnerstag = function(date)
	{
	  var Do=new Date();
	  Do.setTime(date.getTime() + (3-((date.getDay()+6) % 7)) * 86400000);
	  return Do;
	}
	//************************* GETCW *************************//
	
	
	//************************* CHANGE_MONTH *************************//
	this.change_month = function(direction)
	{
		
		var operation_date = new Date(this.selected_date);
		
		if(direction == "last")
		{
			operation_date.setDate(1);
			operation_date.setMonth(operation_date.getMonth() - 1);
			this.selected_date = operation_date;
			this.days();
		}
		
		if(direction == "next")
		{
			operation_date.setDate(1);
			operation_date.setMonth(operation_date.getMonth() + 1);
			this.selected_date = operation_date;
			this.days();
		}
	
	}
	//************************* CHANGE_MONTH *************************//
	
	
	
	//************************* LAYOUT *************************//
	this.layout = function()
	{
	
	// Container und Vaterelement des Kalenders
	var ca_container = document.createElement("div");
	ca_container.setAttribute("name", "ca_container", 0);
	ca_container.setAttribute("id", "ca_container", 0);
	
	
	
		//*************** ca_menubar ***************//
		var ca_menubar = document.createElement("div");
		ca_menubar.setAttribute("name", "ca_menubar", 0);
		ca_menubar.setAttribute("id", "ca_menubar", 0);
		ca_container.appendChild(ca_menubar);
		
		
			// ca_button_left
			var ca_button_left = document.createElement("input");
			ca_button_left.setAttribute("type", "button", 0);
			ca_button_left.setAttribute("name", "ca_button_left", 0);
			ca_button_left.setAttribute("id", "ca_button_left", 0);
			ca_button_left.setAttribute("class", "ca_button", 0);
			ca_button_left.setAttribute("value", "«", 0);
			ca_button_left.setAttribute("onclick", this.createID + ".change_month('last');", 0);
			ca_menubar.appendChild(ca_button_left);
			
			// ca_middle
			var ca_middle = document.createElement("div");
			ca_middle.setAttribute("name", "ca_middle", 0);
			ca_middle.setAttribute("id", "ca_middle", 0);
			ca_menubar.appendChild(ca_middle);
			ca_middle.style.width = (this.box_width * 8 - 60 + 1) + "px";
			
			// ca_button_right
			var ca_button_right = document.createElement("input");
			ca_button_right.setAttribute("type", "button", 0);
			ca_button_right.setAttribute("name", "ca_button_right", 0);
			ca_button_right.setAttribute("id", "ca_button_right", 0);
			ca_button_right.setAttribute("class", "ca_button", 0);
			ca_button_right.setAttribute("value", "»", 0);
			ca_button_right.setAttribute("onclick", this.createID + ".change_month('next');", 0);
			ca_menubar.appendChild(ca_button_right);
		
		
		//*************** ca_menubar ***************//
		
		
		
		//*************** ca_content ***************//
		var ca_content = document.createElement("div");
		ca_content.setAttribute("name", "ca_content", 0);
		ca_content.setAttribute("id", "ca_content", 0);
		ca_container.appendChild(ca_content);
		
		
			// ca_kw
			var ca_kw = document.createElement("div");
			ca_kw.setAttribute("name", "ca_kw", 0);
			ca_kw.setAttribute("id", "ca_kw", 0);
			ca_kw.style.width = this.box_width + "px";
			ca_content.appendChild(ca_kw);
			
				// ca_kw_named
				var ca_kw_named = document.createElement("div");
				ca_kw_named.setAttribute("name", "ca_kw_named", 0);
				ca_kw_named.setAttribute("id", "ca_kw_named", 0);
				ca_kw_named.setAttribute("class", "kw", 0);
				ca_kw_named.style.width = this.box_width + "px";
				ca_kw_named.style.height = this.box_height + "px";
				ca_kw_named.style.lineHeight = this.box_height + "px";
				ca_kw.appendChild(ca_kw_named);
				var ca_kw_named_text = document.createTextNode("KW");
				ca_kw_named.appendChild(ca_kw_named_text);
				
				// ca_kw_empty
				for(var ca_c = 0; ca_c < 6; ca_c++)
				{
					var ca_kw_empty = document.createElement("div");
					ca_kw_empty.setAttribute("name", "ca_kw_" + ca_c, 0);
					ca_kw_empty.setAttribute("id", "ca_kw_" + ca_c, 0);
					ca_kw_empty.setAttribute("class", "kw", 0);
					ca_kw_empty.style.width = this.box_width + "px";
					ca_kw_empty.style.height = this.box_height + "px";
					ca_kw_empty.style.lineHeight = this.box_height + "px";
					ca_kw.appendChild(ca_kw_empty);
				}
			
			
			// ca_days
			var ca_days = document.createElement("div");
			ca_days.setAttribute("name", "ca_days", 0);
			ca_days.setAttribute("id", "ca_days", 0);
			ca_days.style.width = (this.box_width * 7) + "px";
			ca_content.appendChild(ca_days);
			
				// ca_days_named
				for(var ca_d = 0; ca_d < 7; ca_d++)
				{
					var ca_days_named = document.createElement("div");
					ca_days_named.setAttribute("name", "ca_day_" + this.ca_weekdays[ca_d], 0);
					ca_days_named.setAttribute("id", "ca_day_" + this.ca_weekdays[ca_d], 0);
					ca_days_named.setAttribute("class", "day_headline", 0);
					ca_days_named.style.width = this.box_width + "px";
					ca_days_named.style.height = this.box_height + "px";
					ca_days_named.style.lineHeight = this.box_height + "px";
					ca_days.appendChild(ca_days_named);
					var ca_days_named_text = document.createTextNode(this.ca_weekdays[ca_d]);
					ca_days_named.appendChild(ca_days_named_text);
				}
				
				// ca_days_empty
				for(var ca_e = 0; ca_e < 42; ca_e++)
				{
					var ca_days_empty = document.createElement("div");
					ca_days_empty.setAttribute("name", "ca_day_" + ca_e, 0);
					ca_days_empty.setAttribute("id", "ca_day_" + ca_e, 0);
					ca_days_empty.setAttribute("class", "day", 0);
					ca_days_empty.setAttribute("onmouseover", this.createID + ".open_tooltip('ca_day_" + ca_e + "_tooltip');", 0);
					ca_days_empty.setAttribute("onmouseout", this.createID + ".close_tooltip('ca_day_" + ca_e + "_tooltip');", 0);
					ca_days_empty.style.width = this.box_width + "px";
					ca_days_empty.style.height = this.box_height + "px";
					ca_days_empty.style.lineHeight = this.box_height + "px";
					ca_days.appendChild(ca_days_empty);
				}
				
		
		
		//*************** ca_content ***************//
	
	
	
	// Container (Kalender) in vordefiniertes DIV "createID" einfügen
	document.getElementById(this.createID).appendChild(ca_container);
	
	}
	//************************* LAYOUT *************************//
	
	
	
	//************************* DAYS *************************//
	this.days = function()
	{
	
	// Zum Monatsersten springen
	var start_date = new Date(this.selected_date);
	start_date.setDate(1);
	
	// Ausgewähltes Datum merken
	var selected_month = start_date.getMonth() + 1;
	
	// Middle anzeigen
	document.getElementById("ca_middle").innerHTML = this.ca_months[start_date.getMonth()] + " " + start_date.getFullYear();
	
	
		// Zurückspulen bis MO
		var weekday = start_date.getDay();
		while(weekday != 1)
		{
			start_date.setDate(start_date.getDate() - 1);
			weekday = start_date.getDay();
		}
		
		
		
		// Tage ausgeben
		var kw_i = 0;
		
		for(ca_f = 0; ca_f < 42; ca_f++)
		{
		
			// Felder zurücksetzen
			document.getElementById("ca_day_" + ca_f).innerHTML += "";
			document.getElementById("ca_day_" + ca_f).style.backgroundImage = "none";
			document.getElementById("ca_day_" + ca_f).style.cursor = "auto";
			
			// Tag in div ausgeben
			document.getElementById("ca_day_" + ca_f).innerHTML = start_date.getDate();
			
			// Prüfen ob Tag zu ausgewählten Monat gehört			
			if((start_date.getMonth() + 1) == selected_month)
			{
				document.getElementById("ca_day_" + ca_f).style.color = "#333333";
			}
			else
			{
				document.getElementById("ca_day_" + ca_f).style.color = "#cccccc";
			}
			
			
			// Kalenderwoche eintragen
			if((ca_f % 7) == 0)
			{
			document.getElementById("ca_kw_" + kw_i).innerHTML = this.getCW(start_date);
			kw_i++;
			}
			
			// Prüfen ob Termin vorhanden
			if(start_date.getDate() < 10) { var thisday = "0" + start_date.getDate();  } else { var thisday = start_date.getDate(); }
			if((start_date.getMonth() + 1) < 10) { var thismonth = "0" + (start_date.getMonth() + 1); } else { var thismonth = start_date.getMonth() + 1; }
			var check_date = start_date.getFullYear() + "-" + thismonth + "-" + thisday;
			this.dates(check_date, ca_f);
			
			// Einen Tag weiter springen
			start_date.setDate(start_date.getDate() + 1);
		}
	
	
	
	}
	//************************* DAYS *************************//
	
	
	
	//************************* DATES *************************//
	this.dates = function(check_date, DayID)
	{
		var Rdir = this.rootdir;
		//alert(check_date);
		$jq.post(this.rootdir + 'calendar/seficom_calendar_dates.php', {a:check_date, tr:this.rootdir}, function(data)
		{
			if(data)
			{
				document.getElementById("ca_day_" + DayID).innerHTML += "<div class='tooltip' name='ca_day_" + DayID + "_tooltip' id='ca_day_" + DayID + "_tooltip'>" + data + "</div>";
				document.getElementById("ca_day_" + DayID).style.backgroundImage = "url(" + Rdir + "calendar/circle.jpg)";
				document.getElementById("ca_day_" + DayID).style.cursor = "pointer";
			}
		});
	}
	//************************* DATES *************************//
	
	
	
	//************************* OPEN_TOOLTIP *************************//
	this.open_tooltip = function(fieldID)
	{
		if(document.getElementById(fieldID))
		{
		document.getElementById(fieldID).style.display = "block";
		}
	}
	//************************* OPEN_TOOLTIP *************************//
	
	
	
	//************************* CLOSE_TOOLTIP *************************//
	this.close_tooltip = function(fieldID)
	{
		if(document.getElementById(fieldID))
		{
		document.getElementById(fieldID).style.display = "none";
		}
	}
	//************************* CLOSE_TOOLTIP *************************//



}



//************************************************** **************** **************************************************//
//************************************************** SEFICOM_CALENDAR **************************************************//
//************************************************** **************** **************************************************//
