// ********* ********* ********* ********* ********* ********* ********* ********* *********
// Special Event function
// This function allows you set events for every weekday or for holidays
//
// VARIABLE			DATA TYPE	DESCRIPTION
// y				number		the 4-digit year (i.e. 2002)
// m				number		the month (1=jan, 2=feb,... 12=dec)
// d				number		the day
// dte				date		the full date
// intWeekday			number		day of the week (0=sun; 1=mon; 2=tue, ..., 6=sat)
// intWeekOfYear		number		week number of the year
// intWeekOfMonth		number		week number of month (1st Sunday, 2nd Sunday, ...)
// blnLast			boolean		is this the Last Weekday of the month
// dteEaster			date		the full date of Easter Sunday for the year
// dteMardiGras			date		the full date of Mardi Gras Tuesday for the year
// dteAshWednesday		date		the full date of Ash Wednesday for the year
// dteGoodFriday		date		the full date of Good Friday for the year
// ********* ********* ********* ********* ********* ********* ********* ********* *********
function scSpecialEvent(dte) {
	var objEvent;
	var arrEvents = new Array();
	var dteCurrent = new Date();
	
	var m = dte.getMonth() + 1;
	var d = dte.getDate();
	var y = dte.getFullYear();
	var intWeekday = dte.getDay();
	var intWeekOfYear = dte.weekOfYear();
	var intWeekOfMonth = dte.weekOfMonth();

	var intLastMonth = new Date(y, m-1, d+7).getMonth();
	if (intLastMonth == 0) intLastMonth = 12;
	var blnLast = ( intLastMonth == m );

	var dteEaster = fscEaster(y);
	var dteGoodFriday = dteEaster.add("d", -2);
	var dteEasterMonday = dteEaster.add("d", 1);

	// ********* ********* ********* ********* ********* ********* ********* *********
	// *** current date
	// ********* ********* ********* ********* ********* ********* ********* *********

	// *** current day event
	if ( dte.equalsTo(dteCurrent) ) {
		objEvent = new EventObj(m,d,y, "TODAY", null, "scToday");
		arrEvents[arrEvents.length] = objEvent;
	};
	
	// ********* ********* ********* ********* ********* ********* ********* *********
	// *** every weekday functions
	// ********* ********* ********* ********* ********* ********* ********* *********

	// every sunday
	if (intWeekday==0) {
		objEvent = new EventObj(m,d,y, " ", null, "scEventPurple");
		arrEvents[arrEvents.length] = objEvent;
	};
	
	// every saturday 
	if (intWeekday==6) {
		objEvent = new EventObj(m,d,y, " ", null, "scEventPurple");
		arrEvents[arrEvents.length] = objEvent;
	};
			
	// ********* ********* ********* ********* ********* ********* ********* *********
	// *** holidays
	// ********* ********* ********* ********* ********* ********* ********* *********
	
	// New Years Day
	if (m==1 && d==1) {
		objEvent = new EventObj(m,d,y, "New Years Day", null, "scEventRed");
		arrEvents[arrEvents.length] = objEvent;
	};
	
	// Australia Day
	if (m==1 && d==26) {
		objEvent = new EventObj(m,d,y, "Australia Day", null, "scEventRed");
		arrEvents[arrEvents.length] = objEvent;
	};

	// St Valentines day
	if (m==2 && d==14) {
		objEvent = new EventObj(m,d,y, "St Valentines Day", null, "scEventRed");
		arrEvents[arrEvents.length] = objEvent;
	};

	// St Patricks day
	if (m==3 && d==17) {
		objEvent = new EventObj(m,d,y, "St Patricks Day", null, "scEventGreen");
		arrEvents[arrEvents.length] = objEvent;
	};

	// Daylight Savings time ends, blnLast Sunday in March
	if (m==3 && intWeekday==0 && blnLast==true) {
		objEvent = new EventObj(m,d,y, "End Daylight Savings", null, "scEventRed");
		arrEvents[arrEvents.length] = objEvent;
	};
	
	// ANZAC Day
	if (m==4 && d==25) {
		objEvent = new EventObj(m,d,y, "ANZAC Day", null, "scEventRed");
		arrEvents[arrEvents.length] = objEvent;
	};
	
	// Mother's Day, second Sunday in May 
	if (m==5 && intWeekday==0 && intWeekOfMonth==2) {
		objEvent = new EventObj(m,d,y, "Mother's Day", null, "scEventRed");
		arrEvents[arrEvents.length] = objEvent;
	};

	// Queen's Birday, second Monday in June. 
	if (m==6 && intWeekday==1 && intWeekOfMonth==2) {
		objEvent = new EventObj(m,d,y, "Queen's Birthday", null, "scEventRed");
		arrEvents[arrEvents.length] = objEvent;
	};

	// Father's Day, 1st Sunday in September. 
	if (m==9 && intWeekday==0 && intWeekOfMonth==1) {
		objEvent = new EventObj(m,d,y, "Father's Day", null, "scEventRed");
		arrEvents[arrEvents.length] = objEvent;
	};

	// Labour Day, first Monday in October. 
	if (m==10 && intWeekday==1 && intWeekOfMonth==1) {
		objEvent = new EventObj(m,d,y, "Labour Day", null, "scEventRed");
		arrEvents[arrEvents.length] = objEvent;
	};
	
	// Daylight Savings time begins, blnLast Sunday in October
	if (m==10 && intWeekday==0 && blnLast==true) {
		objEvent = new EventObj(m,d,y, "Begin Daylight Savings", null, "scEventRed");
		arrEvents[arrEvents.length] = objEvent;
	};

	// Halloween
	if (m==10 && d==31) {
		objEvent = new EventObj(m,d,y, "Halloween", null, "scEventRed");
		arrEvents[arrEvents.length] = objEvent;
	};

	// Melbourne Cup, 1st Tuesday in November. 
	if (m==11 && intWeekday==2 && intWeekOfMonth==1) {
		objEvent = new EventObj(m,d,y, "Melbourne Cup", null, "scEventRed");
		arrEvents[arrEvents.length] = objEvent;
	};

	// Christmas
	if (m==12 && d==25) {
		objEvent = new EventObj(m,d,y, "Christmas Day", null, "scEventRed");
		arrEvents[arrEvents.length] = objEvent;
	};

	// Boxing Day
	if (m==12 && d==26) {
		objEvent = new EventObj(m,d,y, "Boxing Day", null, "scEventRed");
		arrEvents[arrEvents.length] = objEvent;	
	};

	// ********* ********* ********* ********* ********* ********* ********* *********
	// *** Easter holidays
	// ********* ********* ********* ********* ********* ********* ********* *********

	// Good Friday 
	if ( dte.equalsTo(dteGoodFriday)) {
		objEvent = new EventObj(m,d,y, "Good Friday", null, "scEventGreen");
		arrEvents[arrEvents.length] = objEvent;
	};

	// Easter Sunday 
	if ( dte.equalsTo(dteEaster)) {
		objEvent = new EventObj(m,d,y, "Easter Sunday", null, "scEventGreen");
		arrEvents[arrEvents.length] = objEvent;
	};
	
	// Easter Monday 
	if ( dte.equalsTo(dteEasterMonday)) {
		objEvent = new EventObj(m,d,y, "Easter Monday", null, "scEventGreen");
		arrEvents[arrEvents.length] = objEvent;
	};
	
	return arrEvents;
};







