var calMonths		= new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
var calWeekDays		= new Array("SU","MO","TU","WE","TH","FR","SA");
var calMinYear, calMaxYear;
var calMonSelect, calYearSelect;
var calOverStatus	= false;
var gdCurDate		= new Date();
var calYear			= gdCurDate.getFullYear();
var calMonth		= gdCurDate.getMonth() + 1;
var calDay			= gdCurDate.getDate();
var calTodayYear	= calYear;
var calTodayMonth	= calMonth;
var calTodayDay		= calDay;
var calToggle;
var calChoose		= false;
var calTextBox		= new Object;
var calHolder, calSubHolder;

function calSetDate(year, month, day)
{
	calChoose = true;
	calTextBox.value = month + "/" + day + "/" + year;
	calTextBox.title = calMonths[month-1] + " " + day + ", " + year;
	calOverStatus = false;
	calHide();
  //document.forms[0].submit();
}

function calOnMouseDown(obj)
{
	var year	= parseInt(calSelYear.value);
	var month	= parseInt(calSelMonth.value);
	var date	= parseInt(obj.firstChild.innerHTML);
	var monthOffset	= 0;
	if (obj.className.indexOf("calDayOtherMonth") == 0)
		monthOffset = (date > 15) ? -1 : 1;
	month += monthOffset;
	if (month < 1) { year--; month = 12; }
	else
	if (month > 12) { year++; month = 1; }
	calSetDate(year, month, date);
}

function calRedraw(year, month) 
{
	var iDayOfFirst		= new Date(year, month-1, 1).getDay();
	var iDaysInMonth	= new Date(year, month  , 0).getDate();
	var iDaysInPrevMonth= new Date(year, month-1, 0).getDate();
	var iDate = 1 - iDayOfFirst;
	var st = "<table id='calTable' class='calTable' cellspacing='1'><tr class='calWeeks'>";
	for (i = 0; i < calWeekDays.length; i++)
		st += "<td>" + calWeekDays[i] + "</td>";
	st += "</tr>";
	for (w = 0; iDate < iDaysInMonth; w++)
	{
		st += "<tr>";
		for (d = 0; d < 7; d++, iDate++) {
			var cssclass = (iDate < 1 || iDate > iDaysInMonth) ? "calDayOtherMonth" : ((d == 0 || d == 6) ? "calDayWeekEnd" : "calDay");
			if (year == calTodayYear && month == calTodayMonth && iDate == calTodayDay) 
				cssclass += " calDayToday";
			if (year == calYear && month == calMonth && iDate == calDay) 
				cssclass += " calDaySelected";
			st += "<td class='" + cssclass + "' onmousedown='calOnMouseDown(this);' onmouseover='calToggle = this.className; this.className += \" calDayOver\"' onmouseout='this.className = calToggle;'><a href='#'>";
			if (iDate < 1) st += iDate + iDaysInPrevMonth;
				else
					if (iDate > iDaysInMonth) st += iDate - iDaysInMonth;
						else
							st += iDate;
			st += "</a></td>";
		}
		st += "</tr>";
	}
	calSubHolder.innerHTML = st + "<tr><th colspan='7' style='border-top:solid 1px white;'><a href='' onclick='calSetDate(calTodayYear, calTodayMonth, calTodayDay); return false;' class='calToday'>Today: <b>"+calTodayDay+" "+calMonths[calTodayMonth-1]+" "+calTodayYear+"</b></a></th></tr></table>";
	var select = document.getElementsByTagName("SELECT");
	for(var i = 0; i < select.length; i++)
	{
		if ( calGetX(select[i]) > (calGetX(calHolder) + calHolder.offsetWidth) ||
			(calGetX(select[i]) + select[i].offsetWidth) < calGetX(calHolder)  || 
				calGetY(select[i]) > (calGetY(calHolder) + calHolder.offsetHeight) || 
			(calGetY(select[i]) + select[i].offsetHeight) < calGetY(calHolder))
			continue;
		else	
			select[i].style.visibility = "hidden";	
	}
	calHolder.style.visibility = calSelMonth.style.visibility = calSelYear.style.visibility = "visible";
}

function calSetYearMon(year, month)
{
	calSelMonth.options[month - 1].selected = true;
	if (year > calMaxYear)	year = calMaxYear;
	if (year < calMinYear)	year = calMinYear;
	calSelYear.options[year - calMinYear].selected = true;
	calRedraw(year, month);
}

function calChangeMonth(step)
{
	var month = parseInt(calSelMonth.value) + step;
	var year  = calSelYear.value;
	if (month < 1)	{ month = 12; year--; }
	else
	if (month > 12) { month = 1;  year++; }
	calSetYearMon(year, month);
}

function calChangeYear(step)
{
	var year  = parseInt(calSelYear.value) + step;
	calSetYearMon(year, calSelMonth.value);
}

function calGetX(obj)
{
	var x = 0;
	while(obj) {
		x += obj.offsetLeft;
		obj = obj.offsetParent;
	}
	return x;
}

function calGetY(obj)
{
	var y = 0;
	while(obj) {
		y += obj.offsetTop;
		obj = obj.offsetParent;
	}
	return y;
}

function calHide(e)
{
	var obj = (navigator.appName == "Netscape") ? e.target : event.srcElement;
	var overme = false;
	while (obj != null) {
		if (obj.id == "calHolder")
			overme = true;
		obj = obj.offsetParent;
	}
	if (overme && !calChoose) return;

	var select = document.getElementsByTagName("SELECT");
	for(var i = 0; i < select.length; i++)
	{
		if ( calGetX(select[i]) > (calHolder.style.left + calHolder.offsetWidth) ||
			(calGetX(select[i]) + select[i].offsetWidth) < calHolder.style.left  || 
				calGetY(select[i]) > (calHolder.style.top + calHolder.offsetHeight) || 
			(calGetY(select[i]) + select[i].offsetHeight) < calHolder.style.top)
			continue;
		else	
			select[i].style.visibility = "visible";	
	}
	if (calHolder.filters != null)
	{
		calHolder.filters[0].apply();
		calHolder.style.visibility = calSelMonth.style.visibility = calSelYear.style.visibility = "hidden";
		calHolder.filters[0].play();
	}
	else
		calHolder.style.visibility = calSelMonth.style.visibility = calSelYear.style.visibility = "hidden";
	setTimeout("document.onclick = calHolder.onmouseout = null;", 10);
	calChoose = false;
}

function calShow(textbox, MinYear, MaxYear)
{
	calMinYear	= MinYear;
	calMaxYear	= MaxYear
	calHolder	= document.getElementById("calHolder");
	calSubHolder= document.getElementById("calSubHolder");
	calHolder.style.visibility = "hidden";
		// fill selects
	calSelMonth	= document.getElementById("calMonSelect");
	calSelYear	= document.getElementById("calYearSelect");
	calSelMonth.options.length = calSelYear.options.length = 0;
	for (i = 0; i < 12; i++) {
		var option = document.createElement("option");
		option.value = i + 1;
		option.text = calMonths[i];
		calSelMonth.options.add(option);
	}
	for (i = calMinYear; i <= calMaxYear; i++) {
		var option = document.createElement("option");
		option.value = option.text = i;
		calSelYear.options.add(option);
	}
		// parse date from textbox
	calTextBox = parent.document.getElementById(textbox);
	var a = calTextBox.value.split(/[\\\/]/);
	a = [a[2], a[0], a[1]]; 
	var parse = new Date(Date.parse(a.join('/')));
	//var parse = new Date(calTextBox.value);
	if (!isNaN(parse) && parse != "NaN" && parse != "Invalid Date") {
		calMonth= parse.getMonth()+ 1;
		calDay 	= parse.getDate();
		calYear = parse.getFullYear();
	}
	else
	{
		parse = new Date();
	
	}
		// visibility calendar
	calHolder.style.left = calGetX(calTextBox) + 1;
	calHolder.style.top  = calGetY(calTextBox) + calTextBox.offsetHeight + 2;
	calSetYearMon(calYear, calMonth);
	calHolder.onmouseout = function() { if (!document.onclick) document.onclick = calHide;}
	setTimeout("document.onclick = calHide", 10);
}
document.write(
"<div id='calHolder' class='calHolder'>"+
	"<table class='calTable'><tr><td>"+
		"<img alt='prev year' title='prev year' onClick='calChangeYear(-1);' src='images/calarrowleftdouble.gif' class='calArrowDouble'>"+
		"<img alt='prev month' title='prev month' src='images/calarrowleft.gif' onClick='calChangeMonth(-1)' class='calArrow'>"+
		"<select id='calMonSelect' onChange='calRedraw(calSelYear.value, calSelMonth.value)' style='width:50;'></select>"+
		"<select id='calYearSelect' onChange='calRedraw(calSelYear.value, calSelMonth.value)' style='width:60;'></select>"+
		"<img alt='next month' title='next month' src='images/calarrowright.gif' onClick='calChangeMonth(+1)' class='calArrow'>"+
		"<img alt='prev month' title='prev month' onClick='calChangeYear(+1)' src='images/calarrowrightdouble.gif' class='calArrowDouble'>"+
	"</td></tr></table>"+
	"<div id='calSubHolder'></div>"+
"</div>");