// ********* ********* ********* ********* ********* ********* ********* ********* *********
// 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 badges;
	var arrBadges = new Array();
	var badge;	
	var picName;
	
	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 blnLast = ( (new Date(y, m-1, d+7).getMonth() ) == m );

	var dteEaster = fscEaster(y);
	var dteMardiGras = dteEaster.add("d", -47);
	var dteAshWednesday = dteEaster.add("d", -46);
	var dteGoodFriday = dteEaster.add("d", -2);

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




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

	// ********* ********* ********* ********* ********* ********* ********* *********
	// *** holidays
	// ********* ********* ********* ********* ********* ********* ********* *********
	
	// New Years Day
	if (m==1 && d==1) {
		objEvent = new EventObj(m,d,y, "New Years Day", null, "scToday", null, null, "holidays");
		arrEvents[arrEvents.length] = objEvent;
	};

    
	// Martin Luther King Day, third Monday in January. 
	if (m==1 && intWeekday==1 && intWeekOfMonth==3) {
		objEvent = new EventObj(m,d,y, "M.L. King Day", null, "scToday", null, null, "holidays");
		arrEvents[arrEvents.length] = objEvent;
	};

	// President's Day, third Monday in February. 
	if (m==2 && intWeekday==1 && intWeekOfMonth==3) {
		objEvent = new EventObj(m,d,y, "Presidents Day", null, "scToday", null, null, "holidays");
		arrEvents[arrEvents.length] = objEvent;
	};
	
	// St. Valentines day
	if (m==2 && d==14) {
		objEvent = new EventObj(m,d,y, "Valentines Day", null, "scToday", null, null, "holidays");
		arrEvents[arrEvents.length] = objEvent;
	};

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

	/*// Daylight Savings time begins, first Sunday in April
	if (m==4 && intWeekday==0 && intWeekOfMonth==1) {
		objEvent = new EventObj(m,d,y, "Begin Daylight Savings", null, "scToday", null, null, "holidays");
		arrEvents[arrEvents.length] = objEvent;
	}; */
	
	// Mother's Day, second Sunday in May. 
	if (m==5 && intWeekday==0 && intWeekOfMonth==2) {
		objEvent = new EventObj(m,d,y, "Mothers Day", null, "scToday", null, null, "holidays");
		arrEvents[arrEvents.length] = objEvent;
	};

	//Memorial Day, Last Monday in May. 
	if (m==5 && intWeekday==1 && blnLast==true) {
		objEvent = new EventObj(m,d,y, "Memorial Day", null, "scToday", null, null, "holidays");
		arrEvents[arrEvents.length] = objEvent;
	};

	// Father's Day, third Sunday in June. 
	if (m==6 && intWeekday==0 && intWeekOfMonth==3) {
		objEvent = new EventObj(m,d,y, "Fathers Day", null, "scToday", null, null, "holidays");
		arrEvents[arrEvents.length] = objEvent;
	};

	// 4th of July
	if (m==7 && d==4) {
		objEvent = new EventObj(m,d,y, "Independence Day", null, "scToday", null, null, "holidays");
		arrEvents[arrEvents.length] = objEvent;
	};

	// Labor Day, first Monday in September. 
	if (m==9 && intWeekday==1 && intWeekOfMonth==1) {
		objEvent = new EventObj(m,d,y, "Labor Day", null, "scToday", null, null, "holidays");
		arrEvents[arrEvents.length] = objEvent;
	};

	// Columbus Day, second Monday in October 
	if (m==10 && intWeekday==1 && intWeekOfMonth==2) {
		objEvent = new EventObj(m,d,y, "Columbus Day", null, "scToday", null, null, "holidays");
		arrEvents[arrEvents.length] = objEvent;
	};

     /*
	// Daylight Savings Time ends, blnLast Sunday in October
	if (m==10 && intWeekday==0 && blnLast==true) {
		objEvent = new EventObj(m,d,y, "End Daylight Savings", null, "scToday", null, null, "holidays");
		arrEvents[arrEvents.length] = objEvent;
	};
	*/

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

	// Thanksgiving Day, fourth Thursday in November. 
	if (m==11 && intWeekday==4 && intWeekOfMonth==4) {
		objEvent = new EventObj(m,d,y, "Thanksgiving", null, "scToday", null, null, "holidays");
		arrEvents[arrEvents.length] = objEvent;
	};

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

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

	// Mardi Gras
	/*if ( dte.equalsTo(dteMardiGras) ) {
		objEvent = new EventObj(m,d,y, "Mardi Gras", null, "scEventPurple", null, null, "holidays");
		arrEvents[arrEvents.length] = objEvent;
	};	

	// Ash Wednesday (46 days before Easter)
	if ( dte.equalsTo(dteAshWednesday) ) {
		objEvent = new EventObj(m,d,y, "Ash Wednesday", null, "scEventBlue", null, null, "holidays");
		arrEvents[arrEvents.length] = objEvent;
	};	
	*/

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

	// Easter Sunday 
	if ( dte.equalsTo(dteEaster)) {
		objEvent = new EventObj(m,d,y, "Easter Sunday", null, "scToday", null, null, "holidays");
		arrEvents[arrEvents.length] = objEvent;
	};
		
		
	// ********* ********* ********* ********* ********* ********* ********* *********
	// *** every weekday functions
	// ********* ********* ********* ********* ********* ********* ********* *********

	// every sunday
	/*if (intWeekday==0) {
		objEvent = new EventObj(m,d,y, "every sunday", null, "scToday", null, null, null);
		arrEvents[arrEvents.length] = objEvent;
	}; 
	*/
	
	
	
	// every 2nd wednesday -- but only if there are no other events in that day
	if ( arrEvents.length == 0 && intWeekday==3 && (intWeekOfMonth==1 || intWeekOfMonth==3 || intWeekOfMonth==5  ) ) {
		
		badges = "american_business american_culture american_heritage american_labor animal_science archaeology archery architecture art astronomy athlete atomic_energy auto_mechanics aviation backpacking basketry bird_study bugling camping canoeing chemistry cinematography cit_community cit_nation cit_world climbing coin_collecting collections commcations computer cooking cyclingg denistry disabilt dog_care drafting electricity electronics emergency_preparedness energy engineering entrepeneurship environmental_science family_life farm_mechanics fingerprinting fire_safety first_aid fishing fish_and_wildlife forestry gardening geneolog geology golf graphic_arts hiking hikingg horsemanship indian_lore insects journalism landscape_archetecture law law_enforcement leatherwork life_saving mammal_study medicine metalwork model_design_building motorboating music nature oceanography orienteering painting personal_fitness personal_management pets photography pioneering plant_science plumbing pottery public_health public_speaking pulp_and_paper radio railroading reading reptile_amphibian_study rifle_shooting rowing safety salesmanship scholarship sculpture shotgun_shooting skating skiing small_boat_sailing soil_water_conservation space_exploration sports stamp_collecting surveying swimming textile theater traffic_safety truck_transportation veterinary_medicine waterskiing weather whitewater wilderness_survival woodwork wood_carving";   

		arrBadges = badges.split(" ");
		badge = arrBadges[(intWeekOfYear*237+d*23+y+m) % 119] ;  // pick somewhat random badge
		
        picName =  "<center><img src='../images/MeritBadges/" + badge + ".gif' alt = '" + badge + "' border='0' width='75' height='75' /> <br>";
			
		objEvent = new EventObj(m,d,y, picName, null, null, null, null, null);
		arrEvents[arrEvents.length] = objEvent;
		
	};
		
		
		
		
		
	// ********* ********* ********* ********* ********* ********* ********* *********
	// *** return the special events
	// ********* ********* ********* ********* ********* ********* ********* *********

	return arrEvents;
};







