//set up map from 0-11 and Month
var monthsMap = new Array('January','February','March','April','May','June','July','August','September','October','November','December');
var today = new Date();
var currentDate = today.getDate();
var calStr = "";
var inputField = "";

function changeMonth(month) {
	today.setMonth(month);
	drawCal();
}

function changeYear(year) {
	today.setYear(year);
	drawCal();
}

function hilite(td) {
	td.style.backgroundColor = '#ffffcc';
}
function unhilite(td) {
	td.style.backgroundColor = '#ffffff';
}

function drawCal(existingDate) {
	var existDate = new Date();
	if(existingDate) {
		today = new Date(Date.parse(existingDate));
	}
	//clear out the current cal string
	calStr = "";
	currentDate = today.getDate();
	var currentMonth = today.getMonth();
	var currentYear = today.getFullYear();
	//set date to first of month so we can create calendar correctly
	today.setDate(1);
	var dayOfWeek = today.getDay();
	var header = "<table cellpadding='0' cellspacing='0' width='100%'><tr><td class='arial8pt'><b><a href='javascript:changeMonth(" + (currentMonth - 1) + ")'><b>&lt;&lt;</a>" + monthsMap[today.getMonth()] + "<a href='javascript:changeMonth(" + (currentMonth + 1) + ")'><b>&gt;&gt;</a></b></td><td align='right' class='arial8pt'><a href='javascript:changeYear(" + (currentYear - 1) + ")'><b>&lt;&lt;</a>" + today.getFullYear() + "<a href='javascript:changeYear(" + (currentYear + 1) + ")'><b>&gt;&gt;</a></b></td></tr></table>";
	calStr += "<table cellpadding='4' cellspacing='0' class='border'><tr>";
	calStr += "<td colspan='7' bgcolor='#ffffcc'>" + header + "</td></tr>";
	calStr += "<tr style='border-bottom:thin solid black;' class='arial8pt'><td align='center'>Su</td><td align='center'>M</td><td align='center'>T</td><td align='center'>W</td><td align='center'>Th</td><td align='center'>F</td><td align='center'>Sa</td></tr><tr>";
	//create days of week from previous month, before first day of current month
	for(i=0;i<dayOfWeek;i++) {
		calStr += "<td>&nbsp;</td>";
	}
	//create days of month
	for(i=1;i<32;i++) {
		today.setDate(i);
		dayOfWeek = today.getDay();
		if(currentMonth == today.getMonth()) { 
			var bgcolor = '#ffffff';
			var hiLite = "onmouseover='hilite(this)' onmouseout='unhilite(this)'";
			if(currentDate == i) {
				bgcolor = '#ffffcc';
				hiLite = "";
			}
			calStr += "<td " + hiLite + " class='arial8pt' style='border-bottom:1px solid #cccccc; border-right:1px solid #cccccc; border-left:1px solid #e8e8e8; border-top:1px solid #e8e8e8;' onclick='getDate(" + currentMonth + "," + i + "," + currentYear + ")' class='arial8pt' align='center' bgcolor='" + bgcolor + "'>" + i + "</td>";
			if(dayOfWeek == 6) {
				calStr += "</tr><tr>";
			}
		}
	}
	newDate = today;
	newDate = today.setMonth(currentMonth);
	today.setDate(currentDate);
	draw();
}

function draw() {
	var div = document.getElementById("cal");
	div.innerHTML = calStr;
}

function getDate(month, date, year) {
	var textField = eval(inputField);
	if(String(date).length < 2) {
		date = "0" + date;
	}
	month = Number(month) + 1;
	if(String(month).length < 2) {
		month = "0" + month;
	}
	textField.value = month + "/" + date + "/" + year;
	var div = document.getElementById("cal");
	div.style.visibility = 'hidden';
	div.style.left = 0;
	div.style.top = 0;
}

function drawCalWin(event, inputTag, existingDate) {
	inputField = inputTag;
	drawCal(existingDate);
	var div = document.getElementById("cal");
	var parent = div.parentNode;
	var parentLeft =  parseInt(parent.style.left);
	var parentTop = parseInt(parent.style.top);
	var scrollLeft = 0;
	var scrollTop = 0;
	var scrollLeftI = document.body.scrollLeft;
	var scrollTopI = document.body.scrollTop;
	var scrollLeftN = window.pageXOffset;
	var scrollTopN = window.pageYOffset;
	if(!parentLeft) {
		parentLeft = 0
	}
	if(!parentTop) {
		parentTop = 0
	}
	if(scrollLeftI) {
		scrollLeft = scrollLeftI;
	}
	if(scrollTopI) {
		scrollTop = scrollTopI;
	}
	if(scrollLeftN) {
		scrollLeft = scrollLeftN;
	}
	if(scrollTopN) {
		scrollTop = scrollTopN;
	}
	div.style.visibility = 'visible';
	div.style.left = event.clientX + scrollLeft - parentLeft;
	div.style.top = event.clientY + scrollTop - 10 - parentTop;	
}