function positionInfo(object) {
	var p_elm = object;
	this.getElementLeft = getElementLeft;
	function getElementLeft() {
		var x = 0;
		var elm;
		if(typeof(p_elm) == "object"){elm = p_elm;}
		else {elm = document.getElementById(p_elm);}
		while (elm != null) {
			x+= elm.offsetLeft;
			elm = elm.offsetParent;
			}
		return parseInt(x);
		}
	this.getElementWidth = getElementWidth;
	function getElementWidth(){
		var elm;
		if(typeof(p_elm) == "object"){elm = p_elm;}
		else{elm = document.getElementById(p_elm);}
		return parseInt(elm.offsetWidth);
		}
	this.getElementRight = getElementRight;
	function getElementRight(){
		return getElementLeft(p_elm) + getElementWidth(p_elm);
		}
	this.getElementTop = getElementTop;
	function getElementTop() {
		var y = 0;
		var elm;
		if(typeof(p_elm) == "object"){elm = p_elm;}
		else{elm = document.getElementById(p_elm);}
		while (elm != null) {
			y+= elm.offsetTop;
			elm = elm.offsetParent;
			}
		return parseInt(y);
		}
	this.getElementHeight = getElementHeight;
	function getElementHeight(){
		var elm;
		if(typeof(p_elm) == "object"){elm = p_elm;}
		else{elm = document.getElementById(p_elm);}
		return parseInt(elm.offsetHeight);
		}
	this.getElementBottom = getElementBottom;
	function getElementBottom(){
		return getElementTop(p_elm) + getElementHeight(p_elm);
		}
	}
function CalendarControl() {
	var calendarId = 'CalendarControl';
	var currentYear = 0;
	var currentMonth = 0;
	var currentDay = 0;
	var nowMonth = getCurrentMonth();
	var nowDay = getCurrentDay();
	var nowYear = getCurrentYear();
	var selectedYear = 0;
	var selectedMonth = 0;
	var selectedDay = 0;
	var months = ['January','February','March','April','May','June','July','August','September','October','November','December'];
	var dateField = null;
	function getProperty(p_property){
		var p_elm = calendarId;
		var elm = null;
		if(typeof(p_elm) == "object"){elm = p_elm;}
		else{elm = document.getElementById(p_elm);}
		if (elm != null){
			if(elm.style){
				elm = elm.style;
				if(elm[p_property]){return elm[p_property];}
				else {return null;}
				}
			else {return null;}
			}
		}
	function setElementProperty(p_property, p_value, p_elmId){
		var p_elm = p_elmId;
		var elm = null;
		if(typeof(p_elm) == "object"){elm = p_elm;}
		else{elm = document.getElementById(p_elm);}
		if((elm != null) && (elm.style != null)){
			elm = elm.style;
			elm[ p_property ] = p_value;
			}
		}
	function setProperty(p_property, p_value) {
		setElementProperty(p_property, p_value, calendarId);
		}
	function getDaysInMonth(year, month) {
		return [31,((!(year % 4 ) && ( (year % 100 ) || !( year % 400 ) ))?29:28),31,30,31,30,31,31,30,31,30,31][month-1];
		}
	function getDayOfWeek(year, month, day) {
		var date = new Date(year,month-1,day)
		return date.getDay();
		}
	this.setDate = setDate;
	function setDate(year, month, day) {
		if (dateField) {
			if (month < 10) {month = "0" + month;}
			if (day < 10) {day = "0" + day;}
			var dateString = month+"-"+day+"-"+year;
			dateField.value = dateString;
			hide();
			}
		return;
		}

	this.changeMonth = changeMonth;
	function changeMonth(change) {
		currentMonth += change;
		currentDay = 0;
		if(currentMonth > 12) {
			currentMonth = 1;
			currentYear++;
			}
		else if(currentMonth < 1) {
			currentMonth = 12;
			currentYear--;
			}
		calendar = document.getElementById(calendarId);
		calendar.innerHTML = calendarDrawTable();
		}

	this.changeYear = changeYear;
	function changeYear(change) {
		currentYear += change;
		currentDay = 0;
		calendar = document.getElementById(calendarId);
		calendar.innerHTML = calendarDrawTable();
		}

	this.gotoToday = gotoToday;
	function gotoToday() {
		currentYear = getCurrentYear();
		currentMonth = getCurrentMonth();
		currentDay = 0;
		calendar = document.getElementById(calendarId);
		calendar.innerHTML = calendarDrawTable();
		}
	this.gotoCurrent = gotoCurrent;
	function gotoCurrent() {
		currentYear = selectedYear;
		currentMonth = selectedMonth;
		currentDay = 0;
		calendar = document.getElementById(calendarId);
		calendar.innerHTML = calendarDrawTable();
		}

	function getCurrentYear() {
		var year = new Date().getYear();
		if(year < 1900){year += 1900;}
		return year;
		}

	function getCurrentMonth() {
		return new Date().getMonth() + 1;
		}
	function getCurrentDay() {return new Date().getDate();}

	function calendarDrawTable() {
		var dayOfMonth = 1;
		var validDay = 0;
		var startDayOfWeek = getDayOfWeek(currentYear, currentMonth, dayOfMonth);
		var daysInMonth = getDaysInMonth(currentYear, currentMonth);
		var css_class = null; //CSS class for each day
		var table = "<table cellspacing='1' cellpadding='0' border='0'>";
		table = table + "<tr valign='top'>";
		table = table + "  <td class='previous' nowrap title='Previous Month'><a href='javascript:changeCalendarControlMonth(-1);'>&#9668;</a></td>";
		table = table + "  <td  nowrap class='title' colspan='5' align='center' style='width:90px;'>" + months[currentMonth-1] + "</td>";
		table = table + "  <td class='next' nowrap title='Next Month' align='right'><a href='javascript:changeCalendarControlMonth(1);'>&#9658;</a></td>";
		table = table + "</tr>\n";
		table = table + "<tr valign='top'>";
		table = table + "  <td class='next' nowrap title='Jump 10 Years Back'><a href='javascript:changeCalendarControlYear(-10);'>&#9668;&#124;</a></td>";
		table = table + "  <td class='previous' nowrap title='Previous Year'><a href='javascript:changeCalendarControlYear(-1);'>&#9668;</a></td>";
		table = table + "  <td colspan=\"3\" class='title' align='center' style='width:54px;'>" + currentYear + "</td>";
		table = table + "  <td class='next' nowrap title='Next Year' align='right'><a href='javascript:changeCalendarControlYear(1);'>&#9658;</a></td>";
		table = table + "  <td class='next' nowrap title='Jump 10 Years Ahead' align='right'><a href='javascript:changeCalendarControlYear(10);'>&#124;&#9658;</a></td>";
		table = table + "</tr>\n";
		table = table + "<tr class='tablerow'><td>S</td><td>M</td><td>T</td><td>W</td><td>T</td><td>F</td><td>S</td></tr>";
		for(var week=0; week < 6; week++) {
			table = table + "<tr class='tablerow'>";
			for(var dayOfWeek=0; dayOfWeek < 7; dayOfWeek++) {
				if(week == 0 && startDayOfWeek == dayOfWeek) {validDay = 1;}
				else if (validDay == 1 && dayOfMonth > daysInMonth) {validDay = 0;}

				if(validDay) {
					if (dayOfMonth == selectedDay && currentYear == selectedYear && currentMonth == selectedMonth && dayOfMonth == nowDay && currentYear == nowYear && currentMonth == nowMonth) {
						css_class = 'current_today';
						}
					else if (dayOfMonth == selectedDay && currentYear == selectedYear && currentMonth == selectedMonth) {
						css_class = 'current';
						}
					else if (dayOfMonth == nowDay && currentYear == nowYear && currentMonth == nowMonth) {
						css_class = 'today';
						}
					else if (dayOfWeek == 0 || dayOfWeek == 6) {css_class = 'weekend';}
					else {css_class = 'weekday';}

					table = table + "<td><a class='"+css_class+"' href=\"javascript:setCalendarControlDate("+currentYear+","+currentMonth+","+dayOfMonth+")\">"+dayOfMonth+"</a></td>";
					dayOfMonth++;
					}
				else {
					table = table + "<td class='empty'>&nbsp;</td>";
					}
				}
			table = table + "</tr>";
			}
		table = table + "<tr class='footer' align='center'>";
		table = table + "  <td nowrap title='Go to Current Selection'><a class='gotoCurrent' href='javascript:changeCalendarToCurrent("+selectedYear+","+selectedMonth+");'>&#9788;</a></td>";
		table = table + "  <td width='100%' colspan='5' nowrap title='Close This Calendar Control' style='width:90px;font-size:9pt;'><a class='footer' href='javascript:hideCalendarControl();'>Close</a></td>";
		table = table + "  <td nowrap title='Go to Today'><a class='gotoToday' href='javascript:changeCalendarToToday();'>&#9788;</a></td>";
		table = table + "</tr>";
		table = table + "</table>";
		return table;
		}
	this.show = show;
	function show(field) {
		// If the calendar is visible and associated with
		// this field close the calendar.
		if (dateField == field) {
			hideCalendarControl();
			return;
			}
		else {dateField = field;}
		if(dateField) {
			try {
				var dateString = new String(dateField.value);
				var dateParts = dateString.split("-");
				selectedMonth = parseInt(dateParts[0],10);
				selectedDay = parseInt(dateParts[1],10);
				selectedYear = parseInt(dateParts[2],10);
				} catch(e) {}
			}
		if (!(selectedYear && selectedMonth && selectedDay)) {
			selectedMonth = getCurrentMonth();
			selectedDay = getCurrentDay();
			selectedYear = getCurrentYear();
			}
		currentMonth = selectedMonth;
		currentDay = selectedDay;
		currentYear = selectedYear;

		if(document.getElementById){
			calendar = document.getElementById(calendarId);
			calendar.innerHTML = calendarDrawTable(currentYear, currentMonth);
			setProperty('display', 'block');
			var fieldPos = new positionInfo(dateField);
			var calendarPos = new positionInfo(calendarId);
			var x = fieldPos.getElementLeft();
			var y = fieldPos.getElementBottom();
			setProperty('left', x + "px");
			setProperty('top', y + "px");
			}
		}

	this.hide = hide;
	function hide() {
		if(dateField) {
			setProperty('display', 'none');
			dateField = null;
			}
		}
	}
	var calendarControl = new CalendarControl();
	function showCalendarControl(textField) {
		calendarControl.show(textField);
		}
	function hideCalendarControl() {
		calendarControl.hide();
		}
	function setCalendarControlDate(year, month, day) {
		calendarControl.setDate(year, month, day);
		}
	function changeCalendarControlYear(change) {
		calendarControl.changeYear(change);
		}
	function changeCalendarToToday() {
		calendarControl.gotoToday();
		}
	function changeCalendarToCurrent() {
		calendarControl.gotoCurrent();
		}
	function changeCalendarControlMonth(change) {
		calendarControl.changeMonth(change);
		}
	document.write("<div id='CalendarControl' behavior='dropdown'></div>");

