
var monTage=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
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')

var todays=new Date;
var current_day=todays.getDate();
var current_month=todays.getMonth();
var current_year=todays.getFullYear();


var kform='document.QuickSearch.';

function emptyDD(whichDD) {
	var oOptions=whichDD.options;
	for (var i=oOptions.length; i>=0; i--) {
		oOptions[i]=null;
	}
	whichDD.selectedIndex=0;
	whichDD.length=0;
	whichDD.disabled=true;
}

function addOptDD(whichDD, optionText, optionValue) {
	var thisDD=eval(kform+whichDD);
	thisDD[thisDD.length]=new Option(optionText, optionValue);
}

function selIt(sWhich, sVal, sWhat) {
	var thisDD=eval(kform+sWhich);

	for(var i=0;i<thisDD.length;i++) {
		if (sWhat=='v') {
			if (thisDD.options[i].value==sVal) {
				break;
			}
		}else if (sWhat=='t') {
			if (thisDD.options[i].text.search(sVal)!=-1) {
				break;
			}
		}
	}
	if(i>=thisDD.length) i=0;
	thisDD.selectedIndex=i;
}

function fillDD(sWhich, iYear, iMonth, iDay) {
	//alert(sWhich+' '+iYear+' '+iMonth+' '+iDay);
	var thisDate;
	var thisDD=eval(kform+sWhich+'Day');
	var thisMM=eval(kform+sWhich+'Month');
	if (iDay-Number(monTage[iMonth-1])>0) { //Überlänge
		iMonth+=1;
		if (iMonth>12) {iMonth=1;iYear+=1;}
		iDay=iDay-Number(monTage[iMonth-1]);
		if (iDay==0) iDay=1;
		thisMM.selectedIndex=thisMM.selectedIndex+1;
	}
	emptyDD(thisDD);
	thisDD.disabled=false;
	for (var counter=1; counter<=monTage[Number(iMonth-1)]; counter++) {
		thisDate=new Date(iYear,(iMonth-1),counter);
		addOptDD(sWhich+'Day', tagNamen[thisDate.getDay()]+'  '+counter, counter);
	}
	var newIndex=monTage[Number(iMonth-1)];
	if((iDay<=monTage[Number(iMonth-1)])){
		newIndex=iDay-1;
	}else{
		newIndex=monTage[Number(iMonth-1)]-1;
	}
	thisDD.selectedIndex=newIndex;
}

function calcDayOfWeek(sWhich, ini) {
	var thisDD=eval(kform+sWhich+'Day');
	var thisMM=eval(kform+sWhich+'Month');
	var iYear=Number(thisMM.options[thisMM.selectedIndex].value.substring(0,4));
	var iMonth=Number(thisMM.options[thisMM.selectedIndex].value.substring(5,7));

	if((iYear%4==0 && iYear%100!=0)||(iYear%400==0)){
		monTage[1]=29;
	} else {
		monTage[1]=28;
	}
	var iDay=thisDD.options[thisDD.selectedIndex].value;

	fillDD(sWhich, iYear, iMonth, iDay);
	if (sWhich=='From') {
		if (ini==0) {
			addSetCal('From', 'To');
		}
//		document.QuickSearch.ToDay.selectedIndex=thisDD.selectedIndex;
	}
	if (ini>>0){
		thisDD.selectedIndex=ini-1;
	}
}

function formatMon(str){
	str=String(str);
	if (str.length==1) {
		return '0'+str;
	}else{
		return str;
	}
}

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;
	}
	var offset=iYear+'-'+formatMon(iMonth+1);

	var daycounter = 1
	var firstMonthDay = getFirstMonthDay(iYear,iMonth,'1')
	var out='<TABLE border="0" width="100%" height="100%" align="center" cellpadding="0" cellspacing="1">'
	out+='<TR align="center" class="addColor">'
	
	if (iMonth==todays.getMonth() && iYear<<todays.getFullYear()){
		out+='<TD>&nbsp;</TD>'
	}else{
		out+='<TD><A class="tabs" href="javascript:drawCal(\''+sWhich+'\',-1,\''+offset+'\');"><<</A></TD>'
	}
	
	out+='<TD colspan="5" class="markcolor"><B>' + monNamen[iMonth] + ' ' + iYear + '</B></TD>'
	
	if (iMonth==todays.getMonth() && iYear>>todays.getFullYear()){
		out+='<TD>&nbsp;</TD>'
	}else{
		out+='<TD><A class="tabs" href="javascript:drawCal(\''+sWhich+'\',1,\''+offset+'\');">>></A></TD>'
	}
	out+='</TR>'

	out+='<TR align=center class="addcolor1">'
	for(var d=1;d<7;d++){
		out+='<TD width="14%">&nbsp;' + tagNamen[d] + '&nbsp;</TD>'
	}
	out+='<TD width="14%">&nbsp;' + tagNamen[0] + '&nbsp;</TD>'
	for(var i=0; i<6; i++){
		if(daycounter<=monTage[iMonth]) {
			out+='<TR align=center>'
			
			for(var j=1;j<=7;j++){

				if ((i==0 && j<firstMonthDay) || daycounter>monTage[iMonth]) {

					out+='<TD width="14%" bgcolor="#FFFFFF">&nbsp;</TD>'

				} else if(daycounter==todays.getDate() && iMonth==todays.getMonth() && iYear==todays.getFullYear()) {
					out+='<TD width="14%" class="addColor"><A class="tabs" href="javascript:returnDate(' + iYear + ',' + iMonth + ',' + daycounter + ',\''+sWhich+'\')"><B>' + daycounter + '</B></A></TD>'
					daycounter++

				} else if((daycounter>todays.getDate() && iMonth==todays.getMonth() && iYear==todays.getFullYear()) || (iMonth>todays.getMonth() && iYear==todays.getFullYear()) || iYear>todays.getFullYear()) {

					out+='<TD width="14%" bgcolor="#E2E2E2"><A href="javascript:returnDate(' + iYear + ',' + iMonth + ',' + daycounter + ',\''+sWhich+'\')">' + daycounter + '</A></TD>'
					daycounter++

				} else {
					out+='<TD width="14%" bgcolor="#C0C0C0" style="text-decoration: line-through;">' + daycounter + '</TD>'
					daycounter++
				}
			}
			out+='</TR>'
		}

	}
	out+='<TR align="center" class="addColor"><TD></TD><TD colspan="5"></TD><TD><A class="tabs" href="javascript:hideCal();">x</A></TD></TABLE>'
	document.getElementById('Cal').innerHTML=out;
	var xcal=findPos(document.getElementById(sWhich+'Knob'), 'offsetLeft')+20;
	var ycal=findPos(document.getElementById(sWhich+'Knob'), 'offsetTop')-0;
	setPos('dumframe', xcal, ycal, 'visible');
	setPos('Cal', xcal, ycal, 'visible');
}

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');
	setPos('dumframe', -500, -500, 'hidden');
}

function returnDate(y, m, d, sWhich){
	selIt(sWhich+'Month', y+'-'+formatMon(m+1), 'v');
	calcDayOfWeek(sWhich, formatMon(d));
	if (sWhich=='From') addSetCal('From', 'To');
	hideCal();
}

function addSetCal(sWhich, sWhat) {
	var thisDD=eval(kform+sWhich+'Day');
	var thisMM=eval(kform+sWhich+'Month');
	var nextDD=eval(kform+sWhat+'Day');
	var nextMM=eval(kform+sWhat+'Month');

	if (nextDD.selectedIndex<thisDD.selectedIndex) {
		if (nextMM.length>(thisMM.selectedIndex+1)) nextMM.selectedIndex=(thisMM.selectedIndex+1);
	}else{
		nextMM.selectedIndex=thisMM.selectedIndex;
	}
	calcDayOfWeek('To', '');
}

function findPos(idname, pos){
	var curpos=0;
	if (idname){
		if (idname.offsetParent) {
			while (idname.offsetParent) {
				curpos+=eval('idname.'+pos);
				idname=idname.offsetParent;
			}
		}else{
			return (eval('idname.'+pos));
		}
	}
	return curpos;
}

