var calStartDOW = 0;
var holidays = new Array();
holidays["1 Jan 2000"] = true;
holidays["17 Jan 2000"] = true;
holidays["21 Feb 2000"] = true;
holidays["21 Apr 2000"] = true;
holidays["29 May 2000"] = true;
holidays["3 Jul 2000"] = true;
holidays["4 Jul 2000"] = true;
holidays["4 Sep 2000"] = true;
holidays["10 Nov 2000"] = true;
holidays["23 Nov 2000"] = true;
holidays["24 Nov 2000"] = true;
holidays["25 Dec 2000"] = true;
holidays["31 Dec 2000"] = true;
////////////////////////////////////////////////
// ABBREVIATED MONTH NAMES
// months[] is used internally for (among other things) compatibility with
// javascript Date.parse() methods. You should only have to change it if
// your language variable changes.
var months = new Array( "Jan","Feb","Mar", "Apr","May","Jun", "Jul","Aug","Sep","Oct", "Nov", "Dec");
///////////////////////////////////////////////
// Long month names
// longmonths is used for calendar titles. They don't have to be long,
// just whatever you would like to display
//
var longmonths = new Array( "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" );
var leapdays = new Array(31,29,31, 30,31,30, 31,31,30, 31,30,31);
var yeardays = new Array(31,28,31, 30,31,30, 31,31,30, 31,30,31);
////////////////////////////////////////////////
// the symbols to use at the top of the calendars
var dow = new Array("S","M","T","W","T","F","S");
// globalCalWidth is the default width for calendar tables
var globalCalWidth = "85%";
// colors
// changing colors here is a lot easier than slogging through the code
//
// actually, it would be better to do all this with classes and style sheets
// but we want to support some older browsers
var colorWhite = "#FFFFFF";
var colorDarkRed = "#800000";
var colorMedRed = "#B00000";
var colorLightGrey = "#E0E0E0";
var colorMedGray = "#808080";
var colorOffWhite = "#F8F8F8";
var colorDkBlue = "#0000E0";
// colors for various parts of the calendars
var holidayColor = colorMedRed; // fg color for weekends and holidays
var dowBGColor = colorLightGrey; // bg for days of week at top of calendar
var dowFGColor = colorDkBlue; // fg for days of week
var calHdrBGColor = colorMedGray; // bg for month and year
var calHdrFGColor = colorOffWhite; // fg for month and year
//////////////////////////////////////////////////////////////////
// a global date object to speed things up a little, since
// there are lots of places where we need today's date
var myDate = new Date();
////////////////////////////////////////////////////////////////
// thisMonth and thisYear are used as static vars for
// newCalendars() (for persistence between calls, which may
// or may not involve reloading the document)
//
// whether these are important or not depends on how you
// handle the PREVIOUS and NEXT buttons. If you reload the
// script from the server using GET, you won't use these variables.
//
// if you want to cahnge the target so that going backward or
// forward does not require a reload, then you will be setting these
// from the buttons, probably best done with a handler for onClick()
var thisMonth = myDate.getMonth();
var thisYear = myDate.getFullYear();
// Now, figure out the arguments the page was loaded with
// and what they mean
//
// you won't need the next four lines if you don't use GET for
// the PREVIOUS and NEXT features. Comment them out
// if that is the case
var URLargs = getURLArgs(true);
if (URLargs.year) { thisYear = parseInt(URLargs.year); }
if (URLargs.month) { thisMonth = (parseInt(URLargs.month)%12); }
if (URLargs.starton) { calStartDOW = (parseInt(URLargs.starton)%7); }
function isLeapYear( year ){
// is it leap year ? returns a boolean
return ( (0 == (year%4)) && ( (0 != (year%100)) || (0 == (year%400))));
// ie, if the year divides by 4, but not by 100 except when it divides by
// 400, it is leap year
}
function isHyperlinked(the_date)
{
var is_hyperlinked = 'No' ;
if (
( the_date == '2010-4-22' ) ||
( the_date == '2010-4-21' ) ||
( the_date == '2010-4-20' ) ||
( the_date == '2010-4-19' ) ||
( the_date == '2012-2-20' ) ||
( the_date == '2010-4-18' ) ||
( the_date == '2011-1-20' ) ||
( the_date == '2009-1-18' ) ||
( the_date == '2009-1-17' ) ||
( the_date == '2009-1-16' ) ||
( the_date == '2009-1-15' ) ||
( the_date == '2010-12-22' ) ||
( the_date == '2010-12-21' ) ||
( the_date == '2010-12-20' ) ||
( the_date == '2010-12-19' ) ||
( the_date == '2010-12-18' ) ||
( the_date == '2010-12-17' ) ||
( the_date == '2010-12-16' ) ||
( the_date == '2010-12-15' ) ||
( the_date == '2010-12-14' ) ||
( the_date == '2010-12-13' ) ||
( the_date == '2010-12-12' ) ||
( the_date == '2010-12-11' ) ||
( the_date == '2010-12-10' ) ||
( the_date == '2010-12-9' ) ||
( the_date == '2010-12-8' ) ||
( the_date == '2010-12-7' ) ||
( the_date == '2010-12-6' ) ||
( the_date == '2010-12-5' ) ||
( the_date == '2010-12-4' ) ||
( the_date == '2010-12-3' ) ||
( the_date == '2010-12-2' ) ||
( the_date == '2010-12-1' ) ||
( the_date == '2010-11-30' ) ||
( the_date == '2010-11-29' ) ||
( the_date == '2010-11-28' ) ||
( the_date == '2010-11-27' ) ||
( the_date == '2010-11-26' ) ||
( the_date == '2010-11-25' ) ||
( the_date == '2010-11-24' ) ||
( the_date == '2010-11-23' ) ||
( the_date == '2010-11-22' ) ||
( the_date == '2010-11-21' ) ||
( the_date == '2010-11-20' ) ||
( the_date == '2008-1-27' ) ||
( the_date == '2008-1-26' ) ||
( the_date == '2008-1-25' ) ||
( the_date == '2008-1-24' ) ||
( the_date == '2008-1-23' ) ||
( the_date == '2007-3-16' ) ||
( the_date == '2010-4-17' ) ||
( the_date == '2009-3-21' ) ||
( the_date == '2010-4-16' ) ||
( the_date == '2010-4-15' ) ||
( the_date == '2010-4-14' ) ||
( the_date == '2010-4-13' ) ||
( the_date == '2010-4-12' ) ||
( the_date == '2008-9-6' ) ||
( the_date == '2008-3-14' ) ||
( the_date == '2010-4-11' ) ||
( the_date == '2008-11-22' ) ||
( the_date == '2007-8-17' ) ||
( the_date == '2009-3-20' ) ||
( the_date == '2009-3-19' ) ||
( the_date == '2009-3-18' ) ||
( the_date == '2009-3-17' ) ||
( the_date == '2009-3-16' ) ||
( the_date == '2009-3-15' ) ||
( the_date == '2009-3-14' ) ||
( the_date == '2009-3-13' ) ||
( the_date == '2009-3-12' ) ||
( the_date == '2009-3-11' ) ||
( the_date == '2009-3-10' ) ||
( the_date == '2009-3-9' ) ||
( the_date == '2009-1-14' ) ||
( the_date == '2009-10-30' ) ||
( the_date == '2010-4-10' ) ||
( the_date == '2010-4-9' ) ||
( the_date == '2010-4-8' ) ||
( the_date == '2010-4-7' ) ||
( the_date == '2010-4-6' ) ||
( the_date == '2010-4-5' ) ||
( the_date == '2010-4-4' ) ||
( the_date == '2010-4-3' ) ||
( the_date == '2010-4-2' ) ||
( the_date == '2010-4-1' ) ||
( the_date == '2010-3-31' ) ||
( the_date == '2010-3-30' ) ||
( the_date == '2010-3-29' ) ||
( the_date == '2010-3-28' ) ||
( the_date == '2010-3-27' ) ||
( the_date == '2010-3-26' ) ||
( the_date == '2010-3-25' ) ||
( the_date == '2010-3-24' ) ||
( the_date == '2010-3-23' ) ||
( the_date == '2010-3-22' ) ||
( the_date == '2010-3-21' ) ||
( the_date == '2010-3-20' ) ||
( the_date == '2010-3-19' ) ||
( the_date == '2010-3-18' ) ||
( the_date == '2010-3-17' ) ||
( the_date == '2010-3-16' ) ||
( the_date == '2010-3-15' ) ||
( the_date == '2010-3-14' ) ||
( the_date == '2010-3-13' ) ||
( the_date == '2011-5-29' ) ||
( the_date == '2011-5-28' ) ||
( the_date == '2011-5-27' ) ||
( the_date == '2011-5-26' ) ||
( the_date == '2011-5-25' ) ||
( the_date == '2011-5-24' ) ||
( the_date == '2011-5-23' ) ||
( the_date == '2011-5-22' ) ||
( the_date == '2011-5-21' ) ||
( the_date == '2011-5-20' ) ||
( the_date == '2011-5-19' ) ||
( the_date == '2010-5-31' ) ||
( the_date == '2010-5-30' ) ||
( the_date == '2010-5-29' ) ||
( the_date == '2010-5-28' ) ||
( the_date == '2010-5-9' ) ||
( the_date == '2010-5-8' ) ||
( the_date == '2010-5-7' ) ||
( the_date == '2009-7-12' ) ||
( the_date == '2009-7-11' ) ||
( the_date == '2009-7-10' ) ||
( the_date == '2009-7-9' ) ||
( the_date == '2009-7-8' ) ||
( the_date == '2009-8-8' ) ||
( the_date == '2009-9-6' ) ||
( the_date == '2009-9-5' ) ||
( the_date == '2009-9-4' ) ||
( the_date == '2012-3-3' ) ||
( the_date == '2012-2-25' ) ||
( the_date == '2012-2-24' ) ||
( the_date == '2012-2-23' ) ||
( the_date == '2011-11-7' ) ||
( the_date == '2011-10-31' ) ||
( the_date == '2011-8-13' ) ||
( the_date == '2011-8-12' ) ||
( the_date == '2011-6-30' ) ||
( the_date == '2011-6-19' ) ||
( the_date == '2011-6-18' ) ||
( the_date == '2011-6-17' ) ||
( the_date == '2011-6-16' ) ||
( the_date == '2011-6-15' ) ||
( the_date == '2011-6-14' ) ||
( the_date == '2011-6-13' ) ||
( the_date == '2011-5-18' ) ||
( the_date == '2011-5-17' ) ||
( the_date == '2011-5-16' ) ||
( the_date == '2011-5-15' ) ||
( the_date == '2011-5-14' ) ||
( the_date == '2011-5-13' ) ||
( the_date == '2011-5-12' ) ||
( the_date == '2012-2-10' ) ||
( the_date == '2011-4-23' ) ||
( the_date == '2011-3-18' ) ||
( the_date == '2011-3-17' ) ||
( the_date == '2011-3-16' ) ||
( the_date == '2011-3-15' ) ||
( the_date == '2011-2-21' ) ||
( the_date == '2011-1-23' ) ||
( the_date == '2011-1-22' ) ||
( the_date == '2011-1-21' ) ||
( the_date == '2010-12-24' ) ||
( the_date == '2010-12-23' ) ||
( the_date == '2010-8-28' ) ||
( the_date == '2010-8-21' ) ||
( the_date == '2010-7-23' ) ||
( the_date == '2010-7-22' ) ||
( the_date == '2010-7-21' ) ||
( the_date == '2010-7-20' ) ||
( the_date == '2010-7-19' ) ||
( the_date == '2010-7-18' ) ||
( the_date == '2010-7-17' ) ||
( the_date == '2010-7-16' ) ||
( the_date == '2010-6-3' ) ||
( the_date == '2010-6-2' ) ||
( the_date == '2010-6-1' ) ||
( the_date == '2010-4-25' ) ||
( the_date == '2010-4-24' ) ||
( the_date == '2010-4-23' ) ||
( the_date == '2010-5-6' ) ||
( the_date == '2010-5-5' ) ||
( the_date == '2010-5-4' ) ||
( the_date == '2010-5-3' ) ||
( the_date == '2010-5-2' ) ||
( the_date == '2010-5-1' ) ||
( the_date == '2010-4-30' ) ||
( the_date == '2010-4-29' ) ||
( the_date == '2010-4-28' ) ||
( the_date == '2010-4-27' ) ||
( the_date == '2010-4-26' ) ||
( the_date == '2010-3-12' ) ||
( the_date == '2010-3-11' ) ||
( the_date == '2010-3-10' ) ||
( the_date == '2010-3-9' ) ||
( the_date == '2010-3-8' ) ||
( the_date == '2010-1-17' ) ||
( the_date == '2010-1-16' ) ||
( the_date == '2010-1-15' ) ||
( the_date == '2010-1-14' ) ||
( the_date == '2010-1-13' ) ||
( the_date == '2009-12-4' ) ||
( the_date == '2009-10-24' ) ||
( the_date == '2009-10-23' ) ||
( the_date == '2009-12-19' ) ||
( the_date == '2009-12-24' ) ||
( the_date == '2009-12-23' ) ||
( the_date == '2009-12-22' ) ||
( the_date == '2009-12-21' ) ||
( the_date == '2009-12-20' ) ||
( the_date == '2009-12-18' ) ||
( the_date == '2009-12-17' ) ||
( the_date == '2009-12-16' ) ||
( the_date == '2009-12-15' ) ||
( the_date == '2009-12-14' ) ||
( the_date == '2009-12-13' ) ||
( the_date == '2009-12-12' ) ||
( the_date == '2009-12-11' ) ||
( the_date == '2009-12-10' ) ||
( the_date == '2009-12-9' ) ||
( the_date == '2009-12-8' ) ||
( the_date == '2009-12-7' ) ||
( the_date == '2009-12-6' ) ||
( the_date == '2009-12-5' ) ||
( the_date == '2009-12-3' ) ||
( the_date == '2009-12-2' ) ||
( the_date == '2009-12-1' ) ||
( the_date == '2009-11-30' ) ||
( the_date == '2009-11-29' ) ||
( the_date == '2009-11-28' ) ||
( the_date == '2009-11-27' ) ||
( the_date == '2009-11-26' ) ||
( the_date == '2009-11-25' ) ||
( the_date == '2009-11-24' ) ||
( the_date == '2009-11-23' ) ||
( the_date == '2009-11-22' ) ||
( the_date == '2009-11-21' ) ||
( the_date == '2009-10-18' )
)
{
is_hyperlinked = 'Yes' ;
}
return is_hyperlinked ;
}
function isValidDayOfMonth( day, month, year)
{
// determines whether a day is valid
// (ie, prevents Feb 30 from being processed)
// ( not used but left here for other pages that use
// this calendar, like the time-off request form )
//
if (day <= 0) { return false; }
if (isLeapYear(year)) { return (day <= leapdays[month])}
return ( day <= yeardays[month]);
}
function canonicalDate(day, month, year)
{
// return the number of days since the Jan 0 2000 (ie, 1/1/2K returns 1, 31/12/1999 returns 0)
// for days before Jan 1 2000, returns negative numbers
var canonDate = 0;
// if the function had no arguments, use today's date;
var mday = myDate.getDate();
var mmon = myDate.getMonth();
var myr = myDate.getFullYear();
if( arguments.length > 0 ) { mday = arguments[0]; }
if( arguments.length > 1 ) { mmon = arguments[1]; }
if( arguments.length > 2 ) { myr = arguments[2]; }
if(myr >= 2000)
{ canonDate += mday;
while(mmon > 0) { canonDate += isLeapYear(myr) ? leapdays[mmon]: yeardays[mmon]; mmon--;}
while(myr > 2000){ canonDate += isLeapYear(myr) ? 366: 365; myr--; }
}
else
{ canonDate -= isLeapYear(myr) ? leapdays[mmon] - mday: yeardays[mmon] - mday;
while(mmon < 11) { mmon++; canonDate -= isLeapYear(myr) ? leapdays[mmon]: yeardays[mmon];}
while(myr < 1999){ myr++; canonDate -= isLeapYear(myr) ? 366: 365;}
}
return canonDate;
}
function dateDiff(firstDate, secondDate)
{
// returns the result in days of subtracting firstDate from secondDate. Result is
// negative if secondDate came before firstDate.
var days= ( canonicalDate(secondDate.getDate(), secondDate.getMonth(), secondDate.getFullYear()) -
canonicalDate(firstDate.getDate(), firstDate.getMonth(), firstDate.getFullYear()));
return days;
}
function shiftArray(myArray)
{
// since Array.shift() is missing or broken on some versions of MSIE
// we fake it here.
if(-1 != navigator.appVersion.indexOf("MSIE")) {
var myVal = myArray[0];
for(i=0; i<(myArray.length -1); i++)
{ myArray[i] = myArray[i+1];}
myArray.length = myArray.length -1;
return myVal; }
else return myArray.shift();
}
function isHoliday(year,mon,mday)
{
// it the date on the list?
// the format is a little sensitive, you
// have to make sure that 'mon' is
// something that Date.parse() can
// understand
var dStr = mday + " " + mon + " " + year;
if(holidays[dStr]) { return true; }
return false;
}
function isWeekend( year, mon, mday)
{
var mDate = new Date(mday + " " + mon + " " + year);
return ( ( 0 == mDate.getDay()) || ( 6 == mDate.getDay() ));
}
function calculateWorkDays( startDate, endDate)
{
// called with 2 Date Objects as arguments.
// calculates the number of workdays between two dates by adding up the
// number of days and subtracting weekends and holidays.
var myEndDate = canonicalDate(endDate.getDate(), endDate.getMonth(), endDate.getFullYear());
var counter = 0;
var mDay = startDate.getDate();
var mMonth = startDate.getMonth();
var mYear = startDate.getFullYear();
while (canonicalDate(mDay, mMonth, mYear) <= myEndDate)
{
if(! ( isHoliday(mYear,months[mMonth],mDay) || isWeekend(mYear,months[mMonth],mDay)) )
{ counter++; }
// increment the date
// are we at the end of a month ?
var omDay = mDay;
var omMonth = mMonth;
var omYear = mYear;
mDay = isLeapYear(mYear) ?
((mDay >= leapdays[mMonth]) ? 1 : mDay+1):
((mDay >= yeardays[mMonth]) ? 1 : mDay+1);
// do we need to increment the month ?
mMonth = (mDay == 1) ? (mMonth +1) % 12: mMonth;
// do we need to increment the year?
mYear = ( (mDay == 1) && (mMonth == 0)) ? mYear + 1: mYear;
// startDate = new Date(mDay, mMonth, mYear);
}
return counter;
}
function writeCalendar(target, myYear, myMonth, sday, eday)
{
// writes a calendar to target for myMonth myYear.
// sday and eday are optional values indicating the range of dates
// to be set in bold.
// get a new date for the first day of the month the user is looking at
var calDate = new Date( myYear, myMonth, 1, 0,0,0,0 );
// how many days are in the month ?
var mDays = isLeapYear(myYear) ? leapdays[myMonth]: yeardays[myMonth];
var i = 0;
// what day of the week does the month start on?
var wkDay = calDate.getDay();
var dateBgAtt = "";
var dateFontTag = "";
var fontCloseTag = "";
var boldTag = "";
var unBoldTag = "";
// if the function was called with the sday and eday arguments, then the
// caller wants a range of dates written in bold
var useBold = arguments.length >= 5 ? true: false;
// write the header for the calendar ( month and year )
target.write("
\n\n");
// set the background color in the TR tag
target.write("");
// set the FG color using a FONT tag, better would be style sheets
target.write(
"",
longmonths[myMonth],
" ","",
myYear,
" \n"
);
// write the abbreviations for days of the week into the top line of the calendar
target.write("");
for(i=0; i< 7; i++)
{ target.write("", dow[((i+calStartDOW)%7)],
" ");}
target.write(" \n");
// start the first line with blank spaces until we get to the first day of the month
target.write("");
for(i=0 ; i < ((7 - calStartDOW + wkDay)%7); i++)
{ target.write(" \; \; \; "); }
// since javascript doesn't do modulus on negative numbers,
// add 7 to anything that might be negative
var cmdate = i - ((7 - calStartDOW + wkDay)%7);
// write the weekdays
for( i=i; cmdate < mDays ; i++)
{
// what is the date ?
cmdate++;
// if we have reached the end of a week, start another one
if(0 == (i%7)){ target.write(" \n"); }
// if the date is a holiday or weekend, set it in color
if( (isHoliday(calDate.getFullYear(),months[calDate.getMonth()],cmdate))
|| (isWeekend(calDate.getFullYear(),months[calDate.getMonth()],cmdate)) )
{
dateBgAtt = "";
dateFontTag = "";
fontCloseTag = " "; }
else
{ dateBgAtt = "";
dateFontTag = "";
fontCloseTag = ""; }
// set the days off in bold
if( ( useBold ) && (cmdate >= sday) && (cmdate <= eday))
{ boldTag = "";
unBoldTag = " "; }
else {
boldTag = "";
unBoldTag = ""; }
myNewPimpMonth = myMonth + 1;
var date_to_pass = myYear + '-' + myNewPimpMonth + '-' + cmdate ;
var is_hyperlinked = isHyperlinked(date_to_pass);
if ( is_hyperlinked == 'Yes' )
{
target.write(" " , dateFontTag, boldTag, cmdate, unBoldTag, fontCloseTag, " ");
}
else
{
target.write(" " , dateFontTag, boldTag, cmdate, unBoldTag, fontCloseTag, " ");
}
}
while(0 != (i%7)) { target.write(" "); i++; }
target.write(" ");
target.write("
\n");
}
function drawCalendar( ourTarget, ourYear, ourMonth, startDay, endDay)
{
// serves as a wrapper for writeCalendar()
// if you want to do anything special, such as changing the colors,
// or opening a special window, you can do it here before calling writeCalendar().
// sday and eday are optional values indicating the range of dates
// to be set in bold.
// arguments:
// ourTarget - document to write to
// ourYear, ourMonth - integers, typically returned by Date.getMonth() and Date.getDate()
// startDay, endDay - optional start and end days for bolding
var myMonth = myDate.getMonth();
var myYear = myDate.getFullYear();
var target = document;
// strictly speaking, all the arguments are optional.
// if you only want this month's calendar, called drawCalendar() with no args.
if(arguments.length >= 1) { target = ourTarget; }
if(arguments.length >= 2) { myYear = ourYear; }
if(arguments.length >= 3) { myMonth = ourMonth; }
{ writeCalendar(target, myYear, myMonth, startDay, endDay); }
}
function getURLArgs(caseBool)
{
// gets the arguments the page was loaded with - that is,
// everything after the first '?'
// parameters:
// caseBool - set to true or positive integer to force lowercase
// for parameter values
//
// values are ALWAYS case sensitive
//
var casefree = ( (true == caseBool) || (caseBool >= 1)) ? true: false;
var args = new Object();
var query = location.search.substring(1);
// alert(query);
var pairs = query.split("&");
for(var i = 0; i< pairs.length; i++)
{
pairs[i]= unescape(pairs[i]);
var pos=pairs[i].indexOf('=');
if(-1 == pos) continue;
var argname;
if(true != casefree) { argname = pairs[i].substring(0,pos); }
else { argname = pairs[i].substring(0,pos).toLowerCase(); }
var value = pairs[i].substring(pos+1);
args[argname] = value;
}
return args;
}
function newCalendars(myear, mmonth)
{
// puts three calendars on the page from which it
// was called. (last month, this month, next month)
// Params
//
// when called with 2 arguments
// myear - the year for the center calendar
// mmonth - the month for the center calendar
var myMonth = thisMonth;
var myYear = thisYear;
if(arguments.length == 2) { myMonth = mmonth; myYear == myear; }
// it's surprising how many coders don't use modular arithmetic to
// do date and time. Javascript doesn't understand negative numbers in
// positive modulus, so we add 11 instead of subtracting 1.
var lastMonth = (myMonth + 11) % 12;
var lmYear = (myMonth == 0)? myYear -1: myYear;
var nextMonth = (myMonth +1)%12;
var nmYear = (myMonth == 11)? myYear + 1: myYear;
///////////////////////////////////////////////////////////////////////////
// WRITE CALENDAR #1
//
document.write("");
var isThisMonth = ((lastMonth == myDate.getMonth())&& (lmYear==myDate.getFullYear()));
drawCalendar(document, lmYear, lastMonth,
(isThisMonth ? myDate.getDate():0),
(isThisMonth ? myDate.getDate():0)
);
isThisMonth = ((myMonth == myDate.getMonth())&& (myYear==myDate.getFullYear()));
document.write(" \n");
///////////////////////////////////////////////////////////////////////////
// WRITE CALENDAR #2
//
drawCalendar(document, myYear, myMonth,
(isThisMonth? myDate.getDate():0),
(isThisMonth? myDate.getDate():0));
document.write(" \n");
///////////////////////////////////////////////////////////////////////////
// WRITE CALENDAR #3
//
isThisMonth = ((nextMonth == myDate.getMonth())&& (nmYear==myDate.getFullYear()));
drawCalendar(document, nmYear, nextMonth,
(isThisMonth ? myDate.getDate():0),
(isThisMonth ? myDate.getDate():0));
document.write("
\n");
//////////////////////////////////////////////////////////////////////////////
// write the NEXT and PREVIOUS buttons
//
// note that we create a form and use the document URL as the target,
// with the METHOD of GET.
//
// if we were writing the calendars into a separate window or frame,
// we wouldn't need to reload; we could just change the global values
// for thisYear, thisMonth, and calStartDOW, and refresh that window
// by calling newCalendars() with that window as target.
//
var docName = location.pathname;
var buttonString = " ";
document.write("");
}