isIE = (document.all ? true : false);
isDOM = (document.getElementById ? true : false);
var months = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul","Aug", "Sep", "Oct", "Nov", "Dec");
var daysInMonth = new Array(31, 28, 31, 30, 31, 30, 31, 31,30, 31, 30, 31);
var displayMonth = new Date().getMonth();
var displayYear = new Date().getFullYear();
var displayDivName;
var displayElement;

function getDays(month, year) {
	if (1 == month)
		return ((0 == year % 4) && (0 != (year % 100))) ||
	(0 == year % 400) ? 29 : 28;
	else
		return daysInMonth[month];
	}
	
function getToday() {
	this.now = new Date();
	this.year = this.now.getFullYear();
	this.month = this.now.getMonth();
	this.day = this.now.getDate();
}
	today = new getToday();
	
function newCalendar(eltName,attachedElement) {
	if (attachedElement) {
	if (displayDivName && displayDivName != eltName) hideElement(displayDivName);
		displayElement = attachedElement;
}
	displayDivName = eltName;
	today = new getToday();
	var parseYear = parseInt(displayYear + '');
	var newCal = new Date(parseYear,displayMonth,1);
	var day = -1;
	var startDayOfWeek = newCal.getDay();
	if ((today.year == newCal.getFullYear()) &&
	(today.month == newCal.getMonth()))
{
	day = today.day;
}
	var intDaysInMonth =
		getDays(newCal.getMonth(), newCal.getFullYear());
	var daysGrid = makeDaysGrid(startDayOfWeek,day,intDaysInMonth,newCal,eltName)
	if (isIE) {
	var elt = document.all[eltName];
		elt.innerHTML = daysGrid;
	} else if (isDOM) {
	var elt = document.getElementById(eltName);
		elt.innerHTML = daysGrid;
	} else {
	var elt = document.layers[eltName].document;
		elt.open();
		elt.write(daysGrid);
		elt.close();
	}
}

function incMonth(delta,eltName) {
	displayMonth += delta;
	if (displayMonth >= 12) {
		displayMonth = 0;
		incYear(1,eltName);
	} else if (displayMonth <= -1) {
		displayMonth = 11;
		incYear(-1,eltName);
	} else {
		newCalendar(eltName);
	}
}

function incYear(delta,eltName) {
	displayYear = parseInt(displayYear + '') + delta;
	newCalendar(eltName);
}

function makeDaysGrid(startDay,day,intDaysInMonth,newCal,eltName) {
	var daysGrid;
	var month = newCal.getMonth();
	var year = newCal.getFullYear();
	var isThisYear = (year == new Date().getFullYear());
	var isThisMonth = (day > -1)
		daysGrid = '<table border=1 cellspacing=0 cellpadding=2 class="copy"><tr><td bgcolor=#ffffff nowrap>';
		daysGrid += '<font style="font: 12px Arial, Helvetica, sans-serif;">';
		daysGrid += '<a class="DefaultLinkColor" href="javascript:hideElement(\'' + eltName + '\'); if (typeof(showHeavyObjects) != \'undefined\') showHeavyObjects();">exit</a>';
		daysGrid += '&nbsp;&nbsp;&nbsp;&nbsp;';
		daysGrid += '<a class="DefaultLinkColor" href="javascript:incMonth(-1,\'' + eltName + '\')" style="font-size:16px;">&laquo; </a>';
	if (isThisMonth) 
	{ 
		daysGrid += '<font style="font: 12px Arial, Helvetica, sans-serif; color:red; font-weight: bold;">' + months[month] + '</font>'; 
	}
	else 
	{ daysGrid += months[month]; }
		daysGrid += '<a class="DefaultLinkColor" href="javascript:incMonth(1,\'' + eltName + '\')" style="font-size:16px;"> &raquo;</a>';
		daysGrid += '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
		daysGrid += '<a class="DefaultLinkColor" href="javascript:incYear(-1,\'' + eltName + '\')" style="font-size:16px;">&laquo; </a>';
	if (isThisYear) 
	{ 
		daysGrid += '<font style="font: 12px Arial, Helvetica, sans-serif; color:red; font-weight: bold;">' + year + '</font>'; 
	}
	else 
	{ daysGrid += ''+year; }
		daysGrid += '<a class="DefaultLinkColor" href="javascript:incYear(1,\'' + eltName + '\')" style="font-size:16px;"> &raquo;</a><br>';
		daysGrid += '<span style="color: red;">&nbsp;Su&nbsp;&nbsp; Mo&nbsp;&nbsp; Tu&nbsp;&nbsp; We&nbsp;&nbsp; Th&nbsp;&nbsp; Fr&nbsp;&nbsp; Sa&nbsp;<br>&nbsp;</span>';
	var dayOfMonthOfFirstSunday = (7 - startDay + 1);
	for (var intWeek = 0; intWeek < 6; intWeek++) {
		var dayOfMonth;
		for (var intDay = 0; intDay < 7; intDay++) {
			dayOfMonth = (intWeek * 7) + intDay + dayOfMonthOfFirstSunday - 7;
		if (dayOfMonth <= 0) 
		{
			daysGrid += "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ";
		} 
		else if (dayOfMonth <= intDaysInMonth) 
		{
			var color = "666666";
			if (day > 0 && day == dayOfMonth) color="red";
				daysGrid += '<a class="DefaultLinkColor" href="javascript:setDay(';
				daysGrid += dayOfMonth + ',\'' + eltName + '\'); if (typeof(showHeavyObjects) != \'undefined\') showHeavyObjects();" '
				daysGrid += 'style="padding:0 4px 0 3px;color:' + color + '">';
			var dayString = dayOfMonth + "</a> ";
			if (dayString.length == 6) dayString = '0' + dayString;
				daysGrid += dayString;
		}
	}
	if (dayOfMonth < intDaysInMonth) daysGrid += "<br>&nbsp;";
	}
	return daysGrid + "</td></tr></table>";
}

function setDay(day,eltName) {
	var vDD = (day.toString().length < 2) ? "0" + day : day;
		thisMonth = displayMonth + 1;
	var vMM = (thisMonth.toString().length < 2) ? "0" + thisMonth : thisMonth;
		displayElement.value = vDD + "/" + vMM + "/" + displayYear;
		do_mandatoryFieldFocus(displayElement);
		hideElement(eltName);
}
