// SpecialDay=1;		// 0=none, 1=Sunday, 2=Monday, . . . 7=Saturday
// ColorBackground="ffffcc";
// ColorSpecialDay = "red";
// ColorToday = "green";
// ColorEvent = "blue";
// showAltDate = true;  	// add display of alternate date using results from user supplied "getAltMonth(dy, mo, yr, last)" and "getAltDate(dy, mo, yr)" functions
showHolidays = true; 	// add display of holidays using result from user supplied "holidays(dy, mo, yr)" function
// showAltHoly = true; 		// add display of alternate holidays using result from user supplied "getAltHoly(dy, mo, yr)" function
// showMsgBox = true; 		// span empty cells (before 1st day and after last) for messageBox use
// showMini = true; 		// add minimonth display of prior and next months if first and/or last boxes are available 
// showNav = true; 		// enable month navigation (might disable for print version)
// showImages = true; 		// enable event images (might disable for print version)
// showLinks = true; 		// enable event hyperlinks (might disable for print version)
// msgBoxColor = "#ffcc99";
// navColor = "#ffff99";
// imageAlign = "left"; 		// default event image alignment
// imageScale = 100;		// percent scale factor for images
// altAlign = true; 		// alternate left/right alignment of event images on same date for readability
// DefaultFormat = "custom"; 	// for compatibility; set to "layer" to simplify formatting
ExportPage = "events_export.html"; 		// name of html page for displaying event text for export
PrintPage = "events_print.html"; 		// name of html page for printer-friendly format


// all format codes must have "|" to separate before and after tags
// DateFontSize=5;
// AltDateFormat = "<font color=#999999 size=2>|</font>";
// MonthFormat = "<font size=" + DateFontSize + "><b>|</b></font>";
// AltMonthFormat = "<br><font color=#999999 size=" + DateFontSize/2 + ">|</font>";
HolidayFormat = "<span bgcolor=#CCCCCC><font color=#999999 size=2><b><center>|</center></b></font></span>";
// AltHolyFormat = "<font  size=2><b><center>|</center></b></font>";
// LayerFormat = "<font size=2>|</font>";

// msgBox message (it will only be shown IF it finds enough space)
// defaultMsgBox = "Note: The information here may not be current; please confirm dates and times.<p>"

// DefineLayer("Family Events","<font color=\"black\" size=1>|</font>");
// DefineLayer("Adult Events","<font color=\"olive\" size=1>|</font>");
// DefineLayer("Outdoor Events","<font color=\"green\" size=1>|</font>");
// DefineLayer("Indoor Events","<font color=\"crimson\" size=1>|</font>");
// DefineLayer("Fundraising Events","<font color=\"indigo\" size=1>|</font>");

FirstMonth = 200901; 	// start calendar in month where sample data starts for "jump to" target in samples

altDateStyle = 2;
altMonthStyle = 1;
function getAltMonth(first, month, year, last) {
	var tmp = my_date(first, month, year, altMonthStyle) + " - " + my_date(last, month, year, altMonthStyle);
	return tmp;
}
// function getAltDate(day, month, year) { return my_date(day, month, year, altDateStyle); }
function holidays(day, month, year) { return my_holiday(day, month, year); }
// function getAltHoly(day, month, year) { return my_alt_holiday(day, month, year); }

// map alternate date and holiday functions to user supplied functions here


function DayOfWeek(day,month,year) {
    var a = Math.floor((14 - month)/12);
    var y = year - a;
    var m = month + 12*a - 2;
    var d = (day + y + Math.floor(y/4) - Math.floor(y/100) +
             Math.floor(y/400) + Math.floor((31*m)/12)) % 7;
    return d + 1;
}

function makeArray()    {
    this[0] = makeArray.arguments.length;
    for (i = 0; i<makeArray.arguments.length; i++)
        this[i+1] = makeArray.arguments[i];
}

var daysofmonth   = new makeArray( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
var daysofmonthLY = new makeArray( 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

function LeapYear(year) {
    if ((year/4)   != Math.floor(year/4))   return false;
    if ((year/100) != Math.floor(year/100)) return true;
    if ((year/400) != Math.floor(year/400)) return false;
    return true;
}

function NthDay(nth,weekday,month,year) {
    if (nth > 0) return (nth-1)*7 + 1 + (7 + weekday - DayOfWeek((nth-1)*7 + 1,month,year))%7;
    if (LeapYear(year)) var days = daysofmonthLY[month];
    else                var days = daysofmonth[month];
    return days - (DayOfWeek(days,month,year) - weekday + 7)%7;
}

var sun=1,mon=2,tue=3,wed=4,thu=5,fri=6,sat=7;
var jan=1,feb=2,mar=3,apr=4,may=5,jun=6,jul=7,aug=8,sep=9,oct=10,nov=11,dec=12;
var first=1,second=2,third=3,fourth=4,fifth=5,last=-1;

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

function DayOfWeek(day,month,year) {
    var a = Math.floor((14 - month)/12);
    var y = year - a;
    var m = month + 12*a - 2;
    var d = (day + y + Math.floor(y/4) - Math.floor(y/100) + Math.floor(y/400) + Math.floor((31*m)/12)) % 7;
    return d+1;
}

function Nths(day) { 
    if (day == 1 || day == 21 || day == 31) return 'st';
    if (day == 2 || day == 22) return 'nd';
    if (day == 3 || day == 23) return 'rd';
    return 'th';
}

function FullDate(day,month,year) {
    return daysofweek[DayOfWeek(day,month,year)] +' '+ day + Nths(day) +' '+ monthsofyear[month] +' '+ year;
}

function calcHolidays(year) {
	document.write("Martin Luther King Day - " + FullDate(NthDay(third,mon,jan,year),jan,year) + '<BR>');
	document.write("President's Day - " + FullDate(NthDay(third,mon,feb,year),feb,year) + '<BR>');
	document.write("Daylight Savings time begins - " + FullDate(NthDay(first,sun,apr,year),apr,year) + '<BR>');
	document.write("Armed Forces Day - " + FullDate(NthDay(third,sat,may,year),may,year) + '<BR>');
	document.write("Mother's Day - " + FullDate(NthDay(second,sun,may,year),may,year) + '<BR>');
	document.write("Memorial Day - " + FullDate(NthDay(last,mon,may,year),may,year) + '<BR>');
	document.write("Father's Day - " + FullDate(NthDay(third,sun,jun,year),jun,year) + '<BR>');
	document.write("Labor Day - " + FullDate(NthDay(first,mon,sep,year),sep,year) + '<BR>');
	document.write("Columbus Day - " + FullDate(NthDay(second,mon,oct,year),oct,year) + '<BR>');
	document.write("Daylight Savings Time ends - " + FullDate(NthDay(last,sun,oct,year),oct,year) + '<BR>');
	document.write("Thanksgiving Day - " + FullDate(NthDay(fourth,thu,nov,year),nov,year) + '<BR>');
}

function holidays(cday, cmonth, cyear) {
	// American civil holidays and some major religious holiday
	if (cmonth == 1 && cday == 1)
		return "New Year's Day";
	else if (cmonth == 1 && cday == NthDay(third, mon, cmonth, cyear))
		return "MLK Day";
	else if (cmonth == 2 && cday == 2)
		return "Groundhog Day";
	else if (cmonth == 2 && cday == 12)
		return "Lincoln's Birthday";
	else if (cmonth == 2 && cday == 14)
		return "Valentine's Day";
	else if (cmonth == 2 && cday == NthDay(third, mon, cmonth, cyear))
		return "President's Day";
	else if (cmonth == 2 && cday == 22)
		return "Washington's Birthday";
	else if (cmonth == 3 && cday == 17)
		return "St. Patrick's Day";
	else if (cmonth == 4 && cday == NthDay(first, sun, cmonth, cyear))
		return "Daylight Savings time begins";
	else if (cmonth == 4 && cday == 1)
		return "April Fool's Day";
	else if (cmonth == 4 && cday == 22)
		return "Earth Day";
	else if (cmonth == 4 && cday == NthDay(last, fri, cmonth, cyear))
		return "<a href=http://www.arborday.org/arborday/arbordaydates.cfm>Arbor Day</a>";
	else if (cmonth == 5 && cday == NthDay(second, sun, cmonth, cyear))
		return "Mother's Day<img src=mothersday.gif align=middle>";
	else if (cmonth == 5 && cday == NthDay(third, sat, cmonth, cyear))
		return "Armed Forces Day";
	else if (cmonth == 5 && cday == NthDay(last, mon, cmonth, cyear))
		return "Memorial Day";
	else if (cmonth == 6 && cday == 14)
		return "<img src=oldglory.gif><br>Flag Day";
	else if (cmonth == 6 && cday == NthDay(third, sun, cmonth, cyear))
		return "<img src=fathersday.gif><br>Father's Day";
	else if (cmonth == 7 && cday == 4)
		return "Independence Day";
	else if (cmonth == 7 && cday == NthDay(fourth, sun, cmonth, cyear))
		return "Parents' Day";
	else if (cmonth == 9 && cday == NthDay(first, mon, cmonth, cyear))
		return "Labor Day";
	else if (cmonth == 9 && DayOfWeek(cday, cmonth, cyear) == 1 && cday > NthDay(first, mon, cmonth, cyear) && cday <= NthDay(first, mon, cmonth, cyear)+7)
		return "Grandparents' Day"; 		// Sunday after Labor Day
	else if (cmonth == 10 && cday == NthDay(second, mon, cmonth, cyear))
		return "Columbus Day";
	else if (cmonth == 10 && cday == 24)
		return "United Nations Day";
	else if (cmonth == 10 && cday == 31)
		return "Halloween";
	else if (cmonth == 10 && cday == NthDay(last, sun, cmonth, cyear))
		return "Daylight Savings time ends";
	else if (cmonth == 11 && cday == 11)
		return "Veterans' Day";
	else if (cmonth == 11 && cday == NthDay(fourth, thu, cmonth, cyear))
		return "Thanksgiving";
	else if (cmonth == 12 && cday == 25)
		return "Christmas";

	return "";
}