
//  CALENDAR CONSTANTS
var cal;                 // Used for printing

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 DAYS_TO_SHOW = 21;   // constant for number of days to show in the calendar (3 weeks at a time)
var PROJECTION = 14;     // number of days for projection of last day shown

var day_of_week = new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
var month_of_year = new Array('January','February','March','April','May','June','July','August','September','October','November','December');

//  DECLARE AND INITIALIZE VARIABLES
var tmpCal = new Date();
var todaysDate = tmpCal.getDate();
var todaysMonth = tmpCal.getMonth();


var navlinkclass="calendarnav";

// figure date for 3 weeks from today (21 days)
//Calendar.setDate(Calendar.getDate() + 21);
//var threeWeeksDate = Calendar.getDate();
//var threeWeeksMonth = Calendar.getMonth();
//Calendar.setDate(Calendar.getDate() - 21);

function firstThreeWeeks() {
	var Calendar = new Date();
	var date = Calendar.getDate();
	var month = Calendar.getMonth();
	var year = Calendar.getYear();
	if (year < 1000) year += 1900; // needed for netscape
	
	drawCalendar(date, month, year, 0);
}

function lastThreeWeeks() {
	var Calendar = new Date();
	Calendar.setDate(Calendar.getDate() + 21);
	
	var date = Calendar.getDate();
	var month = Calendar.getMonth();
	var year = Calendar.getYear();
	if (year < 1000) year += 1900; // needed for netscape
		
	drawCalendar(date, month, year, 3);
}

function drawCalendar(dayParam, monthParam, yearParam, weekStart) {
	// set the calendar to the incoming parameters
	var Calendar = new Date(yearParam, monthParam, dayParam);
	
	// start calendar at beginning of this week
	Calendar.setDate(Calendar.getDate() - Calendar.getDay()); 
	
	// set the calendar title, spanning 2 months if necessary
	var beginningMonth = Calendar.getMonth();
	var CALENDAR_TITLE = month_of_year[beginningMonth];         // append first week's sunday's month to title
	
	var daysSetAhead = (6 - Calendar.getDay()) + PROJECTION;
	Calendar.setDate(Calendar.getDate() + (6 - Calendar.getDay()));  // project ahead to last day shown
	Calendar.setDate(Calendar.getDate() + PROJECTION);		
	if(Calendar.getMonth() != beginningMonth)                   // append next month to title
		CALENDAR_TITLE = CALENDAR_TITLE + "/" + month_of_year[Calendar.getMonth()];
	Calendar.setDate(Calendar.getDate() - daysSetAhead);	// return to starting point		 
	CALENDAR_TITLE = CALENDAR_TITLE + " Calendar";		// finish calendar title
	
	// BEGIN CODE FOR CALENDAR
	
	// div container
	cal = '<div class="toprow">';
	// title
	cal += '<table width="100%"><tr><td><h3>' + CALENDAR_TITLE + '</h3></td>';	
	// back/forth links - coming from host page, probably call back to server need [prevNextLink]
	cal += '<td align="right">';
	if(weekStart == 0) 
		cal += '<a class="'+navlinkclass+ '" href="javascript:lastThreeWeeks()">Next Three Weeks ></a>';
	else
		cal += '<a class="'+navlinkclass+ '" href="javascript:firstThreeWeeks()">< Previous Three Weeks</a>';
	cal += '</td></tr></table>';
	// end div
	cal += '</div><br clear="all">';	
	
	// open table for calendar
	cal +=  '<table cellpadding="1" cellspacing="0" border="0" width="99%" class="week">';
	
	// header row of calendar 
	cal += '<tr>';
	
	// first cell, before 'Sun' - customizeable link from host page [firstColumnLink]
	//NOTE: showWeekLinkColumn is set on the calendar page.
	if(showWeekLinkColumn==true){
		cal += '<td class="topleft">' + firstColumnLink + '</td>';
	}
	
	// loop for each day of the week - headers
	for(index=0; index < DAYS_OF_WEEK; index++)
		cal += '<td class="headday" valign="bottom">' + day_of_week[index] + '</td>';
	
	// end header row of table 
	cal += '</tr>';
	
	// loop for each day to show in the calendar
	var weekIndex = 1;
	for(index=0; index < DAYS_TO_SHOW; index++)
	{
		// get day to print
		week_day =Calendar.getDay();
	
		// start new row for first day of week
		if(week_day == 0) {
			// set the first cell of week - the links, host page needs vars [week1Links] [week2Links] [week3Links]
			var weekLinks = weekLinksArray[weekStart + (weekIndex - 1)];
			//if(weekIndex == 1) weekLinks = week1Links;
			//if(weekIndex == 2) weekLinks = week2Links;
			//if(weekIndex == 3) weekLinks = week3Links;
			
			// set which dayInfo array to use - host page needs vars [week1_dayInfo, week2_dayInfo, week3_dayInfo]
			var dayInfo = weekDayInfoArray[weekStart + (weekIndex - 1)];
			//if(weekIndex == 1) dayInfo = week1_dayInfo;
			//if(weekIndex == 2) dayInfo = week2_dayInfo;
			//if(weekIndex == 3) dayInfo = week3_dayInfo;
			
			cal += '<tr>';
			//NOTE: showWeekLinkColumn is set on the calendar page.
			if(showWeekLinkColumn==true){
				cal += '<td class="weeklinks" valign="top"><span class="weekly">Weekly Items</span>' + 
					weekLinks + '</td>';
			}
				
			// increment week index
			weekIndex++;
		}
	
		// for each day of the week
		if(week_day != DAYS_OF_WEEK)
		{
			// set correct class for the cell
			var day  = Calendar.getDate();
			var classStr = "day";
			if(Calendar.getDay() == 0 && showWeekLinkColumn==false)
				classStr = "firstday";
			if(Calendar.getDay() == 6)
				classStr = "lastday";
			if(day == todaysDate && Calendar.getMonth() == todaysMonth)
				classStr = "day today";
				
			// print day cell
			cal += '<td class="' + classStr + '"><span class="daynumber">' + day + '</span>';
			
			// insert any information for that day
			//if(document.all('day_' + day + '_insert'))
			cal += dayInfo[Calendar.getDay()];
				
			// close cell
			cal += "</td>";
		}
	
		// end row on last day of week
		if(week_day == DAYS_OF_WEEK)
			cal += '</tr>';
	
		// increment for next week
		Calendar.setDate(Calendar.getDate()+1);
	}
	
	// end table
	cal += '</table>';
	
	// print calendar
	if(document.getElementById)
		document.getElementById("calendarDiv").innerHTML = cal;
	if(document.all)
		document.all["calendarDiv"].innerHTML = cal;
	if(document.layers) {
		var d = document.layers["calendarDiv"];
		d.document.open();
		d.document.writeln(cal);
		d.document.close();;
	}
}

