<!--
/*
Title: Timestamp picker
Description: See the demo at url
URL: http:us.geocities.com/tspicker/
Script featured on: http:javascriptkit.com/script/script2/timestamp.shtml
Version:	1.0
Date:			12-05-2001 (mm-dd-yyyy)
Author:		Denis Gritcyuk <denis@softcomplex.com>; <tspicker@yahoo.com>
Notes:		Permission given to use this script in any kind of applications if
					header lines are left unchanged. Feel free to contact the author
					for feature requests and/or donations
Version:	1.01 (ABX implementation)
Date:			05-01-2002
Author:		Airborne Express Development
Notes:		Revised for airborne.com usage.
*/

	var gintIntervalID, gstrDateLast;
	
	function getCalendar(istrForm, iblnFutureMode){
		// High-level calendar retrieval function.
		//alert (istrForm);
		
			istrForm += ".hdnDate";
		
		if (iblnFutureMode){
			showCalendarFutureY("document." + istrForm, getHiddenDate());
		}
		else{
			showCalendarFutureY("document." + istrForm, getHiddenDate());
		}
		gintIntervalID = window.setInterval("checkForNewDate()", 500);
	}

	function showCalendarFutureY(istrTarget, istrDateTime){
		// Detail-level calendar engine.
		var astrMonths				= ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
		var astrWeekdays			= ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"];
		var intFirstDayOfWeek	= 0;
		var strFontWhtXs			= "<font color=\"#ffffff\" face=\"arial, helvetica, sans-serif\" size=\"1\">";
		var strFontWhtSm			= "<font color=\"#ffffff\" face=\"arial, helvetica, sans-serif\" size=\"2\">";
		var strFontWhtLg			= "<font color=\"#ffffff\" face=\"arial, helvetica, sans-serif\" size=\"4\">";
		var strFontBlkSm			= "<font color=\"#000000\" face=\"arial, helvetica, sans-serif\" size=\"2\">";
		var strFontGrySm			= "<font color=\"#999999\" face=\"arial, helvetica, sans-serif\" size=\"2\">";
		var intCounter				= 0
		
		// If input is null/blank, set new date, else validate input
		var dteDateTime = (((istrDateTime == null) || (istrDateTime == "")) ?  new Date() : stringToDate(istrDateTime));
		// Set previous month
		var dteMonthPrev = new Date(dteDateTime);
		dteMonthPrev.setMonth(dteDateTime.getMonth() - 1);
		// Set next month
		var dteMonthNext = new Date(dteDateTime);
		dteMonthNext.setMonth(dteDateTime.getMonth() + 1);
		// Set first day of month
		var dteDayFirst = new Date(dteDateTime);
		dteDayFirst.setDate(1);
		dteDayFirst.setDate(1 - (7 + dteDayFirst.getDay() - intFirstDayOfWeek) % 7);
		// Set last day of month
		var dteDayLast = new Date(dteMonthNext);
		dteDayLast.setDate(0);
		// Set today
		var dteDayToday = new Date(dteDayFirst);
			
		// Monthname/nav header
		var strTemp = new String (
			"<html>\n<head>\n	<title>DHL - Calendar</title>\n</head>\n" +
			"<body bgcolor=\"#f9f9f2\">\n" +
			"<table cellspacing=\"0\" border=\"0\" width=\"100%\">\n" +
			"<tr>\n<td bgcolor=\"#cc0000\">\n" +
			"<table cellspacing=\"1\" cellpadding=\"3\" border=\"0\" width=\"100%\">\n" +
			"<tr>\n	<td bgcolor=\"#cc0000\"><a href=\"javascript:window.opener.showCalendarFutureY('" +
			istrTarget + "', '" + dateToDateString(dteMonthPrev) + "');\">" +
			strFontWhtLg + "<b>&#171;</b></font></a></td>\n" +
			"	<td bgcolor=\"#cc0000\" colspan=\"5\" align=\"middle\">" +
			strFontWhtSm + "<b>" +
			astrMonths[dteDateTime.getMonth()] + " " + dteDateTime.getFullYear() + "</b></font></td>\n" +
			"	<td bgcolor=\"#cc0000\" align=\"right\"><a href=\"javascript:window.opener.showCalendarFutureY('" +
			istrTarget + "', '" + dateToDateString(dteMonthNext) + "');\">" +
			strFontWhtLg + "<b>&#187;</b></font></a></td>\n</tr>\n"
		);

		// Weekday header
		strTemp += "<tr>\n";
		for (var n = 0; n < 7; n++)
			strTemp += "	<td bgcolor=\"#ebebe0\" align=\"middle\">" + strFontBlkSm +
			"<b>" + astrWeekdays[(intFirstDayOfWeek + n)%7] + "</b></font></td>\n";
			
		// Detail rows
		strTemp += "</tr>\n";
		while (dteDayToday.getMonth() == dteDateTime.getMonth() ||
			dteDayToday.getMonth() == dteDayFirst.getMonth()){
			strTemp += "<tr>\n";
			for (var intWeekdayToday = 0; intWeekdayToday < 7; intWeekdayToday++){
					if (dteDayToday.getDate() == dteDateTime.getDate() &&
						dteDayToday.getMonth() == dteDateTime.getMonth())
						// Current date
						strTemp += "	<td bgcolor=\"#cc0000\" align=\"right\">";
					else if (dteDayToday.getDay() == 0 || dteDayToday.getDay() == 6)
						// Weekends
						strTemp += "	<td bgcolor=\"#ebebe0\" align=\"right\">";
					else
						// Weekdays
						strTemp += "	<td bgcolor=\"#ffffff\" align=\"right\">";

					if (dteDayToday.getMonth() == dteDateTime.getMonth()){
						// Current month's days
						strTemp += 
						"<a href=\"javascript:window.opener." + istrTarget + ".value='" + dateToDateString(dteDayToday) + "'; window.close();\">";
						//alert(strTemp);
						if (dteDayToday.getDate() == dteDateTime.getDate()){
							strTemp += strFontWhtSm;
						}
						else{
							strTemp += strFontBlkSm;
						}
					}
					else{
						// Prev/next months' days
						strTemp += 
						"<a href=\"javascript:window.opener." + istrTarget + ".value='" + dateToDateString(dteDayToday) + "'; window.close();\">" + strFontGrySm;
					//alert(strTemp);
					}
					strTemp += "<b>" + dteDayToday.getDate()+"</b></font></a></td>\n";
					dteDayToday.setDate(dteDayToday.getDate() + 1);
			}
			strTemp += "</tr>\n";
			intCounter++
		}
		// Footer
		if (intCounter < 6){
			strTemp +=
				"<tr>\n<td bgcolor=\"#ffffff\" colspan=\"7\">" + strFontWhtSm + "&nbsp;</font></td>\n</tr>\n" + 
				"<tr>\n<td colspan=\"7\" align=\"middle\"><a href=\"javascript:window.close();\">" + strFontWhtXs + "close window</font></td>\n</tr>\n";
		}
		else{
			strTemp +=
				"<tr>\n<td colspan=\"7\" align=\"middle\"><a href=\"javascript:window.close();\">" + strFontWhtXs + "close window</font></td>\n</tr>\n";
		}
		strTemp +=
			"</table>\n" +
			"</td>\n</tr>\n</table>\n" +
			"</body>\n" +
			"</html>\n";

		var objWin		= window.open("", "Calendar", "width=200,height=250,status=no,resizable=no,top=200,left=200");
		objWin.opener	= self;
		objWin.focus();
		var objDoc		= objWin.document;
		objDoc.write (strTemp);
		objDoc.close();
	}

	function showCalendarFutureN(istrTarget, istrDateTime){
		// Detail-level calendar engine.
		var astrMonths				= ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
		var astrWeekdays			= ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"];
		var intFirstDayOfWeek	= 0;
		var strFontWhtXs			= "<font color=\"#ffffff\" face=\"arial, helvetica, sans-serif\" size=\"1\">";
		var strFontWhtSm			= "<font color=\"#ffffff\" face=\"arial, helvetica, sans-serif\" size=\"2\">";
		var strFontWhtLg			= "<font color=\"#ffffff\" face=\"arial, helvetica, sans-serif\" size=\"4\">";
		var strFontBlkSm			= "<font color=\"#000000\" face=\"arial, helvetica, sans-serif\" size=\"2\">";
		var strFontGrySm			= "<font color=\"#999999\" face=\"arial, helvetica, sans-serif\" size=\"2\">";
		var intCounter				= 0

		// If input is null/blank, set new date, else validate input
		var dteDateTime = (((istrDateTime == null) || (istrDateTime == "")) ?  new Date() : stringToDate(istrDateTime));
		// Set previous month
		var dteMonthPrev = new Date(dteDateTime);
		dteMonthPrev.setMonth(dteDateTime.getMonth() - 1);
		// Set next month
		var dteMonthNext = new Date(dteDateTime);
		dteMonthNext.setMonth(dteDateTime.getMonth() + 1);
		// Set first day of month
		var dteDayFirst = new Date(dteDateTime);
		dteDayFirst.setDate(1);
		dteDayFirst.setDate(1 - (7 + dteDayFirst.getDay() - intFirstDayOfWeek) % 7);
		// Set last day of month
		var dteDayLast = new Date(dteMonthNext);
		dteDayLast.setDate(0);
		// Set today
		var dteDayToday = new Date(dteDayFirst);
		// Set global today
		var dteDayCurrent = new Date();
			
		// Monthname/nav header
		var strTemp = new String (
			"<html>\n<head>\n	<title>DHL - Calendar</title>\n</head>\n" +
			"<body bgcolor=\"#f9f9f2\">\n" +
			"<table cellspacing=\"0\" border=\"0\" width=\"100%\">\n" +
			"<tr>\n<td bgcolor=\"#cc0000\">\n" +
			"<table cellspacing=\"1\" cellpadding=\"3\" border=\"0\" width=\"100%\">\n<tr>\n"
		);
		
		if (dteDayToday.getYear() == (dteDayCurrent.getYear() - 2)){
			strTemp += " <td bgcolor=\"#cc0000\">&nbsp;</td>\n";
		}
		else{
			strTemp +=
				" <td bgcolor=\"#cc0000\"><a href=\"javascript:window.opener.showCalendarFutureN('" +
				istrTarget + "', '" + dateToDateString(dteMonthPrev) + "');\">" +
				strFontWhtLg + "<b>&#171;</b></font></a></td>\n";
		}
		strTemp +=
			"	<td bgcolor=\"#cc0000\" colspan=\"5\" align=\"middle\">" +
			strFontWhtSm + "<b>" +
			astrMonths[dteDateTime.getMonth()] + " " + dteDateTime.getFullYear() + "</b></font></td>\n";
			
		if ((dteDayCurrent.getMonth() == dteDateTime.getMonth()) && (dteDayCurrent.getYear() == dteDateTime.getYear())){
			strTemp += " <td bgcolor=\"#cc0000\">&nbsp;</td>\n</tr>\n";
		}
		else{
			strTemp += 
				"	<td bgcolor=\"#cc0000\" align=\"right\"><a href=\"javascript:window.opener.showCalendarFutureN('" +
				istrTarget + "', '" + dateToDateString(dteMonthNext) + "');\">" +
				strFontWhtLg + "<b>&#187;</b></font></a></td>\n</tr>\n";
		}

		// Weekday header
		strTemp += "<tr>\n";
		for (var n = 0; n < 7; n++)
			strTemp += "	<td bgcolor=\"#ebebe0\" align=\"middle\">" + strFontBlkSm +
			"<b>" + astrWeekdays[(intFirstDayOfWeek + n)%7] + "</b></font></td>\n";
			
		// Detail rows
		strTemp += "</tr>\n";
		while (dteDayToday.getMonth() == dteDateTime.getMonth() ||
			dteDayToday.getMonth() == dteDayFirst.getMonth()){
			strTemp += "<tr>\n";
			for (var intWeekdayToday = 0; intWeekdayToday < 7; intWeekdayToday++){
					if (dteDayToday.getDate() == dteDateTime.getDate() &&
						dteDayToday.getMonth() == dteDateTime.getMonth())
						// Current date
						strTemp += "	<td bgcolor=\"#cc0000\" align=\"right\">";
					else if (dteDayToday.getDay() == 0 || dteDayToday.getDay() == 6)
						// Weekends
						strTemp += "	<td bgcolor=\"#ebebe0\" align=\"right\">";
					else
						// Weekdays
						strTemp += "	<td bgcolor=\"#ffffff\" align=\"right\">";

					if (dteDayToday.getMonth() == dteDateTime.getMonth()){
						// Current month's days
						if ((dteDayToday.getMonth() == dteDayCurrent.getMonth()) && (dteDayToday.getDate() > dteDayCurrent.getDate())){
							strTemp += strFontBlkSm + "<b>" + dteDayToday.getDate() + "</b></font></td>\n";
						}
						else{
						
							strTemp += 
							"<a href=\"javascript:window.opener." + istrTarget + ".value='" + dateToDateString(dteDayToday) + "'; window.close();\">";
							alert (strTemp);
							if (dteDayToday.getDate() == dteDateTime.getDate()){
								strTemp += strFontWhtSm;
							}
							else{
								strTemp += strFontBlkSm;
							}
							strTemp += "<b>" + dteDayToday.getDate() + "</b></font></a></td>\n";
						}
					}
					else if (((dteDayToday.getMonth() > dteDayCurrent.getMonth()) && (dteDayToday.getYear() >= dteDayCurrent.getYear())) || ((dteDayToday.getMonth() < dteDayCurrent.getMonth()) && (dteDayToday.getYear() > dteDayCurrent.getYear()))){
						// Next month's days
						strTemp += strFontGrySm + "<b>" + dteDayToday.getDate() + "</b></font></td>\n";
					}
					else if (dteDayToday.getYear() == (dteDayCurrent.getYear() - 2)){
						// Disable dates with years two years prior
						strTemp += strFontGrySm + "<b>" + dteDayToday.getDate() + "</b></font></td>\n";
					}
					else{
						alert (strTemp);
						strTemp += "<a href=\"javascript:window.opener." + istrTarget + ".value='" + dateToDateString(dteDayToday) + "'; window.close();\">" + strFontGrySm + 
						"<b>" + dteDayToday.getDate() + "</b></font></a></td>\n";
					}
					dteDayToday.setDate(dteDayToday.getDate() + 1);
			}
			strTemp += "</tr>\n";
			intCounter++
		}
		// Footer
		if (intCounter < 6){
			strTemp +=
				"<tr>\n<td bgcolor=\"#ffffff\" colspan=\"7\">" + strFontWhtSm + "&nbsp;</font></td>\n</tr>\n" + 
				"<tr>\n<td colspan=\"7\" align=\"middle\"><a href=\"javascript:window.close();\">" + strFontWhtXs + "close window</font></td>\n</tr>\n";
		}
		else{
			strTemp +=
				"<tr>\n<td colspan=\"7\" align=\"middle\"><a href=\"javascript:window.close();\">" + strFontWhtXs + "close window</font></td>\n</tr>\n";
		}
		strTemp +=
			"</table>\n" +
			"</td>\n</tr>\n</table>\n" +
			"</body>\n" +
			"</html>\n";

		var objWin		= window.open("", "Calendar", "width=200,height=235,status=no,resizable=no,top=200,left=200");
		objWin.opener	= self;
		objWin.focus();
		var objDoc		= objWin.document;
		objDoc.write (strTemp);
		objDoc.close();
	}

	function checkForNewDate(){
		// Checks whether hidden date field values have changed and updates the <select> elements appropriately.
		//var strToMonth, strToDay, strToYear;
		var strMonth, strDay, strYear;
		var MonthPattern		= /^\d+/;
		var Day1Pattern			= /\/\d+\//;
		var Day2Pattern			= /\d+/;
		var YearPattern			= /\d{4}$/;
		//var strDate			= document.forms[1].hdnDate.value;
		var strDate			= document.form.hdnDate.value;
		//var strDate			= istrTarget.value;
		
		//var strToDate				= document.forms[1].hdnDateTo.value;

		if ((strDate != "") && (gstrDateLast != strDate)){
			if (MonthPattern.test(strDate)){
				strMonth = MonthPattern.exec(strDate)[0];
			}
			if (Day1Pattern.test(strDate)){
				strDay = Day1Pattern.exec(strDate)[0];
				strDay = Day2Pattern.exec(strDay)[0];
			}
			if (YearPattern.test(strDate)){
				strYear = YearPattern.exec(strDate)[0];
			}
			//changeSelectedOption("hdnDay", strDay);
			//changeSelectedOption("hdnMonth", strMonth);
			//changeSelectedOption("hdnYear", strYear);
			changeSelectedOption("F10050", strDate);
			gstrDateLast = strDate;
		}
		
	}

	function changeSelectedOption(istrElementName, istrValue){
		// Assigns input value to <select> form element.
		//var objSel = eval("document.forms[1]." + istrElementName);
		var objSel = eval("document.form." + istrElementName);
		for (var i = 0; i < objSel.options.length; i++)
		//for (var i = 0; i < 1; i++)
		{
			//var strDate = document.form.hdnFieldSel.value;
			//alert (objSel.options[i].value);
			//if(istrValue == strDate){
			if(istrValue == objSel.options[i].value){
				objSel.options[i].selected = true;
				
						
				
			}
		}
	}

	function getHiddenDate(){
		// Returns value of hidden date field.
		//var objForm	= document.forms[1];
		var objForm	= document.form;
				
			return objForm.hdnMonth.value + "/" + 
				objForm.hdnDay.value + "/" + 
				objForm.hdnYear.value;
		
	}

	function getHiddenDate_new(istrHdnField){
		// Returns value of "from" or "to" hidden date field.
		var objForm	= document.forms[1];
		if (istrHdnField == 'from'){
			return objForm.selFromMonth.options[objForm.selFromMonth.selectedIndex].value + "/" + 
				objForm.selFromDay.options[objForm.selFromDay.selectedIndex].value + "/" + 
				objForm.selFromYear.options[objForm.selFromYear.selectedIndex].value;
		}
		else if (istrHdnField == "to"){
			return objForm.selToMonth.options[objForm.selToMonth.selectedIndex].value + "/" + 
				objForm.selToDay.options[objForm.selToDay.selectedIndex].value + "/" + 
				objForm.selToYear.options[objForm.selToYear.selectedIndex].value;
		}
		else{
			return objForm.selMonth.options[objForm.selMonth.selectedIndex].value + "/" + 
				objForm.selDay.options[objForm.selDay.selectedIndex].value + "/" + 
				objForm.selYear.options[objForm.selYear.selectedIndex].value;
		}
	}

	// Date formatting/parsing functions.
	function stringToDate(istrDateTime){
		var dteTemp;
		var dteToday		= new Date();
		var regExpDate	= /^(\d+)\/(\d+)\/(\d+)$/;
		if (!regExpDate.exec(istrDateTime))
			return alert("Invalid Date: " + istrDateTime);
		dteTemp					= new Date(RegExp.$3, RegExp.$1-1, RegExp.$2);
		if (dteTemp > dteToday){
			return dteToday;
		}
		else{
			return dteTemp;
		}
	}
	function dateToDateString(dteDateTime){
		return (new String((dteDateTime.getMonth() + 1) + "/" + (dteDateTime.getDate()) + "/" + (dteDateTime.getFullYear())));
	}

//-->