/*
-------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------
EST Header Clock
-------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------
*/
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 makeArray()    {
    this[0] = makeArray.arguments.length;
    for (i = 0; i<makeArray.arguments.length; i++)
        this[i+1] = makeArray.arguments[i];
}
var daysofmonth   = new makeArray( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
var daysofmonthLY = new makeArray( 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
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) {
    if (nth > 0) return (nth-1)*7 + 1 + (7 + weekday - DayOfWeek((nth-1)*7 + 1,month,year))%7;
    if (LeapYear(year)) var days = daysofmonthLY[month];
    else                var days = daysofmonth[month];
    return days - (DayOfWeek(days,month,year) - weekday + 7)%7;
}
var sun=1,mon=2,tue=3,wed=4,thu=5,fri=6,sat=7;
var jan=1,feb=2,mar=3,apr=4,may=5,jun=6,jul=7,aug=8,sep=9,oct=10,nov=11,dec=12;
var first=1,second=2,third=3,fourth=4,fifth=5,last=-1;
var daysofweek   = new makeArray('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
var monthsofyear = new makeArray('January','February','March','April','May','June','July','August','September','October','November','December');
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 Nths(day) { 
    if (day == 1 || day == 21 || day == 31) return 'st';
    if (day == 2 || day == 22) return 'nd';
    if (day == 3 || day == 23) return 'rd';
    return 'th';
}

function FullDate(d) {
  var curr_day=d.getDate();
  var curr_month=d.getMonth()+1;
  var curr_year=d.getFullYear();
  var curr_hour= d.getHours();
  var a_p = "";
  a_p = (curr_hour < 12)?"AM":"PM";
  if (curr_hour == 0)  curr_hour=12;
  if (curr_hour > 12)  curr_hour=curr_hour - 12;
  var curr_min = d.getMinutes();
  curr_min = curr_min + "";
  
  if (curr_min.length == 1) curr_min = "0" + curr_min;
    return curr_hour + ':' + curr_min + ' ' + a_p;
}
function getEST() {
    // create Date object for current location
    d = new Date();
    // convert to msec
    // add local time zone offset 
    // get UTC time in msec
    utc = d.getTime() + (d.getTimezoneOffset() * 60000);
    // create new Date using supplied offset
    var nd1 = new Date(utc + (3600000*-5));
   
    var year = nd1.getFullYear();
    //daylight savings start
    var dst_spring = new Date(nd1);
    //dst_spring.setMonth(3); // April
    //dst_spring.setDate(NthDay(1,1,4,year)); // first Sunday
    // Update for 2007 DST Switch
    dst_spring.setMonth(2); // March
    dst_spring.setDate(NthDay(2,1,3,year)); // second Sunday
    dst_spring.setHours(2,0,0,0)
    //daylight savings end
    var dst_fall = new Date(nd1);
    dst_fall.setMonth(10); // November
    //dst_fall.setDate(parseInt(NthDay(-1,1,10,year)));
    // Update for 2007 DST Switch
    dst_fall.setDate(parseInt(NthDay(1,1,11,year)));
    dst_fall.setHours(2,0,0,0)
    // create new date for daylight savings
    var nd2 = new Date(utc + (3600000*(-5+1)));
    
    est=(nd2 < dst_fall && nd1 >= dst_spring)?nd2:nd1;
    est=FullDate(est) 

    document.getElementById('HeaderClock').innerHTML=  est + ' ET';
    setTimeout("getEST()",60000);
}
