var aDayNames = new Array(); aDayNames[0] = 'ma'; aDayNames[1] = 'di'; aDayNames[2] = 'wo'; aDayNames[3] = 'do'; aDayNames[4] = 'vr'; aDayNames[5] = 'za'; aDayNames[6] = 'zo'; var aMonthNames = new Array(); aMonthNames[0] = 'januari'; aMonthNames[1] = 'februari'; aMonthNames[2] = 'maart'; aMonthNames[3] = 'april'; aMonthNames[4] = 'mei'; aMonthNames[5] = 'juni'; aMonthNames[6] = 'juli'; aMonthNames[7] = 'augustus'; aMonthNames[8] = 'september'; aMonthNames[9] = 'october'; aMonthNames[10] = 'november'; aMonthNames[11] = 'december'; var calFullYear, calMonth; var calHours, calMinutes; var globalTimeoutId; var calHTML; var browserVer; var rederingCalendarHTML = 0; var validSelectedDate = false; var bMarkWeekend = true; // constants var cMonday = 0; var cTuesday = 1; var cWednesday = 2; var cThursday = 3; var cFriday = 4; var cSaturday = 5; var cSunday = 6; function buildCalendar(iFullYear, iMonth) { var aMonth = new Array(); aMonth[0] = new Array(7); aMonth[1] = new Array(7); aMonth[2] = new Array(7); aMonth[3] = new Array(7); aMonth[4] = new Array(7); aMonth[5] = new Array(7); var dCalDate = new Date(iFullYear, iMonth-1, 1); // Normally sunday is day 0. I want monday as 1st day of the week. var iDayOfFirst = (dCalDate.getDay()+6) % 7; var iDaysInMonth = fGetDaysInMonth(iFullYear, iMonth); var iDaysInPrevMonth = fGetDaysInMonth(iFullYear, iMonth-1); var w, d, calendarPos; // fill the calendar array for (w = 0; w < 6; w++) { for (d = 0; d < 7; d++) { calendarPos = 7*w + d; if (calendarPos < iDayOfFirst) { // days before this month aMonth[w][d] = iDaysInPrevMonth - (iDayOfFirst - calendarPos) + 1; } else if (calendarPos < iDaysInMonth + iDayOfFirst) { // days of this month aMonth[w][d] = calendarPos - iDayOfFirst + 1; } else { // days after this month aMonth[w][d] = calendarPos - iDaysInMonth - iDayOfFirst + 1; } } } return aMonth; } function buildWeekNrs(iFullYear, iMonth) { var aWeekNrs = new Array(6); var iWeekNr, startDateCorrection; // date objects used var dCalDate = new Date(iFullYear, iMonth-1, 1); var dFirstDayOfYearDate = new Date(iFullYear, 0, 1); // 1st jan. this-year var dFirstDayOfNextYearDate = new Date(iFullYear+1, 0, 1); // 1st jan. next-year var dWeekNrDate; var iFirstDayOfMonth = (dCalDate.getDay()+6) % 7; // 0=mo, 1=th, 2=we, ... var iFirstDayOfYear = (dFirstDayOfYearDate.getDay()+6) % 7; // 0=mo, 1=th, 2=we, ... var iFirstDayOfNextYear = (dFirstDayOfNextYearDate.getDay()+6) % 7; // 0=mo, 1=th, 2=we, ... if (iFirstDayOfYear > cThursday) startDateCorrection = 7-iFirstDayOfYear + 1; else startDateCorrection = -(iFirstDayOfYear) + 1; // set dWeekNrDate to the start of week 1 dWeekNrDate = new Date(iFullYear, 0, startDateCorrection); //alert('startDateCorrection : ' + startDateCorrection + '\nbegin -> Week 1 is : ' + dWeekNrDate); if (dCalDate < dWeekNrDate) { // last week of last year iWeekNr = 0; } else { iWeekNr = 1; dWeekNrDate = new Date(iFullYear, 0, 7 + startDateCorrection); while(dWeekNrDate <= dCalDate && iWeekNr < 54) { // set dWeekNrDate to the start of week 'iWeekNr' //alert('Week ' + iWeekNr + ' is : ' + dWeekNrDate); iWeekNr++; dWeekNrDate = new Date(iFullYear, 0, (iWeekNr*7) + startDateCorrection); } } delete dWeekNrDate; // if 1-jan == friday => week = 53 // if 1-jan == saturday => // if previous-year == leap-year => week = 53 // else => week = 52 // if 1-jan == sunday => week = 52 if (iWeekNr == 0) { if (iFirstDayOfYear == cFriday) aWeekNrs[0] = 53; else if (iFirstDayOfYear == cSunday) aWeekNrs[0] = 52; else if (iFirstDayOfYear == cSaturday) { if (fIsLeapyear(iFullYear-1)) aWeekNrs[0] = 53; else aWeekNrs[0] = 52; } // (should be no other possibility) } else { aWeekNrs[0] = iWeekNr; } aWeekNrs[1] = iWeekNr+1; aWeekNrs[2] = iWeekNr+2; aWeekNrs[3] = iWeekNr+3; if (iMonth == 12) { // month is december so check where week 1 starts if (iFirstDayOfMonth == cMonday) { aWeekNrs[4] = 1; aWeekNrs[5] = 2; } else { aWeekNrs[4] = iWeekNr+4; aWeekNrs[5] = 1; } } else { aWeekNrs[4] = iWeekNr+4; aWeekNrs[5] = iWeekNr+5; } return(aWeekNrs); } function HourClicked(iHour) { calHours = iHour; } function MinuteClicked(iMinute) { calMinutes = iMinute; } function fIsLeapyear(iFullYear) { if (iFullYear%4 == 0) { if (iFullYear%100 != 0 || iFullYear%400 == 0) { return true; } } return false; } function fGetDaysInMonth(iFullYear, iMonth) { var dPrevDate = new Date(iFullYear, iMonth, 0); return dPrevDate.getDate(); } function fDisplayMonthSelect(iMonth) { } function fDisplayYearSelect(iYear) { } function prevMonth() { if (calMonth != 1) { drawCalendar(calFullYear, calMonth-1); } else { drawCalendar(calFullYear-1, 12); } } function nextMonth() { if (calMonth != 12) { drawCalendar(calFullYear, calMonth+1); } else { drawCalendar(calFullYear+1, 1); } } function prevYear() { drawCalendar(calFullYear-1, calMonth); } function nextYear() { drawCalendar(calFullYear+1, calMonth); } function checkKey() { eCode = event.keyCode; switch (eCode) { // escape key -> close window case 27: {window.close(); break;} // left arrow -> Goto previous month case 37: {prevMonth(); break;} // right arrow -> Goto next month case 39: {nextMonth(); break;} // down arrow -> Goto today case 40: {drawCalendar(dToday.getFullYear(), dToday.getMonth()+1); break;} } return false; }