var dayNames = new Array("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag");
var monthNames = new Array('Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember');

function drawCalendarTemplate() {
	document.write("<table class=\"calendarTable\">");
	document.write("<tr class=\"calendarMonthTitle\"><th><a href=\"#\" onClick=\"return subMonth()\"><</a></th><th colspan=\"6\" id=\"calendarMonthTitle\">&nbsp;</th><th><a href=\"#\" onClick=\"return addMonth()\">></a></th></tr>");
	document.write("<tr class=\"calendarDayTitle\">");
	document.write("<td title=\"Woche\">Wo</td>");
	for (col=0; col<7; col++) {
		document.write("<td title=\"" + dayNames[(col+1)%7] + "\">" + dayNames[(col+1)%7].substr(0, 2) + "</td>");
	}
	document.write("</tr>");
	for (row=0; row<6; row++) {
		document.write("<tr id=\"calendarRow" + row + "\">");
		document.write("<td class=\"calendarWeekNumber\" id=\"calendarWeekRow" + row + "\">&nbsp;</td>");
		for (col=0; col<7; col++) {
			document.write("<td id=\"calendarCell" + (7*row + col) + "\">&nbsp;</td>");
		}
		document.write("</tr>");
	}
	document.write("</table>");
}

function subMonth() {
	if (--month<1) {
		month = 12;
		year--;
	}
	fillCalendarTemplate()
	return false
}

function addMonth() {
	if (++month>12) {
		month = 1;
		year++;
	}
	fillCalendarTemplate()
	return false
}

function kalenderWoche(j, m, t) {
	Datum = new Date(j,m-1,t);
	DoDat = donnerstag(Datum);
	kwjahr = DoDat.getFullYear();
	DoKW1 = donnerstag(new Date(kwjahr,0,4));
	kw = Math.floor(1.5+(DoDat.getTime()-DoKW1.getTime())/86400000/7)
	if (kw>52) kw=kw-52
	return kw
}

function donnerstag(datum) {
	var Do=new Date();
	Do.setTime(datum.getTime() + (3-((datum.getDay()+6) % 7)) * 86400000);
	return Do;
}

function lastDayOfMonth(m, y) {
  if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12)
  	return 31;
  if (m == 4 || m == 6 || m == 9 || m == 11)
  	return 30;
  if (m == 2)
  	return (y % 4 == 0 ? 29 : 28);
}

function fillCalendarTemplate() {
	var heute = new Date();
	var date = new Date();
	date.setDate(1);
	date.setMonth(month-1);
	date.setFullYear(year);
	var firstDay = date.getDay();
	var lastDay = lastDayOfMonth(month, year);
	var day = 1;
	var future = false;
	var kw = kalenderWoche(year, month, 1)
	var kwHeute = kalenderWoche(heute.getFullYear(), heute.getMonth()+1, heute.getDate())
	
    if (date>heute)
    	document.getElementById("calendarMonthTitle").innerHTML = "<span disabled class=\"calendarDisabled\">" + monthNames[month-1] + " " + year + "</span>"
    else
    	document.getElementById("calendarMonthTitle").innerHTML = "<a href=\"" + actionURL + "?monat=" + month + "&jahr=" + year + "\">" + monthNames[month-1] + " " + year + "</a>"
	for (row=0; row<6; row++) {
		if (date>heute)
    		document.getElementById("calendarWeekRow" + row).innerHTML = "<span disabled class=\"calendarDisabled\">" + kw + "</span>";
		else
    		document.getElementById("calendarWeekRow" + row).innerHTML = "<a href=\"" + actionURL + "?woche=" + kw + "&jahr=" + date.getFullYear() + "\">" + kw + "</a>";
        kw = (kw>51 ? 1 : ++kw);
		for (col=0; col<7; col++) {
    		date.setDate(day)
			idx = row*7 + col;
			if (idx<(firstDay + 6)%7 || day>lastDay)
				document.getElementById("calendarCell" + idx).innerHTML = "&nbsp;";
			else {
				if (date > heute)
					document.getElementById("calendarCell" + idx).innerHTML = "<span disabled class=\"calendarDisabled\">" + day + "</span>";
				else
					document.getElementById("calendarCell" + idx).innerHTML = "<a href=\"" + actionURL + "?jahr=" + date.getFullYear() + "&monat=" + (date.getMonth()+1) + "&tag=" + day + "\">" + day + "</a>";
			    day++
			}
		}
	}
	//document.getElementById("calendarRow5").style.display = (lastDay + firstDay > 36 ? 'block' : 'none');
}

var month, year, actionURL

function drawCalendar(startDatum, url) {
    actionURL = url;
	if (startDatum) {
	    startDatum = startDatum.split(".");
	    now = new Date(startDatum[2], startDatum[1]-1, startDatum[0]);
	} else {
    	now = new Date();
	}
    month = now.getMonth()+1;
    year = now.getFullYear();
	drawCalendarTemplate();
	fillCalendarTemplate();
}

