I have a website with a date selection for notes and the date is not reflecting the leap year - is there something in the code I can change to reflect the leap year? After this month all the dates will be off by one if not. Thanks
<script language="JavaScript" type="text/javascript">
<!--
var months = new Array('January', 'February', 'March', 'April', 'May', 'June',
'July', 'August', 'September', 'October', 'November', 'December');
var monthDays = new Array(31, '', 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
// check url query
var pageQuery = (location.search) ? true : false;
var pageDate = (pageQuery) ? location.search : new Date();
var pageYear = (pageQuery) ? pageDate.substring(1,5) : pageDate.getFullYear();
var pageMonth = (pageQuery) ? pageDate.substring(6, : pageDate.getMonth();
// check for leap year
monthDays[1] = ((Number(pageYear)%4 == 0 && Number(pageYear)%100 == 0 ) || (Number(pageYear)%400 == 0)) ? 29 : 28;
if (Number(pageMonth) < 10) pageMonth = '0' + Number(pageMonth);
var pageDateDay = (pageQuery) ? pageDate.substring(9,10) : pageDate.getDate();
pageDateDay = ( Number(pageDateDay) < 10 ) ? '0' + Number(pageDateDay) : pageDateDay.toString();
if (pageDateDay == 0) pageDateDay = 1;
display_window_title: window.document.title = months[Number(pageMonth)] + ' ' + pageYear;
function monthDropDown() { // Populates month drop down with the months Array
var monthSelect = new String();
for (var i = 0; i < months.length; i++ ) {
monthSelect += '<option value="' + i + '"';
if (i == Number(pageMonth)) monthSelect += ' selected';
monthSelect += '>' + months[i] + '</option>\n';
}
document.write(monthSelect);
}
function yearArray() { // populate year array of length = 9 for yearDropDown()
var yearNum = Number(pageYear) - 4;
var year = new Array();
for ( var i=0; i<9; i++ ) {
year[i] = yearNum + i;
}
return year;
}
function yearDropDown() { // Populates drop down options for year
var years = yearArray();
var yearSelect = new String();
for ( i=0; i<years.length; i++ ) {
yearSelect += '<option value="' + years[i] + '" ';
if ( i == 4 ) yearSelect += 'selected';
yearSelect += '>' + years[i] + '</option>\n';
}
document.write(yearSelect);
}
function changeStyle(tag, funct, wkdy) { // MouseOver and MouseOut functions for day buttons
if ( funct == 'over' ) {
if ( wkdy == '1' ) {
tag.style.backgroundColor = '#FFFFFF';
tag.style.color = '#000000';
} else {
tag.style.backgroundColor = '#E2E2E2';
tag.style.color = '#CC0000';
}
tag.style.borderColor = '#000000';
tag.style.fontWeight = 'bold';
} else {
if ( wkdy == '1' ) {
tag.style.backgroundColor = '#F2F2F2';
tag.style.color = '#333333';
} else {
tag.style.backgroundColor = '#CCCCCC';
tag.style.color = '#CC0000';
}
tag.style.borderColor = '#666666';
tag.style.fontWeight = 'normal';
}
}
function monthCalendar() { // Populates month calendar with all days of the month
var cursor = ( navigator.appName == 'Netscape' ) ? 'pointer' : 'hand'; // Check which browser for cursor style
var monthString = new String(months[Number(pageMonth)]);
var dayTitles = new Array('S','M','T','W','T','F','S');
var days = monthDays[Number(pageMonth)];
var thisMonth = new Date(monthString + ' ' + '01' + ', ' + pageYear);
var firstDay = thisMonth.getDay();
var weekTr = new String();
pageMonth = Number(pageMonth) + 1;
var actualMonth = Number(pageMonth) - 1;
pageMonth = ( pageMonth < 10 ) ? '0' + pageMonth : pageMonth.toString();
var dayInc = 1;
var column = 0;
var weekTitleTr = new String();
var trs = 1;
var weekDayStyle = 'style="cursor:' + cursor + ';" onMouseOver="changeStyle(this,\'over\',\'1\');"' +
' onMouseOut="changeStyle(this,\'out\',\'1\');"';
var weekEndStyle = 'style="background-color: #CCCCCC; color: #CC0000; cursor:' + cursor +
';" onMouseOver="changeStyle(this,\'over\',\'0\');" ' +
'onMouseOut="changeStyle(this,\'out\',\'0\');"';
for ( i=0; i<dayTitles.length; i++ ) weekTitleTr += '<td width="34" class="dayTitles">' + dayTitles[i] + '</td>';
for ( i=0; i<firstDay; i++ ) weekTr += '<td width="34"> </td>';
for ( i=firstDay; i<7; i++ ) {
var dayIncValue = ( dayInc < 10 ) ? '0' + dayInc : dayInc.toString();
if ( i != 6 && i != 0 ) {
weekTr += '<td width="34"><input name="button" type="button" value="' + dayInc +
'" width="34" ' + weekDayStyle + ' onClick="javascript:opener.document.forms[0].DATE.value=\'' +
pageYear + '-' + pageMonth.toString() + '-' + dayIncValue + '\'; window.close();" ' +
'title="' + months[actualMonth] + ' ' + dayIncValue.toString() + ', ' + pageYear + '"></td>\n';
} else {
weekTr += '<td width="34"><input name="button" type="button" value="' + dayInc +
'" width="34" ' + weekEndStyle + ' onClick="javascript:opener.document.forms[0].DATE.value=\'' +
pageYear + '-' + pageMonth.toString() + '-' + dayIncValue + '\'; window.close();" ' +
'title="' + months[actualMonth] + ' ' + dayIncValue.toString() + ', ' + pageYear + '"></td>\n';
}
dayInc++;
}
for ( i=dayInc; i<(days+1); i++ ) {
dayIncValue = ( i < 10 ) ? '0' + i : i.toString();
if ( column == 0 || column == 7 ) {
weekTr += '</tr><tr><td width="34"><input name="button" type="button" value="' +
i + '" width="34" ' + weekEndStyle + ' onClick="javascript:opener.document.forms[0].DATE.value=\'' +
pageYear + '-' + pageMonth.toString() + '-' + dayIncValue + '\'; window.close();" ' +
'title="' + months[actualMonth] + ' ' + dayIncValue.toString() + ', ' + pageYear + '"></td>\n';
column = 0;
trs++;
} else if (column == 6) {
weekTr += '<td width="34"><input name="button" type="button" value="' + i +
'" width="34" ' + weekEndStyle + ' onClick="javascript:opener.document.forms[0].DATE.value=\'' +
pageYear + '-' + pageMonth.toString() + '-' + dayIncValue + '\'; window.close();" ' +
'title="' + months[actualMonth] + ' ' + dayIncValue.toString() + ', ' + pageYear + '"></td>\n';
} else {
weekTr += '<td width="34"><input name="button" type="button" value="' + i + '" width="34" ' +
weekDayStyle + ' onClick="javascript:opener.document.forms[0].DATE.value=\'' +
pageYear + '-' + pageMonth.toString() + '-' + dayIncValue + '\'; window.close();" ' +
'title="' + months[actualMonth] + ' ' + dayIncValue.toString() + ', ' + pageYear + '"></td>\n';
}
column++;
}
for ( i=column; i<7; i++ ) {
weekTr += '<td width="34"> </td>';
column++;
}
while ( trs < 6 ) {
weekTr += '</tr><tr>';
for ( i=0; i<7; i++ ) weekTr += '<td width="34" height="25"> </td>';
trs++;
}
document.write('<table width="238" border="1" borderColor="#CCCCCC" cellpadding="0" cellspacing="1" class="calTable">\n' +
'<tr align="center" valign="middle">\n' + weekTitleTr + '</tr>' +
'<tr align="center" valign="middle">\n' + weekTr + '</tr>\n</table>\n');
}
function calTitle() {
document.write(months[Number(pageMonth)] + ' ' + pageYear);
}
function change(funct, val) { // Changes month calendar w/OnChange of Month & Year drop downs
if ( funct == 'month' ) {
var monthVal = ( Number(val) < 10 ) ? '0' + Number(val) : val.toString();
window.location = 'dayPicker.html?' + pageYear.toString() + '-' +
monthVal + '-' + pageDateDay.toString();
} else if ( funct == 'year' ) {
var monthInt = Number(pageMonth) - 1;
monthInt = ( monthInt < 10 ) ? '0' + monthInt : monthInt.toString();
window.location = 'dayPicker.html?' + val.toString() + '-' +
monthInt.toString() + '-' + pageDateDay.toString();
}
}
-->
</script>
</head>
<body marginheight="0" marginwidth="0">
<table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0" class="tableBorder">
<td valign="top">
<form name="form">
<table width="238" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td align="center" nowrap class="calTitle">
<script language="JavaScript" type="text/JavaScript">
<!--
calTitle();
-->
</script></td>
<td align="right" nowrap class="calTitle"> <select name="month" onChange="change('month',document.form.month.options[document.form.month.selectedIndex].value);">
<script language="JavaScript" type="text/javascript">
<!--
monthDropDown();
-->
</script>
</select> <select name="year" onChange="change('year',document.form.year.options[document.form.year.selectedIndex].value);">
<script language="JavaScript" type="text/javascript">
<!--
yearDropDown();
-->
</script>
</select></td>
</tr>
<tr>
<td colspan="2" align="center">
<script language="JavaScript" type="text/javascript">
<!--
monthCalendar();
-->
</script></td>