// Live calendar source file copyright 2001 David Lawver
//Please do not remove URL from the source code. http://hotshift.com
  var HotShift = "http://hotshift.com";
  var LONGheading = "City of SeaTac (48-96)";
  var TableBGColor = "#FFFFC0";
  var HeadingColor = "#000000";
  var curdate = new Date();
  var curmonth = curdate.getMonth();
  var curyear = curdate.getFullYear();
  var trueyear = curdate.getFullYear();

// Holiday Variables 
var HolidayBGColor = "#C0FFFF";
var hol_count = "11";
var hol_name = new Array("New Years Day","M. L. King's Birthday","President's Day","Easter","Memorial Day","Independence Day","Labor Day","Columbus Day","Veteran's Day","Thanksgiving Day","Christmas Day");
var hol_eachyr = new Array(0,0,0,0,0,0,0,0,0,0,0);
var hol_month = new Array(1,1,2,0,5,7,9,10,11,11,12);
var hol_nwkday = new Array(0,3,3,-1,5,0,1,2,0,4,0);
var hol_day = new Array(1,2,2,1,2,4,2,2,11,5,25);
var hol_wkends = new Array(0,0,0,0,0,0,0,0,0,0,0);
var hol_date = new Array();
var hDays = new Array();
var hHolidays = new Array();
var hDayCount=0;
// End of Holiday Variables 

  var htmlarray = new Array();
  var Days_in_Month = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
  var Month_Label = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
  var Day_Label = new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');

  var Today = curdate.getDate();
  var htmlstring = "";

  var ie4=document.all;
  var ns6=document.getElementById&&!document.all;
  var Selected_Month;
  var Selected_Year;
function Header(Year, Month) {

  if (Month == 1) {
      if ((Year % 400 == 0) || ((Year % 4 == 0) && (Year % 100 != 0))) {
        Days_in_Month[1] = 29;
      }
            else {
                Days_in_Month[1] = 28;
      }
  }
  var Header_String = Month_Label[Month] + ' ' + Year;
  return Header_String;
}

function Make_HolidayList(Year) {
  if (Year <= 1970) {
    Year = 1970;
  }

  if (Year >= 2029) {
    Year = 2029;
  }
GetHolidayDates(Year);


  htmlstring = '<table width=100%><tr><td valign="top"><table align="center" border="3" CELLSPACING=1 cellpadding=3 FRAME="box" BGCOLOR="'+TableBGColor+'" BORDERCOLORLIGHT="808080">';
    htmlstring += '<tr><th colspan=2 BGCOLOR="'+TableBGColor+'" BORDERCOLOR="#000000"><FONT COLOR="'+HeadingColor+'">' + LONGheading + '</FONT></th></tr>';
      htmlstring += '<tr><th colspan=2 BGCOLOR="'+TableBGColor+'" BORDERCOLOR="#000000"><FONT COLOR="'+HeadingColor+'">' + Year + ' Holidays</th></tr>';

  for (i = 0; i<hol_count; i++){
      htmlstring += '<tr>';
      htmlstring += '<td><font color="'+HeadingColor+'">' + hol_name[i] + '</td>';
      htmlstring += '<td><font color="'+HeadingColor+'">' + Day_Label[hol_date[i].getDay()] + ' ' + Month_Label[hol_date[i].getMonth()] + ' ' + hol_date[i].getDate() + '</td>';
      htmlstring += '</tr>';
}

  htmlstring += '</table>';

//document.all.Calendar.innerHTML = htmlstring;
  cross_el=ns6? document.getElementById("Calendar") : document.all.Calendar;
  cross_el.innerHTML = htmlstring;
}

function On_Year() {
  var Year = document.when.year.value;
  if (Year.length == 4) {
      Selected_Year = Year;
      Make_HolidayList(Selected_Year);
  }
}

function Defaults() {
  if (!document.all)
  return
  var Mid_Screen = Math.round(document.body.clientWidth / 2);
  document.when.year.value = curyear;
  Selected_Year = curyear;
  Make_HolidayList(curyear);
}



function On_Now(){
  Selected_Year = curdate.getYear();
  Selected_Month = curdate.getMonth();
  Make_HolidayList(Selected_Year);
  document.when.year.value = Selected_Year;
}

//Get number of days from start date to date on calendar
function days_diff(start,current){
    var currentdays = Math.floor(current.getTime() / (1000 * 60 * 60 * 24)*1);
    var startdays = Math.floor(start.getTime() / (1000 * 60 * 60 * 24)*1);
    var daysdiff = currentdays-startdays;
    return daysdiff;
}

function GetHolidayDates(Y){
  for (i = 0; i<hol_count; i++){
    if (hol_nwkday[i] == -1){
      hol_date[i]=Easter(Y);
    }
    else if (hol_nwkday[i] == 0){
      hol_date[i]=new Date(Y,hol_month[i]-1,hol_day[i]);
    }
    else if (hol_nwkday[i] == 1 || hol_nwkday[i] == 2 || hol_nwkday[i] == 3 || hol_nwkday[i] == 4){
      var dd=NthDay(hol_nwkday[i],hol_day[i],hol_month[i],Y);
      hol_date[i]=new Date(Y,hol_month[i]-1,dd);
    }    else if (hol_nwkday[i] == 5){
      var dd=LastDay(hol_day[i],hol_month[i],Y);
      hol_date[i]=new Date(Y,hol_month[i]-1,dd);
    }
  }
}

function Holidays_In_Month(M){
  hDayCount=0;
  for (i = 0; i<hol_count; i++){
    if (hol_date[i].getMonth() == M){
      hDays[hDayCount]=hol_date[i].getDate();
      hHolidays[hDayCount]=hol_name[i];
      //alert(hDays[hDayCount]);
      hDayCount++;
    }
  }
}

function isHoliday(D){
  for (i = 0; i<hDayCount; i++){
    //alert(D);
    //alert(hDays[i]);
    if (hDays[i] == D){
      //alert(D);
        return 1;
        break;
      }
    }
  return 0;
}

function DayOfWeek(day,month,year){
  var a = Math.floor((14 - month)/12);
  var y = year - a;
  var m = month + 12*a - 2;
  var d = (day + y + Math.floor(y/4) - Math.floor(y/100) +
  Math.floor(y/400) + Math.floor((31*m)/12)) % 7;
  return d + 1;
}

function Easter(Y){
  var Y = Math.floor(Y/1);
  var C = Math.floor(Y/100);
  var N = Y - 19*Math.floor(Y/19);
  var K = Math.floor((C - 17)/25);
  var I = C - Math.floor(C/4) - Math.floor((C - K)/3) + 19*N + 15;
  var I2 = I - 30*Math.floor((I/30));
  var I3 = I2 - Math.floor(I2/28)*(1 - Math.floor(I2/28)*Math.floor(29/(I2 + 1))*Math.floor((21 - N)/11));
  var J = Y + Math.floor(Y/4) + I3 + 2 - C + Math.floor(C/4);
  J-=7*Math.floor(J/7);
  var L = I3 - J;
  var M = 3 + Math.floor((L + 40)/44);
  var D = L + 28 - 31*Math.floor(M/4);
  var E = new Date(Y,M-1,D);
  return E;
}

function LeapYear(year){
  if ((year/4)   != Math.floor(year/4))   return false;
  if ((year/100) != Math.floor(year/100)) return true;
  if ((year/400) != Math.floor(year/400)) return false;
  return true;
}

function NthDay(nth,weekday,month,year){
  return (nth-1)*7 + 1 + (7 + weekday - DayOfWeek((nth-1)*7 + 1,month,year))%7;
}

function NthDay(nth,WkDay,M,Yr){
  var AddDays=(nth-=1)*7;
  M-=1;
  WkDay-=1;
  for (var i = 1; i < 8; i++){
    var CurDate=new Date(Yr,M,i);
    if (CurDate.getDay()==WkDay){
      break;
    }
  }
  return i+=AddDays;
}

function LastDay(WkDay,M,Yr){
  M-=1;
  WkDay-=1;
    var last=Days_in_Month[M];
  for (var i = last; i > (last-8); i--){
    var CurDate=new Date(Yr,M,i);
    if (CurDate.getDay()==WkDay){
      break;
    }
  }
  return i;
}

// End of source file

