/* This script and many more are available free online at
The JavaScript Source!! http://javascript.internet.com
Created by: Shaun Bailey | http://www.sbwebdevelopment.co.uk */
// set up variables
var monthsArray = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
var daysArray = new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");
var prevYears = 10;	// number of years before current date
var futureYears = 10;	// number of years after current date
var today = new Date();
var nowMonth = today.getMonth();
var nowYear = today.getFullYear();
var curMonth = nowMonth;
var curYear = nowYear;
var monthEvents;
today.setDate(1);	// set to first day of the month

var eventsArray = new Array();
// format: dd,mm,yyyy,"event","frequency (Annual/Monthly/Weekly)" - Delete frequency for once-time occurrences


eventsArray[0] = new newEvent(23,08,2010,"First day of school");
eventsArray[1] = new newEvent(06,09,2010,"Labor Day - No school");
eventsArray[2] = new newEvent(9,09,2010,"Yom Kippur - No school");
eventsArray[3] = new newEvent(16,10,2010,"PSAT");
eventsArray[4] = new newEvent(27,10,2010,"First quarter ends");
eventsArray[5] = new newEvent(28,10,2010,"Second quarter begins");
eventsArray[6] = new newEvent(30,10,2010,"Lower school Halloween party-2:30");
eventsArray[7] = new newEvent(31,10,2010,"Halloween","Annual");
eventsArray[8] = new newEvent(01,11,2010,"Daylight Savings Time ends-set your clocks back one hour");
//eventsArray[9] = new newEvent(11,11,2010,"Veteran's Day");
eventsArray[10] = new newEvent(09,11,2010,"School pictures");
eventsArray[11] = new newEvent(24,11,2010,"Thanksgiving break - No school");
eventsArray[12] = new newEvent(25,11,2010,"Thanksgiving - No school");
eventsArray[13] = new newEvent(26,11,2010,"Thanksgiving break - No school");
eventsArray[14] = new newEvent(21,12,2010,"Winter break - No school");
eventsArray[15] = new newEvent(22,12,2010,"Winter break - No school");
eventsArray[16] = new newEvent(23,12,2010,"Winter break - No school");
eventsArray[17] = new newEvent(24,12,2010,"Winter break - No school");
eventsArray[18] = new newEvent(25,12,2010,"Christmas - No school");
eventsArray[19] = new newEvent(26,12,2010,"Winter break - No school");
eventsArray[20] = new newEvent(27,12,2010,"Winter break - No school");
eventsArray[21] = new newEvent(28,12,2010,"Winter break - No school");
eventsArray[22] = new newEvent(29,12,2010,"Winter break - No school");
eventsArray[23] = new newEvent(30,12,2010,"Winter break - No school");
eventsArray[24] = new newEvent(31,12,2010,"New Year's Eve - No school");
eventsArray[25] = new newEvent(01,01,2011,"New Year's Day - No school");
eventsArray[26] = new newEvent(14,01,2011,"School resumes");
eventsArray[27] = new newEvent(15,01,2011,"Second Quarter ends");
eventsArray[28] = new newEvent(17,01,2011,"Martin Luther King, Jr. Day - No school");
eventsArray[29] = new newEvent(18,01,2011,"Third quarter begins");
eventsArray[30] = new newEvent(12,02,2011,"Lower school Valentine's party-2:30");
//eventsArray[31] = new newEvent(14,02,2011,"Valentine's Day");
eventsArray[32] = new newEvent(21,02,2011,"Presidents' Day - No school");
eventsArray[33] = new newEvent(14,03,2011,"Daylight Savings Time begins-set your clocks forward one hour");
eventsArray[34] = new newEvent(22,03,2011,"Third quarter ends");
eventsArray[35] = new newEvent(23,03,2011,"Fourth quarter begins");
eventsArray[36] = new newEvent(18,04,2011,"Spring break - No school");
eventsArray[37] = new newEvent(19,04,2011,"Spring break - No school");
eventsArray[38] = new newEvent(20,04,2011,"Spring break - No school");
eventsArray[39] = new newEvent(21,04,2011,"Spring break - No school");
eventsArray[40] = new newEvent(22,04,2011,"Spring break - No school");
eventsArray[41] = new newEvent(23,04,2011,"Spring break - No school");
eventsArray[42] = new newEvent(24,04,2011,"Spring break - No school");
eventsArray[43] = new newEvent(25,04,2011,"Spring break- No school");
eventsArray[44] = new newEvent(26,04,2011,"Spring break- No school");
//eventsArray[45] = new newEvent(09,05,2011,"Mother's Day");
eventsArray[46] = new newEvent(19,05,2010,"No school");
eventsArray[47] = new newEvent(20,05,2010,"No school");
eventsArray[48] = new newEvent(28,05,2010,"High School Graduation");
eventsArray[49] = new newEvent(31,05,2010,"Memorial Day - No school");
eventsArray[50] = new newEvent(04,06,2010,"Last Day of School");
eventsArray[51] = new newEvent(28,05,2010,"3rd and 4th Grade Play");
//eventsArray[52] = new newEvent(20,06,2010,"Father's Day");


// create event object
function newEvent(day, month, year, memo, occurrence) {
	this.day = day;
	this.month = month;
	this.year = year;
	this.memo = memo;
	this.occurrence = occurrence;
	this.createMonth = createMonth;
}

// creates calendar for the current month
function createMonth() {
	var startDay = today.getDay();	// first day of the month
	var monLength = monthLength();	// number of days in month
	var lastDay = startDay+monLength-1;	// last day of the month
	monthEvents = new Array();	// array to hold events for current month

	// search through events for current month
	for(i=0;i<eventsArray.length;i++) {
		if(eventsArray[i].month == (curMonth+1) && (eventsArray[i].year == curYear || eventsArray[i].occurrence == "Annual")) {
			monthEvents[monthEvents.length] = i;
		}
//I've added the next, modified line
//		else if(eventsArray[i].occurrence == "Monthly") {
		else if(eventsArray[i].occurrence == "Monthly" || eventsArray[i].occurrence == "Weekly") {
			monthEvents[monthEvents.length] = i;
		}
	}

	var content = "<table class=\"calendar\" cellspacing=\"0\">\n";
	// create headers
	content += "<tr>\n<th><a class=\"button\" href=\"javascript:void(prev())\">Previous</a></th>\n";
	content += "<th colspan=\"5\">" + monthsArray[curMonth] + " " + curYear + "</th>\n";
	content += "<th><a class=\"button\" href=\"javascript:void(next())\">Next</a></th>\n</tr><tr>\n";
	for(i=0;i<7;i++) {
		content += "<th>" + daysArray[i] + "</th>\n";
	}
	content += "</tr>\n<tr>\n";

	// create main content of calendar
	for(i=0;i<42;i++) {
		var occ = "";
		var occContent = "";
		var curDay = i+1-startDay;
		var fullContent="";
		// check day against months events
		for(j=0;j<monthEvents.length;j++) {
				var occDate = new Date();
				occDate.setDate(eventsArray[monthEvents[j]].day);
				occDate.setMonth(eventsArray[monthEvents[j]].month);
				occDate.setFullYear(eventsArray[monthEvents[j]].year);

				if(curDay == eventsArray[monthEvents[j]].day && eventsArray[monthEvents[j]].occurrence != "Weekly") {	// deal with day, monthly and annual events
					occ = " class=\"occassion\"";
					fullContent = eventsArray[monthEvents[j]].memo;
					if(eventsArray[monthEvents[j]].memo.length > 14) {
						occContent = fullContent.substr(0,13) + "...";
						break;
					}
					else {
						occContent = fullContent;
						break;
					}
				}
				else if(occDate.getDate() == (i%7) && eventsArray[monthEvents[j]].occurrence == "Weekly") {	// deal with weekly events
					occ = " class=\"occassion\"";
						fullContent = eventsArray[monthEvents[j]].memo;
					if(eventsArray[monthEvents[j]].memo.length > 14) {
						occContent = fullContent.substr(0,13) + "...";
						break;
					}
					else {
						occContent = fullContent;
						break;
					}
				}
		}
		if(i>lastDay && i==35) {	// do not show last row if not needed
			break;

		}
		if(i<startDay || i>lastDay) {	// show blank cells before and after month
			content += "<td class=\"blank\"> </td>\n";
		}
		else {
			if(!(i%7) || !((i+1)%7) ) {	// get days of the weekend
				if(!(i%7)&& i>0) {
					content += "</tr>\n<tr>\n";
				}
				content += "<td" + occ + "><span class=\"weekend\">"+curDay+"</span><br /><a href=\"javascript:void(alert('"+fullContent+"'));s\" title=\""+occContent+"\">"+occContent+"</a></td>\n";
			}
			else {
				content += "<td" + occ + ">"+curDay+"<br /><a href=\"javascript:void(alert('"+fullContent+"'));\" title=\""+fullContent+"\">"+occContent+"</a></td>\n";
			}
		}
	}
	content += "</tr></table>\n";

	return content;
}

// get length of month
function monthLength() {
	monLength = 31;
	if(curMonth == 3 || curMonth == 5 || curMonth == 8 || curMonth == 10) monLength = 30;
	if(curMonth == 1) {
		if(curYear%4) {
			monLength = 28;
		}
		else {
			monLength = 29;
		}
	}
	return monLength;
}

function droplists() {
	content = "<form name=\"calNav\" method=\"post\" action=\"\">\n";
	content += "<select name=\"month\">\n";
	for(i=0;i<12;i++) {
		content += "<option value=\""+i +"\"";
		if(i == curMonth) {
			content += " selected=\"selected\"";
		}
		content += ">" + monthsArray[i] + "</option>\n";
	}
	content += "</select> <select name=\"year\">\n";
	for(i=(nowYear-prevYears);i<=(nowYear+futureYears);i++) {
		content += "<option value=\""+i +"\"";
		if(i == curYear) {
			content += " selected=\"selected\"";
		}
		content += ">" + i + "</option>\n";
	}
	content += "</select>\n<input type=\"button\" value=\"Go\" onclick=\"newMonth()\" />\n";
	content += "</form>\n";
	return content;
}

function newMonth() {
	var mon = document.calNav.month.selectedIndex;
	curMonth = parseInt(document.calNav.month.options[mon].value);
	var yr = document.calNav.year.selectedIndex;
	curYear = parseInt(document.calNav.year.options[yr].value);
	today.setMonth(curMonth);
	today.setFullYear(curYear);
	document.getElementById("showCal").innerHTML = droplists() + createMonth();
}

// goto previous month
function prev() {
	curMonth -= 1;
	if(curMonth<0) {
		curMonth=11;
		if(curYear>(nowYear-prevYears)) {
			curYear -= 1;
		}
	}
	today.setMonth(curMonth);
	today.setFullYear(curYear);
	document.getElementById("showCal").innerHTML = droplists() + createMonth();
}

// goto next month
function next() {
	curMonth += 1;
	if(curMonth>11) {
		curMonth=0;
		if(curYear<(nowYear+futureYears)) {
			curYear += 1;
		}
	}
	today.setMonth(curMonth);
	today.setFullYear(curYear);
	document.getElementById("showCal").innerHTML = droplists() + createMonth();
}