﻿
var oInterval = "";
var Months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
// Structure of the array:
//	Name of clock target; standard time zone; daylight saving time zone; offset from GMT, standard; offset from GMT, daylight saving; time management system
var ACClocks = [
			["California (PST)", "PST", "PDT", -8, -7, "USDST"],
			["Arizona (non-DST)", "AZT", "AZT", -7, -7, "USDST"],
			["Colorado (MST)", "MST", "MDT", -7, -6, "USDST"],
			["New Orleans (CST)", "CST", "CDT", -6, -5, "USDST"],
			["New York (EST)", "EST", "EDT", -5, -4, "USDST"],
			["GMT (Zulu)", "GMT", "GMT", 0, 0, "GMT"],
			["Baghdad (Charlie)", "IQT", "IQDT", 3, 4, "IQDST"]
		]

function fnStartInterval() {
    oInterval = window.setInterval("fnRecycle()", 1000);
}

function fnRecycle() {
    var IsLocal = false;
    var useDate = new Date();
    var iOffset = useDate.getTimezoneOffset() * 60000;
    var iUseOffset = (useDate.getTimezoneOffset() / 60) * -1;
    var UTCDate = useDate.setTime(useDate.getTime() + iOffset); //manually create GMT
    
    for (i = 0; i < ACClocks.length; i++) {
        var useOffset = 0;
        
        if (IsDST(useDate, ACClocks[i][5])) useOffset = ACClocks[i][4];
        else useOffset = ACClocks[i][3];
        useDate = dateAdd("h", useOffset, UTCDate); //manually create zone time, based upon GMT
        
        var iYear = useDate.getFullYear();
        var iMonth = useDate.getMonth();
        var iDate = useDate.getDate();
        var iHours = useDate.getHours();
        
        if (iHours < 10) {
            iHours = "0" + iHours;
        }
        
        var sMinutes = useDate.getMinutes();
        if (sMinutes < 10) {
            sMinutes = "0" + sMinutes;
        }
        
        var sSeconds = useDate.getSeconds();
        if (sSeconds < 10) {
            sSeconds = "0" + sSeconds;
        }
        
        var dateLocal = new Date(iYear, iMonth, iDate, iHours, sMinutes, sSeconds);
        var objObject = "objTimer" + i;
        objObject = document.getElementById(objObject);
        
        if (iUseOffset == useOffset) IsLocal = true;
        else IsLocal = false;

        if (IsLocal) objObject.style.color = "5991b2";
        else objObject.style.color = "ffffff";
        
        var nameClock = ACClocks[i][0];
        objObject.innerHTML = nameClock + "<br>" + iHours + ":" + sMinutes + ":" + sSeconds;
    }
}



function IsDST(d, strDST) {
    if (strDST == "IQDST") {
        var dateBegin = new Date();
        var dateEnd = new Date();
        dateBegin.setYear(d.getFullYear());
        dateBegin.setMonth(3);
        dateBegin.setDate(1);
        dateEnd.setYear(d.getFullYear());
        dateEnd.setMonth(9);
        dateEnd.setDate(1);
        /*DST is no longer being observed in Iraq as of 2008
          adjusted below statements to return FALSE always
             - if (d >= dateBegin && d <= dateEnd) return true;
             - else return false;  */
        return false;
    }
    else if (strDST == "USDST") {
        if (d.getFullYear() == 2010) {
            var dateBegin = new Date();
            var dateEnd = new Date();
            dateBegin.setYear(2010);
            dateBegin.setMonth(2);
            dateBegin.setDate(14);
            dateEnd.setYear(2010);
            dateEnd.setMonth(10);
            dateEnd.setDate(7);
            if (d >= dateBegin && d <= dateEnd) return true;
            else return false;
        }
        else if (d.getFullYear() == 2011) {
            var dateBegin = new Date();
            var dateEnd = new Date();
            dateBegin.setYear(2011);
            dateBegin.setMonth(3);
            dateBegin.setDate(13);
            dateBegin.setHours(2, 0, 0, 0);
            dateEnd.setYear(2011);
            dateEnd.setMonth(11);
            dateEnd.setDate(6);
            dateEnd.setHours(2, 0, 0, 0);
            if (d >= dateBegin && d <= dateEnd) return true;
            else return false;
        }
        else return false; // Here, if not US or Iraqi time
    }
}
