
	var CurrentCalendarTextBox;
	var MonthsNameArray = new Array('January','February','March','April','May','June','July','August','September','October','November','December');
	var DayNamesArray = new Array('Su','Mo','Tu','We','Th','Fr','Sa');
	var MonthDaysArray = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	var selectedMonth = '';
	var selectedYear = '';
	var registeredDatePickerTextboxes = new Array();
	var wdStyle = ' style="color:#000;background-color:#fff;text-decoration:none;" ';
	var weStyle = ' style="color:#000;background-color:#fff;text-decoration:none;" ';
	var omStyle = ' style="color:#fff;background-color:#fff;" ';
	var sdStyle = ' style="color:#fff;background-color:blue;text-decoration: none;" ';
	var mhStyle = ' style="color:#fff;background-color:blue;text-decoration: none;" ';
	var dhStyle = ' style="color:#000;background-color:#fff;text-decoration:none;" ';
	var cdStyle = ' style="color:#333;background-color:#fff;text-decoration:none;" ';
	var tdStyle = ' style="color:blue;background-color:#fff;text-decoration:none;font-weight: bold" '
	var gttStyle = ' style="color:blue;background-color:#fff;text-decoration:none;" '
	
	function convertToObject(obj) {
		if (typeof(obj) == "string") {
			obj = document.getElementById(obj);
		}
		return obj;
	}

	function focusNextControl(txtBox, nextControl) {
		txtBox = convertToObject(txtBox);
		nextControl = convertToObject(nextControl);
		if (typeof(nextControl) == "undefined" || nextControl == null) return;
		var keyCode = window.event.keyCode;
		if (keyCode == 0 || keyCode == 9 || keyCode == 16) return;
		if (txtBox.value.length == txtBox.maxLength) nextControl.focus();
	}

	function onCalenderLostFocus(e) { 
		hideNonCurrentCalendar('', ''); 
	}

	function findPosX(obj) {
		var curleft = 0;
		if (obj.offsetParent) {
			while (obj.offsetParent) {
				curleft += obj.offsetLeft;
				obj = obj.offsetParent;
			}
		}
		else if (obj.x)
			curleft += obj.x;
		return curleft;
	}

	function findPosY(obj) {
		var curtop = 0;
		if (obj.offsetParent) {
			while (obj.offsetParent) {
				curtop += obj.offsetTop;
				obj = obj.offsetParent;
			}
		}
		else if (obj.y)
			curtop += obj.y;
		return curtop;
	}

	function displayCalendar(funcName, myFuncName, formatNum, fdweek, sunNum, satNum, enableHide, includeYears, lBound, uBound, btnName, locQuad, pad, postbackFunc, offsetX, offsetY) {
		var tb = CurrentCalendarTextBox;
		var div = tb.calendar;
		if (div.style.visibility != 'hidden') {
			div.style.visibility = 'hidden';
			if (enableHide) showHideDDL('visible');
		}
		else {
			var todayDate = getDateFromFormat(formatNum);
			var stringDate = (todayDate.getMonth() + 1) + '/' + todayDate.getDate() + '/' + todayDate.getFullYear();
			hideNonCurrentCalendar(tb.calendar, tb.yearPicker)
			if (enableHide)
				showHideDDL('hidden');
			div.style.position = 'absolute';
			var obj = tb;
			var y = findPosY(obj);
			var x = findPosX(obj);
			switch(locQuad) {
				case 1:
					y += (obj.offsetHeight + 1);
					break;
				case 2:
					x -= (div.offsetWidth - 2);
					break;
				case 3:
					x += (obj.offsetWidth + 1);
					break;
				case 4:
					y -= (div.offsetHeight - 1);
					break;
				default:
					y = findPosY(document.getElementById(btnName));
					x = findPosX(document.getElementById(btnName)) - 3;
					break;
			}
			div.style.top = y + offsetY + 'px';
			div.style.left = x + offsetX + 'px';
			displayCalendarByDate(funcName, myFuncName, stringDate, formatNum, fdweek, sunNum, satNum, enableHide, includeYears, lBound, uBound, pad, postbackFunc);
			div.style.visibility = 'visible';
		}
	}

	function changeCalendarMonth(selMonth, lbDate, ubDate) {
		if (document.getElementById('DatePickerPopup_monthname' + selMonth).style.color == 'black') {
			for(var i=0; i<12; i++) {
				if (i != selMonth)
					document.getElementById('DatePickerPopup_monthname' + i).style.background='white';
				else
					document.getElementById('DatePickerPopup_monthname' + i).style.background='lightgrey';
			}
			selectedMonth = selMonth++;
		}
	}

	function changeCalendarYear(selYear, yearNum, lbDate, ubDate) {
		var lowerDate = new Date(lbDate);
		var upperDate = new Date(ubDate);
		lowerDate = new Date((lowerDate.getMonth() + 1) + '/1/' + lowerDate.getFullYear());
		for(var i=0; i<10; i++) {
			if (i != selYear)
				document.getElementById('DatePickerPopup_yearname' + i).style.background='white';
			else
				document.getElementById('DatePickerPopup_yearname' + i).style.background='lightgrey';
		}
		for(var i=0; i<12; i++) {
			var curDate = new Date((i + 1) + '/1/' + yearNum);
			if (curDate < lowerDate || curDate > upperDate)
				document.getElementById('DatePickerPopup_monthname' + i).style.color = 'gray';
			else
				document.getElementById('DatePickerPopup_monthname' + i).style.color = 'black';
			document.getElementById('DatePickerPopup_monthname' + i).style.background = 'white';
		}
		var curDate = new Date((selectedMonth + 1) + '/1/' + yearNum);
		if (curDate <= lowerDate)
			selectedMonth = lowerDate.getMonth();
		else if (curDate >= upperDate)
			selectedMonth = upperDate.getMonth();
		document.getElementById('DatePickerPopup_monthname' + selectedMonth).style.background = 'lightgrey';
		selectedYear = yearNum;
	}

	function DatePickerPopup_ChangeMonthYear(funcName, isCancel) {
		if (!isCancel) {
			eval(funcName + "('" + (selectedMonth + 1) + "/1/" + selectedYear + "');");
		}
		
		CurrentCalendarTextBox.yearPicker.style.visibility = 'hidden';
		CurrentCalendarTextBox.yearPicker.innerHTML = '';
		document.onmousedown = onCalenderLostFocus;
	}

	function displayYearPicker(funcName, myFuncName, theDate, lbDate, ubDate) {
		var calDIV = CurrentCalendarTextBox.calendar;
		var myDIV = CurrentCalendarTextBox.yearPicker;
		var curDate = new Date(theDate);
		var lowerDate = new Date(lbDate);
		var upperDate = new Date(ubDate);
		lowerDate = new Date((lowerDate.getMonth() + 1) + '/1/' + lowerDate.getFullYear());

		selectedMonth = curDate.getMonth();
		if (curDate < lowerDate)
			selectedMonth = lowerDate.getMonth();
		else if (curDate > upperDate)
			selectedMonth = upperDate.getMonth();
		selectedYear = curDate.getFullYear();

		outputString = '<table align=\"center\" style=\"border: black 1px solid;background: white; z-index: 100\" border=0 cellspacing=0 cellpadding=2>';
		outputString = outputString + '<tr><td width=50% valign=top><table border=0 cellspacing=0 cellpadding=2>';
		for(var i=0; i<12; i++) {
			if (i % 2 == 0)
				outputString = outputString + '<tr>';
			var tempDate = new Date((i + 1) + '/1/' + selectedYear);
			if (tempDate >= lowerDate  && tempDate <= upperDate) {
				if (i == selectedMonth)
					outputString = outputString + "<td id=\"DatePickerPopup_monthname" + i + "\" onclick=\"changeCalendarMonth(" + i + ", '" + lbDate + "', '" + ubDate + "')\" align=left nowrap style=\"font-family:verdana; color: black;background:lightgrey;cursor:pointer;text-decoration:none;\">" + MonthsNameArray[i] + "</td>";
				else
					outputString = outputString + "<td id=\"DatePickerPopup_monthname" + i + "\" onclick=\"changeCalendarMonth(" + i + ", '" + lbDate + "', '" + ubDate + "')\" align=left nowrap style=\"font-family:verdana; color: black; cursor:pointer;text-decoration:none;\">" + MonthsNameArray[i] + "</td>";
			} else {
				outputString = outputString + "<td id=\"DatePickerPopup_monthname" + i + "\" onclick=\"changeCalendarMonth(" + i + ", '" + i + lbDate + "', '" + ubDate + "')\" align=left nowrap style=\"font-family:verdana; color: gray; cursor:pointer;text-decoration:none;\">" + MonthsNameArray[i] + "</td>";
			}
			if (i % 2 != 0)
				outputString = outputString + '</tr>';
		}
		outputString = outputString + '</table></td><td width=50% valign=top><table border=0 cellspacing=0 cellpadding=2 width=100%>';
		var j = 0;
		for(var i=(curDate.getFullYear() - 5); i<(curDate.getFullYear() + 5); i++) {
			if (j % 2 == 0)
				outputString = outputString + '<tr>';
			if (i >= lowerDate.getFullYear() && i <= upperDate.getFullYear()) {
				if (i == curDate.getFullYear())
					outputString = outputString + "<td id=\"DatePickerPopup_yearname" + j + "\" onclick=\"changeCalendarYear(" + j + ", " + i + ", '" + lbDate + "', '" + ubDate + "')\" align=left nowrap style=\"font-family:verdana;color: black;background: lightgrey; cursor:pointer;text-decoration:none;\">" + i + "</td>";
				else
					outputString = outputString + "<td id=\"DatePickerPopup_yearname" + j + "\" onclick=\"changeCalendarYear(" + j + ", " + i + ", '" + lbDate + "', '" + ubDate + "')\" align=left nowrap style=\"font-family:verdana;color: black; cursor:pointer;text-decoration:none;\">" + i + "</td>";
			} else {
				outputString = outputString + "<td id=\"DatePickerPopup_yearname" + j + "\" align=left nowrap style=\"font-family:verdana;color: gray; cursor:pointer;text-decoration:none;\">" + i + "</td>";
			}
			if (j % 2 != 0)
				outputString = outputString + '</tr>';
			j++;
		}
		outputString = outputString + "<tr><td align=left><a style=\"font-family:verdana; color: black;text-decoration:none;\" href=\"javascript:" + myFuncName + "((selectedMonth + 1) + '/" + curDate.getDate() + "/" + (curDate.getFullYear() - 10) + "')\" title=\"Click to display previous 10 years.\">&lt;&lt;</a></td>";
		outputString = outputString + "<td align=right><a style=\"font-family:verdana; color: black;text-decoration:none;\" href=\"javascript:" + myFuncName + "((selectedMonth + 1) + '/" + curDate.getDate() + "/" + (curDate.getFullYear() + 10) + "')\" title=\"Click to display next 10 years.\">&gt;&gt;</a></td></tr>";
		outputString = outputString + '</table></td></tr>';
		outputString = outputString + "<tr><td colspan=2 align=center nowrap><a href=\"javascript:void(0)\" onclick=\"DatePickerPopup_ChangeMonthYear('" + funcName + "', false);\" style=\"font-family:verdana;text-decoration:none;color:black;\" title=\"Click to apply change.\">Apply</a>&nbsp;&nbsp;<a href=\"javascript:void(0)\" onclick=\"DatePickerPopup_ChangeMonthYear('" + funcName + "', true);\" style=\"font-family:verdana;text-decoration:none;color:black;\" title=\"Click to cancel.\" >Cancel<\a></td></tr>";
		myDIV.style.position = 'absolute';
		myDIV.style.top = parseInt(calDIV.style.top.replace('px', '')) + 4;
		myDIV.style.left = parseInt(calDIV.style.left.replace('px', '')) + 3;
		myDIV.innerHTML = outputString;
		myDIV.style.visibility = 'visible';
	}

	function hideNonCurrentCalendar() {
		for (var i=0; i<registeredDatePickerTextboxes.length; i++) {
			registeredDatePickerTextboxes[i].calendar.style.visibility = 'hidden';
			registeredDatePickerTextboxes[i].calendar.innerHTML = '';
			registeredDatePickerTextboxes[i].yearPicker.style.visibility = 'hidden';
			registeredDatePickerTextboxes[i].yearPicker.innerHTML = '';
		}
	}

	function getDateFromFormat(formatNum) {
		var todayDate;
		if (CurrentCalendarTextBox.value != '') {
			var theDate;
			var theDateArr = CurrentCalendarTextBox.value.split("/");
			if (theDateArr.length != 3) {
				theDateArr = CurrentCalendarTextBox.value.split(".");
				if (theDateArr.length != 3)
					theDateArr = CurrentCalendarTextBox.value.split("-");
			}
			if (theDateArr.length == 3) {
				switch(formatNum) {
					case 1: // In: MM/DD/YYYY Out: MM/DD/YYYY
						theDate = theDateArr[0].concat("/").concat(theDateArr[1]).concat("/").concat(theDateArr[2]);
						break;
					case 2: // In: DD/MM/YYYY Out: MM/DD/YYYY
						theDate = theDateArr[1].concat("/").concat(theDateArr[0]).concat("/").concat(theDateArr[2]);
						break;
					case 3: // In: YYYY/MM/DD Out: MM/DD/YYYY
						theDate = theDateArr[1].concat("/").concat(theDateArr[2]).concat("/").concat(theDateArr[0]);
						break;
					case 4: // In MM.DD.YYYY Out: MM.DD.YYYY
						theDate = theDateArr[0].concat("/").concat(theDateArr[1]).concat("/").concat(theDateArr[2]);
						break;
					case 5: // In DD.MM.YYYY Out: MM.DD.YYYY
						theDate = theDateArr[1].concat("/").concat(theDateArr[0]).concat("/").concat(theDateArr[2]);
						break;
					case 6: // In YYYY.MM.DD Out: MM.DD.YYYY
						theDate = theDateArr[1].concat("/").concat(theDateArr[2]).concat("/").concat(theDateArr[0]);
						break;
					case 7: // In MM-DD-YYYY Out: MM-DD-YYYY
						theDate = theDateArr[0].concat("/").concat(theDateArr[1]).concat("/").concat(theDateArr[2]);
						break;
					case 8: // In DD-MM-YYYY Out: MM-DD-YYYY
						theDate = theDateArr[1].concat("/").concat(theDateArr[0]).concat("/").concat(theDateArr[2]);
						break;
					case 9: // In YYYY-MM-DD Out: MM-DD-YYYY
						theDate = theDateArr[1].concat("/").concat(theDateArr[2]).concat("/").concat(theDateArr[0]);
						break;
				}
				todayDate = new Date(theDate);
				if (todayDate == NaN)
					todayDate = new Date();
			} else
				todayDate = new Date();
		} else
			todayDate = new Date();
		return todayDate;
	}

	function showHideDDL(visibility) {
		for(i=0;i<document.forms[0].elements.length;i++) {
			if (document.forms[0].elements[i].type != null) {
				if (document.forms[0].elements[i].type.indexOf('select') == 0)
					document.forms[0].elements[i].style.visibility = visibility;
			}
		}
	}

	function displayCalendarByDate(funcName, myFuncName, stringDate, formatNum, fdweek, sunNum, satNum, enableHide, includeYears, lBound, uBound, pad, postbackFunc) {
		var dateToday = new Date();
		var lowerDate = new Date(lBound);
		var upperDate = new Date(uBound);
		var todayDate = new Date(stringDate);
		var curDate = new Date(getDateFromFormat(formatNum));
		var curMonth = curDate.getMonth();
		var curYear = curDate.getFullYear();
		thisday=todayDate.getDay();
		thismonth=todayDate.getMonth();
		thisdate=todayDate.getDate();
		thisyear=todayDate.getFullYear();
		if (((thisyear % 4 == 0) && !(thisyear % 100 == 0)) ||(thisyear % 400 == 0))
			MonthDaysArray[1]++;
		var outputString = '';
		startspaces=thisdate;
		var prevMonth = thismonth;
		var prevDay = thisdate;
		var prevYear = thisyear;
		var thisPreviousYear = thisyear - 1;
		var thisNextYear = thisyear + 1;
		if (prevMonth < 1) {
			prevMonth = 12;
			prevYear = prevYear - 1;
		}
		if (thisdate > MonthDaysArray[prevMonth - 1])
			prevDay = MonthDaysArray[prevMonth - 1];
		var nextMonth = thismonth + 2;
		var nextDay = thisdate;
		var nextYear = thisyear;
		if (nextMonth > 12) {
			nextMonth = 1;
			nextYear = nextYear + 1;
		}
		if (thisdate > MonthDaysArray[nextMonth - 1])
			nextDay = MonthDaysArray[nextMonth - 1];
		while (startspaces > 7)
			startspaces-=7;
		startspaces = thisday - startspaces + 1;
		startspaces = startspaces - fdweek;
		if (startspaces < 0)
			startspaces+=7;
		outputString = outputString + '<table style=\"border: black 1px solid; z-index: 100; \" border=\"0\" cellspacing=0px cellpadding=2px>';
		if (includeYears == false) {
			outputString = outputString + "<tr " + mhStyle + "><td align=center><a " + mhStyle + " href=\"javascript:" + funcName + "('" + prevMonth + "/" + prevDay + "/" + prevYear + "')\" title=\"Click to display previous month.\" >&lt;</a></td>";
		}
		else {
			outputString = outputString + "<tr " + mhStyle + "><td align=center><a " + mhStyle + " href=\"javascript:" + funcName + "('" + prevMonth + "/" + prevDay+ "/" + prevYear + "')\"  title=\"Click to display previous month.\">&lt;</a><br><a " + mhStyle + " href=\"javascript:" + funcName + "('" + (thismonth + 1) + "/" + thisdate + "/" + thisPreviousYear + "')\" title=\"Click to display previous month.\">&lt;&lt;</a></td>";
		}
		outputString = outputString + '<td colspan=5 nowrap align=center ' +mhStyle + "><a " + mhStyle + " href=\"javascript:" + myFuncName + "('" + (thismonth + 1) + "/1/" + thisyear + "')\" title=\"Click to display list of months/years.\">" + MonthsNameArray[thismonth] + ' ' + thisyear + '</a></td>';
		if (includeYears == false) {
			outputString = outputString + "<td align=center><a " + mhStyle + " href=\"javascript:" + funcName + "('" + nextMonth + "/" + nextDay + "/" + nextYear+ "')\" title=\"Click to display next month.\">&gt;</a></td></tr>";
		}
		else {
			outputString = outputString + "<td align=center><a " + mhStyle + " href=\"javascript:" + funcName + "('" + nextMonth + "/" + nextDay + "/" + nextYear+ "')\"  title=\"Click to display next month.\" >&gt;</a><br><a " + mhStyle + " href=\"javascript:" + funcName + "('" + (thismonth + 1) + "/" + thisdate + "/" + thisNextYear+ "')\"  title=\"Click to display next month.\" >&gt;&gt;</a></td></tr>";
		}
		outputString = outputString + '<tr>';
		outputString = outputString + '<td ' + dhStyle + ' align=center>' + DayNamesArray[0] + '</td>';
		outputString = outputString + '<td ' + dhStyle + ' align=center>' + DayNamesArray[1] + '</td>';
		outputString = outputString + '<td ' + dhStyle + ' align=center>' + DayNamesArray[2] + '</td>';
		outputString = outputString + '<td ' + dhStyle + ' align=center>' + DayNamesArray[3] + '</td>';
		outputString = outputString + '<td ' + dhStyle + ' align=center>' + DayNamesArray[4] + '</td>';
		outputString = outputString + '<td ' + dhStyle + ' align=center>' + DayNamesArray[5] + '</td>';
		outputString = outputString + '<td ' + dhStyle + ' align=center>' + DayNamesArray[6] + '</td>';
		outputString = outputString + '</tr>';
		for (s=0; s<startspaces; s++) {
			var theDate, month, year;
			if (thismonth == 0) {
				theDate = MonthDaysArray[11] - (startspaces - (s + 1));
				month = 12;
				year = thisyear - 1;
			}
			else
			{
				theDate = MonthDaysArray[thismonth - 1] - (startspaces - (s + 1));
				month = thismonth;
				year = thisyear;
			}
			var theCurDate = new Date(month + "/" + theDate + "/" + year);
			var lowerAmount = (lowerDate - theCurDate);
			var upperAmount = (theCurDate - upperDate);
			if (s == 0) outputString = outputString + '<tr>';
			if ((lowerAmount > 0 && upperAmount < 0) || (upperAmount > 0 && lowerAmount < 0)) {
				outputString = outputString + "<td align=center " + omStyle + "\">" + theDate + "</td>";
			}
			else if (s!=sunNum && s!=satNum) {
				outputString = outputString + "<td align=center " + omStyle + "><a " + omStyle + " href=\"javascript:selectDate('" + month + "/" + theDate + "/" + year + "', " + formatNum + ", " + enableHide + ", " + pad + ", '" + postbackFunc + "')\">" + theDate + "</a></td>";
			}
			else {
				outputString = outputString + "<td align=center " + omStyle + "><a " + omStyle + " href=\"javascript:selectDate('" + month + "/" + theDate + "/" + year + "', " + formatNum + ", " + enableHide + ", " + pad + ", '" + postbackFunc + "')\">" + theDate + "</a></td>";
			}
		}
		count=1;
		while (count <= MonthDaysArray[thismonth]) {
			for (b = startspaces;b<7;b++) {
				if (b == 0) outputString = outputString + '<tr>';
				if ((thismonth == dateToday.getMonth() && count == dateToday.getDate() && thisyear == dateToday.getFullYear()) || (count==curDate.getDate() && thismonth == curMonth && thisyear == curYear && CurrentCalendarTextBox.value != '')) {
					if (count==curDate.getDate() && thismonth == curMonth && thisyear == curYear && CurrentCalendarTextBox.value != '')
						outputString = outputString + '<td align=center ' + sdStyle + '>';
					else if (thismonth == dateToday.getMonth() && count == dateToday.getDate() && thisyear == dateToday.getFullYear())
						outputString = outputString + '<td align=center ' + tdStyle + '>';
				}
				else {
					if (count <= MonthDaysArray[thismonth]) {
						if (b!=sunNum && b!=satNum) {
							outputString = outputString + '<td align=center ' + wdStyle + '>';
						}
						else {
							outputString = outputString + '<td align=center ' + weStyle + '>';
						}
					}
					else {
						outputString = outputString + '<td align=center ' + omStyle + '>';
					}
				}
				if (count <= MonthDaysArray[thismonth]) {
					var theCurDate = new Date((thismonth + 1) + "/" + count + "/" + thisyear);
					var lowerAmount = (lowerDate - theCurDate);
					var upperAmount = (theCurDate - upperDate);

					if ((thismonth == dateToday.getMonth() && count == dateToday.getDate() && thisyear == dateToday.getFullYear()) || (count==curDate.getDate() && thismonth == curMonth && thisyear == curYear && CurrentCalendarTextBox.value != '')) {
						if (count==curDate.getDate() && thismonth == curMonth && thisyear == curYear && CurrentCalendarTextBox.value != '') {
							if ((lowerAmount > 0 && upperAmount < 0) || (upperAmount > 0 && lowerAmount < 0))
								outputString = outputString + "<span " + sdStyle + ">" + count + "</span>";
							else
								outputString = outputString + "<a " + sdStyle + " href=\"javascript:selectDate('" + (thismonth + 1) + "/" + count + "/" + thisyear + "', " + formatNum + ", " + enableHide + ", " + pad + ", '" + postbackFunc + "')\" title=\"Click to select date.\">" + count + "</a>";
						}
						else if (thismonth == dateToday.getMonth() && count == dateToday.getDate() && thisyear == dateToday.getFullYear()) {
							if ((lowerAmount > 0 && upperAmount < 0) || (upperAmount > 0 && lowerAmount < 0))
								outputString = outputString + "<span " + tdStyle + ">" + count + "</span>";
							else
								outputString = outputString + "<a " + tdStyle + " href=\"javascript:selectDate('" + (thismonth + 1) + "/" + count + "/" + thisyear + "', " + formatNum + ", " + enableHide + ", " + pad + ", '" + postbackFunc + "')\" title=\"Click to select date.\">" + count + "</a>";
						}
					}
					else if (b!=sunNum && b!=satNum && count != thisdate) {
						if ((lowerAmount > 0 && upperAmount < 0) || (upperAmount > 0 && lowerAmount < 0))
							outputString = outputString + "<span " + wdStyle + ">" + count + "</span>";
						else
							outputString = outputString + "<a " + wdStyle + " href=\"javascript:selectDate('" + (thismonth + 1) + "/" + count + "/" + thisyear + "', " + formatNum + ", " + enableHide + ", " + pad + ", '" + postbackFunc + "')\" title=\"Click to select date.\">" + count + "</a>";
					}
					else if (b!=sunNum && b!=satNum) {
						if ((lowerAmount > 0 && upperAmount < 0) || (upperAmount > 0 && lowerAmount < 0))
							outputString = outputString + "<span " + wdStyle + ">" + count + "</span>";
						else
							outputString = outputString + "<a " + wdStyle + " href=\"javascript:selectDate('" + (thismonth + 1) + "/" + count + "/" + thisyear + "', " + formatNum + ", " + enableHide + ", " + pad + ", '" + postbackFunc + "')\" title=\"Click to select date.\">" + count + "</a>";
					}
					else {
						if ((lowerAmount > 0 && upperAmount < 0) || (upperAmount > 0 && lowerAmount < 0))
							outputString = outputString + "<span " + weStyle + ">" + count + "</span>";
						else
							outputString = outputString + "<a " + weStyle + " href=\"javascript:selectDate('" + (thismonth + 1) + "/" + count + "/" + thisyear + "', " + formatNum + ", " + enableHide + ", " + pad + ", '" + postbackFunc + "')\" title=\"Click to select date.\">" + count + "</a>";
					}
				}
				else {
					var month, year;
					if (thismonth == 11) {
						month = 1;
						year = thisyear + 1;
					}
					else {
						month = thismonth + 2;
						year = thisyear;
					}
					var theCurDate = new Date(month + "/" + (count - MonthDaysArray[thismonth]) + "/" + year);
					var lowerAmount = (lowerDate - theCurDate);
					var upperAmount = (theCurDate - upperDate);
					if ((lowerAmount > 0 && upperAmount < 0) || (upperAmount > 0 && lowerAmount < 0)) {
						outputString = outputString + "<span " + omStyle + ">" + (count - MonthDaysArray[thismonth]) + "</span>";
					}
					else {
						outputString = outputString + "<a " +omStyle + " href=\"javascript:selectDate('" + month + "/" + (count - MonthDaysArray[thismonth]) + "/" + year + "', " + formatNum + ", " + enableHide + ", " + pad + ", '" + postbackFunc + "')\">" + (count - MonthDaysArray[thismonth]) + "</a>";
					}
				}
				outputString = outputString + '</td>';
				count++;
			}
			outputString = outputString + '</tr>';
			startspaces=0;
		}
		if (CurrentCalendarTextBox.showGoToToday) {
			var shortDate = (dateToday.getMonth() + 1) + "/" + dateToday.getDate() + "/" + dateToday.getFullYear();
			outputString = outputString + "<tr><td " + gttStyle + " colspan=\"7\" align=\"center\">Today's Date:" + (!document.all?"<br>":"") + " <a " + gttStyle + " href=\"javascript:selectDate('" + shortDate + "', " + formatNum + ", " + enableHide + ", " + pad + ", '" + postbackFunc + "')\" title=\"Click to select date.\">" + determineDate(shortDate, formatNum, pad) + "</a>";
		}
		if (CurrentCalendarTextBox.showClear) {
			outputString = outputString + "<tr><td " + cdStyle + " colspan=\"7\" align=\"center\"><a " + cdStyle + " href=\"javascript:clearCalendarDate(" + enableHide + ", '" + postbackFunc + "');\">Clear</a></td></tr>";
		}
		outputString = outputString + '</table>';
		CurrentCalendarTextBox.calendar.innerHTML = outputString;
	}

	function determineDate(inDate, formatNum, pad) {
		var theDateArr = inDate.split("/");
		if (theDateArr.length != 3) {
			theDateArr = CurrentCalendarTextBox.value.split(".");
			if (theDateArr.length != 3) {
				theDateArr = CurrentCalendarTextBox.value.split("-");
			}
		}
		if (pad) {
			if (parseInt(theDateArr[0]) < 10 && theDateArr[0].length == 1)
				theDateArr[0] = '0' + theDateArr[0];
			if (parseInt(theDateArr[1]) < 10 && theDateArr[1].length == 1)
				theDateArr[1] = '0' + theDateArr[1];
			if (parseInt(theDateArr[2]) < 10 && theDateArr[2].length == 1)
				theDateArr[2] = '0' + theDateArr[2];
		}
		var theDate;
		switch(formatNum) {
			case 1: // In: MM/DD/YYYY Out: MM/DD/YYYY
				theDate = theDateArr[0].concat("/").concat(theDateArr[1]).concat("/").concat(theDateArr[2]);
				break;
			case 2: // In: MM/DD/YYYY Out: DD/MM/YYYY
				theDate = theDateArr[1].concat("/").concat(theDateArr[0]).concat("/").concat(theDateArr[2]);
				break;
			case 3: // In: MM/DD/YYYY Out: YYYY/MM/DD
				theDate = theDateArr[2].concat("/").concat(theDateArr[0]).concat("/").concat(theDateArr[1]);
				break;
			case 4: // In MM.DD.YYYY Out: MM.DD.YYYY
				theDate = theDateArr[0].concat(".").concat(theDateArr[1]).concat(".").concat(theDateArr[2]);
				break;
			case 5: // In MM.DD.YYYY Out: DD.MM.YYYY
				theDate = theDateArr[1].concat(".").concat(theDateArr[0]).concat(".").concat(theDateArr[2]);
				break;
			case 6: // In MM.DD.YYYY Out: YYYY.MM.DD
				theDate = theDateArr[2].concat(".").concat(theDateArr[0]).concat(".").concat(theDateArr[1]);
				break;
			case 7: // In MM-DD-YYYY Out: MM-DD-YYYY
				theDate = theDateArr[0].concat("-").concat(theDateArr[1]).concat("-").concat(theDateArr[2]);
				break;
				case 8: // In MM-DD-YYYY Out: DD-MM-YYYY
				theDate = theDateArr[1].concat("-").concat(theDateArr[0]).concat("-").concat(theDateArr[2]);
				break;
			case 9: // In MM-DD-YYYY Out: YYYY-MM-DD
				theDate = theDateArr[2].concat("-").concat(theDateArr[0]).concat("-").concat(theDateArr[1]);
				break;
		}
		return theDate;
	}

	function selectDate(theDate, formatNum, enableHide, pad, postbackFunc) {
		CurrentCalendarTextBox.value = determineDate(theDate, formatNum, pad);
		CurrentCalendarTextBox.calendar.style.visibility = 'hidden';
		CurrentCalendarTextBox.yearPicker.style.visibility = 'hidden';
		if (enableHide) showHideDDL('visible');
		eval(postbackFunc + "();");
	}

	function clearCalendarDate(enableHide, postbackFunc) {
		CurrentCalendarTextBox.value = '';
		CurrentCalendarTextBox.calendar.style.visibility = 'hidden';
		CurrentCalendarTextBox.yearPicker.style.visibility = 'hidden';
		if (enableHide) showHideDDL('visible');
		eval(postbackFunc + "();");
	}

	function showCalendarPopup(txtBox) {
		txtBox = convertToObject(txtBox);
		CurrentCalendarTextBox = txtBox;
		
		if (!txtBox.initialized) {
			registeredDatePickerTextboxes.push(txtBox);
			txtBox.initialized = true;
		}
		
		if (typeof(txtBox.calendar) == "undefined" || txtBox.calendar == null) {
			var div = document.createElement("div");
			div.onmouseover = function() { document.onmousedown = null; };
			div.onmouseout = function() { document.onmousedown = onCalenderLostFocus; };
			div.style.zIndex = 5000; 
			div.style.visibility = 'hidden'; 
			div.style.position = 'absolute';
			txtBox.calendar = div;
			txtBox.parentNode.appendChild(div);
		}
		
		if (typeof(txtBox.yearPicker) == "undefined" || txtBox.yearPicker == null) {
			var div = document.createElement("div");
			div.onmouseover = function() { document.onmousedown = null; };
			div.onmouseout = function() { document.onmousedown = onCalenderLostFocus; };
			div.style.zIndex = 5001; 
			div.style.visibility = 'hidden'; 
			div.style.position = 'absolute';
			txtBox.parentNode.appendChild(div);
			txtBox.yearPicker = div;
		}
		
		displayCalendar("preDisplayCalendar", "preDisplayYearPicker", 1, 0, 0, 6, true, false, '01/01/1000', '12/31/9999','DatePickerPopup_image',3, true, 'DatePickerPopup_PostBack', 0, 0, false, 'Clear Date', true, 'Today\'s Date:');
	}

	function preDisplayCalendar(theDate) {
		displayCalendarByDate("preDisplayCalendar", "preDisplayYearPicker", theDate, 1, 0, 0, 6, true, false, '01/01/1000', '12/31/9999', true, 'DatePickerPopup_PostBack', false, 'Clear Date', true, 'Today\'s Date:');
	}

	function preDisplayYearPicker(theDate) {
		displayYearPicker("preDisplayCalendar", "preDisplayYearPicker", theDate, "01/01/1000", "12/31/9999");
	}

	function DatePickerPopup_PostBack() {
	}

