var timerID = null;
var timerRunning = false;
var pasttime = false;

function stopclock(){
    if(timerRunning)
        clearTimeout(timerID);
    timerRunning = false;
}

function startclock(){
    stopclock();
    showtime();
}

function showtime(){
    document.getElementById("myclock").innerHTML = formatDate(new Date(), true);
    timerID = setTimeout("showtime()",900);
    timerRunning = true;
}

//  Format Date
function formatDate(date, withSecs) {
    var pstGMTOffset = 480;
    var zoneoffset = pstGMTOffset + (getGMTOffset(date) * 60);
    date.setTime(date.getTime() - (zoneoffset * 1000 * 60));
    var monArr = new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');    
    var M = date.getMonth();
    var d = date.getDate();
    var H = date.getHours();
    var m = date.getMinutes();
    if (H < 10)
        H = "0" + H;
    if (m < 10)
        m = "0" + m;

    var formattedDate;
    if (withSecs == true) {
        var s = date.getSeconds();
        if (s < 10)
            s = "0" + s;
        // Format: Apr 21, 13:01:14 PT
        formattedDate = monArr[M] + " " + d + ", " + H + ":" + m + ":" + s + " PT";
    } else {
        // Format: Apr 21, 13:01 PT
        formattedDate = monArr[M] + " " + d + ", " + H + ":" + m + " PT";
    }
    
    return formattedDate;
}

function getGMTOffset(date) {
    var date1 = new Date(date.getFullYear(), 0, 1, 0, 0, 0, 0);
    var date2 = new Date(date.getFullYear(), 6, 1, 0, 0, 0, 0);
    var temp = date1.toGMTString();
    var date3 = new Date(temp.substring(0, temp.lastIndexOf(" ")-1));
    var temp = date2.toGMTString();
    var date4 = new Date(temp.substring(0, temp.lastIndexOf(" ")-1));
    var hoursDiffStdTime = (date1 - date3) / (1000 * 60 * 60);
    var hoursDiffDaylightTime = (date2 - date4) / (1000 * 60 * 60);
    if (hoursDiffDaylightTime == hoursDiffStdTime) {
        //alert("Time zone is GMT " + hoursDiffStdTime + ".\nDaylight Saving Time is NOT observed here.");
        return hoursDiffStdTime - 1; // DST not observed 
    } else {
        //alert("Time zone is GMT " + hoursDiffStdTime + ".\nDaylight Saving Time is observed here.");
        return hoursDiffStdTime; // DST is observed 
    }
}
