var __year;      // Returns year
var __month;     // Returns month (0-11)
var __today;     // Returns day (1-31)
var __weekday;   // Returns day (0-6)
var __Calendar;

//http://javascript.internet.com/calendars/basic-calendar.html
function displayCalendar(offSetInMonths, eventDay, urls) {
    if ( (urls==null) || (urls.length != eventDay.length))
	return;
    if (offSetInMonths == null)
        offSetInMonths =0;
    initVariables(offSetInMonths);

    //var month_of_year = new Array('January','February','March','April','May','June','July','August','September','October','November','December');
    var month_of_year = new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');

    document.writeln ('<center><TABLE Border=1 CELLSPACING=0 CELLPADDING=0 ><TR>');
    document.writeln ('<TD colspan=7 BGCOLOR="DeepSkyBlue"><center><B>' + month_of_year[__month]  + ' ' + __year + '</B></center></TD></TR>');
    // LOOPS FOR EACH DAY OF WEEK

    __print_days_of_week(0==offSetInMonths);
    fillInBlankGapsUntilTodaysDay();

    var eventIndx = 0;
    while ((eventDay != null) && (eventIndx < eventDay.length) && (__Calendar.getTime() > eventDay[eventIndx].getTime()))
  	  eventIndx++;
    // LOOPS FOR EACH DAY IN CALENDAR
    for(index=0; __Calendar.getDate() > index; index++)
    {
        // RETURNS THE NEXT DAY TO PRINT
        week_day =__Calendar.getDay();

        // START NEW ROW FOR FIRST DAY OF WEEK
        if (week_day == 1)
        {
            //RS if ( ((__Calendar.getDate()+6) % 14) > 7 )
            //RS     document.writeln ('<TR bgcolor="SkyBlue">');
            //RS else
                document.writeln ('<TR>');
        }

        if( (eventDay != null) 
				&& (eventDay.length > eventIndx) 
				&& (eventDay[eventIndx].getFullYear() == __Calendar.getFullYear()) 
				&& (eventDay[eventIndx].getMonth() == __Calendar.getMonth())  
				&& (eventDay[eventIndx].getDate() == __Calendar.getDate()) )
        {
            printEventDays (0==offSetInMonths, urls[eventIndx]);
            eventIndx++;
        }
        else
            printDay (0==offSetInMonths);
	

        // END ROW FOR LAST DAY OF WEEK
        if(week_day == 0)
            document.writeln ('</TR>');

        // INCREMENTS UNTIL END OF THE MONTH
        __Calendar.setDate(__Calendar.getDate()+1);

    }// end for loop
    document.writeln ('</TR></TABLE></center>');
}



function __print_days_of_week (blnThisMonth)
{
    document.writeln ('<TR>');
    var day_of_week = new Array('Mon','Tue','Wed','Thu','Fri','Sat','Sun');
    var index;
   for(index=0; index < 7; index++)
    {
        //RS if((index) % 2)
        //RS     document.write ('<TD bgcolor="DeepSkyBlue">');
        //RS else
            document.write ('<TD >');
       document.writeln ('<center><font size="-5">');
        // BOLD TODAY'S DAY OF WEEK
        if (((__weekday-1) == index)  && (blnThisMonth) )
            document.writeln ('<B>' + day_of_week[index] + '</B>');
        else
            document.writeln (day_of_week[index]);
       document.writeln ('</font></center></TD>');
    }
    document.writeln ('</TR>');
}



function     initVariables (offSetInMonths)
{
    __Calendar = new Date();
    __year = __Calendar.getFullYear();      // Returns year
    __month = __Calendar.getMonth() + offSetInMonths;    // Returns month (0-11)
    __today = __Calendar.getDate();    // Returns day (1-31)
    __weekday = __Calendar.getDay();    // Returns day (0-6)

    __Calendar = new Date(0);
    __Calendar.setYear(2000);
    __Calendar.setDate(1);    // Start the calendar day at '1'
    if (__month > 11)
    {
       __year = Math.floor(__month/12) + __year;
       __month = __month%12;
    }
    __Calendar.setYear( __year);
    __Calendar.setMonth( __month );
    __Calendar.setHours(0);
    __Calendar.setMinutes(0);

    if (__weekday ==0)
        __weekday = 7;
}




function     fillInBlankGapsUntilTodaysDay()
{
    if (1 != __Calendar.getDay())
    {
        document.writeln ('<TR>');
        for(index=1; index < (__Calendar.getDay()?__Calendar.getDay():7); index++)
        {
            //RS if((index) % 2)
		    document.writeln ('<TD>' + '</TD>');
            //RS else
		    //RS document.writeln ('<TD bgcolor="DeepSkyBlue">' + '</TD>');
        }
    }
}



function printEventDays(blnThisMonth, url)
{

    document.writeln ('<TD  style="text-align:center;color=Navy" BGCOLOR="Crimson">');
    if( (__today==__Calendar.getDate() ) && blnThisMonth )
      document.writeln ('<center><font size="+2">');
    else
      document.writeln ('<center><font size="-5">');
    if( blnThisMonth && (__today==__Calendar.getDate()) )
	document.writeln ('<b>');
    document.writeln ('<a href="' + url + '" target="_blank">' + __Calendar.getDate() + '</a>');
    if( blnThisMonth && (__today==__Calendar.getDate()) )
        document.writeln ('</b>');
       document.writeln ('</font></center>');
    document.writeln ('</TD>');
}



function printDay(blnThisMonth)
{
    document.write ('<TD ');
    if( (__today==__Calendar.getDate() ) && blnThisMonth )
          document.write (' bgcolor="Purple"')
    else if ( ((__Calendar.getDate() - __Calendar.getDay()+6) % 14) < 7 )
    {
        //RS if ( ((__Calendar.getDay() % 2) == 0 ) && (__Calendar.getDay() !=0) )
        //RS     document.write (' bgcolor="DeepSkyBlue"');
    }
    document.write ('>');
    document.writeln ('<center><font color="Navy" size="-5">');
    if( (__today==__Calendar.getDate() ) && blnThisMonth )
        document.write ('<font color="Yellow" size="+2"><b>');
    document.write (__Calendar.getDate());
    if( (__today==__Calendar.getDate() ) && blnThisMonth )
        document.write ('</font></b>');
    document.writeln ('</font></center></font>');
    document.writeln ('</TD>');
 }
