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

var altMonthNames = new makeArray("Vernal Equinox","Summer Solstice","Autumnal Equinox"," Solstice");
var altMonths = new Array;

// altMonths constructor
function altMonth(startdate, monthnumber) {
	this.startdate = startdate;
	this.month = monthnumber;
}

function DefineAltMonth(startdate, monthnumber) {
	altMonths[altMonths.length] = new altMonth(startdate, monthnumber);
}

// these could be defined in external JavaScript such as altdates.js (the last altMonth defined will not show because endate is unknown!)
DefineAltMonth(20050621, 2);
DefineAltMonth(20050922, 3);
DefineAltMonth(20051221, 4);

DefineAltMonth(20060320, 1);
DefineAltMonth(20060621, 2);
DefineAltMonth(20060923, 3);
DefineAltMonth(20061222, 4);
DefineAltMonth(20070321, 1);
DefineAltMonth(20070621, 2);
DefineAltMonth(20070923, 3);
DefineAltMonth(20071222, 4);

DefineAltMonth(20080320, 1);
DefineAltMonth(20080621, 2);
DefineAltMonth(20080922, 3);
DefineAltMonth(20081221, 4);
DefineAltMonth(20090320, 1);
DefineAltMonth(20090621, 2);
DefineAltMonth(20090922, 3);
DefineAltMonth(20091221, 4);

DefineAltMonth(20100320, 1);
DefineAltMonth(20100621, 2);
DefineAltMonth(20100923, 3);
DefineAltMonth(20101221, 4);

function my_date(day, month, year, style) {
	if (!style) style = 0;
	var mo = 0;
	var dy, yr;
	var dateString = "";

	ymd = day + month*100 + year*10000;
	for (i=1; i<altMonths.length-1; i++) {
		if (ymd >= altMonths[i-1].startdate && ymd < altMonths[i].startdate) {
			mo = altMonths[i-1].month;
			startDay = altMonths[i-1].startdate%100;
			startMonth = ((altMonths[i-1].startdate-startDay)/100)%100;
			if (month == startMonth) {
				dy = day - startDay +1;
			} else {
				ym = month + year*100;
				prevYM = PrevYearMonth(ym);
				prevM = prevYM%100;
				prevY = (prevYM - prevM)/100;
				eom = NumDaysIn(prevM, prevY);
				dy = day + (eom - startDay +1);
			}
			yr = year - 1970;
			break;
		}
	}
	if (mo > 0) {
		if (style == 0) { 		// day monthnum year
			dateString = dy + ' ' + mo + ' ' + yr;
		} else if (style == 1) { 	// monthname year
			dateString = altMonthNames[mo] + ' ' + yr;
		} else if (style == 2) { 	// day monthname
			dateString = dy + ' ' + altMonthNames[mo];
		} else if (style == 3) { 	// monthname day
			dateString = altMonthNames[mo] + ' ' + dy;
		} else if (style == 4) { 	// day monthname year
			dateString = dy + ' ' + altMonthNames[mo] + ' ' + yr;
		}
	}
	return dateString;
}

function my_holiday(day, month, year) {
//alert("my_holiday("+day+","+month+","+year+")");
	var holString = "";
	// some American civil holidays
	if (month == 1 && day == 1) {
		holString = "New Year's Day (US & Canada)";
	} else if (month == 2 && day == 14) {
		holString = "Valentine's Day";
	} else if (month == 5 && day == 5) {
		holString = "Cinco de Mayo";
	} else if (month == 7 && day == 4) {
		holString = "Independence Day";
	} else if (month == 10 && day == 31) {
		holString = "Halloween";
	} else if (month == 12 && day == 25) {
		holString = "Christmas Day";
	} else if (month == 12 && day == 26) {
		holString = "Boxing Day (Canada)";
	} else if (month == 12 && day == 31) {
		holString = "New Year's Eve (US & Canada)";
	}
	return holString;
}

function my_alt_holiday(day, month, year) {
	var aday, amonth;
	var holString = "";
	
	// calculate alternate date from given Gregorian date
	var altDate = my_date(day, month, year);
	var altMonthYear = altDate.substring(altDate.indexOf(' ')+1, altDate.length);
	aday = eval(altDate.substring(0, altDate.indexOf(' ')));
	amonth = eval(altMonthYear.substring(0, altMonthYear.indexOf(' ')));
	
	if (aday == 1 ) {
		holString = altMonthNames[amonth];
	}
	return holString;
}

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

// map alternate date and holiday functions to user supplied functions here
altDateStyle = 0;
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); }
<!--
// override default settings and those from the sample_common.js file here
showAltDate = false;  	// 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
DefaultFormat = "layer";
//ExportPage = "cal_export.html";
//PrintPage = "cal_print.html";
defaultMsgBox = "";

// -->
