// ********* ********* ********* ********* ********* ********* ********* ********* *********
// Special Event function
// This function allows you set events for every weekday or for holidays
//
// VARIABLE		DATE TYPE	DESCRIPTION
// y			number		the 4-digit year (i.e. 2002)
// m			number		the month (0=jan, 1=feb, 2=mar,... 11=dec)
// d			number		the day
// dte			date		the full date sans time
// dteEaster		date		the full date of Easter Sunday for the year
// weekday		number		day of the week (0=sun; 1=mon; 2=tue, ..., 6=sat)
// weekOfYear		number		week number of the year
// weekOfMonth		number		week number of the month
// weekdayOfMonth	number		weekday number of month (1st Sunday, 2nd Sunday, ...)
// last			boolean		is this the last weekday of the month
// ********* ********* ********* ********* ********* ********* ********* ********* *********
function dcSpecialEvent(y,m,d) {
	var evnt;
	var evnts = new Array();
	
	var dte = new Date(y, m, d);
	var dteEaster = dcEaster(y);
	var weekday = dte.getDay();
	var weekOfYear = dcWeekOfYear(dte);
	var weekOfMonth = dcWeekOfMonth(dte);
	var weekdayOfMonth = dcWeekdayOfMonth(dte);
	var last=( (new Date(y,m,d+7).getMonth() ) ==m+1);
	

	// ********* ********* *********
	// *** holidays
	
	// New Years Day
	if (m==0 && d==1) {
		evnt = new EventObj(m,d,y, "New Years Day", null, "eventRed");
		evnts[evnts.length] = evnt;
	};

	// Martin Luther King Day, third Monday in January. 
	if (m==0 && weekday==1 && weekdayOfMonth==3) {
		evnt = new EventObj(m,d,y, "M.L. King Day", null, "eventRed");
		evnts[evnts.length] = evnt;
	};

	// President's Day, third Monday in February. 
	if (m==1 && weekday==1 && weekdayOfMonth==3) {
		evnt = new EventObj(m,d,y, "Presidents Day", null, "eventRed");
		evnts[evnts.length] = evnt;
	};

	// St. Valentines day
	if (m==1 && d==14) {
		evnt = new EventObj(m,d,y, "Valentines Day", null, "eventRed");
		evnts[evnts.length] = evnt;
	};

	// St. Patricks day
	if (m==2 && d==17) {
		evnt = new EventObj(m,d,y, "Saint Patricks Day", null, "eventGreen");
		evnts[evnts.length] = evnt;
	};

	// Daylight Savings time begins, first Sunday in April
	if (m==2 && weekday==0 && weekdayOfMonth==2) {
		evnt = new EventObj(m,d,y, "Begin Daylight Savings", null, "eventYellow");
		evnts[evnts.length] = evnt;
	};
	
	// Mother's Day, second Sunday in May. 
	if (m==4 && weekday==0 && weekdayOfMonth==2) {
		evnt = new EventObj(m,d,y, "Mothers Day", null, "eventRed");
		evnts[evnts.length] = evnt;
	};

	//Memorial Day, last Monday in May. 
	if (m==4 && weekday==1 && last==true) {
		evnt = new EventObj(m,d,y, "Memorial Day", null, "eventRed");
		evnts[evnts.length] = evnt;
	};

	// Father's Day, third Sunday in June. 
	if (m==5 && weekday==0 && weekdayOfMonth==3) {
		evnt = new EventObj(m,d,y, "Fathers Day", null, "eventRed");
		evnts[evnts.length] = evnt;
	};

	// 4th of July
	if (m==6 && d==4) {
		evnt = new EventObj(m,d,y, "Fourth of July", null, "eventBlue");
		evnts[evnts.length] = evnt;
	};


	// Labor Day, first Monday in September. 
	if (m==8 && weekday==1 && weekdayOfMonth==1) {
		evnt = new EventObj(m,d,y, "Labor Day", null, "eventRed");
		evnts[evnts.length] = evnt;
	};

	// Columbus Day, second Monday in October 
	if (m==9 && weekday==1 && weekdayOfMonth==2) {
		evnt = new EventObj(m,d,y, "Columbus Day", null, "eventRed");
		evnts[evnts.length] = evnt;
	};

	// Daylight Savings Time ends, last Sunday in October
	if (m==10 && weekday==0 && weekdayOfMonth==3) {
		evnt = new EventObj(m,d,y, "End Daylight Savings", null, "eventBlack");
		evnts[evnts.length] = evnt;
	};

	// Halloween
	if (m==9 && d==31) {
		evnt = new EventObj(m,d,y, "Halloween", null, "eventOrange");
		evnts[evnts.length] = evnt;
	};

	// Thanksgiving Day, fourth Thursday in November. 
	if (m==10 && weekday==4 && weekdayOfMonth==4) {
		evnt = new EventObj(m,d,y, "Thanksgiving", null, "eventRed");
		evnts[evnts.length] = evnt;
	};

	// Christmas
	if (m==11 && d==25) {
		evnt = new EventObj(m,d,y, "Christmas Day", null, "eventRed");
		evnts[evnts.length] = evnt;
	};

	// ********* ********* *********
	// *** Easter holidays
	// Ash Wednesday (46 days before Easter)
	//dteAsh = new Date(y, dteEaster.getMonth(), dteEaster.getDate()-46);
	//if ( dcDateCompare(dte, dteAsh) ) {
	//	evnt = new EventObj(m,d,y, "Ash Wednesday", null, "eventRed");
	//	evnts[evnts.length] = evnt;
	//};	

	// Easter Sunday 
	//if (dcDateCompare(dte, dteEaster)) {
	//	evnt = new EventObj(m,d,y, "Easter Sunday", null, "eventRed");
	//	evnts[evnts.length] = evnt;
	//};

	// ********* ********* *********
	// *** every weekday functions
	// every sunday
	//if (weekday==0) {
	//	evnt = new EventObj(m,d,y, "every sunday", null, "eventCyan");
	//	evnts[evnts.length] = evnt;
	//};
	
	// every 2nd saturday 
	//if (weekday==6 && (weekdayOfMonth==1 || weekdayOfMonth==3) ) {
	//	evnt = new EventObj(m,d,y, "1st and 3rd saturday", null, "eventMagenta");
	//	evnts[evnts.length] = evnt;
	//};
	
	// Board Meetings 
	if (weekday==1 && weekdayOfMonth==4) {
		evnt = new EventObj(m,d,y, "HOA Board Mtg - 6:00pm", "hoameeting.htm", "eventGreen");
		evnts[evnts.length] = evnt;
	};

	// Annual HOA Members Mtg. 
	if (m==2 && weekday==1 && weekdayOfMonth==4) {
		evnt = new EventObj(m,d,y, "Annual HOA Members Mtg - 7:00 pm", null, "eventRed");
		evnts[evnts.length] = evnt;
	};

	// ARB Meetings 
	if (weekday==2 && weekdayOfMonth==1) {
		evnt = new EventObj(m,d,y, "ARB Meeting - 7:00pm", null, "eventGreen");
		evnts[evnts.length] = evnt;
	};

	// Open Space Meetings 
	if (weekday==1 && weekdayOfMonth==2) {
		evnt = new EventObj(m,d,y, "Open Space Mtg - 7:00pm", null, "eventGreen");
		evnts[evnts.length] = evnt;
	};

	// Social Committe Meetings 
	if (weekday==3 && weekdayOfMonth==1) {
		evnt = new EventObj(m,d,y, "Social Comm. Mtg - 7:00pm", null, "eventGreen");
		evnts[evnts.length] = evnt;
	};

	// Pool Committe Meetings 
	if (weekday==2 && weekdayOfMonth==3) {
		evnt = new EventObj(m,d,y, "Pool Comm. Mtg - 7:00pm", null, "eventBlue");
		evnts[evnts.length] = evnt;
	};

	return evnts;
};
