// Implementiert einen JavaScript-Kalender als Tabelle
// made: 2003 Andreas Amann (andreas.amann BEI web.de)
// $Id: calendar.js,v 1.1.1.1 2004/05/15 15:39:08 Andi Exp $

var now    = new Date();
var months = new Array('Jan','Feb',"Mär",'Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez');
var today  = now;

function chbg(over,ele) {
	var col;
	if(over){	col='#BD1010'; }
	else    { col='#FFFFFF'; }
	ele.style.borderBottom="1px solid " + col;
}

function isLeapYear(jahr) {
	if (jahr % 4 == 0) {
		if (jahr < 1582)
			return 1;
		else if (!(jahr % 100 == 0))
			return 1;
		else if (jahr % 400 == 0)
			return 1;
	}
	return 0;
}

function setattr(elem,attr,val) {
		var _attr = document.createAttribute(attr);
		_attr.nodeValue = val;
		elem.setAttributeNode(_attr);
}

function DOMCalendar(month,year) {
	var mlen = new Array(31,28,31,30,31,30,31,31,30,31,30,31);

	if((!document.getElementById) || (navigator.userAgent.indexOf("Opera") >= 0)) {
		alert('Diese Funktion wird von Ihrem Browser leider nicht unterstützt. Sie können den MS Internet Explorer ab Version 5, Mozilla, Netscape Navigator ab Version 6 verwenden. Opera verfügt leider bis zur aktuellen Version 7 keine vollständige Unterstützung des Document Object Modells.');
		return;
	}
		
	if(month == undefined)
		month = now.getMonth();
	if(year == undefined)
		year = now.getFullYear();

	if(isLeapYear(year))
		mlen[1] = 29;
		
	var td = document.getElementById("caldate");
	var rd_Laenge = td.firstChild.nodeValue.length;
  td.firstChild.replaceData(0,rd_Laenge,months[month]+" "+year);
  //setattr(td, "href", "javascript:DOMCalendar("+(now.getMonth())+","+now.getFullYear()+");");
  td = document.getElementById("dec");
  setattr(td, "href", "javascript:DOMCalendar("+(month==0?11:month-1)+","+(month==0?year-1:year)+");");
  td = document.getElementById("now");
  setattr(td, "href", "javascript:DOMCalendar("+(now.getMonth())+","+now.getFullYear()+");");
  td = document.getElementById("inc");
  setattr(td, "href", "javascript:DOMCalendar("+(month==11?0:month+1)+","+(month==11?year+1:year)+");");
  
  for(n=0;n<42;++n) {
  	td=document.getElementById(n);
  	td.firstChild.replaceData(0,td.firstChild.nodeValue.length," ");
  	if((n%7) == 0)
			setattr(td, "class", "sunday");
		else
			setattr(td, "class", "weekday");
  }
  
  var date = new Date(year,month,1);
  for(n=date.getDay(),i=1;i<=mlen[month];++n,++i) {
  	td = document.getElementById(n);
  	td.firstChild.replaceData(0,td.firstChild.nodeValue.length,i);
  	if(month==now.getMonth() && year==now.getFullYear() && i==now.getDate())
  		setattr(td, "class", "today");
  }
}

function calendar(navi,year,month) {
	var mlen = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	var date,date2;

	if(year > -1 && month > -1)
		date = new Date(year,month);
	else
		date = new Date();
	date2 = new Date(date.getFullYear(),date.getMonth());

	if(isLeapYear(date.getFullYear()))
		mlen[1] = 29;

	document.write('<table width="150" border="0" cellspacing="3" cellpadding="0">');
	if(navi)
		document.write('<tr><td colspan="4" width="56%"><a id="caldate" href="javascript:fullyear();">' + months[date.getMonth()] + ' ' + date.getFullYear() + '</a></td><td style="text-align:center;"><a id="dec" href="javascript:DOMCalendar();"><img src="images/left.gif" width="10" height="13" border="0" alt="Monat zur&uuml;ck" title="Monat zur&uuml;ck"></a></td><td style="text-align:center;"><a id="now" href="javascript:DOMCalendar();"><img src="images/center.gif" width="10" height="13" border="0" alt="Aktueller Monat" title="Aktueller Monat"></a></td><td style="text-align:center;"><a id="inc" href="javascript:DOMCalendar();"><img src="images/right.gif" width="10" height="13" border="0" alt="Monat vor" title="Monat vor"></a></td></tr>');
	else
		document.write('<tr><td colspan="4" width="56%"><a id="caldate" href="javascript:fullyear();">' + months[date.getMonth()] + ' ' + date.getFullYear() + '</a></td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>');
	
	document.write('<tr><td class="head" style="color:red;">So</td><td class="head">Mo</td><td class="head">Di</td><td class="head">Mi</td><td class="head">Do</td><td class="head">Fr</td><td class="head">Sa</td></tr>');

	var fields = new Array('&nbsp;','&nbsp;','&nbsp;','&nbsp;','&nbsp;','&nbsp;','&nbsp;','&nbsp;','&nbsp;','&nbsp;','&nbsp;','&nbsp;','&nbsp;','&nbsp;','&nbsp;','&nbsp;','&nbsp;','&nbsp;','&nbsp;','&nbsp;','&nbsp;','&nbsp;','&nbsp;','&nbsp;','&nbsp;','&nbsp;','&nbsp;','&nbsp;','&nbsp;','&nbsp;','&nbsp;','&nbsp;','&nbsp;','&nbsp;','&nbsp;','&nbsp;','&nbsp;','&nbsp;','&nbsp;','&nbsp;','&nbsp;','&nbsp;');

	for(n=date2.getDay(),i=1;n<(mlen[date.getMonth()]+date2.getDay());++n,++i)
		fields[n] = ""+i;

	for(i=n=j=0;j<6;++j)
		document.write('<tr><td onMouseOut=\'chbg(0,this);\' onMouseOver=\'chbg(1,this);\' id="'+(n++)+'" class="sunday">'+fields[i++]+'</td><td onMouseOut=\'chbg(0,this);\' onMouseOver=\'chbg(1,this);\' id="'+(n++)+'" class="weekday">'+fields[i++]+'</td><td onMouseOut=\'chbg(0,this);\' onMouseOver=\'chbg(1,this);\' id="'+(n++)+'" class="weekday">'+fields[i++]+'</td><td onMouseOut=\'chbg(0,this);\' onMouseOver=\'chbg(1,this);\' id="'+(n++)+'" class="weekday">'+fields[i++]+'</td><td onMouseOut=\'chbg(0,this);\' onMouseOver=\'chbg(1,this);\' id="'+(n++)+'" class="weekday">'+fields[i++]+'</td><td onMouseOut=\'chbg(0,this);\' onMouseOver=\'chbg(1,this);\' id="'+(n++)+'" class="weekday">'+fields[i++]+'</td><td onMouseOut=\'chbg(0,this);\' onMouseOver=\'chbg(1,this);\' id="'+(n++)+'" class="weekday">'+fields[i++]+'</td></tr>');	

	document.write('</table>');
}


function fullyear() {
	window.open('calendar.html','_blank');
}

