﻿///////////////////////////////////////////////////////////////////////////////
// WorldClock.js
// Author: Trey Gramann
// Company: Aquelion, Inc.
// Revision: 08/27/2010
///////////////////////////////////////////////////////////////////////////////
// Show selected location times based on the accurate server time.
///////////////////////////////////////////////////////////////////////////////
var serverUtcEpoch;
var machineEpoch;
var bannerCity;
var bannerCityLast;
function GetLocalTime(elementId, city, is24hr) {
    var elapsedMs = (new Date()).getTime() - machineEpoch;
    var utcTime = serverUtcEpoch + elapsedMs;
    var Offset = TimeZoneDstOffest(city, utcTime);
    var currentTime = new Date(utcTime + Offset);

    var currentHours = currentTime.getHours();
    var currentMinutes = currentTime.getMinutes();
    var timeOfDay = "";

    currentMinutes = (currentMinutes < 10 ? "0" : "") + currentMinutes;

    if (is24hr) {
        currentHours = (currentHours < 10 ? "0" : "") + currentHours;
    } else {
        timeOfDay = (currentHours < 12) ? "AM" : "PM";
        currentHours = (currentHours > 12) ? currentHours - 12 : currentHours;
        currentHours = (currentHours == 0) ? 12 : currentHours;
    }
    var currentTimeString = currentHours + ":" + currentMinutes + " " + timeOfDay;
    document.getElementById(elementId).firstChild.nodeValue = city + " " + currentTimeString;

    if (city == bannerCity) {
        document.getElementById(elementId).className = "SelectedCity";
    }
    if (bannerCity != bannerCityLast) {
        var obj = document.getElementById("Banner");
        document.getElementById("Banner").style.background = "url(../images/PrideUniversityBanner" + bannerCity + ".gif)";
        bannerCityLast = bannerCity;
    }
}
function TimeZoneDstOffest(city, utcTime) {
    var Offset = 0;
    var testDate;
    switch (city) {
        case "Cairo":
            Offset = +2;
            testDate = new Date(utcTime + Offset * 3600000);
            if ((testDate > new Date("04/29/2010 12:00 AM")) && (testDate < new Date("08/10/2010 12:00 AM"))) { Offset = Offset + 1; break; }
            if ((testDate > new Date("09/09/2010 12:00 AM")) && (testDate < new Date("09/30/2010 12:00 AM"))) { Offset = Offset + 1; break; }
            if ((testDate > new Date("04/28/2011 12:00 AM")) && (testDate < new Date("09/29/2011 12:00 AM"))) { Offset = Offset + 1; break; }
            if ((testDate > new Date("04/26/2012 12:00 AM")) && (testDate < new Date("09/27/2012 12:00 AM"))) { Offset = Offset + 1; break; }
            break;
        case "Houston":
            Offset = -6;
            testDate = new Date(utcTime + Offset * 3600000);
            if ((testDate > new Date("03/14/2010 2:00 AM")) && (testDate < new Date("11/07/2010 2:00 AM"))) { Offset = Offset + 1; break; }
            if ((testDate > new Date("03/13/2011 2:00 AM")) && (testDate < new Date("11/06/2011 2:00 AM"))) { Offset = Offset + 1; break; }
            if ((testDate > new Date("03/11/2012 2:00 AM")) && (testDate < new Date("11/04/2012 2:00 AM"))) { Offset = Offset + 1; break; }
            if ((testDate > new Date("03/12/2013 2:00 AM")) && (testDate < new Date("11/03/2013 2:00 AM"))) { Offset = Offset + 1; break; }
            if ((testDate > new Date("03/09/2014 2:00 AM")) && (testDate < new Date("11/02/2014 2:00 AM"))) { Offset = Offset + 1; break; }
            if ((testDate > new Date("03/08/2015 2:00 AM")) && (testDate < new Date("11/01/2015 2:00 AM"))) { Offset = Offset + 1; break; }
            if ((testDate > new Date("03/13/2016 2:00 AM")) && (testDate < new Date("11/06/2016 2:00 AM"))) { Offset = Offset + 1; break; }
            if ((testDate > new Date("03/12/2017 2:00 AM")) && (testDate < new Date("11/05/2017 2:00 AM"))) { Offset = Offset + 1; break; }
            if ((testDate > new Date("03/11/2018 2:00 AM")) && (testDate < new Date("11/04/2018 2:00 AM"))) { Offset = Offset + 1; break; }
            if ((testDate > new Date("03/10/2019 2:00 AM")) && (testDate < new Date("11/03/2019 2:00 AM"))) { Offset = Offset + 1; break; }
            break;
        case "Paris":
            Offset = +1;
            testDate = new Date(utcTime + Offset * 3600000);
            if ((testDate > new Date("03/28/2010 2:00 AM")) && (testDate < new Date("10/31/2010 2:00 AM"))) { Offset = Offset + 1; break; }
            if ((testDate > new Date("03/27/2011 2:00 AM")) && (testDate < new Date("10/30/2011 2:00 AM"))) { Offset = Offset + 1; break; }
            if ((testDate > new Date("03/25/2012 2:00 AM")) && (testDate < new Date("10/28/2012 2:00 AM"))) { Offset = Offset + 1; break; }
            break;
        case "Luanda":
            Offset = +1;
            break;
        case "Macae":
            Offset = -2;
            break;
    }

    return Offset * 3600000;
}
function WorldClock() {
    GetLocalTime("LuandaTime", "Luanda", false);
    GetLocalTime("HoustonTime", "Houston", false);
    GetLocalTime("ParisTime", "Paris", false);
    GetLocalTime("CairoTime", "Cairo", false);
    GetLocalTime("MacaeTime", "Macae", false);
}
function StartWorldClock(serverUtc, city) {

    bannerCity = city;
    serverUtcEpoch = (new Date(serverUtc)).getTime();
    machineEpoch = (new Date()).getTime();

    WorldClock(); // Run now
    setInterval('WorldClock()', 1000); // Run again each second
}

