// ********* ********* ********* ********* ********* ********* ********* ********* *********
// 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;...; 6=sat)
// weekOfYear			number			week number of the year
// weekOfMonth	    	number			week number of the month
// weekdayOfMonth       number			weekday number of month 
//                                      (eg. 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);
	

                 // PSR	// every sunday
//	if (weekday==0) 
//	{
//		evnt = new EventObj(m,d,y, "PSR", null, "eventCyan", "10 am in the school" );
//		evnts[evnts.length] = evnt;
//	};


	// ********* ********* *********
	// *** holidays
	
	// New Years Day
	if (m==0 && d==1) {
		evnt = new EventObj(m,d,y, "New Years Day", null, "eventRoyalBlueType");
		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, "Martin Luther King Day", null, "eventRoyalBlueType");
		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, "eventRoyalBlueType");
		evnts[evnts.length] = evnt;
	};

	// St. Valentines day
	if (m==1 && d==14) {
		evnt = new EventObj(m,d,y, "Valentines Day", null, "eventRoyalBlueType");
		evnts[evnts.length] = evnt;
	};

	// St. Patricks day
	if (m==2 && d==17) {
		evnt = new EventObj(m,d,y, "Saint Patricks Day", null, "eventRoyalBlueType");
		evnts[evnts.length] = evnt;
	};

	// Daylight Savings time begins, second Sunday in March
	if (m==2 && weekday==0 && weekdayOfMonth==2) {
		evnt = new EventObj(m,d,y, "Begin Daylight Savings", null, "eventRoyalBlueType");
		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, "eventRoyalBlueType");
		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,"eventRoyalBlueType");
		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, "eventRoyalBlueType");
		evnts[evnts.length] = evnt;
	};

	// 4th of July
	if (m==6 && d==4) {
		evnt = new EventObj(m,d,y, "Fourth of July", null, "eventRoyalBlueType");
		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, "eventRoyalBlueType");
		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, "eventRoyalBlueType");
		evnts[evnts.length] = evnt;
	};

	// Daylight Savings Time ends, first Sunday in November
	if (m==10 && weekday==0 && weekdayOfMonth==1) {
		evnt = new EventObj(m,d,y, "End Daylight Savings", null, "eventRoyalBlueType");
		evnts[evnts.length] = evnt;
	};

	// Halloween
	if (m==9 && d==31) {
		evnt = new EventObj(m,d,y, "Halloween", null, "eventRoyalBlueType");
		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, "eventRoyalBlueType");
		evnts[evnts.length] = evnt;
	};

	// Christmas
	if (m==11 && d==25) {
		evnt = new EventObj(m,d,y, "Christmas Day", null, "eventRoyalBlueType");
		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, "eventRoseType");
		evnts[evnts.length] = evnt;
	};	

	// Easter Sunday 
	if (dcDateCompare(dte, dteEaster)) {
		evnt = new EventObj(m,d,y, "Easter Sunday", null, "eventRoseType");
		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;
	//};
	
	return evnts;
};






