<!--
/* Credit to Julian Robichaux (http://www.nsftools.com/tips/DatePickerTest.htm) for parts of this script. */

var dtPickerDivID = "datepicker";
var iFrameDivID = "datepickeriframe";

var dayList = new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
var monthList = new Array('January','February','March','April','May','June','July','August','September','October','November','December');
  
var defaultDateSeparator = "/";
var defaultDateFormat = "dmy";
var dtSep = defaultDateSeparator;
var dtFormat = defaultDateFormat;

function DisplayDatePicker(dtField, displayBelow, format, seperator)
{
	var targetDateField = document.getElementsByName(dtField).item(0);

	if (!displayBelow) displayBelow = targetDateField;

	if (seperator) dtSep = seperator;
	if (format) dtFormat = format;

	var x = displayBelow.offsetLeft;
	var y = displayBelow.offsetTop + displayBelow.offsetHeight;
   
	var parent = displayBelow;
	while (parent.offsetParent) {
		parent = parent.offsetParent;
		x += parent.offsetLeft;
		y += parent.offsetTop;
	}

	DrawDatePicker(targetDateField, x, y);
}

function DrawDatePicker(targetDateField, x, y)
{
	var dt = GetFieldDate(targetDateField.value);

	if (!document.getElementById(dtPickerDivID)) {
		var newNode = document.createElement("div");
		newNode.setAttribute("id", dtPickerDivID);
		newNode.setAttribute("class", "dpDiv");
		newNode.setAttribute("style", "visibility: hidden;");
		document.body.appendChild(newNode);
	}
    
   
	var pickerDiv = document.getElementById(dtPickerDivID);
	pickerDiv.style.position = "absolute";	
	pickerDiv.style.left = x + "px";	
	pickerDiv.style.top = y + "px";
	pickerDiv.style.visibility = (pickerDiv.style.visibility == "visible" ? "hidden" : "visible");
	pickerDiv.style.zIndex = 10000;

	RefreshDatePicker(targetDateField.name, dt.getFullYear(), dt.getMonth(), dt.getDate());
}

function RefreshDatePicker(dtField, year, month, day)
{
	var thisDay = new Date();

	if ((month >= 0) && (year > 0)) {
		thisDay = new Date(year, month, 1);
	} else {
		day = thisDay.getDate();
		thisDay.setDate(1);
	}

	var TABLE = "<TABLE cols=7 class='dpTable'>";
	var xTABLE = "</TABLE>";
	var TR = "<TR class='dp'>";
	var TR_title = "<TR class='dpTitle'>";
	var TR_days = "<TR class='dpDay'>";
	var TR_todaybutton = "<TR class='dpTodayButton'>";
	var xTR = "</TR>";
	var TD = "<TD class='dp'";
	var TD_title = "<TD colspan=5 class='dpTitle'>";
	var TD_buttons = "<TD class='dpButton'>";
	var TD_todaybutton = "<TD colspan=7 class='dpTodayButton'>";
	var TD_days = "<TD class='dpDay'>";
	var TD_selected = "<TD class='dpDaySelected'";
	var xTD = "</TD>";
	var DIV_title = "<DIV class='dpTitleText'>";
	var DIV_selected = "<DIV class='dpDaySelected'>";
	var xDIV = "</DIV>";

	var html = TABLE;

	html += TR_title
		+ TD_buttons + GetButtonCode(dtField, thisDay, -1, "&lt;") + xTD
		+ TD_title + DIV_title + monthList[thisDay.getMonth()] + " " + thisDay.getFullYear() + xDIV + xTD
		+ TD_buttons + GetButtonCode(dtField, thisDay, 1, "&gt;") + xTD
		+ xTR;

	html += TR_days;
	for(i = 0; i < dayList.length; i++)
		html += TD_days + dayList[i].substring(0,2) + xTD;
	html += xTR;

	html += TR;

	for (i = 0; i < thisDay.getDay(); i++)
		html += TD + "&nbsp;" + xTD;

	do {
		dayNum = thisDay.getDate();
		TD_onclick = " onclick=\"UpdateDateField('" + dtField + "', '" + GetDateString(thisDay) + "');\""
			+ " onmouseover='JavaScript:if (this.className != \"dpDaySelected\") this.className=\"dpDayHighlight\";'" 
			+ " onmouseout='JavaScript:if (this.className != \"dpDaySelected\") this.className=\"dp\";'>";
		if (dayNum == day)
			html += TD_selected + TD_onclick + DIV_selected + dayNum + xDIV + xTD;
		else
			html += TD + TD_onclick + dayNum + xTD;

		if (thisDay.getDay() == 6)
			html += xTR + TR;

		thisDay.setDate(thisDay.getDate() + 1);
	} while (thisDay.getDate() > 1)

	if (thisDay.getDay() > 0) {
		for (i = 6; i > thisDay.getDay(); i--)
			html += TD + "&nbsp;" + xTD;
	}
	html += xTR;

	var today = new Date();
	html += TR_todaybutton + TD_todaybutton
		+ "<button class='dpButton' onClick='RefreshDatePicker(\"" + dtField + "\");'>today</button>&nbsp;&nbsp;"
		+ "<button class='dpButton' onClick='UpdateDateField(\"" + dtField + "\");'>close</button>"
		+ xTD + xTR
		+ xTABLE;

	document.getElementById(dtPickerDivID).innerHTML = html;

	AdjustiFrame();
}

function GetButtonCode(dtField, dateVal, adjust, label)
{
	var newMonth = (dateVal.getMonth() + adjust) % 12;
	var newYear = dateVal.getFullYear() + parseInt((dateVal.getMonth() + adjust) / 12);
	if (newMonth < 0) {
		newMonth += 12;
		newYear += -1;
	}

	return "<button class='dpButton' onClick='RefreshDatePicker(\"" + dtField + "\", " + newYear + ", " + newMonth + ");'>" + label + "</button>";
}

function GetDateString(dtVal)
{
	var dStr = "00" + dtVal.getDate();
	var mStr = "00" + (dtVal.getMonth()+1);
	dStr = dStr.substring(dStr.length - 2);
	mStr = mStr.substring(mStr.length - 2);

	switch (dtFormat) {
		case "dmy" :
			return dStr + dtSep + mStr + dtSep + dtVal.getFullYear();
		case "ymd" :
			return dtVal.getFullYear() + dtSep + mStr + dtSep + dStr;
		case "mdy" :
		default :
			return mStr + dtSep + dStr + dtSep + dtVal.getFullYear();
	}
}

function GetFieldDate(dateString)
{
	var dateVal;
	var dArray;
	var d, m, y;

	try {
	dArray = SplitDateString(dateString);
	if (dArray) {
		switch (dtFormat) {
		case "dmy" :
			d = parseInt(dArray[0], 10);
			m = parseInt(dArray[1], 10) - 1;
			y = parseInt(dArray[2], 10);
			break;
		case "ymd" :
			d = parseInt(dArray[2], 10);
			m = parseInt(dArray[1], 10) - 1;
			y = parseInt(dArray[0], 10);
			break;
		case "mdy" :
		default :
			d = parseInt(dArray[1], 10);
			m = parseInt(dArray[0], 10) - 1;
			y = parseInt(dArray[2], 10);
			break;
		}
		dateVal = new Date(y, m, d);
	} else {
		dateVal = new Date(dateString);
	}
	} catch(e) {
		dateVal = new Date();
	}

	return dateVal;
}

function SplitDateString(dateString)
{
	var dArray;
	if (dateString.indexOf("/") >= 0)
		dArray = dateString.split("/");
	else if (dateString.indexOf(".") >= 0)
		dArray = dateString.split(".");
	else if (dateString.indexOf("-") >= 0)
		dArray = dateString.split("-");
	else if (dateString.indexOf("\\") >= 0)
		dArray = dateString.split("\\");
	else
		dArray = false;

	return dArray;
}

function UpdateDateField(dtField, dtStr)
{
	var fld = document.getElementsByName(dtField).item(0);
	if (dtStr)
		fld.value = dtStr;
	document.getElementById(dtPickerDivID).style.visibility = "hidden";
	AdjustiFrame();

	if ((dtStr) && (typeof(datePickerClosed) == "function"))
		datePickerClosed(fld);
}

function AdjustiFrame(pickerDiv, iFrameDiv)
{
	if (!document.getElementById(iFrameDivID)) {
		var node = document.createElement("iFrame");
		node.setAttribute("id", iFrameDivID);
		node.setAttribute("src", "javascript:false;");
		node.setAttribute("scrolling", "no");
		node.setAttribute("frameborder", "0");
		document.body.appendChild(node);
	}

	if (!pickerDiv)
		pickerDiv = document.getElementById(dtPickerDivID);
	if (!iFrameDiv)
		iFrameDiv = document.getElementById(iFrameDivID);

	try {
		iFrameDiv.style.position = "absolute";
		iFrameDiv.style.width = pickerDiv.offsetWidth;
		iFrameDiv.style.height = pickerDiv.offsetHeight;
		iFrameDiv.style.top = pickerDiv.style.top;
		iFrameDiv.style.left = pickerDiv.style.left;
		iFrameDiv.style.zIndex = pickerDiv.style.zIndex - 1;
		iFrameDiv.style.visibility = pickerDiv.style.visibility;
	} catch(e) {
	}
}

//-->


