/*
	calendar
*/

CONST_MONTH = new Array("Januar","Februar","März","April","Mai","Juni","Juli","August","Septempter","Oktober","November","Dezember");

function onScrollYear(calid,step) {
	var cal=document.getElementById(calid);
	var actDateItem=document.getElementById("actdate_"+calid);
	var actdate=actDateItem.firstChild.nodeValue;
	var s=actdate.split("-"); 
	var year=parseInt(s[2]);
	year+=step;
	var divs=cal.childNodes;
	var i;
	for(i=0;i<divs.length;i++) {
		if (divs[i].nodeName=="DIV" && divs[i].className.indexOf("year")==0) {
			var t=divs[i].className.split(" ");
			var idx=parseInt(t[1].substring(1))-1;
			divs[i].removeChild(divs[i].firstChild);
			divs[i].appendChild(document.createTextNode(""+((year+idx)%100)));
		}	
	}
	s[2]=year;
	actDateItem.removeChild(actDateItem.firstChild);
	actDateItem.appendChild(document.createTextNode(s.join("-")));
	fillDays(cal,parseInt(s[1]),year);
}

function selectDate(form,element,calid,r,c) {
	var day=null;
	var cal=document.getElementById(calid);
	var divs=cal.childNodes;
	var i;
	var cn="day r"+r+" c"+c;
	day=getElementByClassName(cal,"DIV",cn);
	d=day.firstChild.nodeValue;
	var actDateItem=document.getElementById("actdate_"+calid);
	var actdate=actDateItem.firstChild.nodeValue;
	var s=actdate.split("-"); 
	var m=parseInt(s[1])+1;
	var val=s[2]+(m<10?"0":"")+m+(d.length<2?"0":"")+d;
	var valstr=(d.length<2?"0":"")+d+"."+(m<10?"0":"")+m+"."+s[2];
	document.forms[form].elements[element].value=val;
	var dayfield=document.getElementById( 'cal_dspl' );
/*
	var divs=document.getElementsByTagName("DIV");
	var dayfield=null;
	for(i=0;i<divs.length && dayfield==null;i++) {
		if (divs[i].className==element
				|| divs[i].className== element + ' active' )
			dayfield=divs[i];
	}
	dayfield=getElementByClassName(dayfield,"DIV","val");
	dayfield=getElementByClassName(dayfield,"DIV","dspl");
*/
	if (dayfield.firstChild.nodeValue) {
		dayfield.firstChild.nodeValue=valstr;
	} else {
		dayfield.insertBefore( document.createTextNode(valstr),
				dayfield.firstChild );
	}
//cal.style.display="none";
	cal.parentNode.removeChild(cal);
}

function onChooseMonth(calid) {
	var cal=document.getElementById(calid);
	var actDateItem=document.getElementById("actdate_"+calid);
	var actdate=actDateItem.firstChild.nodeValue;
	var yearchooser=getElementByClassName(cal,"DIV","month_chooser");
	yearchooser.style.display="block";
}

function chooseMonth(calid,y) {
	var cal=document.getElementById(calid);
	var actDateItem=document.getElementById("actdate_"+calid);
	var actdate=actDateItem.firstChild.nodeValue;
	var yearchooser=getElementByClassName(cal,"DIV","month_chooser");
	var year=getElementByClassName(cal,"DIV","month");
	yearchooser.style.display="none";
	var s=actdate.split("-");
	s[1]=""+y;
	actDateItem.firstChild.nodeValue=s.join("-");
	year.firstChild.nodeValue=""+CONST_MONTH[y];
	fillDays(cal,y,parseInt(s[2]));
}


function onChooseYear(calid) {
	var cal=document.getElementById(calid);
	var actDateItem=document.getElementById("actdate_"+calid);
	var actdate=actDateItem.firstChild.nodeValue;
	var yearchooser=getElementByClassName(cal,"DIV","year_chooser");
	yearchooser.style.display="block";
}

function chooseYear(calid,y) {
	var cal=document.getElementById(calid);
	var actDateItem=document.getElementById("actdate_"+calid);
	var actdate=actDateItem.firstChild.nodeValue;
	var yearchooser=getElementByClassName(cal,"DIV","year_chooser");
	var year=getElementByClassName(cal,"DIV","choose_year");
	yearchooser.style.display="none";
	var s=actdate.split("-");
	s[2]=""+y;
	actDateItem.firstChild.nodeValue=s.join("-");
	year.firstChild.nodeValue=""+y;
	fillDays(cal,parseInt(s[1]),y);
}

function onOpenCalendar(that,cls,form) {
	var divs=that.childNodes;
	var i;
	for(i=0;i<divs.length;i++) {
		if (divs[i].nodeName=="DIV" && divs[i].className=="calendar") {
			return;
		}
	}
	var now=new Date();
	var cal=document.createElement("div");
	var calid="cal"+now.getTime();
	cal.id=calid;
	var actdate=document.createElement("div");
	actdate.className="actdate";
	actdate.id="actdate_"+calid;
	var ac;
	var fy=now.getFullYear();
	now.setFullYear(now.getFullYear()-22);
	actdate.appendChild( document.createTextNode(
		( ac=now.getDate() + "-"+now.getMonth() + "-"+now.getFullYear() ) )
	);
	cal.appendChild(actdate);
	cal.className="calendar"
	cal.style.display="inline";
	var year=document.createElement("div");
	var yleft=document.createElement("div");
	yleft.onclick=new Function("onclick","onScrollYear('"+calid+"',-1);");
	var y1=document.createElement("div");
	var y2=document.createElement("div");
	var y3=document.createElement("div");
	var y4=document.createElement("div");
	var y5=document.createElement("div");
	var yright=document.createElement("div");
	y1.onclick=new Function("onclick","onChooseYear('"+calid+"');");
	y1.appendChild(document.createTextNode(now.getFullYear()));
	var yearchooser=document.createElement("div");
	yearchooser.className="year_chooser";
	var i;
	var tdiv;
	for(i=fy-15;i>=fy-75;i--) {
		tdiv=document.createElement("div");
		tdiv.appendChild(document.createTextNode(i));
		tdiv.className="y"+i;
		tdiv.onclick= new Function("onclick","chooseYear('"+calid+"',"+i+");");
		tdiv.style.cursor="pointer";
		tdiv.style.paddingLeft="4px";
		tdiv.style.paddingRight="4px";
		tdiv.style.marginBottom="6px";
		yearchooser.appendChild(tdiv);
	}
	yleft.className="yleft";
	yright.className="yright";
	y1.className="choose_year";
	var month1=document.createElement("div");
	month1.appendChild(document.createTextNode(CONST_MONTH[now.getMonth()]));
	month1.className="month";
	var monthchooser=document.createElement("div");
	monthchooser.className="month_chooser";
	month1.onclick=new Function("onclick","onChooseMonth('"+calid+"');");
	for(i=0;i<12;i++) {
		tdiv=document.createElement("div");
		tdiv.appendChild(document.createTextNode(CONST_MONTH[i]));
		tdiv.className="m"+i;
		tdiv.onclick= new Function("onclick","chooseMonth('"+calid+"',"+i+");");
		tdiv.style.cursor="pointer";
		tdiv.style.paddingLeft="4px";
		tdiv.style.paddingRight="4px";
		tdiv.style.marginBottom="6px";
		monthchooser.appendChild(tdiv);
	}
	var weekdays=document.createElement("div");
	that.style.position="relative";
//cal.appendChild(yleft);
	cal.appendChild(y1);
	cal.appendChild(yearchooser);
	cal.appendChild(month1);
	cal.appendChild(monthchooser);
	var j;
	var cn;
	var dn;
	for(i=0;i<6;i++) {
		for(j=0;j<7;j++) {
			cn="day r"+i+" c"+j;
			dn=document.createElement("div");
			dn.appendChild(document.createTextNode("&nbsp;"));
			dn.id=calid+"_"+((i*7)+j); 
			dn.className=cn;
			dn.onclick=new Function("onlick",'selectDate("'+form+'","'+cls+'","'+calid+'",'+i+','+j+');');
			cal.appendChild(dn);

		}
	}
	that.appendChild(cal);
	fillDays(cal,now.getMonth(),now.getFullYear());
}

function fillDays(cal,month,year) {
	var d=new Date(year,month,1);
	var calid=cal.id;
	var wd;
	var c=0;
	var dn;
	var divs=cal.childNodes;
	var i;
	for(i=0;i<divs.length;i++) {
		if (divs[i].nodeName=="DIV" && divs[i].className.indexOf("day")==0) {
			divs[i].firstChild.nodeValue=" ";
		}
	}
	while(d.getMonth()==month) {
		wd=d.getDay();
		dn=document.getElementById(calid+"_"+(c*7+wd));
		dn.firstChild.nodeValue=""+d.getDate();
    //dn.firstChild=document.createTextNode(""+d.getDate());
		if (wd==6) c++;
		d.setDate(d.getDate()+1);
	}
}


