var todays=new Date;
var current_day=todays.getDate();
var current_month=todays.getMonth();
var current_year=todays.getFullYear();
var actCal='';
var monNamen=new Array('Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember');
var tagNamen=new Array('So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa');

function drawCal(sWhich, set, offset) {
	var iMonth=Number(offset.substring(5,7))-1+set;
	var iYear=Number(offset.substring(0,4));
	if (iMonth>11) {
		iMonth=0;
		iYear+=1;
	}else if(iMonth<0) {
		iMonth=11;
		iYear-=1;
	}
	if (iYear<current_year){
		iYear=current_year;
		iMonth=current_month;
	}
	var offset=iYear+'-'+formatNull(iMonth+1, 2);

	var daycounter = 1
	var firstMonthDay = getFirstMonthDay(iYear,iMonth,'1')
	var out='<TABLE border="0" align="center" cellpadding="0" cellspacing="1" style="border: 1px solid #ffbb02;background-Color:#ffffff;font-size:11px;color:white;">'
	out+='<TR align="center" bgcolor="#ffbb02">'

	if (iMonth==current_month && iYear<<current_year){
		out+='<TD class="calTD">&nbsp;</TD>'
	}else{
		out+='<TD class="calTDw" onClick="drawCal(\''+sWhich+'\',-1,\''+offset+'\');"><<</TD>'
	}

	out+='<TD colspan="5"><B>' + monNamen[iMonth] + ' ' + iYear + '</B></TD>'
	if (iMonth==(current_month-1) && iYear==(current_year+1)){
		out+='<TD class="calTD">&nbsp;</TD>'
	}else{
		out+='<TD class="calTDw" onClick="drawCal(\''+sWhich+'\',1,\''+offset+'\');">>></TD>'
	}
	out+='</TR>'

	out+='<TR style="background-color: #ffbb02;">'
	for(var d=1;d<7;d++){
		out+='<TD class="calTD">&nbsp;' + tagNamen[d] + '&nbsp;</TD>'
	}
	out+='<TD class="calTD">&nbsp;' + tagNamen[0] + '&nbsp;</TD>'
	var rowcount=3;
	for(var i=0; i<6; i++){
		if(daycounter<=monatTage[iMonth]) {
			out+='<TR align=center>'
			rowcount+=1
			for(var j=1;j<=7;j++){

				if ((i==0 && j<firstMonthDay) || daycounter>monatTage[iMonth]) {

					out+='<TD class="calTD" bgcolor="#FFFFFF">&nbsp;</TD>'

				} else if(daycounter==todays.getDate() && iMonth==current_month && iYear==current_year) {
					out+='<TD class="calTDw" bgcolor="#ffbb02" onClick="returnDate(' + iYear + ',' + iMonth + ',' + daycounter + ',\''+sWhich+'\')" style="font-size:10px;"><B>' + daycounter + '</B></TD>'
					daycounter++

				} else if((daycounter>todays.getDate() && iMonth==current_month && iYear==current_year) || (iMonth>current_month && iYear==current_year) || iYear>current_year) {

					out+='<TD class="calTDw" bgcolor="#E2E2E2" onClick="returnDate(' + iYear + ',' + iMonth + ',' + daycounter + ',\''+sWhich+'\')" style="font-size:10px; color: #000000;">' + daycounter + '</TD>'
					daycounter++

				} else {
					out+='<TD class="calTD" bgcolor="#C0C0C0" style="text-decoration: line-through;font-size:10px;">' + daycounter + '</TD>'
					daycounter++
				}
			}
			out+='</TR>'
		}
	}
	out+='<TR align="center" bgcolor="#ffbb02"><TD class="calTD"></TD><TD colspan="5"></TD><TD class="calTDw" onClick="hideCal();" align="center">x</TD></TABLE>'
	document.getElementById('Cal').innerHTML=out;
	var xcal=getPageOffsetLeft(document.getElementById(sWhich+'Knob'))+30;
	var ycal=getPageOffsetTop(document.getElementById(sWhich+'Knob'))+10;

	setH('Cal', rowcount*19+1);
	setPos('Cal', xcal, ycal, 'visible');
	actCal=sWhich;
}

function getFirstMonthDay(theY, theM, theD) {
	var firstDay = new Date(theY, theM, theD)
	var theday = firstDay.getDay()
	if (theday==0) theday=7;
	return theday;
}

function hideCal(){
	setPos('Cal', -500, -500, 'hidden');
	actCal='';
}

function returnDate(y, m, d, sWhich){
	//alert('Jahr:'+y+'\n Monat: '+m+'\n Tag: '+d+'\n sWhich: '+sWhich)
	selIt(eval('document.schnellsuche.'+sWhich+'Month'), y+'-'+formatNull(m+1, 2), 'v');
	calcDayOfWeek(sWhich, formatNull(d, 2));
	if (sWhich=='From') addSetCal();
	hideCal();
}

function addSetCal() {
	var thisDD=document.getElementById('FromDay');
	var thisMM=document.getElementById('FromMonth');
	var nextDD=document.getElementById('ToDay');
	var nextMM=document.getElementById('ToMonth');
	if (nextDD.selectedIndex<thisDD.selectedIndex) {
		if (nextMM.length>(thisMM.selectedIndex+1)) nextMM.selectedIndex=(thisMM.selectedIndex+1);
	}else{
		nextMM.selectedIndex=thisMM.selectedIndex;
	}
	calcDayOfWeek('To', 0);
}

function selIt(thisDD, sVal, sWhat) {
	//alert(thisDD.length+' '+thisDD.name+' '+sVal);
	if (thisDD){
		thisDD.selectedIndex=0;
		if (sVal!=''){
			if (sWhat=='v') {
				for(var i=1;i<thisDD.length;i++) {
					if (thisDD.options[i].value.toString()==sVal.toString()) {
						thisDD.selectedIndex=i;
						break;
					}
				}
			}else if (sWhat=='t') {
				sVal=prepSearch(sVal.toLowerCase());
				for(var i=1;i<thisDD.length;i++) {
					if (thisDD.options[i].text.toLowerCase().search(sVal)!=-1) {
						thisDD.selectedIndex=i;
						break;
					}
				}
			}else if (sWhat=='i') {
				if (thisDD.length>sVal) thisDD.selectedIndex=sVal;
			}
		}
		return thisDD.selectedIndex;
	}
}