var January   = 0;
var February  = 1;
var March     = 2;
var April     = 3;
var May       = 4;
var June      = 5;
var July      = 6;
var August    = 7;
var September = 8;
var October   = 9;
var November  = 10;
var December  = 11;

function Event (description, stylesheet, startMonth, startDate, endMonth, endDate)
{
   this.description = description;
   this.stylesheet  = stylesheet;
   this.startMonth  = startMonth;
   this.endMonth    = endMonth;
   this.startDate   = startDate;
   this.endDate     = endDate;
   return this;
}

// comments on events:            Description           Stylesheet         Start Mo, Day  End Month, Day
var Events = new Array (new Event("New Year's Day",     "newyears.css",    December,  31, January,    1),
                        new Event("Epiphany",           "easter.css",      January,    6, January,    6),
                        new Event("St Valentine's Day", "stvalentine.css", February,  14, February,  14),
                        new Event("President's Day",    "patriotic.css",   February,  16, February,  16), //changes
                        new Event("Ash Wednesday",      "easter.css",      February,  25, February,  25), //changes
                        new Event("St Patrick's Day",   "stpatrick.css",   March,     17, March,     17),
                        new Event("Palm Sunday",        "spring.css",      April,      5, April,      5), //changes
                        new Event("Good Friday",        "goodfriday.css",  April,     17, April,     17), //changes
                        new Event("Easter Sunday",      "easter.css",      March,     19, March,     19), //changes
                        new Event("Memorial Day",       "patriotic.css",   May,       23, May,       25), //changes
                        new Event("Flag Day",           "patriotic.css",   June,      14, June,      14),
                        new Event("Independance Day",   "patriotic.css",   July,       4, July,       4),
                        new Event("September 11th",     "patriotic.css",   September, 11, September, 11),
                        new Event("Halloween",          "fall.css",        October,   17, October,   31),
                        new Event("Election Day",       "patriotic.css",   November,   3, November,   3), //changes
                        new Event("Veteran's Day",      "patriotic.css",   November,  11, November,  11), //changes
                        new Event("Thanksgiving",       "fall.css",        November,  22, November,  26), //changes
                        new Event("Christmas",          "christmas.css",   December,   1, December,  25),
                        new Event("Winter",             "winter.css",      January,    1, March,     19), //changes
                        new Event("Spring",             "spring.css",      March,     20, June,      20), //changes
                        new Event("Summer",             "summer.css",      June,      21, September, 21), //changes
                        new Event("Fall",               "fall.css",        September, 22, December,  20), //changes
                        new Event("Winter",             "winter.css",      December,  21, December,  31), //changes
                        new Event("Any Day",            "styles.css",      January,    1, December,  31));

function ChooseStyle ()
{
   var today = new Date();
   var month = today.getMonth();
   var date  = today.getDate();
   var index = 0;
   var base  = "styles/";

   // loop through the array - the last entry in the array must match
   while (index < Events.length)
   {
      // starts and ends on this month and today is between the start and end days
      if ((Events[index].startMonth == month) && (Events[index].endMonth == month) &&
          (Events[index].startDate <= date) && (Events[index].endDate >= date))
         return base + Events[index].stylesheet;

      // starts and ends on different months, this is start month, starts before today
      if ((Events[index].startMonth != Events[index].endMonth) &&
          (Events[index].startMonth == month) && (Events[index].startDate <= date))
         return base + Events[index].stylesheet;

      // starts and ends on different months, this is end month, ends after today
      if ((Events[index].startMonth != Events[index].endMonth) &&
          (Events[index].endMonth == month) && (Events[index].endDate >= date))
         return base + Events[index].stylesheet;


      // this month is between start and end months
      if ((Events[index].startMonth < month) && (Events[index].endMonth > month))
         return base + Events[index].stylesheet;

      // increment index if we get here (no match)
      index++;
   }
}

function SetStyle (style)
{
   document.getElementById('style').href = style;
}

//document.getElementById("style").href=(ChooseStyle()).toString();
SetStyle((ChooseStyle()).toString());
