
isIE = (document.all ? true : false);
isDOM = (document.getElementById ? true : false);

// Initializing arrays
var months = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul",
"Aug", "Sep", "Oct", "Nov", "Dec", "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, 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) {
// Check for leap year when February is selected
if (1 == month)
return ((0 == year % 4) && (0 != (year % 100))) ||
(0 == year % 400) ? 29 : 28;
else
return daysInMonth[month];

}

function getToday() {
// Create today's date.
this.now = new Date();
this.year = this.now.getFullYear();
this.month = this.now.getMonth();
this.day = this.now.getDate();
}

// Start calendar with today
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 = 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><tr><td bgcolor=#ffffff nowrap>';
daysGrid += '<font face="courier new, courier" size=2>';
daysGrid += '&nbsp;&nbsp;';

if (isThisMonth) {daysGrid += '&nbsp;&nbsp;';}
else
{daysGrid += '<a href="javascript:incMonth(-1,\'' + eltName + '\')"><img src="arrow_lft.gif" border="0" valign="bottom"></a>';}

daysGrid += '<b>';
if (isThisMonth) { daysGrid += '<font color=#ffcc00>' + months[month] + '</font>'; }
else { daysGrid += months[month]; }
daysGrid += '</b>';

daysGrid += '&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;';
daysGrid += months[month+1]; 

daysGrid += '<a href="javascript:incMonth(1,\'' + eltName + '\')"><img src="arrow_rgt.gif" border="0" valign="bottom"></a>';
daysGrid += '&nbsp;&nbsp;&nbsp;';

daysGrid += '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="javascript:hideElement(\'' + eltName + '\')">x</a><br>';
daysGrid += '<b>&nbsp;S&nbsp; M&nbsp; T&nbsp; W&nbsp; T&nbsp; F&nbsp; S&nbsp;</b>&nbsp;&nbsp;&nbsp;<br>';


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; ";
} else if (dayOfMonth <= intDaysInMonth) {
var color = "#3366AA";
if (day > 0 && day == dayOfMonth) color="#ffcc00";

daysGrid += '<a href="javascript:setDay(';
daysGrid += dayOfMonth + ',\'' + eltName + '\')" '
daysGrid += 'style="color:' + color + '">';
var dayString = dayOfMonth + "</a> ";
if (dayString.length == 6) dayString = '0' + dayString;
daysGrid += dayString;
}
}


if (dayOfMonth < intDaysInMonth) daysGrid += "<br>&nbsp;";
}



daysGrid += '<br><br>' + months[month+1] + '<br>'; 

daysGrid += '<br><b>&nbsp;S&nbsp; M&nbsp; T&nbsp; W&nbsp; T&nbsp; F&nbsp; S&nbsp;</b><br>&nbsp;';


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; ";
} else if (dayOfMonth <= intDaysInMonth) {
var color = "#3366AA";
if (day > 0 && day == dayOfMonth) color="#ffcc00";

daysGrid += '<a href="javascript:setDay2(';
daysGrid += dayOfMonth + ',\'' + eltName + '\')" '
daysGrid += 'style="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) {
displayElement.value = day + "/" + months[displayMonth] + "/" + displayYear;
hideElement(eltName);
}

function setDay2(day,eltName) {
displayMonth = displayMonth + 2
displayMonth = ((displayMonth) == 13) ? 1 : displayMonth;
displayElement.value = day + "/" + months[displayMonth-1] + "/" + displayYear;
hideElement(eltName);
}