var dDate = new Date();
var dCurMonth = dDate.getMonth();
var dCurDayOfMonth = dDate.getDate();
var dCurYear = dDate.getFullYear();
var datField;
var ns4 = (document.layers)? true:false
var ie4 = (document.all)? true:false
var isNS = (navigator.appName == "Netscape");
var layerObj,styleObj,tHTML;
//layer object definitions
layerObj = (isNS) ? 'document' : 'document.all';
styleObj = (isNS) ? '' : '.style';

var aMonthList = new Array()
aMonthList[0] = "January"
aMonthList[1] = "February"
aMonthList[2] = "March"
aMonthList[3] = "April"
aMonthList[4] = "May"
aMonthList[5] = "June"
aMonthList[6] = "July"
aMonthList[7] = "August"
aMonthList[8] = "September"
aMonthList[9] = "October"
aMonthList[10] = "November"
aMonthList[11] = "December"

var calWin = "calWin";
var doneLoading = false

function layerWrite(id,text)
{

	if (ns4)
	{
		var lyr = document.layers[id].document;
		lyr.open();
		lyr.write(text);
		lyr.close();
	}
	else if (ie4)
	{
		if (typeof(calWin) == "string" || typeof(calWin) == "undefined") {
			var vWinObj = eval("window");
		}else {
			var vWinObj = calWin;
		}

		var vDivObj = eval("vWinObj.document.all." + id);
		vDivObj.innerHTML = text;

	}
}

function showCalendar(pField)
{
	doneLoading = false
	if (typeof(bChangedFlag) != "undefined")
	{
		tempChangedFlag = bChangedFlag;
		bChangedFlag = false;
	}

	if (document.all)
	{
		xMax = screen.width;
		yMax = screen.height;
	}
	else if (document.layers)
	{
		xMax = window.outerWidth;
		yMax = window.outerHeight;
	}
	else
	{
		xMax = 800;
		yMax = 400;
	}
//The values you subtract from xMax and yMax should be the same size of the window you are creating.
	xOffset = (xMax - 187)/2;
	yOffset = (yMax - 170)/2;
	datField = pField;
	calWin = window.open("../../common/calendar.htm","calendar","width=187, height=170,screenX=" + xOffset + ",screenY=" + yOffset + ",top=" + yOffset + ",left=" + xOffset + ",resizable=no",true);
	myInterval = setInterval("drawCells()", 100)
//	var dCurDate = new Date();
//	fDrawCal(dCurDate.getFullYear(), dCurDate.getMonth()+1, 16, 16, "11px", "bold", 0);
}

function drawCells()
{
	if (doneLoading) {
		clearInterval(myInterval)
		var dCurDate = new Date();
		fDrawCal(dCurDate.getFullYear(), dCurDate.getMonth()+1, 16, 16, "11px", "bold", 0);
	}
}

function showReminderCalendar(y)
{
	doneLoading = false
	if (typeof(bChangedFlag) != "undefined")
	{
		tempChangedFlag = bChangedFlag;
		bChangedFlag = false;
	}

	if (document.all)
	{
		xMax = screen.width;
		yMax = screen.height;
	}
	else if (document.layers)
	{
		xMax = window.outerWidth;
		yMax = window.outerHeight;
	}
	else
	{
		xMax = 800;
		yMax = 400;
	}
//The values you subtract from xMax and yMax should be the same size of the window you are creating.
	xOffset = (xMax - 187)/2;
	yOffset = (yMax - 170)/2;
	datField = y;
	calWin = window.open("calendar.htm","calendar","width=187, height=170,screenX=" + xOffset + ",screenY=" + yOffset + ",top=" + yOffset + ",left=" + xOffset + ",resizable=no",true);
	myInterval = setInterval("drawCells()", 100)
//	var dCurDate = new Date();
//	fDrawCal(dCurDate.getFullYear(), dCurDate.getMonth()+1, 16, 16, "11px", "bold", 0);
}

function fGetDaysInMonth(iMonth, iYear) {
	var dPrevDate = new Date(iYear, iMonth, 0);
	return dPrevDate.getDate();
}

function fBuildCal(iYear, iMonth, iDayStyle) {
	var aMonth = new Array();
	aMonth[0] = new Array(7);
	aMonth[1] = new Array(7);
	aMonth[2] = new Array(7);
	aMonth[3] = new Array(7);
	aMonth[4] = new Array(7);
	aMonth[5] = new Array(7);
	aMonth[6] = new Array(7);
	var dCalDate = new Date(iYear, iMonth-1, 1);
	var iDayOfFirst = dCalDate.getDay();
	var iDaysInMonth = fGetDaysInMonth(iMonth, iYear);
	var iVarDate = 1;
	var i, d, w;
	if (iDayStyle == 2) {
		aMonth[0][0] = "Sunday";
		aMonth[0][1] = "Monday";
		aMonth[0][2] = "Tuesday";
		aMonth[0][3] = "Wednesday";
		aMonth[0][4] = "Thursday";
		aMonth[0][5] = "Friday";
		aMonth[0][6] = "Saturday";
	} else if (iDayStyle == 1) {
		aMonth[0][0] = "Sun";
		aMonth[0][1] = "Mon";
		aMonth[0][2] = "Tue";
		aMonth[0][3] = "Wed";
		aMonth[0][4] = "Thu";
		aMonth[0][5] = "Fri";
		aMonth[0][6] = "Sat";
	} else {
		aMonth[0][0] = "Su";
		aMonth[0][1] = "Mo";
		aMonth[0][2] = "Tu";
		aMonth[0][3] = "We";
		aMonth[0][4] = "Th";
		aMonth[0][5] = "Fr";
		aMonth[0][6] = "Sa";
	}
	for (d = iDayOfFirst; d < 7; d++) {
		aMonth[1][d] = iVarDate;
		iVarDate++;
	}
	for (w = 2; w < 7; w++) {
		for (d = 0; d < 7; d++) {
			if (iVarDate <= iDaysInMonth) {
				aMonth[w][d] = iVarDate;
				iVarDate++;
		    }
	    }
	}
	return aMonth;
}

function setChangedFlag()
{
	if (typeof(bChangedFlag) != "undefined" && bChangedFlag == false)
		bChangedFlag = tempChangedFlag
}

function fSetSelectedDayPopup(myElement)
{
	if (myElement.id == "calCell" && typeof(datField) != "undefined" && datField != "")
	{
		if (!isNaN(parseInt(myElement.children["calDateText"].innerText)))
		{
			myElement.bgColor = "#c0c0c0";
			calWin.document.all.calSelectedDate.value = parseInt(myElement.children["calDateText"].innerText);
			var vObj = eval("document.all." + datField)
			vObj.value = calWin.document.all.tbSelMonth.value + "/" + calWin.document.all.calSelectedDate.value + "/" + calWin.document.all.tbSelYear.value;
			if (typeof(bChangedFlag) != "undefined")
				bChangedFlag = true;
			calWin.close();
			calWin = "";
			datField = "";
	    }
	}
	else
	{
		calWin.close();
	}
}

function fDrawCal(iYear, iMonth, iCellWidth, iCellHeight, sDateTextSize, sDateTextWeight, iDayStyle) {
	
	var myMonth;
	myMonth = fBuildCal(iYear, iMonth, iDayStyle);
	drwCells = "<table border='0' width='100%' valign='top' cellpadding='3' cellspacing='1'>"
	+ "<tr>"
	+ "<td class='calTitle' align='center' width='15%' nowrap>" + myMonth[0][0] + "</td>"
	+ "<td class='calTitle' align='center' width='14%' nowrap>" + myMonth[0][1] + "</td>"
	+ "<td class='calTitle' align='center' width='14%' nowrap>" + myMonth[0][2] + "</td>"
	+ "<td class='calTitle' align='center' width='14%' nowrap>" + myMonth[0][3] + "</td>"
	+ "<td class='calTitle' align='center' width='14%' nowrap>" + myMonth[0][4] + "</td>"
	+ "<td class='calTitle' align='center' width='14%' nowrap>" + myMonth[0][5] + "</td>"
	+ "<td class='calTitle' align='center' width='15%' nowrap>" + myMonth[0][6] + "</td>"
	+ "</tr>";
	for (w = 1; w < 7; w++) {
		drwCells += "<tr>";
		for (d = 0; d < 7; d++) {
			if (!isNaN(myMonth[w][d])) {
				if (typeof(calWin) != "undefined")
				{
					drwCells += "<td id='calCell' bgcolor='white' valign='top' onMouseOver='fToggleColor(this)' onMouseOut='fToggleColor(this)' onclick='opener.fSetSelectedDayPopup(this)'>";
					drwCells += "<font id=calDateText style='CURSOR:Hand;FONT-FAMILY:Arial;FONT-SIZE:" + sDateTextSize + ";FONT-WEIGHT:" + sDateTextWeight + "' onclick='opener.fSetSelectedDayPopup(this)'>" + myMonth[w][d] + "</font>";
				}
				else
				{
					drwCells += "<td id='calCell" + iMonth + iYear + myMonth[w][d] + "' bgcolor='white' valign='top' onMouseOver='fToggleColor(this)' onMouseOut='fToggleColor(this)' onclick='fSetSelectedDay(this, " + myMonth[w][d] + "," + iMonth + "," + iYear + ")'>";
//					drwCells += "<td id='calCell' bgcolor='white' valign='top' onMouseOver='fToggleColor(this)' onMouseOut='fToggleColor(this)' onclick='fSetSelectedDay(this)'>";
					drwCells += "<font id=calDateText style='CURSOR:Hand;FONT-FAMILY:Arial;FONT-SIZE:" + sDateTextSize + ";FONT-WEIGHT:" + sDateTextWeight + "' onclick='fSetSelectedDay(this)'>" + myMonth[w][d] + "</font>";
				}
			} else {
				drwCells += "<td nowrap background='/images/calBlank.gif'>";
				drwCells += "<font id=calDateText style='FONT-FAMILY:Arial;FONT-SIZE:" + sDateTextSize + ";FONT-WEIGHT:" + sDateTextWeight + "'>&nbsp;</font>";
			}
			drwCells += "</td>";
		}
		drwCells += "</tr>";
		}
		drwCells += "</table>";

		layerWrite("tableCells", drwCells);
}

function fDrawSelectCal(iYear, iMonth, iCellWidth, iCellHeight, sDateTextSize, sDateTextWeight, iDayStyle, sDivID) {
	var myMonth;

	var newdateString;
	myMonth = fBuildCal(iYear, iMonth, iDayStyle);
	gMonth = myMonth;
	drwCells = "<table border='0' width='100%' valign='top' cellpadding='3' cellspacing='1'>"
	+ "<tr>"
	+ "<td class='calTitle' align='center' width='15%' nowrap>" + myMonth[0][0] + "</td>"
	+ "<td class='calTitle' align='center' width='14%' nowrap>" + myMonth[0][1] + "</td>"
	+ "<td class='calTitle' align='center' width='14%' nowrap>" + myMonth[0][2] + "</td>"
	+ "<td class='calTitle' align='center' width='14%' nowrap>" + myMonth[0][3] + "</td>"
	+ "<td class='calTitle' align='center' width='14%' nowrap>" + myMonth[0][4] + "</td>"
	+ "<td class='calTitle' align='center' width='14%' nowrap>" + myMonth[0][5] + "</td>"
	+ "<td class='calTitle' align='center' width='15%' nowrap>" + myMonth[0][6] + "</td>"
	+ "</tr>";
	var vCount = 0
	for (w = 1; w < 7; w++) {
		drwCells += "<tr>";
		for (d = 0; d < 7; d++) {
			if (!isNaN(myMonth[w][d])) {
				newdateString = iMonth + '/' + myMonth[w][d] + '/' + iYear;
				var newDate = new Date(newdateString);
				if (typeof(invDate) != "undefined") {	
					if (newDate <= invDate) {
						var color = '#e6e6fa';
					}else {
						var color = 'white';
					}
				}else {
					var color = 'white';
				}

				drwCells += "<td id='calCell" + iMonth + iYear + myMonth[w][d] + "'  valign='top' onMouseOver='fToggleColor(this)' onMouseOut='fToggleColor(this)' onclick='fSetSelectedDay(this, " + myMonth[w][d] + "," + iMonth + "," + iYear + ")' bgcolor='" + color + "'>";
				drwCells += "<font id=calDateText style='CURSOR:Hand;FONT-FAMILY:Arial;FONT-SIZE:" + sDateTextSize + ";FONT-WEIGHT:" + sDateTextWeight + "'>" + myMonth[w][d] + "</font>";
			} else {
				drwCells += "<td nowrap background='/images/calBlank.gif'>";
				drwCells += "<font id=calDateText style='FONT-FAMILY:Arial;FONT-SIZE:" + sDateTextSize + ";FONT-WEIGHT:" + sDateTextWeight + "'>&nbsp;</font>";
			}
			drwCells += "</td>";
			vCount++;
		}
		drwCells += "</tr>";
	}
	drwCells += "</table>";

	layerWrite(sDivID, drwCells);
}

/**
 * DHTML date validation script. Courtesy of SmartWebby.com (http://www.smartwebby.com/dhtml/)
 */
// Declaring valid date character, minimum year and maximum year
var dtCh= "/";
var minYear=1900;
var maxYear=2100;

function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag){
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}

function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   }
   return this
}

function isDate(dtStr){
	if(dtStr == "") //ignore if no date, only ensure required datefields through ASP
		return true;

	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strMonth=dtStr.substring(0,pos1)
	var strDay=dtStr.substring(pos1+1,pos2)
	var strYear=dtStr.substring(pos2+1)
	strYr=strYear
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}
	month=parseInt(strMonth)
	day=parseInt(strDay)
	year=parseInt(strYr)
	if (pos1==-1 || pos2==-1){
		alert("The date format should be : mm/dd/yyyy")
		return false
	}
	if (strMonth.length<1 || month<1 || month>12){
		alert("Please enter a valid month")
		return false
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		alert("Please enter a valid day")
		return false
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear)
		return false
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		alert("Please enter a valid date")
		return false
	}
	return true
}
if (typeof(tempChangedFlag) != "undefined") {
	window.onunload = setChangedFlag;
}

