// ********* ********* ********* ********* ********* ********* ********* ********* *********
// 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 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;
	};
	
	// ********* ********* ********* ********* ********* ********* ********* *********
	// *** every weekday functions
	// ********* ********* ********* ********* ********* ********* ********* *********

	// Sunday Worship Services
	if (intWeekday==0) {
		objEvent = new EventObj(m,d,y, "Worship Services", "http://www.vbbchurch.com/sunday.htm", "scEventPurple");
		arrEvents[arrEvents.length] = objEvent;
	};

	// Prayer Warriors
	if (intWeekday==3) { 
        // don't do Wednesday before thanksgiving 2008
        if ((m==12 && d==30 && y==2009) || (m==3 && d==31 && y==2010)) {
        // no event 
        } else {
		objEvent = new EventObj(m,d,y, "Prayer Warriors", "http://www.vbbchurch.com/prayer.htm", "scEventYellow");
		arrEvents[arrEvents.length] = objEvent;
	};
        };
	
	// Wednesday Worship Services
	if (intWeekday==3) {
        // don't do Wednesday before thanksgiving
        if ((m==8 && d==11 && y==2010) || (m==8 && d==4 && y==2010) || (m==9 && d==15 && y==2010) || (m==6 && d==23 && y==2010) || (m==7 && d==14 && y==2010)) {
        // no event 
	} else {
		objEvent = new EventObj(m,d,y, "Worship Service", "http://www.vbbchurch.com/wednesday.htm", "scEventPurple");
		arrEvents[arrEvents.length] = objEvent;
	};
        };
        
        // Youth Choir
        if (m==8 && d==4)  {
                objEvent = new EventObj(m,d,y, "Youth Choir", null , "scEventRed");
                arrEvents[arrEvents.length] = objEvent;
        };
      

	// Art Classes
	if (intWeekday==2) { 
        // don't do Tuesday 
        if ((m==6 && d==15 && y==2010) || (m==6 && d==22 && y==2010) || (m==6 && d==29 && y==2010) || (m==7) || (m==8) || (m==7 && d==20 && y==2010) || (m==7 && d==27 && y==2010)) {
        // no event 
        } else {
		objEvent = new EventObj(m,d,y, "Art Class", "http://www.vbbchurch.com/watercolor.htm", "scEventPurple");
		arrEvents[arrEvents.length] = objEvent;
	};
        };


	// Fishing Trip
	if ((m==9 && d==9) || (m==9 && d==10) || (m==9 && d==11)) {
		objEvent = new EventObj(m,d,y, "Fishing Trip", "http://www.vbbchurch.com/Fishing.htm", "scEventGreen");
		arrEvents[arrEvents.length] = objEvent;
	};
        
	// Beth Moore Bible Study
	if ((m==7 && d==16 && y==2009) || (m==7 && d==23 && y==2009)  || (m==7 && d==30 && y==2009) || (m==8 && d==6 && y==2009)) {
		objEvent = new EventObj(m,d,y, "Bible Study", "http://www.vbbchurch.com/bethmoore.htm", "scEventOrange");
		arrEvents[arrEvents.length] = objEvent;
	};
        

	// Community Dance 2
	if ((m==7 && d==17) || (m==7 && d==24) || (m==7 && d==31)) {
		objEvent = new EventObj(m,d,y, "Summer Dance Camp", "http://valleybrookcommunitydancecenterproject.com" , "scEventGreen");
		arrEvents[arrEvents.length] = objEvent;
	};

	// Community Dance 
	if ((m==8 && d==2) || (m==8 && d==9) || (m==8 && d==16) || (m==8 && d==23) || (m==8 && d==30)) {
		objEvent = new EventObj(m,d,y, "Ballet Classes", "http://valleybrookcommunitydancecenterproject.com" , "scEventGreen");
		arrEvents[arrEvents.length] = objEvent;
	};

	// Ballet 2
	if ((m==7 && d==12) || (m==7 && d==13) || (m==7 && d==14) || (m==7 && d==15) || (m==7 && d==16) || (m==7 && d==19) || (m==7 && d==20) || (m==7 && d==21) || (m==7 && d==22) || (m==7 && d==23) || (m==7 && d==26) || (m==7 && d==27) || (m==7 && d==28) || (m==7 && d==29) || (m==7 && d==30)) { 
        // don't do Monday 
        if ((m==5 && d==31 && y==2010) || (m==12 && d==23 && y==2009)) {
        // no event 
        } else {
		objEvent = new EventObj(m,d,y, "Summer Dance Camp", "http://valleybrookcommunitydancecenterproject.com", "scEventGreen");
		arrEvents[arrEvents.length] = objEvent;
	};
        };

	// Ballet
	if ((m==8 && d==7) || (m==8 && d==14) || (m==8 && d==21) || (m==8 && d==28) || (m==9 && d==4) || (m==9 && d==11) || (m==9 && d==18) || (m==9 && d==25)) { 
        // don't do Monday 
        if ((m==5 && d==31 && y==2010) || (m==12 && d==23 && y==2009)) {
        // no event 
        } else {
		objEvent = new EventObj(m,d,y, "Ballet Classes", "http://valleybrookcommunitydancecenterproject.com", "scEventGreen");
		arrEvents[arrEvents.length] = objEvent;
	};
        };

	// Gospel Sing
	if (m==12 && d==22) {
		objEvent = new EventObj(m,d,y, "Gospel Sing", null , "scEventOrange");
		arrEvents[arrEvents.length] = objEvent;
	};

	// Voting
	if (m==7 && d==20) {
		objEvent = new EventObj(m,d,y, "Voting Primaries", "http://www.thevoterguide.org/v/ajc10/" , "scEventRed");
		arrEvents[arrEvents.length] = objEvent;
	};

        // Deacon meeting
	if (intWeekday==0 && (intWeekOfMonth==1) || (m==6 && d==13 && y==2010)) {
	        if (m==6 && d==6 && y==2010) {
        // no event 
        } else {
		objEvent = new EventObj(m,d,y, "Deacon Meeting","http://www.vbbchurch.com/deacon.htm", "scEventYellow");
		arrEvents[arrEvents.length] = objEvent;
	};
	};

        // Over the hill 
	if (intWeekday==2) {
		objEvent = new EventObj(m,d,y, "Over the Hill", "http://www.vbbchurch.com/hill.htm" , "scEventOrange");
		arrEvents[arrEvents.length] = objEvent;
	};

        // Montclair
	if (intWeekday==2 && (intWeekOfMonth==1) ) {
	        if ((m==7 && d==6 && y==2010) || (m==6 && d==13 && y==2010)) {
        // no event 
                } else {
		objEvent = new EventObj(m,d,y, "Montclair","http://www.vbbchurch.com/montclair.htm", "scEventBlue");
		arrEvents[arrEvents.length] = objEvent;
	};
	};
	
        // finance meeting
	if (intWeekday==0 && (intWeekOfMonth==2) || (m==5 && d==16 && y==2010) || (m==6 && d==20 && y==2010)) {
	        // don't do Wednesday before thanksgiving 2008
        if ((m==5 && d==9 && y==2010) || (m==6 && d==13 && y==2010)) {
        // no event 
        } else {
		objEvent = new EventObj(m,d,y, "Finance Meeting","http://www.vbbchurch.com/finance.htm", "scEventBlue");
		arrEvents[arrEvents.length] = objEvent;
	};
	};


        // council meeting
	if (intWeekday==0 && (intWeekOfMonth==2) || (m==5 && d==16 && y==2010) || (m==6 && d==20 && y==2010)) {
		        // don't do Wednesday before thanksgiving 2008
        if ((m==5 && d==9 && y==2010) || (m==6 && d==13 && y==2010)) {
        // no event 
        } else {
		objEvent = new EventObj(m,d,y, "Council Meeting","http://www.vbbchurch.com/council.htm", "scEventYellow");
		arrEvents[arrEvents.length] = objEvent;
	};
    };

        // keenagers
	if ((m==6 && d==17) || (m==5 && d==13) || (m==9 && d==16) || (m==8 && d==19)) {
		objEvent = new EventObj(m,d,y, "Keenagers","http://www.vbbchurch.com/keenagers.htm", "scEventGreen");
		arrEvents[arrEvents.length] = objEvent;
	};
	
        // Brotherhood
	if ((m==6 && d==19) || (m==7 && d==17) || (m==8 && d==21) || (m==9 && d==18)) {
		objEvent = new EventObj(m,d,y, "Brotherhood","http://www.vbbchurch.com/brotherhood.htm", "scEventYellow");
		arrEvents[arrEvents.length] = objEvent;
	};

        // Media
	if ((m==12 && d==16)|| (m==12 && d==14) || (m==12 && d==11)) {
		objEvent = new EventObj(m,d,y, "Media & Pub","http://www.vbbchurch.com/media&pub.htm", "scEventGreen");
		arrEvents[arrEvents.length] = objEvent;
	};
        // First Place
	if ((m==7 && d==4) || (m==7 && d==11) || (m==7 && d==18) || (m==7 && d==25)|| (m==8 && d==1) || (m==8 && d==8) || (m==8 && d==15) || (m==8 && d==22)|| (m==8 && d==29) || (m==3 && d==28)) {
		objEvent = new EventObj(m,d,y, "First Place","http://www.vbbchurch.com/FirstPlace.htm", "scEventGreen");
		arrEvents[arrEvents.length] = objEvent;
	};

        // wmu 
	if ((m==6 && d==22) || (m==8 && d==24) || (m==4 && d==20) || (m==5 && d==18)) {
		objEvent = new EventObj(m,d,y, "WMU","http://www.vbbchurch.com/wmuc.htm", "scEventGreen");
		arrEvents[arrEvents.length] = objEvent;
	};

        // church conference
        if ((m==6 && d==23) || (m==7 && d==14) || (m==9 && d==15) || (m==8 && d==11)) {
                objEvent = new EventObj(m,d,y, "Conference","http://www.vbbchurch.com/conference.htm", "scEventBlue");
                arrEvents[arrEvents.length] = objEvent;
        };

	// Hanging of the Green
	if (m==11 && d==29) {
		objEvent = new EventObj(m,d,y, "Hanging of Green",null, "scEventGreen");
		arrEvents[arrEvents.length] = objEvent;
	};

	// ********* ********* ********* ********* ********* ********* ********* *********
	// *** holidays
	// ********* ********* ********* ********* ********* ********* ********* *********
	
	// New Years Day
	if (m==1 && d==1) {
		objEvent = new EventObj(m,d,y, "New Years Day", null, "scEventBlue");
		arrEvents[arrEvents.length] = objEvent;
	};

	// Valentines Day
	if (m==2 && d==14) {
		objEvent = new EventObj(m,d,y, "Valentines Day", null, "scEventBlue");
		arrEvents[arrEvents.length] = objEvent;
	};

	// Daylight Savings time begins, first Sunday in April
	if ((m==4 && intWeekday==0 && intWeekOfMonth==1 && y<2007) || (m==3 && intWeekday==0 && intWeekOfMonth==2 && y>=2007))
	{
		objEvent = new EventObj(m,d,y, "Daylight Savings", null, "scEventOrange");
		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, "scEventRed");
		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, "scEventGreen");
		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, "scEventRed");
		arrEvents[arrEvents.length] = objEvent;
	};

	// 4th of July
	if (m==7 && d==4) {
		objEvent = new EventObj(m,d,y, "Fourth of July", null, "scEventBlue");
		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, "scEventRed");
		arrEvents[arrEvents.length] = objEvent;
	};


	// Daylight Savings Time ends, blnLast Sunday in October
	if ((m==10 && intWeekday==0 && blnLast==true && y<2007) || (m==11 && intWeekday==0 && intWeekOfMonth==1 && y>=2007))
	{
		objEvent = new EventObj(m,d,y, "End Daylight Savings", null, "scEventBlack");
		arrEvents[arrEvents.length] = objEvent;
	};

	// Halloween
	if (m==10 && d==31) {
		objEvent = new EventObj(m,d,y, "Halloween", null, "scEventOrange");
		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, "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;
	};

 	// Sunday Night Sing
	if ((m==7 && d==11) || (m==8 && d==29)) {
		objEvent = new EventObj(m,d,y, "Sun Nite Sing", null, "scEventRed");
		arrEvents[arrEvents.length] = objEvent;
	};

        // Veterans Day
	if (m==11 && d==11) {
		objEvent = new EventObj(m,d,y, "Veterans Day", null, "scEventRed");
		arrEvents[arrEvents.length] = objEvent;
	};

        // Watch Night Service
	if (m==12 && d==31) {
		objEvent = new EventObj(m,d,y, "Watch Night", null, "scEventRed");
		arrEvents[arrEvents.length] = objEvent;
	};

        // Church Office Closed
	if ((m==11 && d==26 && y==2009) || (m==11 && d==27 && y==2009) || (m==12 && d==24) || (m==12 && d==25)
         || (m==9 && d==6 && y==2010)) {
		objEvent = new EventObj(m,d,y, "Office Closed", null, "scEventGray");
		arrEvents[arrEvents.length] = objEvent;
	};

        // Church Office Closed
	if (m==7 && d==5) {
		objEvent = new EventObj(m,d,y, "Office Closed", null, "scEventGray");
		arrEvents[arrEvents.length] = objEvent;
	};

        // Summer Kickoff
	if (m==6 && d==20 && y==2009) {
		objEvent = new EventObj(m,d,y, "Summer Kickoff", "http://www.vbbchurch.com/summer.htm", "scEventOrange");
		arrEvents[arrEvents.length] = objEvent;
	};

        // Ladies Tea
	if (m==4 && d==25 && y==2009) {
		objEvent = new EventObj(m,d,y, "Ladies Tea", "http://www.vbbchurch.com/Tea.htm", "scEventGreen");
		arrEvents[arrEvents.length] = objEvent;
	};
	// ********* ********* ********* ********* ********* ********* ********* *********
	// *** Easter holidays
	// ********* ********* ********* ********* ********* ********* ********* *********

	// Easter Sunday 
	if (m==4 && d==4 && y==2010) {
		objEvent = new EventObj(m,d,y, "Easter Sunday", null, "scEventGreen");
		arrEvents[arrEvents.length] = objEvent;
	};
		
	// Sunrise Service 
	if (m==4 && d==12 && y==2009) {
		objEvent = new EventObj(m,d,y, "Sunrise Service", "http://www.vbbchurch.com/sunrise.htm", "scEventYellow");
		arrEvents[arrEvents.length] = objEvent;
	};

	// Maundy Thursday 
	if (m==4 && d==1 && y==2010) {
		objEvent = new EventObj(m,d,y, "Maundy Thursday", null, "scEventBlack");
		arrEvents[arrEvents.length] = objEvent;
	};
	
		// Good Friday 
	if (m==4 && d==2 && y==2010) {
		objEvent = new EventObj(m,d,y, "Good Friday", null, "scEventGray");
		arrEvents[arrEvents.length] = objEvent;
	};
	
		// Easter Cantata 
	if (m==4 && d==5 && y==2009) {
		objEvent = new EventObj(m,d,y, "Easter Cantata", null, "scEventGreen");
		arrEvents[arrEvents.length] = objEvent;
	};

	// ********* ********* ********* ********* ********* ********* ********* *********
	// *** One time events
	// ********* ********* ********* ********* ********* ********* ********* *********
	
	// Friday Night Movie
	if ((m==6 && d==25) || (m==7 && d==30) || (m==8 && d==27) || (m==9 && d==24)){
		objEvent = new EventObj(m,d,y, "Friday Movie", "http://www.vbbchurch.com/movie.htm", "scEventOrange");
		arrEvents[arrEvents.length] = objEvent;
	};

	// Childrens Meeting
	if ((m==1 && d==25 && y==2009) || (m==2 && d==22 && y==2009) || (m==3 && d==29 && y==2009)){
		objEvent = new EventObj(m,d,y, "Childrens Meeting", null , "scEventBlue");
		arrEvents[arrEvents.length] = objEvent;
	};

	// outreach
	if ((m==6 && d==27) || (m==8 && d==22) || (m==7 && d==25) || (m==9 && d==26))       {
		objEvent = new EventObj(m,d,y, "Outreach", null , "scEventYellow");
		arrEvents[arrEvents.length] = objEvent;
	};

 	// Family Night Supper
	if ((m==9 && d==5) || (m==7 && d==4))          {
		objEvent = new EventObj(m,d,y, "Family Night Supper", "http://www.vbbchurch.com/family.htm" , "scEventOrange");
		arrEvents[arrEvents.length] = objEvent;
	};
	
 	// Ice Cream Social
	if (m==8 && d==1)          {
		objEvent = new EventObj(m,d,y, "Ice Cream Social", "http://www.vbbchurch.com/family.htm" , "scEventOrange");
		arrEvents[arrEvents.length] = objEvent;
	};

 	// Quiz
	if ((m==9 && d==19 && y==2009) || (m==9 && d==20 && y==2009) || (m==10 && d==17 && y==2009) || (m==10 && d==18 && y==2009) || (m==11 && d==21 && y==2009) || (m==11 && d==22 && y==2009))           {
		objEvent = new EventObj(m,d,y, "Quiz", "http://www.vbbchurch.com/quiz.htm" , "scEventYellow");
		arrEvents[arrEvents.length] = objEvent;
	};

 	// Homecoming
	if (m==6 && intWeekday==0 && intWeekOfMonth==1)         {
		objEvent = new EventObj(m,d,y, "Homecoming", null , "scEventYellow");
		arrEvents[arrEvents.length] = objEvent;
	};

		// Yard Sale
	if (m==9 && d==26 && y==2009) {
		objEvent = new EventObj(m,d,y, "Yard Sale", null, "scEventBlue");
		arrEvents[arrEvents.length] = objEvent;
	};


		// Deacon Cookout
	if (m==9 && d==20 && y==2009) {
		objEvent = new EventObj(m,d,y, "Deacon Cookout", null, "scEventGreen");
		arrEvents[arrEvents.length] = objEvent;
	};

		// Kid's Fishing Day
	if (m==4 && d==17) {
		objEvent = new EventObj(m,d,y, "Kid's Fishing", "http://www.vbbchurch.com/kidsfishingday.htm", "scEventGreen");
		arrEvents[arrEvents.length] = objEvent;
	};


    // establish the initial (or anchor) date
    var dteAnchor = new Date(2008, 10, 15);
    // find the number of days between them
    var intDaysApart = Math.round((dte.valueOf() - dteAnchor.valueOf())/86400000);
    // do we have a positive number? (don't write events earlier than the anchor date)
    if (intDaysApart >= 0)
    {
        // divide the days apart by two weeks
        var sngResult = intDaysApart/14;
        // if the result is an integer value, write the event
        if (parseInt(sngResult, 10) == sngResult)
        {
            objEvent = new EventObj(m,d,y, "Bike Ride", "http://www.vbbchurch.com/bike.htm", "scEventRed");
            arrEvents[arrEvents.length] = objEvent;

        };
    };

		
	return arrEvents;
};







