// ********* ********* ********* ********* ********* *********
// 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 noclass;
     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;
     };
     
       // * Special Training*/
     if (y==2008 && m==6 && d==21) {
        objEvent = new EventObj(m,d,y, "Shihan McClary Seminar", null, 
                               "scEventYellow", null, null, "adult-classes");
  
        arrEvents[arrEvents.length] = objEvent;
        noclass=1;
     }
     if (y==2008 && m==11 && (d==13 || d==27)) {
        noclass=1;
     }

     if (y==2008 && m==11 && d==14) {
        objEvent = new EventObj(m,d,y, "Shihan Jo Mirza Clinic", "News.html", 
                               "scEventYellow", null, null, "adult-classes");
  
        arrEvents[arrEvents.length] = objEvent;
        noclass=1;
     }
     // ********* ********* ********* ********* ********* ********* 
     // *** close dojo events functions
     // ********* ********* ********* ********* ********* *********
     // week before  4th of July from Saturday to Weekday afterwards
     if (y==2008 && ((m==6 && d >= 28) || (m==7 && d<= 7))) {
          objEvent = new EventObj(m,d,y, "Nationals", null, "scEventBlue", 
                                  null, null, "dojo-closed");
          arrEvents[arrEvents.length] = objEvent;
          noclass=1;
     };

     if (y==2009 && m==9 && d == 23) {
          noclass=1;
     };
     if (y==2009 && m==2 && d == 6) {
          noclass=1;
     };
     if (y==2008 && m==10 && d == 25) {
          objEvent = new EventObj(m,d,y, "Out of Town Tournament", null, 
                                  "scEventBlue", null, null, "dojo-closed");
          arrEvents[arrEvents.length] = objEvent;
          noclass=1;
     };
     if (y==2008 && m==10 && d == 31) {
          objEvent = new EventObj(m,d,y, "Halloween", null, "scEventBlue", 
                                  null, null, "dojo-closed");
          arrEvents[arrEvents.length] = objEvent;
          noclass=1;
     };
     if (y==2008 && m==11 && d == 15) {
          objEvent = new EventObj(m,d,y, "Budo Fest", null, 
                                  "scEventBlue", null, null, "dojo-closed");
          arrEvents[arrEvents.length] = objEvent;
          noclass=1;
     };
     if (y==2008 && m==11 && d == 14) {
          noclass=1;
     };
     if (y==2008 && m==12 && d >= 25 && d<= 31) {
          objEvent = new EventObj(m,d,y, "Holiday Break", null, "scEventBlue", 
                                  null, null, "dojo-closed");
          arrEvents[arrEvents.length] = objEvent;
          noclass=1;
     };


     // ********* ********* ********* ********* ********* ********* 
     // *** every weekday functions
     // ********* ********* ********* ********* ********* *********

     // every sunday
     if (intWeekday==0) {
          objEvent = new EventObj(m,d,y, "No Class", null, "scEventBlue", 
                                  null, null, "dojo-closed");
          arrEvents[arrEvents.length] = objEvent;
          noclass=1;
     };
     
     // every monday
     if (!noclass && intWeekday==1) {
          objEvent = new EventObj(m,d,y, "All Belts: 7:30pm", null, 
                                  "scEventPurple", 
                                  null, null, "adult-classes");
          arrEvents[arrEvents.length] = objEvent;
     };
     
     // every tuesday
     if (!noclass && intWeekday==2) {
          objEvent = new EventObj(m,d,y, "Brown-Black Belts: 7:30pm", null, 
                                  "scEventPurple", 
                                  null, null, "adult-classes");
          arrEvents[arrEvents.length] = objEvent;
     };
     
     // every wednesday
     if (!noclass && intWeekday==3) {
          objEvent = new EventObj(m,d,y, "White-Purple Belts: 6:30pm", null, 
                                  "scEventPurple", 
                                  null, null, "adult-classes");
          arrEvents[arrEvents.length] = objEvent;
     };
     
     // every thurs
     if (!noclass && intWeekday==4) {
          objEvent = new EventObj(m,d,y, 
                         "White-Black Belts: 6:30pm", 
                                  null, "scEventPurple", 
                                  null, null, "adult-classes");
          arrEvents[arrEvents.length] = objEvent;
     };
     
     // every friday
     if (!noclass && intWeekday==5) {
          objEvent = new EventObj(m,d,y, "All Belts: 6:30pm", null, 
                                  "scEventPurple", 
                                  null, null, "adult-classes");
          arrEvents[arrEvents.length] = objEvent;
     };
     
     // every saturday
     if (!noclass && intWeekday==6) {
          objEvent = new EventObj(m,d,y, "All Belts: 7:30am", null, 
                                  "scEventPurple", null, null, "adult-classes");
          arrEvents[arrEvents.length] = objEvent;
     };
     
   
     // every 2nd saturday 
     if (intWeekday==6 && (intWeekOfMonth==1 || intWeekOfMonth==3) ) {
     objEvent = new EventObj(m,d,y, "1st and 3rd saturday", null, 
                                  "scEventPurple", null, null, "notused");
        arrEvents[arrEvents.length] = objEvent;
     };

     // ********* ********* ********* ********* ********* ********* 
     // *** holidays
     // ********* ********* ********* ********* ********* *********
     
     // New Years Day
     if (m==1 && d==1) {
          objEvent = new EventObj(m,d,y, "New Years Day", null, "scEventBlue", 
                                  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, "scEventRed", 
                                  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, "scEventRed",
                                  null, null, "holidays");
          arrEvents[arrEvents.length] = objEvent;
     };

     // St. Valentines day
     if (m==2 && d==14) {
          objEvent = new EventObj(m,d,y, "Saint Valentines Day", null, 
                                  "scEventRed", 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, 
                                  "scEventGreen", null, null, "holidays");
          arrEvents[arrEvents.length] = objEvent;
     };

     // Daylight Savings time begins, second Sunday in March
     if (m==3 && intWeekday==0 && intWeekOfMonth==2) {
          objEvent = new EventObj(m,d,y, "Begin Daylight Savings", null, 
                                  "scEventGreen", 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, "scEventRed", 
                                  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, "scEventRed", 
                                  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, "scEventRed", 
                                  null, null, "holidays");
          arrEvents[arrEvents.length] = objEvent;
     };

     // 4th of July
     if (m==7 && d==4) {
          objEvent = new EventObj(m,d,y, "Fourth of July", null, "scEventBlue", 
                                  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, "scEventRed", 
                                  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, "Colombus Day", null, "scEventRed", 
                                  null, null, "holidays");
          arrEvents[arrEvents.length] = objEvent;
     };

     // Daylight Savings Time ends, first Sunday in November
     if (m==11 && intWeekday==0 && intWeekOfMonth==1) {
          objEvent = new EventObj(m,d,y, "End Daylight Savings", null, 
                                  "scEventGreen", null, null, "special");
          arrEvents[arrEvents.length] = objEvent;
     };

     // Halloween
     if (m==10 && d==31) {
          objEvent = new EventObj(m,d,y, "Halloween", null, "scEventOrange", 
                                  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, "scEventRed", 
                                  null, null, "holidays");
          arrEvents[arrEvents.length] = objEvent;
     };

     // Christmas
     if (m==12 && d==25) {
          objEvent = new EventObj(m,d,y, "Christmas Day", null, "scEventRed", 
                                  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, "scEventRed", 
                                  null, null, "holidays");
          arrEvents[arrEvents.length] = objEvent;
     };

     // Easter Sunday 
     if ( dte.equalsTo(dteEaster)) {
          objEvent = new EventObj(m,d,y, "Easter Sunday", null, "scEventGreen", 
                                  null, null, "holidays");
          arrEvents[arrEvents.length] = objEvent;
     };
          
     return arrEvents;
};







