var docHTML ;
var dateField ;
var arrayDays ;
var arrayMonth ;
var posX, posY;
var layerIDGlobal ;
// window.onload = initCalendar ;
function initCalendar() {
	if (document.captureEvents) document.captureEvents(Event.MOUSEUP) ;
	document.onmouseup = initCalendarCoordinates ;
}
function initCalendarCoordinates (e) {
	// IE4
	if (document.all) {
		if (document.documentElement && document.documentElement.scrollTop)
		{
			posX = event.clientX  + document.documentElement.scrollLeft;
			posY = event.clientY  + document.documentElement.scrollTop;
		}
		else
		{
			posX = event.clientX  + document.body.scrollLeft;
			posY = event.clientY  + document.body.scrollTop;
		}
	}
	else {
	// Netscape und W3C compatible
		posX = parseInt(e.pageX+10) ;
		posY = parseInt(e.pageY) ;
	}
}
function showCalendar(layerID, sField) {
// Der Kalender wird aktiviert oder deaktiviert
	layerIDGlobal = layerID ;
	dateField = sField ;
	if (document.getElementById) {
	// W3C compatible
		if (document.getElementById(layerID).style.visibility == "visible") document.getElementById(layerID).style.visibility = "hidden" ;
		else {
			document.getElementById(layerID).style.visibility = "visible" ;
			document.getElementById(layerID).style.left = parseInt(posX) - 150 ;
			document.getElementById(layerID).style.top = parseInt(posY) + 20;
		}
	}
	else if (document.layers) {
	// Netscape compatible
		if (document.layers[layerID].visibility == "visible" | document.layers[layerID].visibility == "show") document.layers[layerID].visibility = "hide" ;
		else {
			document.layers[layerID].visibility = "show" ;
			document.layers[layerID].left = posX ;
			document.layers[layerID].top = posY ;
		}
	}
	else if (document.all) {
	// IE4 und  IE5 compatible
		if (document.all[layerID].style.visibility == "visible") document.all[layerID].style.visibility = "hidden" ;
		else {
			document.all[layerID].style.visibility = "visible" ;
			document.all[layerID].style.left = parseInt(posX) - 150 ;
			document.all[layerID].style.top = parseInt(posY)  + 20;
		}
	}
}
function drawCalendar(cYear, cMonth) {
// Der Kalender wird gezeichnet
	var myMonth = buildCalendar(cYear, cMonth)
	var showMonth = arrayMonth[parseInt(cMonth)] ;
	docHTML = "<table>" ;
	docHTML = docHTML + "<tr>" ;
	docHTML = docHTML + "<td class=cellTableQ><a class=arrowTableQQQ href='' style=\"font-family: Verdana, Arial, Helvetica ; font-size: 10px ; color: black ; text-decoration: none ;\" onclick='changeCalendar(" + parseInt(cYear-1) + ", " + parseInt(cMonth) + ") ; return false ; '><<</a></td>" ;
	docHTML = docHTML + "<td class=cellTableQ><a class=arrowTableQQQ href='' style=\"font-family: Verdana, Arial, Helvetica ; font-size: 10px ; color: black ; text-decoration: none ;\" onclick='changeCalendar(" + (cMonth==0 ? parseInt(cYear-1) : parseInt(cYear)) + ", " + (cMonth==0 ? 11 : parseInt(cMonth-1)) + ") ; return false ; '><</a></td>" ;
	docHTML = docHTML + "<td colspan=3 align=center><font style=\"font-family: Verdana, Arial, Helvetica ; font-size: 11px ; color: black ; font-weight:bold; text-decoration: none ;\">" + showMonth + " " + cYear + "</font></td>" ;
	docHTML = docHTML + "<td class=cellTableQ><a class=arrowTableQQQ href='' style=\"font-family: Verdana, Arial, Helvetica ; font-size: 10px ; color: black ; text-decoration: none ;\" onclick='changeCalendar(" + (cMonth==11 ? parseInt(cYear+1) : parseInt(cYear)) + ", " + (cMonth==11 ? 0 : parseInt(cMonth+1)) + ") ; return false ; '>></a></td>" ;
	docHTML = docHTML + "<td class=cellTableQ><a class=arrowTableQQQ style=\"font-family: Verdana, Arial, Helvetica ; font-size: 10px ; color: black ; text-decoration: none ;\" href='' onclick='changeCalendar(" + parseInt(cYear+1) + ", " + parseInt(cMonth) + ") ; return false ; '>>></a></td>" ;
	docHTML = docHTML + "</tr>" ;
	docHTML = docHTML + "<tr>" ;
	for (w=0; w<7; w++) {
		docHTML = docHTML + "<td class=pc08><font class=headingDaysQQ>" + myMonth[0][w] + "</font></td>" ;
	}
	docHTML = docHTML + "</tr>" ;
	for (w=1; w<7; w++) {
		docHTML = docHTML + "<tr>" ;
		for (d=0; d<7; d++) {
			docHTML = docHTML + "<td class=cellTable>" ;
			if ( !isNaN(myMonth[w][d]) ) {
				docHTML = docHTML + "<a class=bodyDaysQQQQ style=\"font-family: Verdana, Arial, Helvetica ; font-size: 10px ; color: black ; text-decoration: none ;\" href='' onclick='clickCalendar(" + myMonth[w][d] + ", " + parseInt(cMonth+1) + ", " + cYear + ") ; return false ; '>" + myMonth[w][d] + "</a>" ;
			}
			else docHTML = docHTML + "<font class=bodyDays>&nbsp;</font>" ;
			docHTML = docHTML + "</td>" ;
		}
		docHTML = docHTML + "</tr>" ;
	}
	docHTML = docHTML + "</table>" ;
	return docHTML;
}
function buildCalendar(aYear, aMonth) {
// Diese Funktion bestimmt eine Monats-Matrix
	var tMonth = new Array() ;
	var tDate1 = new Date(aYear, aMonth, 1) ;
	var tDate28 = new Date(aYear, aMonth, 28) ;
	var tDate29 = new Date(aYear, aMonth, 29) ;
	var tDate30 = new Date(aYear, aMonth, 30) ;
	var tDate31 = new Date(aYear, aMonth, 31) ;
	var tFirstDay = tDate1.getDay() ;
	var tDays = 0 ;
	if ( tDate31.getMonth() == tDate1.getMonth() ) tDays = tDate31.getDate() ;
	else if ( tDate30.getMonth() == tDate1.getMonth() ) tDays = tDate30.getDate() ;
	else if ( tDate29.getMonth() == tDate1.getMonth() ) tDays = tDate29.getDate() ;
	else if ( tDate28.getMonth() == tDate1.getMonth() ) tDays = tDate28.getDate() ;
	var tVar = 1 ;

	tMonth[0] = arrayDays ;
	tMonth[1] = new Array(7) ;
	tMonth[2] = new Array(7) ;
	tMonth[3] = new Array(7) ;
	tMonth[4] = new Array(7) ;
	tMonth[5] = new Array(7) ;
	tMonth[6] = new Array(7) ;
	if (tFirstDay == 0) {
		tMonth[1][6] = tVar ;
		tVar++ ;
	}
	else {
		for (d=tFirstDay-1; d<7; d++) {
			tMonth[1][d] = tVar ;
			tVar++ ;
		}
	}
	for (w=2; w<7; w++) {
		for (d=0; d<7; d++) {
			if (tVar <= tDays) {
				tMonth[w][d] = tVar ;
				tVar++ ;
			}
		}
	}
	return tMonth ;

}
function clickCalendar(sDay, sMonth, sYear) {
// Ein bestimmtes Datum wird ausgewählt
	if (sDay < 10) sDay = "0" + sDay ;
	if (sMonth < 10) sMonth = "0" + sMonth ;
	document.forms.PressMediaGalleryFilter.elements[dateField].value = sDay + "." + sMonth + "." + sYear ;
	showCalendar(layerIDGlobal, "") ;
}
function changeCalendar(nYear, nMonth) {
// Monat oder Jahr des Kalenders werden geändert
	if (document.getElementById) {
	// W3C compatible
		drawCalendar(nYear, nMonth) ;
		document.getElementById(layerIDGlobal).innerHTML = docHTML ;
	}
	else if (document.layers) {
	// Netscape compatible
		document.layers["DatePicker"].document.open() ;
		drawCalendar(nYear, nMonth) ;
		document.write("<div class='layerBackground'>")
		document.write(docHTML) ;
		document.write("</div>")
		document.layers["DatePicker"].document.close() ;
	}
	else if (document.all) {
	// IE4 und  IE5 compatible
		drawCalendar(nYear, nMonth) ;
		document.all["DatePicker"].innerHTML = docHTML ;
	}
}
