function calendar(date)
 {
 if(date == null)
    date = new Date();

 day = date.getDate();
 month = date.getMonth();
 year = date.getFullYear();

 months = new Array('January',
		    'February',
		    'March',
		    'April',
		    'May',
		    'June',
		    'July',
		    'August',
		    'September',
		    'October',
		    'November',
		    'December');

 this_month = new Date(year, month, 1);
 next_month = new Date(year, month + 1, 1);

 //Find out when this month starts and ends.
 first_week_day = this_month.getDay();
 days_in_this_month = Math.floor((next_month.getTime() - this_month.getTime()) / (1000 * 60 * 60 * 24));

 calendar_html = '<table cellpadding="0" cellspacing="3" style="width: 165px;">';

 calendar_html += '<tr><td colspan="7" align="center">' +
		  months[month] + ' ' + year + '</td></tr><tr><td></td></tr>';
		
 calendar_html += '<tr align="center"><td >S</td><td>M</td><td>T</td><td>W</td><td>T</td><td>F</td><td>S</td></tr>';

 calendar_html += '<tr>';

 //Fill the first week of the month with the appropriate number of blanks.
 for(week_day = 0; week_day < first_week_day; week_day++)
    {
    calendar_html += '<td> </td>';
    }

 week_day = first_week_day;
 for(day_counter = 1; day_counter <= days_in_this_month; day_counter++)
    {
    week_day %= 7;

    if(week_day == 0)
       calendar_html += '</tr><tr>';

    //Do something different for the current day.
    if(day == day_counter)
       calendar_html += '<td align="center"><b><font color="#758CA9">' + day_counter + '</font></b></td>';
    else
       calendar_html += '<td align="center"> ' +
			day_counter + ' </td>';

    week_day++;
    }

 calendar_html += '</tr>';
 calendar_html += '</table>';

 //Display the calendar.
 document.write(calendar_html);

 }