﻿function worldClock(zone, region) {
    var dst = 0;
    var time = new Date();

    var gmtMS = time.getTime() + (time.getTimezoneOffset() * 60000);
    var gmtTime = new Date(gmtMS);
    var day = gmtTime.getDate();
    var month = gmtTime.getMonth();
    var year = gmtTime.getYear();
    if (year < 1000) {
        year += 1900;
    }
    var monthArray = new Array("January", "February", "March", "April", "May", "June", "July", "August",
				"September", "October", "November", "December");
    var monthDays = new Array("31", "28", "31", "30", "31", "30", "31", "31", "30", "31", "30", "31");
    if (year % 4 == 0) {
        monthDays = new Array("31", "29", "31", "30", "31", "30", "31", "31", "30", "31", "30", "31");
    }
    if (year % 100 == 0 && year % 400 != 0) {
        monthDays = new Array("31", "28", "31", "30", "31", "30", "31", "31", "30", "31", "30", "31");
    }

    var hr = gmtTime.getHours() + zone;
    var min = gmtTime.getMinutes();
    var sec = gmtTime.getSeconds();

    if (hr >= 24) {
        hr = hr - 24;
        day -= -1;
    }
    if (hr < 0) {
        hr -= -24;
        day -= 1;
    }
    if (hr < 10) {
        hr = " " + hr;
    }
    if (min < 10) {
        min = "0" + min;
    }
    if (sec < 10) {
        sec = "0" + sec;
    }
    if (day <= 0) {
        if (month == 0) {
            month = 11;
            year -= 1;
        }
        else {
            month = month - 1;
        }
        day = monthDays[month];
    }
    if (day > monthDays[month]) {
        day = 1;
        if (month == 11) {
            month = 0;
            year -= -1;
        }
        else {
            month -= -1;
        }
    }
    if (region == "NAmerica") {
        if (DST()) {
            dst = 1;
        }
    }
    if (dst == 1) {
        hr -= -1;
        if (hr >= 24) {
            hr = hr - 24;
            day -= -1;
        }
        if (hr < 10) {
            hr = " " + hr;
        }
        if (day > monthDays[month]) {
            day = 1;
            if (month == 11) {
                month = 0;
                year -= -1;
            }
            else {
                month -= -1;
            }
        }
        var apm = " AM";
        if (hr >= 12) {
            if (hr > 12) {
                hr = hr - 12;
            }
            apm = " PM";
        }
        return hr + ":" + min + ":" + sec + apm + " (EDT)";
    }
    else {
        var apm = " AM";
        if (hr >= 12) {
            if (hr > 12) {
                hr = hr - 12;
            }
            apm = " PM";
        }
        return hr + ":" + min + ":" + sec + apm + " (EST)";
    }
}

function worldClockZone() {

    var divClock = document.getElementById("clockText");
    if (divClock)
    {
        divClock.innerHTML = worldClock(-5, "NAmerica");
        setTimeout("worldClockZone()", 1000);
    }
}
$(function () {
    worldClockZone();
})
//window.onload = worldClockZone;

function DST() {
    var today = new Date;
    var yr = today.getFullYear();
    var dst_start = new Date("March 14, " + yr + " 02:00:00"); // 2nd Sunday in March can't occur after the 14th 
    var dst_end = new Date("November 07, " + yr + " 02:00:00"); // 1st Sunday in November can't occur after the 7th
    var day = dst_start.getDay(); // day of week of 14th
    dst_start.setDate(14 - day); // Calculate 2nd Sunday in March of this year
    day = dst_end.getDay(); // day of the week of 7th
    dst_end.setDate(7 - day); // Calculate first Sunday in November of this year
    if (today >= dst_start && today < dst_end) { //does today fall inside of DST period?
        return true; //if so then return true
    }
    return false; //if not then return false
}
