month_names = new Array("Jan", "Feb", "M&auml;r", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez");
month_durations = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

get_date = new Date();
cur_weekday = get_date.getDay();
cur_day = get_date.getDate();
cur_month = get_date.getMonth();
cur_year = get_date.getFullYear();
day_now = cur_day;
month_now = cur_month;
year_now = cur_year;

function calender_start(){
	calender_write();
	timeout = window.setTimeout("calender()",10000);
}

function calender_write(){

	var top = "<span class=\"boxTextMini\" onclick=\"year_back();\">&lt;&lt;</span> <span class=\"boxTextMini\" onclick=\"month_back();\">&lt;</span> ";
	top = top + month_names[cur_month] + "&nbsp;" + cur_year + " <span class=\"boxTextMini\" onclick=\"month_forward();\">&gt;</span> ";
	top = top + "<span class=\"boxTextMini\" onclick=\"year_forward();\">&gt;&gt;</span>";

	var bottom = "<table class=\"boxText\"><tr><td>Mo</td><td>Di</td><td>Mi</td><td>Do</td><td>Fr</td><td>Sa</td><td>So</td></tr><tr>";

	var first = get_first_day(cur_day, cur_weekday);

	var counter = first;
	switch (first){
		case 0: bottom = bottom + "<td></td><td></td><td></td><td></td><td></td><td></td>"; break;
		case 1: bottom = bottom; break;
		case 2: bottom = bottom + "<td></td>"; break;
		case 3: bottom = bottom + "<td></td><td></td>"; break;
		case 4: bottom = bottom + "<td></td><td></td><td></td>"; break;
		case 5: bottom = bottom + "<td></td><td></td><td></td><td></td>"; break;
		case 6: bottom = bottom + "<td></td><td></td><td></td><td></td><td></td>"; break;
	}

	var typ = 0; // 0=Vergangenheit, 1=Zukunft

	for (i=1;i<=month_durations[cur_month];i++) {
		
		//Zukunft oder Vergangenheit
		if (cur_year>year_now) typ = 1;
		else if (cur_year==year_now && cur_month>month_now) typ = 1;
		else if (cur_year==year_now && cur_month==month_now && i>=day_now) typ = 1;
		else typ = 0;

		array_site = new Array ("presse_tag", "termine_tag");

		if (i<10) tmp_day = "0" + i;
		else tmp_day = i;
		tmp_mon = cur_month + 1;
		if (tmp_mon<10) tmp_mon = "0" + tmp_mon;
		if (counter == 0) bottom = bottom + "<td><a class=\"boxLink\" href=index.php?site="+array_site[typ]+"&date=" + cur_year + "-" + tmp_mon + "-" + tmp_day + ">" + i + "</a></td></tr><tr>";	
		else bottom = bottom + "<td><a class=\"boxLink\" href=index.php?site="+array_site[typ]+"&date=" + cur_year + "-" + tmp_mon + "-" + tmp_day + ">" + i + "</a></td>";
		counter++;
		if (counter > 6) counter-=7;
	}

	bottom = bottom + "</td></tr></table>";

	if(document.getElementById("calender_top")) document.getElementById("calender_top").innerHTML = top;
	if(document.getElementById("calender_bottom")) document.getElementById("calender_bottom").innerHTML = bottom;
}

function month_back(){
	window.clearTimeout(timeout);
	cur_month--;
	if (cur_month < 0) {
		cur_month = 11;
		cur_year--;
		if (cur_year < 2009) {
			cur_year = 2011;
		}
	}
	calender_start();
}

function month_forward(){
	window.clearTimeout(timeout);
	cur_month++;
	if (cur_month > 11) {
		cur_month = 0;
		cur_year++;
		if (cur_year > (year_now+1)) {
			cur_year = 2009;
		}
	}
	calender_start();
}

function year_back(){
	window.clearTimeout(timeout);
	cur_year--;
	if (cur_year < 2009) {
		cur_year = 2011;
	}
	calender_start();
}

function year_forward(){
	window.clearTimeout(timeout);
	cur_year++;
	if (cur_year > (year_now+1)) {
		cur_year = 2009;
	}
	calender_start();
}

function leap_year(){
	month_durations[1] = 28;
	if ((cur_year % 4) == 0) month_durations[1] = 29;
	if ((cur_year % 100) == 0) month_durations[1] = 28;
	if ((cur_year % 400) == 0) month_durations[1] = 29;
}

function leap_year2(year){
	leap_year = false;
	if ((year % 4) == 0) leap_year = true;
	if ((year % 100) == 0) leap_year = false;
	if ((year % 400) == 0) leap_year = true;
	return leap_year;
}

function get_first_day(day, weekday){

	leap_year();
	first_of_month = get_first_of_month(day, weekday);
	first_january = get_first_january(first_of_month);
	first_january_new_year = get_first_january_new_year(first_january, cur_year);
	first_of_new_month = get_first_of_new_month(first_january_new_year);

	return first_of_new_month;
}

function get_first_of_month(day, weekday){

	rest = day % 7;
	if (rest > weekday) first_of_month = weekday + 8 - rest;
	else first_of_month = weekday - rest + 1;

	return first_of_month;
}

function get_first_january(first_of_month){

	days = 0;
	for (mon=month_now-1; mon>=0; mon--) {
		days = days + month_durations[mon];
	}
	days = days % 7;
	if (days <= first_of_month) first_january = first_of_month - days;
	else first_january = first_of_month + 7 - days;

	return first_january;
}

function get_first_january_new_year(first_january, cur_year){

	if (cur_year == year_now) return first_january;	

	else if (cur_year < year_now){

		days = 0;
		for (i=0; i < (year_now - cur_year); i++){
			if (leap_year(year_now-(i+1))) days += 366;
			else days += 365;
		}
		days = days % 7;
		if (days <= first_january) first_january_new_year = first_january - days;
		else first_january_new_year = first_january + 7 - days;

		return first_january_new_year;
	} else {

		days = 0;
		for (i=0; i < (cur_year - year_now); i++){
			if (leap_year(year_now+(i+1))) days += 366;
			else days += 365;
		}
		days = days % 7;
		first_january_new_year = first_january + days;
		if (first_january_new_year > 6) first_january_new_year -=7;
		
		return first_january_new_year;
	}
}

function get_first_of_new_month(first_january_new_year){
	
	days=0;	
	for (i=0;i<cur_month;i++){
		days += month_durations[i];
	}
	days = days % 7;
	first_of_new_month = first_january_new_year + days;
	if (first_of_new_month > 6) first_of_new_month -= 7;

	return first_of_new_month;
}

