///////////////////////////////////////////////////////////
// "Live Clock" script (3.0)
// By Mark Plachetta (astroboy@zip.com.au)
// http://www.zip.com.au/~astroboy/liveclock/
//
// Heavily altered/optimized by Doug Day
///////////////////////////////////////////////////////////

var LC_Clocks=new Array();

var LC_DaysOfWeek=[
    ["Sunday","Sun"],
    ["Monday","Mon"],
    ["Tuesday","Tue"],
    ["Wednesday","Wed"],
    ["Thursday","Thu"],
    ["Friday","Fri"],
    ["Saturday","Sat"]
];

var LC_MonthsOfYear=[
    ["January","Jan"],
    ["February","Feb"],
    ["March","Mar"],
    ["April","Apr"],
    ["May","May"],
    ["June","Jun"],
    ["July","Jul"],
    ["August","Aug"],
    ["September","Sep"],
    ["October","Oct"],
    ["November","Nov"],
    ["December","Dec"]
];

var LC_ClockUpdate=[0,1000,60000];

///////////////////////////////////////////////////////////

function LiveClockRun() {
    for(i = 0; i < LC_Clocks.length; i++){
        LC_UpdateClock(i);
        if (LC_Clocks[i].Update) {
            eval('var liveclock_' + LC_Clocks[i].Name + ' = setInterval("LC_UpdateClock('+i+')", 1000)');
        }
    }
}

function LC_UpdateClock(Clock){
    var c = LC_Clocks[Clock];
    var t = new Date();

    var day  = t.getDay();
    var md   = t.getDate();
    var mnth = t.getMonth();
    var hrs  = t.getHours();
    var mins = t.getMinutes();
    var secs = t.getSeconds();
    var yr   = t.getFullYear();

    if(c.DisplayDate >= 3){
        md += "";
        abbrev = "th";
        if(md.charAt(md.length-2) != 1){
            var tmp = md.charAt(md.length-1);
            if (tmp == 1) { abbrev="st" }
            else if (tmp==2) { abbrev="nd" }
            else if (tmp==3) { abbrev="rd" }
        }
        md+=abbrev;
    }

    var ampm = "";
    if (c.Hour12 == 1) {
        ampm = "AM";
        if (hrs>=12) { ampm="PM"; hrs-=12; }
        if (hrs==0) { hrs=12; }
    }
    if (mins <= 9) { mins = "0" + mins}
    if (secs <= 9) { secs = "0" + secs}

    var html = hrs + ":" + mins;
    if (c.Update==1) { html += ':' + secs; }
    if (c.Hour12) { html += ' ' + ampm; }
    if (c.DisplayDate==1) { html += ' ' + md + '/' + (mnth + 1) + '/' + yr; }
    if (c.DisplayDate==2) { html += ' ' + (mnth+1) + '/' + md + '/' + yr; }
    if (c.DisplayDate>=3) { html += ' on ' + LC_DaysOfWeek[day][c.Abbreviate] + ', ' + md + ' of ' + LC_MonthsOfYear[mnth][c.Abbreviate]; }
    if (c.DisplayDate>=4) { html += ' ' + yr; }
    
    document.getElementById(c.Name).innerHTML = html;
}

function LiveClock(id, hour12, displaydate, abbreviate){
    this.Name = id;
    this.Hour12 = typeof(hour12) != "undefined" ? hour12 : true;
    this.Update = true;
    this.Abbreviate = typeof(abbreviate) != "undefined" ? abbreviate : 0;
    this.DisplayDate = typeof(displaydate) != "undefined" ? displaydate : 0;

    LC_Clocks[LC_Clocks.length] = this;
}
