/* external_date_functions.js
*
* Purpose: Sample external date functions for JavaScript calendar
* Author: Richard Pike)
* Website: http://calendar.pikesys.com
*
* my_date returns an alternate date string corresponding to the given Gregorian date 
* my_holiday returns an appropriate holiday text string for the given Gregorian date
* my_alt_holiday returns an appropriate alternate holiday string for the given Gregorian date
*
*/

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("vacances", " ", "vacances", " ", "vacances", " ", " vacances de paques", " ", "vacances d'été", " ", "ramadan", "ramadan Aid el Fitr"," "," ", "vacances Toussaint", " ", "vacances de Noël", " ","COSEC fermé pour travaux", " ", "Vacances de février", " ", "Vacances de Paques", " ",  " ","ramadan", "ramadan Aid el Fitr"," "," ", "vacances Toussaint", " ", "vacances de Noël", " ", "Vacances de février", " ", "Vacances de Paques", " ", "Pont du 1er Mai", " ", "Pont du 8 Mai", " " );
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(20061025, 1);
DefineAltMonth(20061106, 2);
DefineAltMonth(20061224, 3);
DefineAltMonth(20070108, 4);
DefineAltMonth(20070211, 5);
DefineAltMonth(20070226, 6);
DefineAltMonth(20070409, 7);
DefineAltMonth(20070424, 8);
DefineAltMonth(20070704, 9);
DefineAltMonth(20070904, 10);
DefineAltMonth(20070913, 11);
DefineAltMonth(20071011, 12);
DefineAltMonth(20071015, 13);
DefineAltMonth(20071016, 14);
DefineAltMonth(20071028, 15);
DefineAltMonth(20071107, 16);
DefineAltMonth(20071222, 17);
DefineAltMonth(20080107, 18);
DefineAltMonth(20080211, 19);
DefineAltMonth(20080216, 20);
DefineAltMonth(20080223, 21);
DefineAltMonth(20080310, 22);
DefineAltMonth(20080420, 23);
DefineAltMonth(20080505, 24);
DefineAltMonth(20080506, 25);
DefineAltMonth(20080902, 26);
DefineAltMonth(20081001, 27);
DefineAltMonth(20081002, 28);
DefineAltMonth(20081003, 29);
DefineAltMonth(20081026, 30);
DefineAltMonth(20081106, 31);
DefineAltMonth(20081220, 32);
DefineAltMonth(20090104, 33);
DefineAltMonth(20090214, 34);
DefineAltMonth(20090301, 35);
DefineAltMonth(20090412, 36);
DefineAltMonth(20090426, 37);
DefineAltMonth(20090501, 38);
DefineAltMonth(20090503, 39);
DefineAltMonth(20090508, 40);
DefineAltMonth(20090510, 41);
DefineAltMonth(20090511, 42);

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;
		} else if (style == 5) { 	// monthname
			dateString = altMonthNames[mo];
		}
	}
	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 = "Nouvel an";
	} else if (month == 2 && day == 14) {
		holString = "St Valentin";
	} else if (month == 3 && day == 28) {
		holString = "Paques";
	} else if (month == 5 && day == 1) {
		holString = "Fete du travail";
	} else if (month == 5 && day == 5) {
		holString = "Ascension";
	} else if (month == 5 && day == 8) {
		holString = "8 mai 45";
	} else if (month == 5 && day == 16) {
		holString = "Pentecote";
	} else if (month == 7 && day == 14) {
		holString = "Fete nationale";
	} else if (month == 8 && day == 15) {
		holString = "Assomption";
	} else if (month == 11 && day == 1) {
		holString = "Toussaint";
	} else if (month == 11 && day == 11) {
		holString = "Armistice";
	} else if (month == 12 && day == 25) {
		holString = "Noel";
	}
	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 = "Happy " + altMonthNames[amonth];
	}  
	return holString;
}


