/************************************************************************
GLOBAL VARIABLES FOR FORMATTING FONTS AND TEXT
************************************************************************/

/***********************
COLORS
***********************/
var DATE_HIGHLIGHT_BACKGROUND	= '#DEDEFF';
var DATE_HIGHLIGHT_COLOR		= '#555555';
var DATE_HIGHLIGHT_BORDER_COLOR	= '#CCCCCC';
var DAY_OF_WEEK_COLOR			= '#555555';
var HIGHLIGHT_DAY_OF_WEEK		= '#555555';
var DATE_COLOR					= '#555555';
var MONTH_COLOR					= '#555555';
var YEAR_COLOR					= '#555555';
var MONTH_YEAR_BACKGROUND		= '#EEEEEE';
var CALENDAR_BORDER_COLOR		= '#CCCCCC';
var CALENDAR_BACKGROUND			= '#FFFFFF';

/***********************
FONTS
***********************/
var DATE_HIGHLIGHT_FONT			= 'Tahoma';
var DAY_OF_WEEK_FONT			= 'Tahoma';
var HIGHLIGHT_DAY_OF_WEEK_FONT	= 'Tahoma';
var DATE_FONT					= 'Tahoma';
var MONTH_FONT					= 'Tahoma';
var YEAR_FONT					= 'Tahoma';

/***********************
FONT SIZES
***********************/
var DATE_HIGHLIGHT_SIZE			= 1;
var DATE_HIGHLIGHT_BORDER_SIZE	= 1;
var DATE_SIZE					= 1;
var DAY_OF_WEEK_SIZE			= 1;
var HIGHLIGHT_DAY_OF_WEEK_SIZE	= 1;
var MONTH_SIZE					= 1;
var YEAR_SIZE					= 1;
var CALENDAR_BORDER_SIZE		= 1;

/*******************************
SET ARRAYS
*******************************/
var day_of_week = new Array('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
var month_of_year = new 
Array('January','February','March','April','May','June','July','August','September','October','November','December');

/********************************
DECLARE AND INITIALIZE VARIABLES
********************************/

function drawCalendar(month, year, functionOnClick) {
	var Calendar = new Date();
	var today = Calendar.getDate();			// Returns day (1-31)
	var weekday = Calendar.getDay();		// Returns day (1-31)
	var currMonth = Calendar.getMonth();
	var currYear = Calendar.getFullYear();
	var DAYS_OF_WEEK = 7;					// "constant" for number of days in a week
	var DAYS_OF_MONTH = 31;					// "constant" for number of days in a month
	var cal = '';							// Used for printing

	var TR_start = '<tr>';
	var TR_end = '</tr>';
	var highlight_start = '<td width="30"><table cellspacing=0 border="' + DATE_HIGHLIGHT_BORDER_SIZE + 
						  '" bgcolor="'+ DATE_HIGHLIGHT_BACKGROUND + 
						  '" bordercolor="' + DATE_HIGHLIGHT_BORDER_COLOR + '"><TR><td width="20"><B><center>';
	var highlight_end   = '</center></td></tr></table></b>';
	var TD_start = '<td width="30" background="' + CALENDAR_BACKGROUND + '"><center>';
	var TD_end = '</center></TD>';

	Calendar.setDate(1);
	Calendar.setMonth(month);
	Calendar.setYear(year);

	cal += '<table cellspacing="0" cellpadding="0" style="border-width:' + CALENDAR_BORDER_SIZE + 'px;border-style:solid;border-color:' + CALENDAR_BORDER_COLOR + '"><TR><td>';
	cal += '<table border="0" cellspacing="0" cellpadding="2" bgcolor="' + CALENDAR_BACKGROUND + '">' + TR_start;
	cal += '<td colspan="' + DAYS_OF_WEEK + '" bgcolor="' + MONTH_YEAR_BACKGROUND + '"><center><b>';
	cal += '<font color="' + MONTH_COLOR + '" face="' + MONTH_FONT + '" size="' + MONTH_SIZE + '">' + month_of_year[month]  + ' </font>' +
		   '&nbsp;&nbsp;' +
		   '<font color="' + YEAR_COLOR + '" face="' + YEAR_FONT + '" size="' + YEAR_SIZE + '">' + year + '</B></font>' + TD_end + TR_end;
	cal += TR_start;

	for (index=0;index< DAYS_OF_WEEK;index++) {
		// BOLD TODAY'S DAY OF WEEK
		if (weekday == index && month == currMonth && year == currYear) {
			cal += TD_start + '<B><font color="' + HIGHLIGHT_DAY_OF_WEEK + '" face="' + HIGHLIGHT_DAY_OF_WEEK_FONT + '" size="' + HIGHLIGHT_DAY_OF_WEEK_SIZE + '">' + day_of_week[index] + '</font></B>' + TD_end;
		}
		// PRINTS DAY
		else {
			cal += TD_start + '<font color="' + DAY_OF_WEEK_COLOR + '" face="' + DAY_OF_WEEK_FONT + '" size="' + DAY_OF_WEEK_SIZE + '">' + day_of_week[index] + '</font>' + TD_end;
		}
	}

	cal += TD_end + TR_end;
	cal += TR_start;

	// FILL IN BLANK GAPS UNTIL TODAY'S DAY
	for (index=0;index<Calendar.getDay();index++) cal += TD_start + '&nbsp; ' + TD_end;

	// LOOPS FOR EACH DAY IN CALENDAR
	for (index=0;index<DAYS_OF_MONTH;index++) {
		if ( Calendar.getDate() > index ) {
			// RETURNS THE NEXT DAY TO PRINT
			week_day =Calendar.getDay();
			// START NEW ROW FOR FIRST DAY OF WEEK
			if (week_day == 0) cal += TR_start;

			if (week_day != DAYS_OF_WEEK) {
				// SET VARIABLE INSIDE LOOP FOR INCREMENTING PURPOSES
				var day  = Calendar.getDate();
				// HIGHLIGHT TODAY'S DATE
				if (today == Calendar.getDate() && month == currMonth && year == currYear) {
					//cal += highlight_start + '<a href="JavaScript:alert(\''+(index+1)+'/'+(month+1)+'/'+year+'\');"><font color="' + DATE_HIGHLIGHT_COLOR + '" face="'+ DATE_HIGHLIGHT_FONT +'" size="'+ DATE_HIGHLIGHT_SIZE +'">' + day + '</font></a>' + highlight_end + TD_end;
					cal += highlight_start + '<font color="' + DATE_HIGHLIGHT_COLOR + '" face="'+ DATE_HIGHLIGHT_FONT +'" size="'+ DATE_HIGHLIGHT_SIZE +'">' + day + '</font>' + highlight_end + TD_end;
				}
				// PRINTS DAY
				else {
					cal += TD_start + '<a href="JavaScript:drawCalendar_Onclick(\''+(index+1)+'/'+(month+1)+'/'+year+'\', \'' + functionOnClick + '\');"><font color="' + DATE_COLOR + '" face="'+ DATE_FONT +'" size="'+ DATE_SIZE +'">' + day + '</font></a>' + TD_end;
					//cal += TD_start + '<font color="' + DATE_COLOR + '" face="'+ DATE_FONT +'" size="'+ DATE_SIZE +'">' + day + '</font>' + TD_end;
				}
			}

			// END ROW FOR LAST DAY OF WEEK
			if (week_day == DAYS_OF_WEEK) cal += TR_end;
		}

		// INCREMENTS UNTIL END OF THE MONTH
		Calendar.setDate(Calendar.getDate()+1);
	}

	cal += '</td></tr></table></table>';

	return cal;
}

function drawCalendar_Onclick(strDate, strFunctionName) {
	if (strFunctionName != 'undefined') {
		eval(strFunctionName + '(\'' + strDate + '\');');
	}
}