// JavaScript Document

var jahr = null;
var monat = null;

var loadCalendar = function(date)
{
	//alert(date);
	var monat = date.getMonth();
	var jahr  = date.getFullYear();
	var ajax = new Ajax.Request(
				"./terminkalender/getKalender.php?year="+jahr+"&month="+monat,
				{
					onComplete: function(r)
					{
						//alert(r.responseText);
						eval("var request="+r.responseText);
						//alert(request.data[0].headline);
						setEvents(request);
					},
					onFailure:	function(r)
					{
						alert("Fehler: "+r.status+"\t"+r.statusText);
					}
				}
	);
}

var createCalendar = function(date)
{
	var days = ["Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag"];
	var months = ["Januar", "Februar", "Maerz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"];
	var monthDay = [31,28,31,30,31,30,31,31,30,31,30,31];

	jahr = date.getFullYear();
	//alert(jahr);
	//Schaltjahr beruecksichtigen
	if (jahr % 4 == 0 && jahr % 100 != 0){
		
		monthDay[1] = 29;
		
	}

	var tag   = date.getDay();
	
	monat = date.getMonth();
	jahr  = date.getFullYear();
	
	var erster = new Date(jahr, monat, 1);
	
	
	var tbl = document.createElement("table");
	tbl.setAttribute("cellspacing", "0");
	
	var tblHead = document.createElement("thead");
	
	//-- JAHR -------------------------------------------------
	var tblRow = document.createElement("tr");
	var tblCell = document.createElement("th");
	tblCell.setAttribute("colSpan", "7");
	
	var a = document.createElement("span");
	a.onclick = function(){
		setYear(-1);
	};
	a.appendChild(document.createTextNode("<"));
	tblCell.appendChild(a);
	
	tblCell.appendChild(document.createTextNode(" "+jahr+" "));
	
	var a = document.createElement("span");
	a.onclick = function(){
		setYear(+1);
	};
	a.appendChild(document.createTextNode(">"));
	tblCell.appendChild(a);
	
	tblCell.setAttribute("id", "jahr");
	tblRow.appendChild(tblCell);
	
	tblHead.appendChild(tblRow);
	
	//-- MONAT ------------------------------------------------
	var tblRow = document.createElement("tr");
	var tblCell = document.createElement("th");
	tblCell.setAttribute("colSpan", "7");
	
	var a = document.createElement("span");
	a.onclick = function(){
		setMonth(-1)
	};
	a.appendChild(document.createTextNode("<"));
	tblCell.appendChild(a);
	
	tblCell.appendChild(document.createTextNode(" "+months[monat]+" "));
	
	var a = document.createElement("span");
	a.onclick = function(){
		setMonth(+1)
	};
	a.appendChild(document.createTextNode(">"));
	tblCell.appendChild(a);
	
	tblCell.setAttribute("id", "monat");
	tblRow.appendChild(tblCell);
	
	tblHead.appendChild(tblRow);
	
	//-- WOCHENTAG ---------------------------------------------
	var tblRow = document.createElement("tr");
	tblRow.setAttribute("id", "tage");
	
	for(var i=0; i<days.length; i++)
	{
		var tblCell = document.createElement("th");
		tblCell.appendChild(document.createTextNode(days[i]));
		tblRow.appendChild(tblCell);
	}
	tblHead.appendChild(tblRow);
	
	//-- TAGE --------------------------------------------------
	var tblBody = document.createElement("tbody");
	var tblRow = document.createElement("tr");
	
	//-- erste Wochenzeile -------------------------------------
	for(var i=d=0; i<7; i++)
	{
		var tblCell = document.createElement("td");
		if(i>4){
			tblCell.setAttribute("class","wochenende");
		}
		//alert(erster.getDay());
		
		if(erster.getDay() == 0){
			var tag = 7;
		}else{
			var tag = erster.getDay();
		}		
		
		if(i<tag-1){
			tblCell.appendChild(getInfo(null));
		}else{
			tblCell.appendChild(getInfo(++d));
			tblCell.setAttribute("id", "d_"+d);
		}
		tblRow.appendChild(tblCell);
	}
	tblBody.appendChild(tblRow);
	
	var tblRow = document.createElement("tr");
	
	//-- Monatstage -------------------------------------------
	for(var i=d+1, r=1; i<=monthDay[monat]; i++,r++)
	{
		var tblCell = document.createElement("td");
		tblCell.setAttribute("id", "d_"+i);
		if(r>5){
			tblCell.setAttribute("class","wochenende");
		}
		tblCell.appendChild(getInfo(i));
		tblRow.appendChild(tblCell);
		
		if(r == 7){
			r=0;
			tblBody.appendChild(tblRow);
			var tblRow = document.createElement("tr");
		}
	}
	
	//-- lezte Wochenzeile ------------------------------------
	if(r>1){
		while(r<=7){
			var tblCell = document.createElement("td");
			if(r>5){
				tblCell.setAttribute("class","wochenende");
			}
			tblCell.appendChild(getInfo(null));
			tblRow.appendChild(tblCell);
			r++;
		
		}
		tblBody.appendChild(tblRow);
	}
	
	//-- COMLPETT ----------------------------------------------
	tbl.appendChild(tblHead);
	tbl.appendChild(tblBody);
	
	if($("webcalendar").firstChild){
		$("webcalendar").removeChild($("webcalendar").firstChild);	
	}
	$("webcalendar").appendChild(tbl);
}

var getInfo = function(nr)
{
	var div = document.createElement("div");
	if(nr){
		var day = document.createElement("span");
		day.setAttribute("id", "datum");
		day.appendChild(document.createTextNode(nr));
		
		var neu = document.createElement("span");
		neu.setAttribute("id", "n_"+nr);
		neu.setAttribute("id", "newEvent");
		//neu.appendChild(document.createTextNode("+"));
		//neu.onclick = function(){
			//newEvent(this.id.substring(2));
		//};
		
		div.appendChild(day);
		//div.appendChild(neu);
	}else{
		div.setAttribute("id", "leer");
		div.appendChild(document.createTextNode(" "));
	}
	
	return div;
}

var setEvents = function(request)
{
	var events = request.data;
	//alert(events[0].headline);
	for(var i=0; i<events.length; i++)
	{
	
		/*
		event.id
		event.headline
		event.datum (sekunden)
		*/
		
		var date = new Date(events[i].datum*1000);
		var day = date.getDate();
		
		//alert("d_"+day);
		var a = document.createElement("span");
		a.setAttribute("class", "termin");
		a.setAttribute("id", "e_"+events[i].id);
		a.onclick = function(){
			showEvent(this.id.substring(2));
		};
		a.appendChild(document.createTextNode(events[i].headline));
		$("d_"+day).appendChild(a);
	}
}

var setYear = function(nr)
{
	var date = new Date(jahr+nr, monat, 1);
	loadCalendar(date);
	createCalendar(date);
}

var setMonth = function(nr)
{
	var date = new Date(jahr, monat+nr, 1);
	loadCalendar(date);
	createCalendar(date);
}

