//Scripter: TengYong Ng
//Website: http://www.rainforestnet.com`
//Copyright (c) 2003 TengYong Ng
//Version: 1.8.3
//Contact: contact@rainforestnet.com

var WeekDayColor = "#C8D0D4";       
var TodayColor = "#FFFF99";         
var SelDateColor = "#D8E0E4";       
var YearSelColor = "#000";                 

var cCalendar;
var dtSelected;     
var wCalendar;
var dToday = new Date();
var aMonthNames = ["January", "February", "March", "April", "May", "June","July", "August", "September", "October", "November", "December"];

function NewCalendar(iInputControlId) 
{   
    cCalendar = new Calendar(iInputControlId);  
	
	var dtExisting = document.getElementById(iInputControlId).value;
	if (dtExisting != "") {	
		var Sp1 = dtExisting.indexOf("-", 0)
		var Sp2 = dtExisting.indexOf("-", (parseInt(Sp1) + 1));	
		var strMonth = dtExisting.substring(Sp1 + 1, Sp2);
		var strDate = dtExisting.substring(Sp2 + 1, Sp2 + 3);
		var strYear = dtExisting.substring(0, Sp1);
		
		var intMonth = parseInt(strMonth, 10) - 1;	
		if ((parseInt(intMonth, 10) >= 0) && (parseInt(intMonth, 10) < 12))	cCalendar.Month = intMonth;

		if ((parseInt(strDate, 10) <= cCalendar.GetDaysInMonth()) && (parseInt(strDate, 10) >= 1)) cCalendar.Date = strDate;
	
		var YearPattern = /^\d{4}$/;
		if (YearPattern.test(strYear)) cCalendar.Year = parseInt(strYear, 10);
	}
	dtSelected = new Date(cCalendar.Year, cCalendar.Month, cCalendar.Date);
	
	wCalendar = window.open("", "DatePicker", "toolbar=0,location=0,status=0,menubar=0,fullscreen=no,width=280,height=270,resizable=0,top=200,left=500");
	RenderCalendar();
	wCalendar.focus();
}

function RenderCalendar()
{
    wCalendar.document.open();
	wCalendar.document.writeln("<html><head><title>Select Date</title><script>var winMain=window.opener;</script></head><body link=black><form name='Calendar'>");
    
    var szHeaderText = "<table border=1 cellpadding=1 cellspacing=1 width=260 valign=top><tr><td colspan=7><table border=0 width=200 cellpadding=0 cellspacing=0><tr>";

    var SelectStr;
	szHeaderText += "<td align=left><select name=\"MonthSelector\" onChange=\"javascript:winMain.cCalendar.Month = this.selectedIndex;winMain.RenderCalendar();\">";
    for (i = 0; i < 12; i++) {
        if (i == cCalendar.Month) SelectStr = "Selected";
		else SelectStr = "";	
		szHeaderText += "<option " + SelectStr + " value >" + aMonthNames[i] + "</option>";
	}
	szHeaderText += "</select></td>";
	    
	szHeaderText += "<td align=right><a href=\"javascript:winMain.cCalendar.Year--;winMain.RenderCalendar()\"><b><font color=\"" + YearSelColor + "\"><</font></b></a><font face=\"Verdana\" color=\"" + YearSelColor + "\" size=2>&nbsp;<input type=text size=5 onchange=\"javascript:winMain.cCalendar.Year=this.value;setTimeout('winMain.RenderCalendar()', 200);\" value='" + cCalendar.Year + "' /></font>&nbsp;<a href=\"javascript:winMain.cCalendar.Year++;winMain.RenderCalendar()\"><b><font color=\"" + YearSelColor + "\">></font></b></a></td>";	
	szHeaderText += "</tr></table></td></tr>";
	szHeaderText += "<tr bgcolor=#333333><td colspan=7><font face='Verdana' size=2 align=center color=white" + "><b>" + aMonthNames[cCalendar.Month]+ " " + cCalendar.Year + "</b></font></td></tr>";

    szHeaderText += "<tr bgcolor=#788084>";
    var aWeekDayNames = ["Mon", "Tue", "Wed", "Thur", "Fri", "Sat", "Sun"];   
    for (i = 0; i < 7; i++) szHeaderText += "<td align=center><font face=Verdana size=2 color=white>" + aWeekDayNames[i] + "</font></td>";
    szHeaderText += "</tr>";	
    
    wCalendar.document.write(szHeaderText);

    var dCalendarDate = new Date(cCalendar.Year, cCalendar.Month);
    dCalendarDate.setDate(1);
    var dFirstDay = dCalendarDate.getDay();
    dFirstDay -= 1;
	if (dFirstDay == -1) dFirstDay = 6;
    var szCalendarData = "<tr>";
    var iDayCount = 0;
    for (i = 0; i < dFirstDay; i++) {
	    szCalendarData += NewCell();
	    iDayCount += 1;
    }
    for (j = 1; j <= cCalendar.GetDaysInMonth(); j++) {
	    var szCell;
	    iDayCount += 1;
	    if ((j == dToday.getDate()) && (cCalendar.Month == dToday.getMonth()) && (cCalendar.Year == dToday.getFullYear()))
		    szCell = NewCell(j, true, TodayColor, false); 
	    else {
		    if ((j == dtSelected.getDate()) && (cCalendar.Month == dtSelected.getMonth())&&(cCalendar.Year == dtSelected.getFullYear())) {
			    szCell = NewCell(j, true, SelDateColor, true);
		    } else {	
			    if (iDayCount % 7 == 0) szCell = NewCell(j, false, WeekDayColor, false);
				else if ((iDayCount + 1) % 7 == 0) szCell = NewCell(j, false, WeekDayColor, false);
				else szCell = NewCell(j, null, WeekDayColor);					
		    }		
	    }						
	    szCalendarData = szCalendarData + szCell;

	    if ((iDayCount % 7 == 0)&&(j < cCalendar.GetDaysInMonth())) szCalendarData = szCalendarData + "</tr><tr>";
    }    
    wCalendar.document.writeln(szCalendarData);	
    
    var dDate = new Date();
	var iMonth = dDate.getMonth() + 1;
	var iDate = dDate.getDate();
	var iYear = dDate.getFullYear();
	if (iDate < 10) iDate = "0" + iDate;
	if (iMonth < 10) iMonth = "0" + iMonth;   
    wCalendar.document.writeln("<tr><td colspan=7 align=center>Today is " + iYear + "-" + iMonth + "-" + iDate + "</td></tr>");
       
	wCalendar.document.writeln("</table></form></body></html>");
	wCalendar.document.close();
}

function NewCell(day, bHighLight, cBkColor, bInsetBorder)
{
	var szHTMLText = "<td align=center width=80 ";
	if (bInsetBorder) szHTMLText += "style='border-style: ridge;' ";
	if (cBkColor != null) szHTMLText += " bgcolor=\"" + cBkColor + "\"";
	szHTMLText += "><font face=verdana size=2>";
	if (bHighLight) szHTMLText += "<b>";
	
	if (day == null) day = "";
	else if (day < 10) day = "0" + day;
	var MonthDigit = cCalendar.Month + 1;
	if (MonthDigit < 10) MonthDigit = "0" + MonthDigit;
    szHTMLText += "<a href=\"javascript:winMain.document.getElementById('" + cCalendar.Ctrl + "').value='" + (cCalendar.Year + "-" + MonthDigit + "-" + day) + "';" + ";window.close();\" STYLE=\"text-decoration: none\; color: black\">" + day + "</a>";
	
	if (bHighLight) szHTMLText += "</b>";
	szHTMLText += "</font></td>";
	return szHTMLText;
}

function Calendar(idControl)
{
	this.Date = dToday.getDate();   
	this.Month = dToday.getMonth(); 
	this.Year = dToday.getFullYear();  
	this.Ctrl = idControl;
}

function GetDaysInMonth()
{
	var DaysInMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
	if ((this.Year % 4) == 0) {
		if (!((this.Year % 100 == 0) && (this.Year % 400) != 0)) DaysInMonth[1] = 29;
	}
	return DaysInMonth[this.Month];	
}
Calendar.prototype.GetDaysInMonth = GetDaysInMonth;
