var currentDate = new Date();
var selectedDay, selectedMonth, selectedYear, controlIn;
var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
var days = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
var daysOfMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
var calendarWindow = null;
var bBuilding = false;
function getDaysForMonth(thisMonth, thisYear) {
	if (thisMonth==1) {
		//alert('in Feb: '+thisMonth);
		if ((thisYear % 4) == 0) {
			if ((thisYear % 100) == 0 && (thisYear % 400) != 0)	return 28;
			return 29;
		}
		return 28;
	} else {
		return daysOfMonth[parseInt(thisMonth)];
	}
}
function prevMonth() {
	if (selectedMonth==0)  {
		selectedYear--;
		selectedMonth=11;
	} else {
		selectedMonth--;
	}
	buildCalendar()
}
function nextMonth() {
	if (selectedMonth==11)  {
		selectedYear++;
		selectedMonth=0;
	} else {
		selectedMonth++;
	}
	buildCalendar()
}
function prevYear() { selectedYear--; buildCalendar(); }
function nextYear() { selectedYear++; buildCalendar(); }
function checkUnload() {
	if (!bBuilding) calendarWindow=null;
}
function receiveDate(sDate) {
	if (controlIn) controlIn.value=sDate;
	calendarWindow.close();
}
function buildCalendar() {
var d = calendarWindow.document;
	bBuilding = true;
	d.open();
	d.write('<html><title>Select date...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</title>');
	d.write('<link rel="stylesheet" type="text/css" href="includes/calendarStyle.css">');
	d.write('<body onunload="opener.checkUnload();"><div style="position: absolute; left:0px; top: 0px; "><table class="calTable" width="240">');
	d.write('<tr class="calTDHead">');
	d.write('<td class="calTDHead"><a class="calHeadLink" href="javascript:opener.prevYear();">&nbsp;<<</a></td>');
	d.write('<td class="calTDHead"><a class="calHeadLink" href="javascript:opener.prevMonth();">&nbsp;<&nbsp;</a></td>');
	d.write('<td class="calTDHead" colspan="3" align="center">'+months[parseInt(selectedMonth)]+' '+selectedYear+'</td>');
	d.write('<td class="calTDHead"><a class="calHeadLink" href="javascript:opener.nextMonth();">&nbsp;>&nbsp;</a></td>');
	d.write('<td class="calTDHead"><a class="calHeadLink" href="javascript:opener.nextYear();">>>&nbsp;</a></td>');
	d.write('</tr><tr>');
	for (i=0;i<7;i++) {
		d.write('<td class="calTDDayHead" width="14%">'+days[i]+'</td>');
	}
	d.write('</tr><tr>');
	var nDays = getDaysForMonth(selectedMonth, selectedYear);
	var tempDate = new Date(selectedYear, selectedMonth, 1);
	var nFirstDay = tempDate.getDay();
	for (i=0;i<nFirstDay;i++) {
		sClass='calTDDay';
		if (i==0 || i==6) sClass='calTDWe';
		d.write('<td class="'+sClass+'" width="14%">&nbsp;</td>');
	}
	for (i=nFirstDay;i<7;i++) {
		sClass='calTDDay';
		if (i==0 || i==6) sClass='calTDWe';
		nD = (i-nFirstDay+1);
		sDate = nD+' '+months[parseInt(selectedMonth)]+' '+selectedYear;
		d.write('<td class="'+sClass+'" width="14%"><a class="calLink" href="javascript: opener.receiveDate(\''+sDate+'\');">'+nD+'</a></td>');
	}
	for (j=0;j<5;j++) {
		d.write('</tr><tr>');
		for (i=0;i<7;i++) {
			sClass='calTDDay';
			if (i==0 || i==6) sClass='calTDWe';
			nD = (((7*j)+i)+(8-nFirstDay));
			if (nD>nDays) break;
			sDate = nD+' '+months[parseInt(selectedMonth)]+' '+selectedYear;
			d.write('<td class="'+sClass+'" width="14%"><a class="calLink" href="javascript: opener.receiveDate(\''+sDate+'\');">'+nD+'</a></td>');
		}
		if (nD>nDays) break;
	}
	for (j=i;j<7;j++) {
		sClass='calTDDay';
		if (j==0 || j==6) sClass='calTDWe';
		d.write('<td class="'+sClass+'" width="14%">&nbsp;</td>');
	}
	d.write('</tr><tr>');
	d.write('<td colspan="7"><a class="calLink" href="javascript:close();">Close</a><td>');
	d.write('</tr>');
	d.write('</table></div></body></html>');
	d.close();
	bBuilding = false;
}
function showCalendar(thisDay, thisMonth, thisYear, returnControl, thisLeft, thisTop) {
var nLeft, nTop;
	if (returnControl==null || returnControl==undefined) {
		alert('No control to return selected date to.');
		return;
	}
	controlIn = returnControl;
	if (thisDay == "" || thisDay == null) {
		//selectedDay = currentDate.getDay();
	} else {
		selectedDay = parseInt(thisDay);
	}
	if (thisMonth == "" || thisMonth == null) {
		selectedMonth = currentDate.getMonth();
	} else {
		selectedMonth = parseInt(thisMonth)-1;
	}
	if (thisYear == "" || thisYear == null) {
		selectedYear = currentDate.getFullYear();
	} else {
		selectedYear = parseInt(thisYear);
	}
	
	if (thisLeft == "" || thisLeft == null) {
		nLeft = '200';
	} else {
		nLeft = thisLeft;
	}
	if (thisTop == "" || thisTop == null) {
		nTop = '200';
	} else {
		nTop = thisTop;
	}
	//alert('thisLeft: '+thisLeft+'\nnLeft: '+nLeft+'\nparseInt(thisLeft): '+parseInt(thisLeft));
	if (calendarWindow==null) {
		calendarWindow = window.open("", "Calendar", 
			"width=240,height=160,status=no,resizable=no,top="+nTop+",left="+nLeft);
		calendarWindow.opener = self;
	} else { 
		calendarWindow.focus();
	}

	buildCalendar();
}
