
//You can edit these variables
var fixedX = -1 // x position (-1 if to appear below control)
var fixedY = -1 // y position (-1 if to appear below control)
var startAt = 0 // 0 - sunday ; 1 - monday
var showWeekNumber = 1 // 0 - don't show; 1 - show
var selectMonAndSun = 0 // 0 - no; 1 - yes
var showToday = 1 // 0 - don't show; 1 - show
var imgDir = "/tw/images/popcalendar/" // directory for images ... e.g. var imgDir="/img/"
var gotoString = "Select Today"
var todayString = "Today is "
var weekString = "Week"
var scrollLeftMessage = "Click to scroll to previous month. Hold mouse button to scroll automatically."
var scrollRightMessage = "Click to scroll to next month. Hold mouse button to scroll automatically."
var selectMonthMessage = "Click to select a month."
var selectYearMessage = "Click to select a year."
var selectHourMessage = "Click to select a Hour."
var selectMinuteMessage = "Click to select a Minute."
var selectWeekMessage = "Click to select a Week."
var selectDateMessage = "Select [date] as date." // do not replace [date], it will be replaced by date.
var styleAnchor="text-decoration:none;color:black;"
var styleLightBorder="border-style:solid;border-width:1px;border-color:#a0a0a0;"
//var monthName = new Array("January","February","March","April","May","June","July","August","September","October","November","December")
var monthName =	new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")
var imgsrc= new Array("drop1.gif","drop2.gif","left1.gif","left2.gif","right1.gif","right2.gif")

//Don't Edit these variables
var calendarobj,crossobj, crossMonthObj, crossYearObj, monthSelected, yearSelected, dateSelected, omonthSelected, oyearSelected, odateSelected, monthConstructed, yearConstructed, intervalID1, intervalID2, timeoutID1, timeoutID2, ctlToPlaceValue, ctlToPlaceValue1, ctlNow, dateFormat, nStartingYear, hourSelected, minuteSelected, weekSelected, hourConstructed, mintueConstructed, weekConstructed, crossHourObj, crossMinuteObj, crossWeekObj
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 img	= new Array() 
var bShow = false;
var showtime = false;
var showweek = false;
var HolidaysCounter = 0
var Holidays = new Array()

//for(i=0;i<monthName.length;i++){
//	for(j=monthName[i].length;j<9;j++){
//		monthName[i] += "&nbsp;&nbsp;";
//	}
//}

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='calendar'style='z-index:+999;position:absolute;visibility:hidden;'><table	width="+((showWeekNumber==1)?250:220)+" style='font-family:arial;font-size:11px;border-width:1;border-style:solid;border-color:#a0a0a0;font-family:arial; font-size:11px}' bgcolor='#ffffff'><tr bgcolor='#ABC7F1'><td><table width='"+((showWeekNumber==1)?248:218)+"'><tr><td style='padding:2px;font-family:arial; font-size:11px;'><font color='#ffffff'><B><span id='caption'></span></B></font></td><td align=right><a href='javascript:hideCalendar()'><IMG SRC='"+imgDir+"close.gif' WIDTH='15' HEIGHT='13' BORDER='0' ALT='Close the Calendar'></a></td></tr></table></td></tr><tr><td style='padding:5px' bgcolor=#ffffff><span id='content'></span></td></tr>")
	if (showToday==1){
		document.write ("<tr bgcolor=#f0f0f0><td style='font-family:verdana;font-size:10px;padding:5px' align=center><span id='lblToday'></span></td></tr>")
	}
	document.write ("</table></div><div id='selectMonth' style='z-index:+999;position:absolute;visibility:hidden;'></div><div id='selectYear' style='z-index:+999;position:absolute;visibility:hidden;'></div><div id='selectHour' style='z-index:+999;position:absolute;visibility:hidden;'></div><div id='selectMinute' style='z-index:+999;position:absolute;visibility:hidden;'></div><div id='selectWeek' style='z-index:+999;position:absolute;visibility:hidden;'></div>");
}
if (startAt==0){
	dayName = new Array ("Sun","Mon","Tue","Wed","Thu","Fri","Sat")
}
else{
	dayName = new Array ("Mon","Tue","Wed","Thu","Fri","Sat","Sun")
}
document.onkeypress = function hidecal1 () { 
	if (event.keyCode==27){
		hideCalendar()
	}
}
document.body.onclick = function hidecal2 () { 		
	if (!bShow){
		hideCalendar()
	}
	bShow = false
}
if(ie){
//alert("IE");
	init()
}
else{
//alert("MF");
	init()
//	window.onload=function(){init()}
}


// 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 );
	           /*Change by Shield */
			  else if( overDiv.offsetTop >= ( objTop + objHeight ));
	           /* END Change */
			  else if( overDiv.offsetLeft >= ( objLeft + objWidth ));
			  else
			  {
			    obj.style.visibility = "hidden";
			  }
		}
	}
}
     
//unhides <select> and <applet> objects (for IE only)
function showElement( elmID ){
	if( ie ){
		try {
			for( i = 0; i < document.all.tags( elmID ).length; i++ ){
	  			obj = document.all.tags( elmID )[i];
				if( !obj || !obj.offsetParent ){
	    				continue;
				}
				obj.style.visibility = "";
			}
	    }
	    catch(ex) {
	    	return;
	    }
		
	}
}

function HolidayRec (d, m, y, desc){
	this.d = d
	this.m = m
	this.y = y
	this.desc = desc
}

function addHoliday (d, m, y, desc){
	Holidays[HolidaysCounter++] = new HolidayRec ( d, m, y, desc )
}

function swapImage(srcImg, destImg){
	if (ie)	{ document.getElementById(srcImg).setAttribute("src",imgDir + destImg) }
}

function init()	{
//	if (!ns4)
//	{
		if (!ie) { yearNow += 1900	}
		calendarobj= document.getElementById("calendar")
		crossobj=(dom)?calendarobj.style : ie? document.all.calendar : document.calendar
		hideCalendar()
		crossMonthObj=(dom)?document.getElementById("selectMonth").style : ie? document.all.selectMonth	: document.selectMonth
		crossYearObj=(dom)?document.getElementById("selectYear").style : ie? document.all.selectYear : document.selectYear
		crossHourObj=(dom)?document.getElementById("selectHour").style : ie? document.all.selectHour : document.selectHour
		crossMinuteObj=(dom)?document.getElementById("selectMinute").style : ie? document.all.selectMinute : document.selectMinute
		crossWeekObj=(dom)?document.getElementById("selectWeek").style : ie? document.all.selectWeek : document.selectWeek
		monthConstructed=false;
		yearConstructed=false;
		hourConstructed=false;
		minuteConstructed=false;
		weekConstructed=false;
		if (showToday==1)
		{
			document.getElementById("lblToday").innerHTML =	" <a onmousemove='window.status=\""+gotoString+"\"' onmouseout='window.status=\"\"' title='"+gotoString+"' style='"+styleAnchor+"' href='javascript:dateSelected=dateNow;monthSelected=monthNow;yearSelected=yearNow;closeCalendar();'>"+todayString+dayName[(today.getDay()-startAt==-1)?6:(today.getDay()-startAt)]+", " + dateNow + " " + monthName[monthNow].substring(0,3)	+ "	" +	yearNow	+ "</a>"
		}
		initmenu()
//alert("init");
		bPageLoaded=true
//	}
}

function initmenu() {
	sHTML1="<span id='spanYear' style='border-style:solid;border-width:1;border-color:#3366FF;cursor:pointer' onmouseover='swapImage(\"changeYear\",\"drop2.gif\");this.style.borderColor=\"#88AAFF\";window.status=\""+selectYearMessage+"\"'	onmouseout='swapImage(\"changeYear\",\"drop1.gif\");this.style.borderColor=\"#3366FF\";window.status=\"\"'	onclick='popUpYear()'></span>&nbsp;"
	sHTML1+="<span id='spanLeft'	style='border-style:solid;border-width:1;border-color:#3366FF;cursor:pointer' onmouseover='swapImage(\"changeLeft\",\"left2.gif\");this.style.borderColor=\"#88AAFF\";window.status=\""+scrollLeftMessage+"\"' onclick='javascript:decMonth()' onmouseout='clearInterval(intervalID1);swapImage(\"changeLeft\",\"left1.gif\");this.style.borderColor=\"#3366FF\";window.status=\"\"' onmousedown='clearTimeout(timeoutID1);timeoutID1=setTimeout(\"StartDecMonth()\",500)'	onmouseup='clearTimeout(timeoutID1);clearInterval(intervalID1)'>&nbsp<IMG id='changeLeft' SRC='"+imgDir+"left1.gif' width=10 height=11 BORDER=0>&nbsp</span>&nbsp;"
	sHTML1+="<span id='spanMonth' style='border-style:solid;border-width:1;border-color:#3366FF;cursor:pointer'	onmouseover='swapImage(\"changeMonth\",\"drop2.gif\");this.style.borderColor=\"#88AAFF\";window.status=\""+selectMonthMessage+"\"' onmouseout='swapImage(\"changeMonth\",\"drop1.gif\");this.style.borderColor=\"#3366FF\";window.status=\"\"' onclick='popUpMonth()'></span>&nbsp;"
	sHTML1+="<span id='spanRight' style='border-style:solid;border-width:1;border-color:#3366FF;cursor:pointer'	onmouseover='swapImage(\"changeRight\",\"right2.gif\");this.style.borderColor=\"#88AAFF\";window.status=\""+scrollRightMessage+"\"' onmouseout='clearInterval(intervalID1);swapImage(\"changeRight\",\"right1.gif\");this.style.borderColor=\"#3366FF\";window.status=\"\"' onclick='incMonth()' onmousedown='clearTimeout(timeoutID1);timeoutID1=setTimeout(\"StartIncMonth()\",500)'	onmouseup='clearTimeout(timeoutID1);clearInterval(intervalID1)'>&nbsp<IMG id='changeRight' SRC='"+imgDir+"right1.gif'	width=10 height=11 BORDER=0>&nbsp</span>&nbsp"
	if(showtime){
		sHTML1+="Time:&nbsp;<span id='spanHour' style='border-style:solid;border-width:1;border-color:#3366FF;cursor:pointer' onmouseover='swapImage(\"changeHour\",\"drop2.gif\");this.style.borderColor=\"#88AAFF\";window.status=\""+selectHourMessage+"\"'	onmouseout='swapImage(\"changeHour\",\"drop1.gif\");this.style.borderColor=\"#3366FF\";window.status=\"\"'	onclick='popUpHour()'></span>&nbsp;"
		sHTML1+=":&nbsp;<span id='spanMinute' style='border-style:solid;border-width:1;border-color:#3366FF;cursor:pointer' onmouseover='swapImage(\"changeMinute\",\"drop2.gif\");this.style.borderColor=\"#88AAFF\";window.status=\""+selectMinuteMessage+"\"'	onmouseout='swapImage(\"changeMinute\",\"drop1.gif\");this.style.borderColor=\"#3366FF\";window.status=\"\"'	onclick='popUpMinute()'></span>&nbsp;"
	}else if(showweek){
		sHTML1+="Week:&nbsp;<span id='spanWeek' style='border-style:solid;border-width:1;border-color:#3366FF;cursor:pointer' onmouseover='swapImage(\"changeWeek\",\"drop2.gif\");this.style.borderColor=\"#88AAFF\";window.status=\""+selectWeekMessage+"\"'	onmouseout='swapImage(\"changeWeek\",\"drop1.gif\");this.style.borderColor=\"#3366FF\";window.status=\"\"'	onclick='popUpWeek()'></span>&nbsp;"
	}else{
		sHTML1+="<span id='spanHour' style='visibility:hidden'></span><span id='spanMinute' style='visibility:hidden'></span>"
	}
	
	document.getElementById("caption").innerHTML  =	sHTML1	
}


function hideCalendar()	{
	crossobj.visibility="hidden"
	if (crossMonthObj != null){crossMonthObj.visibility="hidden"}
	if (crossYearObj != null){crossYearObj.visibility="hidden"}
	if (crossHourObj != null){crossHourObj.visibility="hidden"}
	if (crossMinuteObj != null){crossMinuteObj.visibility="hidden"}
	if (crossWeekObj != null){crossWeekObj.visibility="hidden"}
    	showElement( 'SELECT' );
	showElement( 'APPLET' );
}

function padZero(num) {
	return (num	< 10)? '0' + num : num ;
}

function constructDate(d,m,y){
	var sTmp
	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])
	sTmp = sTmp.replace ("yyyy",y)
	if(showtime){
		sTmp = sTmp + " " + hourSelected + ":" + minuteSelected + ":" + "00"
	}
	return sTmp
	
}

function closeCalendar() {
	hideCalendar();
	if(selectMonAndSun == 1){
		var selectedDate = new Date(yearSelected,monthSelected,dateSelected);
		var selectedDay = selectedDate.getDay();
		if(selectedDay == 0){selectedDay = 7;}
		var monDate = new Date(selectedDate - (24*60*60*1000)*(selectedDay - 1));
		ctlToPlaceValue.value =	constructDate(monDate.getDate(),monDate.getMonth(),monDate.getFullYear());
		var sunDate = new Date(selectedDate - (24*60*60*1000)*(selectedDay - 7));
		ctlToPlaceValue1.value = constructDate(sunDate.getDate(),sunDate.getMonth(),sunDate.getFullYear());
	}else{
	    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()
	popDownHour()
	popDownMinute()
	popDownWeek()
	if (!monthConstructed) {
		sHTML =	""
		for	(i=0; i<12;	i++) {
			sName =	monthName[i];
			if (i==monthSelected){
				sName =	"<B>" +	sName +	"</B>"
			}
			sHTML += "<tr><td id='m" + i + "' onmouseover='this.style.backgroundColor=\"#FFCC99\"' onmouseout='this.style.backgroundColor=\"\"' style='font-family:verdana;font-size:10px;cursor:pointer' onclick='monthConstructed=false;monthSelected=" + i + ";constructCalendar();popDownMonth();event.cancelBubble=true'>&nbsp;" + sName + "&nbsp;</td></tr>"
		}

		document.getElementById("selectMonth").innerHTML = "<table width=40	style='font-family:arial; font-size:11px; border-width:1; border-style:solid; border-color:#a0a0a0;' bgcolor='#FFFFDD' 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) + 76
	crossMonthObj.top =	parseInt(crossobj.top) + 26

	hideElement( 'SELECT', document.getElementById("selectMonth") );
	hideElement( 'APPLET', document.getElementById("selectMonth") );			
}

function popDownMonth()	{
	crossMonthObj.visibility= "hidden"
}


// Hour Pulldown
function constructHour() {
	popDownYear()
	popDownMonth()
	popDownMinute()
	if (!hourConstructed) {
		sHTML =	""
		for(i=0; i<=5; i++){
			sHTML += "<tr>"
			for	(j=1; j<=4; j++) {
				z = i*4+j-1
				if(z<10){
					sName =	"0" + z;
				}else{
					sName =	z;
				}
				stext =	sName
				if (sName==hourSelected){
					stext =	"<B>" +	sName +	"</B>"
				}
				sHTML += "<td id='m" + i + "' onmouseover='this.style.backgroundColor=\"#FFCC99\"' onmouseout='this.style.backgroundColor=\"\"' style='font-family:verdana;font-size:10px;cursor:pointer' onclick='hourConstructed=false;hourSelected=\"" + sName + "\";constructCalendar();popDownHour();event.cancelBubble=true'>&nbsp;" + stext + "&nbsp;</td>"
			}
			sHTML += "</tr>"
		}
		document.getElementById("selectHour").innerHTML = "<table width=30	style='font-family:arial; font-size:11px; border-width:1; border-style:solid; border-color:#a0a0a0;' bgcolor='#FFFFDD' cellspacing=0 onmouseover='clearTimeout(timeoutID1)'	onmouseout='clearTimeout(timeoutID1);timeoutID1=setTimeout(\"popDownHour()\",100);event.cancelBubble=true'>" +	sHTML +	"</table>"
		hourConstructed=true
	}
}

function popUpHour() {
	constructHour()
	crossHourObj.visibility = (dom||ie)? "visible"	: "show"
	crossHourObj.left = parseInt(crossobj.left) + 178
	crossHourObj.top =  parseInt(crossobj.top) + 26

	hideElement( 'SELECT', document.getElementById("selectHour") );
	hideElement( 'APPLET', document.getElementById("selectHour") );			
}

function popDownHour()	{
	crossHourObj.visibility= "hidden"
}


// Minute Pulldown
function constructMinute() {
	popDownYear()
	popDownMonth()
	popDownHour()
	if (!minuteConstructed) {
		sHTML =	""
		for(i=0; i<=5; i++){
			sHTML += "<tr>"
			for	(j=1; j<=10; j++) {
				z = i*10+j-1
				if(z<10){
					sName =	"0" + z;
				}else{
					sName =	z;
				}
				stext =	sName
				if (sName==minuteSelected){
					stext =	"<B>" +	sName +	"</B>"
				}
				sHTML += "<td id='m" + i + "' onmouseover='this.style.backgroundColor=\"#FFCC99\"' onmouseout='this.style.backgroundColor=\"\"' style='font-family:verdana;font-size:10px;cursor:pointer' onclick='minuteConstructed=false;minuteSelected=\"" + sName + "\";constructCalendar();popDownMinute();event.cancelBubble=true'>&nbsp;" + stext + "&nbsp;</td>"
			}
			sHTML += "</tr>"
		}
		document.getElementById("selectMinute").innerHTML = "<table width=30	style='font-family:arial; font-size:11px; border-width:1; border-style:solid; border-color:#a0a0a0;' bgcolor='#FFFFDD' cellspacing=0 onmouseover='clearTimeout(timeoutID1)'	onmouseout='clearTimeout(timeoutID1);timeoutID1=setTimeout(\"popDownMinute()\",100);event.cancelBubble=true'>" + sHTML + "</table>"
		minuteConstructed=true
	}
}

function popUpMinute() {
	constructMinute()
	crossMinuteObj.visibility = (dom||ie)? "visible"	: "show"
	crossMinuteObj.left = parseInt(crossobj.left) + 220
	crossMinuteObj.top =	parseInt(crossobj.top) + 26

	hideElement( 'SELECT', document.getElementById("selectMinute") );
	hideElement( 'APPLET', document.getElementById("selectMinute") );			
}

function popDownMinute()	{
	crossMinuteObj.visibility= "hidden"
}


// Week Pulldown
function constructWeek() {
	popDownYear()
	popDownMonth()
	//popDownHour()
	if (!weekConstructed) {
		var endDate =	new Date (yearSelected,11,31)
		var day = WeekNbr(endDate)
		day = day==1 ? 52 : day
		sHTML =	""
		for(i=0; i<=6; i++){
			sHTML += "<tr>"
			for	(j=1; j<=8; j++) {
				z = i*8+j
				if(z<10){
					sName =	"0" + z;
				}else if(z>day){
					sName =	"";
				}else{
					sName =	z;				
				}
				stext =	sName
				if (sName==weekSelected){
					stext =	"<B>" +	sName +	"</B>"
				}
				sHTML += "<td id='m" + i + "' onmouseover='this.style.backgroundColor=\"#FFCC99\"' onmouseout='this.style.backgroundColor=\"\"' style='font-family:verdana;font-size:10px;cursor:pointer' onclick='weekConstructed=false;weekSelected=\"" + sName + "\";monthSelected=getNMonth("+ sName +");constructCalendar();popDownWeek();event.cancelBubble=true'>&nbsp;" + stext + "&nbsp;</td>"
			}
			sHTML += "</tr>"
		}
		document.getElementById("selectWeek").innerHTML = "<table width=30	style='font-family:arial; font-size:11px; border-width:1; border-style:solid; border-color:#a0a0a0;' bgcolor='#FFFFDD' cellspacing=0 onmouseover='clearTimeout(timeoutID1)'	onmouseout='clearTimeout(timeoutID1);timeoutID1=setTimeout(\"popDownWeek()\",100);event.cancelBubble=true'>" + sHTML + "</table>"
		weekConstructed=true
	}
}

function popUpWeek() {
	constructWeek()
	crossWeekObj.visibility = (dom||ie)? "visible"	: "show"
	crossWeekObj.left = parseInt(crossobj.left) + 180
	crossWeekObj.top =	parseInt(crossobj.top) + 26

	hideElement( 'SELECT', document.getElementById("selectWeek") );
	hideElement( 'APPLET', document.getElementById("selectWeek") );			
}

function popDownWeek()	{
	crossWeekObj.visibility= "hidden"
	weekConstructed=false
}


// 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()
	popDownHour()
	popDownMinute()
	popDownWeek()
	sHTML =	""
	if (!yearConstructed) {
		sHTML =	"<tr><td align='center'	onmouseover='this.style.backgroundColor=\"#FFCC99\"' onmouseout='clearInterval(intervalID1);this.style.backgroundColor=\"\"' style='font-family:verdana;font-size:10px;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){
				sName =	"<B>" +	sName +	"</B>"
			}
			sHTML += "<tr><td id='y" + j + "' onmouseover='this.style.backgroundColor=\"#FFCC99\"' onmouseout='this.style.backgroundColor=\"\"' style='font-family:verdana;font-size:10px;cursor:pointer' onclick='selectYear("+j+");event.cancelBubble=true'>&nbsp;" + sName + "&nbsp;</td></tr>"
			j ++;
		}
		sHTML += "<tr><td align='center' onmouseover='this.style.backgroundColor=\"#FFCC99\"' onmouseout='clearInterval(intervalID2);this.style.backgroundColor=\"\"' style='font-family:verdana;font-size:10px;cursor:pointer' onmousedown='clearInterval(intervalID2);intervalID2=setInterval(\"incYear()\",30)'	onmouseup='clearInterval(intervalID2)'>+</td></tr>"
		document.getElementById("selectYear").innerHTML	= "<table width=44 style='font-family:arial; font-size:11px; border-width:1; border-style:solid; border-color:#a0a0a0;'	bgcolor='#FFFFDD' 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 += 6
	}
	crossYearObj.left =	leftOffset
	crossYearObj.top = parseInt(crossobj.top) +	26
}

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 getNMonth(nweek) {
	var aNumDays = Array (31,28,31,30,31,30,31,31,30,31,30,31);
	var days = nweek * 7;
	var month = 1;
	while(days - aNumDays[month] > 0) {
		days = days - aNumDays[month];
		month++;
	}
	return month-1;
}


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 lastMonthDate = new Date (startDate	- (24*60*60*1000)).getDate();
	var endDate
	endDate	= new Date (yearSelected,monthSelected+1,1);
	endDate	= new Date (endDate	- (24*60*60*1000));
	if (monthSelected==1){
		numDaysInMonth = endDate.getDate()
	}
	else{
		numDaysInMonth = aNumDays[monthSelected];
	}
	datePointer	= 0
	dayPointer = startDate.getDay() - startAt
	if (dayPointer<0){
		dayPointer = 6
	}
	sHTML =	"<table	 border=0 style='font-family:verdana;font-size:10px;'><tr>"
	if (showWeekNumber==1){
		sHTML += "<td width=27 style='font-family:verdana;font-size:10px;'><b>" + weekString + "</b></td><td width=1 rowspan=7 bgcolor='#d0d0d0' style='padding:0px'><img src='"+imgDir+"divider.gif' width=1></td>"
	}
	for	(i=0; i<7; i++)	{
		sHTML += "<td width='27' align='right' style='font-family:verdana;font-size:10px;'><B>"+ dayName[i]+"</B></td>"
	}
	sHTML +="</tr><tr>"
	if (showWeekNumber==1){
		sHTML += "<td align=right style='font-family:verdana;font-size:10px;'><font color=#00AA00>" + WeekNbr(startDate) + "&nbsp;</font></td>"
	}
	for	( var i=dayPointer-1; i>=0;i-- ){
		sHTML += "<td align=right style='font-family:verdana;font-size:10px;'><font color=#bbbbbb>&nbsp;"+(lastMonthDate-i)+"&nbsp;</font></td>"
	}
	for	( datePointer=1; datePointer<=numDaysInMonth; datePointer++ ){
		dayPointer++;
		sHTML += "<td align=right style='font-family:verdana;font-size:10px;cursor:pointer'>"
		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))
		{ sStyle+="background-color:#3366FF;";
			sHTML += "<b><a "+dateMessage+" title=\"" + sHint + "\" style='"+sStyle+"' onclick='javascript:dateSelected="+datePointer+";closeCalendar();'><font color=#ffffff>&nbsp;" + datePointer + "</font>&nbsp;</a></b>"}
		else if	(dayPointer % 7 == (startAt * -1)+1 || dayPointer % 7 == (startAt * -1))
		{ sHTML += "<a "+dateMessage+" title=\"" + sHint + "\" style='"+sStyle+"' onclick='javascript:dateSelected="+datePointer + ";closeCalendar();'><font color=#ff0000>&nbsp;" + datePointer + "</font>&nbsp;</a>" }
		else
		{ sHTML += "<a "+dateMessage+" title=\"" + sHint + "\" style='"+sStyle+"' onclick='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 style='font-family:verdana;font-size:10px;'><font color=#00AA00>" + (WeekNbr(new Date(yearSelected,monthSelected,datePointer+1))) + "&nbsp;</font></td>"
			}
		}
	}
	dayPointer = endDate.getDay();
	for( var i=1; i<7-dayPointer-startAt;i++ ){
		sHTML += "<td align=right style='font-family:verdana;font-size:10px;'><font color=#bbbbbb>&nbsp;"+i+"&nbsp;</font></td>";
	}
	document.getElementById("content").innerHTML   = sHTML
	document.getElementById("spanMonth").innerHTML = "&nbsp;" + monthName[monthSelected] + "&nbsp;<IMG id='changeMonth' SRC='"+imgDir+"drop1.gif' WIDTH='12' HEIGHT='10' BORDER=0>"
	document.getElementById("spanYear").innerHTML =	"&nbsp;" + yearSelected	+ "&nbsp;<IMG id='changeYear' SRC='"+imgDir+"drop1.gif' WIDTH='12' HEIGHT='10' BORDER=0>"
	if(showtime){
		document.getElementById("spanHour").innerHTML =	"&nbsp;" + hourSelected	+ "&nbsp;<IMG id='changeHour' SRC='"+imgDir+"drop1.gif' WIDTH='12' HEIGHT='10' BORDER=0>"
		document.getElementById("spanMinute").innerHTML ="&nbsp;" + minuteSelected + "&nbsp;<IMG id='changeMinute' SRC='"+imgDir+"drop1.gif' WIDTH='12' HEIGHT='10' BORDER=0>"
	}
	if(showweek){
		document.getElementById("spanWeek").innerHTML =	"&nbsp;" + weekSelected + "&nbsp;<IMG id='changeWeek' SRC='"+imgDir+"drop1.gif' WIDTH='12' HEIGHT='10' BORDER=0>"
	}
	
}

function popUpCalendar(ctl, ctl2, format, init) {
	var leftpos=0
	var toppos=0
	if (bPageLoaded){
		initmenu()
		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
				if(ctl2.value.length > 0){
					aData =	ctl2.value.split(formatChar)
				}else if(init != null){
					aData =	init.split(formatChar)		
				}else{
					aData = "";
				}
				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 ++
							}
						}
					}
				}
				var sdate = ctl2.value
				timestart = sdate.lastIndexOf(" ")
				hourSelected = sdate.substring(timestart+1,timestart+3)
				minuteSelected = sdate.substring(timestart+4,timestart+6)
				weekSelected = WeekNbr(new Date(yearSelected,monthSelected,dateSelected))
			}
			if ((tokensChanged!=3)||isNaN(monthSelected)||isNaN(yearSelected)){
				dateSelected = dateNow
				monthSelected =	monthNow
				yearSelected = yearNow
				hourSelected = "00"
				minuteSelected = "00"
				weekSelected = "01"
			}
			if(ctl2.value.length==0 && init != null){
				hourSelected = "00"
				minuteSelected = "00"
			}
			
			odateSelected=dateSelected
			omonthSelected=monthSelected
			oyearSelected=yearSelected
			aTag = ctl
			do {
				aTag = aTag.offsetParent;
				leftpos	+= aTag.offsetLeft;
				toppos += aTag.offsetTop;
			} while(aTag.tagName!="BODY");
			//add by Shield
			
			var weekWidth = showWeekNumber==1 ?30 :0
            		var divWidth = 225
            		if(showtime == true){divWidth = divWidth + 20}
            		if(showweek == true){divWidth = divWidth + 0}
            		divWidth = divWidth + weekWidth
            		//crossobj.left = fixedX==-1 ? ((ctl.offsetLeft + leftpos + divWidth)>screen.width? (screen.width-divWidth) :(ctl.offsetLeft + leftpos + ctl.offsetWidth - divWidth)) : fixedX
            		crossobj.left = fixedX==-1 ? (ctl.offsetLeft + leftpos + ctl.offsetWidth - divWidth ) : fixedX
            		crossobj.left = crossobj.left<'0px' ? '0px' : crossobj.left
 			
 			crossobj.top = fixedY==-1 ?	ctl.offsetTop +	toppos + ctl.offsetHeight +	2 :	fixedY
			constructCalendar (1, monthSelected, yearSelected);
			crossobj.visibility=(dom||ie)? "visible" : "show"
			
			if(ie){
				if((document.body.clientHeight - event.clientY - calendarobj.offsetHeight) < 0){
					crossobj.top = fixedY==-1 ?	ctl.offsetTop +	toppos  - calendarobj.offsetHeight:	fixedY
				}
			}
			hideElement( 'SELECT', document.getElementById("calendar") );
			hideElement( 'APPLET', document.getElementById("calendar") );			
			bShow = true;
		}
		else{
			hideCalendar()
			if (ctlNow!=ctl) {popUpCalendar(ctl, ctl2, format, init)}
		}
		ctlNow = ctl
	}
}

function popUpTimeCalendar(ctl,	ctl2, format, init) {
	showtime = true
	showweek = false
	selectMonAndSun = 0
	popUpCalendar(ctl, ctl2, format, init)
}

function popUpDateCalendar(ctl,	ctl2, format, init) {
	showtime = false
	showweek = false
	selectMonAndSun = 0
	popUpCalendar(ctl, ctl2, format, init)
}

function popUpWeekCalendar(ctl,	ctl2, format, init) {
	showtime = false
	showweek = true
	selectMonAndSun = 0
	popUpCalendar(ctl, ctl2, format, init)
}

//get Monday and Sunday of the week
//Add by Eric Bao at 20070919
function popUpMonCalendar(ctl, ctl1, ctl2, format, init) {
	showtime = false
	showweek = false
	selectMonAndSun = 1
	ctlToPlaceValue1 = ctl2
	popUpCalendar(ctl, ctl1, format, init)
}
