//	written	by Tan Ling	Wee	on 2 Dec 2001
//	last updated 3 December 2006 by Ralf Hettinger
//	email :	fuushikaden@yahoo.com

	var fixedX = -1			// x position (-1 if to appear below control)
	var fixedY = -1			// y position (-1 if to appear below control)
	var startAt = 1			// 0 - sunday ; 1 - monday
	var showWeekNumber = 0	// 0 - don't show; 1 - show
	var showToday = 0		// 0 - don't show; 1 - show
	var imgDir = "fileadmin/.site-templates/img/calendar/"			// directory for images ... e.g. var imgDir="/img/"

	var gotoString = "Zum aktuellen Monat"
	var todayString = "Heute ist"
	var weekString = "Wo"
	var scrollLeftMessage = "Vorheriger Monat"
	var scrollRightMessage = "N&auml;chster Monat"
	var selectMonthMessage = "Monatsauswahl"
	var selectYearMessage = "Jahresauswahl"
	var selectDateMessage = "[date] ausw&auml;hlen" // do not replace [date], it will be replaced by date.

	var crossobj, crossMonthObj, crossYearObj, monthSelected, yearSelected, dateSelected, omonthSelected, oyearSelected, odateSelected, monthConstructed, yearConstructed, intervalID1, intervalID2, timeoutID1, timeoutID2, ctlToPlaceValue, ctlNow, dateFormat, nStartingYear

	var bPageLoaded=false
	var ie=document.all
	var dom=document.getElementById

	var ns4=document.layers
	var today = new	Date()
	var dateNow = today.getDate()
	var monthNow = today.getMonth()
	var yearNow = today.getYear()
	var imgsrc = new Array("drop1.gif","drop2.gif","left1.gif","left2.gif","right1.gif","right2.gif")
	var img	= new Array()

	var bShow = false;

	/* hides <select> and <applet> objects (for IE only) */
	function hideElement( elmID, overDiv ) {
		if (ie) {
			for (i = 0; i < document.all.tags( elmID ).length; i++) {
				obj = document.all.tags( elmID )[i];
				if( !obj || !obj.offsetParent ) {
					continue;
				}

					// Find the element's offsetTop and offsetLeft relative to the BODY tag.
				objLeft = obj.offsetLeft;
				objTop = obj.offsetTop;
				objParent = obj.offsetParent;
				while (objParent.tagName.toUpperCase() != "BODY" ) {
					objLeft += objParent.offsetLeft;
					objTop += objParent.offsetTop;
					objParent = objParent.offsetParent;
				}
				objHeight = obj.offsetHeight;
				objWidth = obj.offsetWidth;
				if(( overDiv.offsetLeft + overDiv.offsetWidth ) <= objLeft );
				else if(( overDiv.offsetTop + overDiv.offsetHeight ) <= objTop );
				else if( overDiv.offsetTop >= ( objTop + objHeight ));
				else if( overDiv.offsetLeft >= ( objLeft + objWidth ));
				else {
					obj.style.visibility = "hidden";
				}
			}
		}
	}

	/*
	 * unhides <select> and <applet> objects (for IE only)
	 */
	function showElement( elmID ) {
		if (ie) {
			for( i = 0; i < document.all.tags( elmID ).length; i++ ) {
				obj = document.all.tags( elmID )[i];
				if( !obj || !obj.offsetParent ) {
					continue;
				}
				obj.style.visibility = "";
			}
		}
	}

	function HolidayRec (d, m, y, desc) {
		this.d = d
		this.m = m
		this.y = y
		this.desc = desc
	}

	var HolidaysCounter = 0
	var Holidays = new Array()

	function addHoliday (d, m, y, desc) {
		Holidays[HolidaysCounter++] = new HolidayRec ( d, m, y, desc )
	}

	if (dom) {
		for (i=0;i<imgsrc.length;i++) {
			img[i] = new Image
			img[i].src = imgDir + imgsrc[i]
		}
		document.write ("<div onclick='bShow=true' id='tlc_calendar' style='z-index:+999;position:absolute;visibility:hidden;'><table width="+((showWeekNumber==1)?248:218)+" style='font-family:arial;font-size:11px;border:0px;font-family:arial; font-size:11px;' bgcolor='#ffffff' cellspacing='0' cellpadding='0' border='0'><tr bgcolor='#9DA4AA'><td><table width='"+((showWeekNumber==1)?248:218)+"' cellspacing='2' cellpadding='0' border='0'><tr><td style='padding:2px;font-family:arial;font-size:11px;'><B><span id='tlc_caption'></span></B></td><td align=right><a href='javascript:hideCalendar()'><IMG SRC='"+imgDir+"close.gif' WIDTH='15' HEIGHT='14' BORDER='0' ALT='Schlie&szlig;en'></a></td></tr></table></td></tr><tr><td style='padding:5px' bgcolor=#c2c9cf><span id='tlc_content'></span></td></tr>")

		if (showToday==1) {
			document.write ("<tr bgcolor=#336699><td style='padding:5px' align=center><span id='tlc_lblToday'></span></td></tr>")
		}

		document.write ("</table></div><div id='tlc_selectMonth' style='z-index:+999;position:absolute;visibility:hidden;'></div><div id='tlc_selectYear' style='z-index:+999;position:absolute;visibility:hidden;'></div>");
	}

	var monthName = new Array("Januar","Februar","M&auml;rz","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember");
	if (startAt==0) {
		dayName = new Array	("So","Mo","Di","Mi","Do","Fr","Sa")
	} else {
		dayName = new Array	("Mo","Di","Mi","Do","Fr","Sa","So")
	}
	var styleAnchor="text-decoration:none;"
	var styleLightBorder="border:2px solid #065BA7;"

	function swapImage(srcImg, destImg) {
		if (ie) {
			document.getElementById(srcImg).setAttribute("src",imgDir + destImg)
		}
	}

	function init() {
		if (!ns4) {
			if (!ie) {
				yearNow += 1900
			}

			crossobj=(dom)?document.getElementById("tlc_calendar").style : ie? document.all.tlc_calendar : document.tlc_calendar
			hideCalendar()

			crossMonthObj=(dom)?document.getElementById("tlc_selectMonth").style : ie? document.all.tlc_selectMonth	: document.tlc_selectMonth

			crossYearObj=(dom)?document.getElementById("tlc_selectYear").style : ie? document.all.tlc_selectYear : document.tlc_selectYear

			monthConstructed=false;
			yearConstructed=false;

			if (showToday==1) {
				document.getElementById("tlc_lblToday").innerHTML =	todayString + " <a onmousemove='window.status=\""+gotoString+"\"' onmouseout='window.status=\"\"' title='"+gotoString+"' style='"+styleAnchor+"' href='javascript:monthSelected=monthNow;yearSelected=yearNow;constructCalendar();'>"+dayName[(today.getDay()-startAt==-1)?6:(today.getDay()-startAt)]+", " + dateNow + " " + monthName[monthNow].substring(0,3)	+ "	" +	yearNow	+ "</a>"
			}

			sHTML1="<span id='spanLeft' style='border:1px solid #7C8081;cursor:pointer;line-height:14px;height:14px;vertical-align:middle;' onmouseover='swapImage(\"changeLeft\",\"left2.gif\");this.style.borderColor=\"#065BA7\";window.status=\""+scrollLeftMessage+"\"' onclick='javascript:decMonth()' onmouseout='clearInterval(intervalID1);swapImage(\"changeLeft\",\"left1.gif\");this.style.borderColor=\"#7C8081\";window.status=\"\"' onmousedown='clearTimeout(timeoutID1);timeoutID1=setTimeout(\"StartDecMonth()\",500)' onmouseup='clearTimeout(timeoutID1);clearInterval(intervalID1)'><img id='changeLeft' src='"+imgDir+"left1.gif' width='13' height='14' border='0' style='vertical-align:bottom;margin:0px;padding:0px;border:0px;' /></span>&nbsp;"
			sHTML1+="<span id='spanRight' style='border:1px solid #7C8081;cursor:pointer;line-height:14px;height:14px;vertical-align:middle;' onmouseover='swapImage(\"changeRight\",\"right2.gif\");this.style.borderColor=\"#065BA7\";window.status=\""+scrollRightMessage+"\"' onmouseout='clearInterval(intervalID1);swapImage(\"changeRight\",\"right1.gif\");this.style.borderColor=\"#7C8081\";window.status=\"\"' onclick='incMonth()' onmousedown='clearTimeout(timeoutID1);timeoutID1=setTimeout(\"StartIncMonth()\",500)'	onmouseup='clearTimeout(timeoutID1);clearInterval(intervalID1)'><img id='changeRight' src='"+imgDir+"right1.gif' width='13' height='14' border='0' style='vertical-align:bottom;margin:0px;padding:0px;border:0px;'></span>&nbsp"
			sHTML1+="<span id='spanMonth' style='border:1px solid #7C8081;cursor:pointer;background:#C2C9CF; vertical-align:middle;line-height:14px; height:14px;' onmouseover='swapImage(\"changeMonth\",\"drop2.gif\");this.style.borderColor=\"#065BA7\";window.status=\""+selectMonthMessage+"\"' onmouseout='swapImage(\"changeMonth\",\"drop1.gif\");this.style.borderColor=\"#7C8081\";window.status=\"\"' onclick='popUpMonth()'></span>&nbsp;"
			sHTML1+="<span id='spanYear' style='border: 1px solid #7C8081;cursor:pointer;background:#C2C9CF;vertical-align:middle;line-height:14px; height:14px;' onmouseover='swapImage(\"changeYear\",\"drop2.gif\");this.style.borderColor=\"#065BA7\";window.status=\""+selectYearMessage+"\"'	onmouseout='swapImage(\"changeYear\",\"drop1.gif\");this.style.borderColor=\"#7C8081\";window.status=\"\"' onclick='popUpYear()'></span>&nbsp;"
			
			document.getElementById("tlc_caption").innerHTML  = sHTML1

			bPageLoaded=true
		}
	}

	function hideCalendar() {
		crossobj.visibility="hidden"
		if (crossMonthObj != null){
			crossMonthObj.visibility="hidden"
		}
		if (crossYearObj != null) {
			crossYearObj.visibility="hidden"
		}

		showElement( 'SELECT' );
		showElement( 'APPLET' );
	}

	function padZero(num) {
		return (num < 10)? '0' + num : num ;
	}

	function constructDate(d,m,y) {
		sTmp = dateFormat
		sTmp = sTmp.replace	("dd","<e>")
		sTmp = sTmp.replace	("d","<d>")
		sTmp = sTmp.replace	("<e>",padZero(d))
		sTmp = sTmp.replace	("<d>",d)
		sTmp = sTmp.replace	("mmm","<o>")
		sTmp = sTmp.replace	("mm","<n>")
		sTmp = sTmp.replace	("m","<m>")
		sTmp = sTmp.replace	("<m>",m+1)
		sTmp = sTmp.replace	("<n>",padZero(m+1))
		sTmp = sTmp.replace	("<o>",monthName[m])
		return sTmp.replace	("yyyy",y)
	}

	function closeCalendar() {
		var	sTmp

		hideCalendar();
		ctlToPlaceValue.value = constructDate(dateSelected,monthSelected,yearSelected)
	}


	/*
	 * Month Pulldown
	 */
	function StartDecMonth() {
		intervalID1=setInterval("decMonth()",80)
	}

	function StartIncMonth() {
		intervalID1=setInterval("incMonth()",80)
	}

	function incMonth () {
		monthSelected++
		if (monthSelected>11) {
			monthSelected=0
			yearSelected++
		}
		constructCalendar()
	}

	function decMonth () {
		monthSelected--
		if (monthSelected<0) {
			monthSelected=11
			yearSelected--
		}
		constructCalendar()
	}

	function constructMonth() {
		popDownYear()
		if (!monthConstructed) {
			sHTML = ""
			for (i=0; i<12;	i++) {
				sName = monthName[i];
				if (i==monthSelected){
					sHTML += "<tr><td id='m" + i + "' onmouseover='this.style.backgroundColor=\"#065BA7\";this.style.color=\"#FFFFFF\"' onmouseout='this.style.backgroundColor=\"\";this.style.color=\"\"' style='cursor:pointer;font-weight:bold;' onclick='monthConstructed=false;monthSelected=" + i + ";constructCalendar();popDownMonth();event.cancelBubble=true'>&nbsp;" + sName + "&nbsp;</td></tr>"
				} else {
					sHTML += "<tr><td id='m" + i + "' onmouseover='this.style.backgroundColor=\"#065BA7\";this.style.color=\"#FFFFFF\"' onmouseout='this.style.backgroundColor=\"\";this.style.color=\"\"' style='cursor:pointer' onclick='monthConstructed=false;monthSelected=" + i + ";constructCalendar();popDownMonth();event.cancelBubble=true'>&nbsp;" + sName + "&nbsp;</td></tr>"
				}
			}

			document.getElementById("tlc_selectMonth").innerHTML = "<table width=70 style='font-family:arial; font-size:11px; border:1px solid #065BA7' bgcolor='#E4E4E4' cellspacing=0 onmouseover='clearTimeout(timeoutID1)'	onmouseout='clearTimeout(timeoutID1);timeoutID1=setTimeout(\"popDownMonth()\",100);event.cancelBubble=true'>" + sHTML + "</table>"

			monthConstructed=true
		}
	}

	function popUpMonth() {
		constructMonth()
		crossMonthObj.visibility = (dom||ie)? "visible"	: "show"
		crossMonthObj.left = (parseInt(crossobj.left) + 40)+'px';
		crossMonthObj.top = (parseInt(crossobj.top) + 22)+'px';

		hideElement( 'SELECT', document.getElementById("tlc_selectMonth") );
		hideElement( 'APPLET', document.getElementById("tlc_selectMonth") );			
	}

	function popDownMonth()	{
		crossMonthObj.visibility= "hidden"
	}


	/*
	 * Year Pulldown
	 */
	function incYear() {
		for (i=0; i<7; i++){
			newYear	= (i+nStartingYear)+1
			if (newYear==yearSelected) {
				txtYear = "&nbsp;<B>" + newYear + "</B>&nbsp;" 
			} else { txtYear =	"&nbsp;" + newYear + "&nbsp;"
			}
			document.getElementById("y"+i).innerHTML = txtYear
		}
		nStartingYear ++;
		bShow=true
	}

	function decYear() {
		for (i=0; i<7; i++) {
			newYear	= (i+nStartingYear)-1
			if (newYear==yearSelected) {
				txtYear = "&nbsp;<B>" + newYear + "</B>&nbsp;"
			} else { txtYear =	"&nbsp;" + newYear + "&nbsp;"
			}
			document.getElementById("y"+i).innerHTML = txtYear
		}
		nStartingYear --;
		bShow=true
	}

	function selectYear(nYear) {
		yearSelected=parseInt(nYear+nStartingYear);
		yearConstructed=false;
		constructCalendar();
		popDownYear();
	}

	function constructYear() {
		popDownMonth()
		sHTML =	""
		if (!yearConstructed) {

			sHTML =	"<tr><td align='center' onmouseover='this.style.backgroundColor=\"#065BA7\";this.style.color=\"#FFFFFF\"' onmouseout='clearInterval(intervalID1);this.style.backgroundColor=\"\";this.style.color=\"\"' style='cursor:pointer' onmousedown='clearInterval(intervalID1);intervalID1=setInterval(\"decYear()\",30)' onmouseup='clearInterval(intervalID1)'>-</td></tr>"

			j = 0
			nStartingYear =	yearSelected-3
			for (i=(yearSelected-3); i<=(yearSelected+3); i++) {
				sName =	i;
				if (i==yearSelected) {
					sHTML += "<tr><td id='y" + j + "' onmouseover='this.style.backgroundColor=\"#065BA7\";this.style.color=\"#FFFFFF\"' onmouseout='this.style.backgroundColor=\"\";this.style.color=\"\"' style='cursor:pointer;font-weight:bold;' onclick='selectYear("+j+");event.cancelBubble=true'>&nbsp;" + sName + "&nbsp;</td></tr>"
				} else {
					sHTML += "<tr><td id='y" + j + "' onmouseover='this.style.backgroundColor=\"#065BA7\";this.style.color=\"#FFFFFF\"' onmouseout='this.style.backgroundColor=\"\";this.style.color=\"\"' style='cursor:pointer' onclick='selectYear("+j+");event.cancelBubble=true'>&nbsp;" + sName + "&nbsp;</td></tr>"
				}
				j ++;
			}

			sHTML += "<tr><td align='center' onmouseover='this.style.backgroundColor=\"#065BA7\";this.style.color=\"#FFFFFF\"' onmouseout='clearInterval(intervalID2);this.style.backgroundColor=\"\";this.style.color=\"\"' style='cursor:pointer' onmousedown='clearInterval(intervalID2);intervalID2=setInterval(\"incYear()\",30)'	onmouseup='clearInterval(intervalID2)'>+</td></tr>"

			document.getElementById("tlc_selectYear").innerHTML	= "<table width=44 style='font-family:arial; font-size:11px; border:1px solid #065BA7;' bgcolor='#E4E4E4' onmouseover='clearTimeout(timeoutID2)' onmouseout='clearTimeout(timeoutID2);timeoutID2=setTimeout(\"popDownYear()\",100)' cellspacing=0>"	+ sHTML	+ "</table>"

			yearConstructed	= true
		}
	}

	function popDownYear() {
		clearInterval(intervalID1)
		clearTimeout(timeoutID1)
		clearInterval(intervalID2)
		clearTimeout(timeoutID2)
		crossYearObj.visibility= "hidden"
	}

	function popUpYear() {
		var leftOffset

		constructYear()
		crossYearObj.visibility	= (dom||ie)? "visible" : "show"
		leftOffset = parseInt(crossobj.left) + document.getElementById("spanYear").offsetLeft;
/*
		if (ie) {
			leftOffset += 4
		}
*/
		crossYearObj.left = (leftOffset + 2)+'px';
		crossYearObj.top = (parseInt(crossobj.top) + 22)+'px';
	}

	/*
	 * calendar
	 */
	function WeekNbr(n) {
		// Algorithm used:
		// From Klaus Tondering's Calendar document (The Authority/Guru)
		// hhtp://www.tondering.dk/claus/calendar.html
		// a = (14-month) / 12
		// y = year + 4800 - a
		// m = month + 12a - 3
		// J = day + (153m + 2) / 5 + 365y + y / 4 - y / 100 + y / 400 - 32045
		// d4 = (J + 31741 - (J mod 7)) mod 146097 mod 36524 mod 1461
		// L = d4 / 1460
		// d1 = ((d4 - L) mod 365) + L
		// WeekNumber = d1 / 7 + 1

		year = n.getFullYear();
		month = n.getMonth() + 1;
		if (startAt == 0) {
			day = n.getDate() + 1;
		} else {
			day = n.getDate();
		}
 
		a = Math.floor((14-month) / 12);
		y = year + 4800 - a;
		m = month + 12 * a - 3;
		b = Math.floor(y/4) - Math.floor(y/100) + Math.floor(y/400);
		J = day + Math.floor((153 * m + 2) / 5) + 365 * y + b - 32045;
		d4 = (((J + 31741 - (J % 7)) % 146097) % 36524) % 1461;
		L = Math.floor(d4 / 1460);
		d1 = ((d4 - L) % 365) + L;
		week = Math.floor(d1/7) + 1;

		return week;
	}

	function constructCalendar () {
		var aNumDays = Array (31,0,31,30,31,30,31,31,30,31,30,31)

		var dateMessage
		var startDate = new Date (yearSelected,monthSelected,1)
		var endDate

		if (monthSelected==1) {
			endDate	= new Date (yearSelected,monthSelected+1,1);
			endDate	= new Date (endDate	- (24*60*60*1000));
			numDaysInMonth = endDate.getDate()
		} else {
			numDaysInMonth = aNumDays[monthSelected];
		}

		datePointer	= 0
		dayPointer = startDate.getDay() - startAt
		
		if (dayPointer<0) {
			dayPointer = 6
		}

		sHTML = "<table cellspacing='2' cellpadding='2' border=0 width='100%' style='font-family:verdana;font-size:10px;' bgcolor='#c2c9cf'><tr>"

		if (showWeekNumber==1) {
			sHTML += "<td width=27><b>" + weekString + "</b></td><td width=1 rowspan=7 bgcolor='#c2c9cf' style='padding:0px'><img src='"+imgDir+"divider.gif' width=1></td>"
		}

		for (i=0; i<7; i++) {
			sHTML += "<td width='27' align='right'><B>"+ dayName[i]+"</B></td>"
		}
		sHTML +="</tr><tr>"
		
		if (showWeekNumber==1) {
			sHTML += "<td align=right>" + WeekNbr(startDate) + "&nbsp;</td>"
		}

		for ( var i=1; i<=dayPointer;i++ ) {
			sHTML += "<td>&nbsp;</td>"
		}
	
		for ( datePointer=1; datePointer<=numDaysInMonth; datePointer++ ) {
			dayPointer++;
			sHTML += "<td align=right>"
			sStyle=styleAnchor
			if ((datePointer==odateSelected) && (monthSelected==omonthSelected) && (yearSelected==oyearSelected)) {
				sStyle+=styleLightBorder
			}

			sHint = ""
			for (k=0;k<HolidaysCounter;k++) {
				if ((parseInt(Holidays[k].d)==datePointer)&&(parseInt(Holidays[k].m)==(monthSelected+1))) {
					if ((parseInt(Holidays[k].y)==0) || ((parseInt(Holidays[k].y)==yearSelected) && (parseInt(Holidays[k].y)!=0))) {
						sStyle+="background-color:#FFDDDD;"
						sHint+=sHint==""?Holidays[k].desc:"\n"+Holidays[k].desc
					}
				}
			}

			var regexp= /\"/g
			sHint=sHint.replace(regexp,"&quot;")

			dateMessage = "onmousemove='window.status=\""+selectDateMessage.replace("[date]",constructDate(datePointer,monthSelected,yearSelected))+"\"' onmouseout='window.status=\"\"' "

			if ((datePointer==dateNow)&&(monthSelected==monthNow)&&(yearSelected==yearNow)) {
				sHTML += "<b><a "+dateMessage+" title=\"" + sHint + "\" style='"+sStyle+"' href='javascript:dateSelected="+datePointer+";closeCalendar();'><span style='color:#ff0000'>&nbsp;" + datePointer + "</span>&nbsp;</a></b>"
			} else {
				if (dayPointer % 7 == (startAt * -1)+1) {
					sHTML += "<a "+dateMessage+" title=\"" + sHint + "\" style='"+sStyle+"' href='javascript:dateSelected=" + datePointer + ";closeCalendar();'>&nbsp;<span style='color=#7C8081;font-style:italic'>" + datePointer + "</span>&nbsp;</a>"
				} else {
					sHTML += "<a "+dateMessage+" title=\"" + sHint + "\" style='"+sStyle+"' href='javascript:dateSelected=" + datePointer + ";closeCalendar();'>&nbsp;" + datePointer + "&nbsp;</a>"
				}
			}
			sHTML += ""
			if ((dayPointer+startAt) % 7 == startAt) { 
				sHTML += "</tr><tr>" 
				if ((showWeekNumber==1)&&(datePointer<numDaysInMonth)) {
					sHTML += "<td align=right>" + (WeekNbr(new Date(yearSelected,monthSelected,datePointer+1))) + "&nbsp;</td>"
				}
			}
		}

		document.getElementById("tlc_content").innerHTML   = sHTML
		document.getElementById("spanMonth").innerHTML = "&nbsp;" +	monthName[monthSelected] + "&nbsp;<img id='changeMonth' src='"+imgDir+"drop1.gif' WIDTH='13' HEIGHT='14' BORDER=0 style='vertical-align:bottom;'>"
		document.getElementById("spanYear").innerHTML =	"&nbsp;" + yearSelected	+ "&nbsp;<IMG id='changeYear' SRC='"+imgDir+"drop1.gif' WIDTH='13' HEIGHT='14' BORDER=0 style='vertical-align:bottom;'>"
	}

	function popUpCalendar(ctl, ctl2, format) {
		var leftpos=0
		var toppos=0

		if (bPageLoaded) {
			if ( crossobj.visibility == "hidden" ) {
				ctlToPlaceValue = ctl2
				dateFormat = format;

				formatChar = " "
				aFormat = dateFormat.split(formatChar)
				if (aFormat.length<3) {
					formatChar = "/"
					aFormat = dateFormat.split(formatChar)
					if (aFormat.length<3) {
						formatChar = "."
						aFormat = dateFormat.split(formatChar)
						if (aFormat.length<3) {
							formatChar = "-"
							aFormat = dateFormat.split(formatChar)
							if (aFormat.length<3) {
								// invalid date format
								formatChar=""
							}
						}
					}
				}
				tokensChanged = 0
				if ( formatChar != "" ) {
					// use user's date
					aData = ctl2.value.split(formatChar)

					for (i=0;i<3;i++) {
						if ((aFormat[i]=="d") || (aFormat[i]=="dd")) {
							dateSelected = parseInt(aData[i], 10)
							tokensChanged ++
						} else {
							if ((aFormat[i]=="m") || (aFormat[i]=="mm")) {
								monthSelected = parseInt(aData[i], 10) - 1
								tokensChanged ++
							} else {
								if (aFormat[i]=="yyyy") {
									yearSelected = parseInt(aData[i], 10)
									tokensChanged ++
								} else {
									if (aFormat[i]=="mmm") {
										for (j=0; j<12; j++) {
											if (aData[i]==monthName[j]) {
												monthSelected=j
												tokensChanged ++
											}
										}
									}
								}
							}
						}
					}
				}

				if ((tokensChanged!=3)||isNaN(dateSelected)||isNaN(monthSelected)||isNaN(yearSelected)) {
					dateSelected = dateNow
					monthSelected = monthNow
					yearSelected = yearNow
				}

				odateSelected=dateSelected
				omonthSelected=monthSelected
				oyearSelected=yearSelected

				aTag = ctl
				do {
					aTag = aTag.offsetParent;
					leftpos += aTag.offsetLeft;
					toppos += aTag.offsetTop;
				} while (aTag.tagName!="BODY");

				crossobj.left = (fixedX==-1 ? ctl.offsetLeft + leftpos : fixedX)+'px';
				crossobj.top = (fixedY==-1 ? ctl.offsetTop + toppos + ctl.offsetHeight + 2 : fixedY)+'px';
				constructCalendar (1, monthSelected, yearSelected);
				crossobj.visibility=(dom||ie)? "visible" : "show"

				hideElement( 'SELECT', document.getElementById("tlc_calendar") );
				hideElement( 'APPLET', document.getElementById("tlc_calendar") );

				bShow = true;
			} else {
				hideCalendar()
				if (ctlNow!=ctl) {
					popUpCalendar(ctl, ctl2, format)
				}
			}
			ctlNow = ctl
		}
	}

	document.onkeypress = function hidecal1 () { 
		if (event.keyCode==27) {
			hideCalendar()
		}
	}
	document.onclick = function hidecal2 () {
		if (!bShow) {
			hideCalendar()
		}
		bShow = false
	}

	if (ie) {
		init()
	} else {
		window.onload=init
	}
