var clockID = 0;
var timeZoneOffset = 2;

function UpdateClock() {
   if (clockID) {
      clearTimeout(clockID);
      clockID  = 0;
   }

   var dayLightSettings = dayLightSavings();
   var now = new Date;
   now.setUTCMinutes(now.getUTCMinutes() + (timeZoneOffset + dayLightSettings)*60);
   var dow = now.getUTCDay();
   var minute = now.getUTCMinutes();
   var hour = now.getUTCHours();
   var sec = now.getUTCSeconds();

   if (hour > 11) {
       ampm = 'PM'; hour -= 12;
   }else {
       ampm = 'AM'
   }

   if (hour == 0) {
       hour = 12;
   }

   if (minute < 10) {
       pad = ':0';
   }else{
       pad = ':';
   } 

   if (sec < 10) {
       pad1 = ':0';
   }else{
       pad1 = ':';
   } 

   var timeDisplay = hour + pad + minute + pad1 + sec + ' ' + ampm;

   //var dObj = findDom('localtime');
   document.getElementById("localtime").innerHTML = timeDisplay;   
   clockID = setTimeout("UpdateClock()", 500);
}

function StartClock() {
   clockID = setTimeout("UpdateClock()", 1000);
}

function StopClock() {
   if (clockID) {
      clearTimeout(clockID);
      clockID  = 0;
   }
}

function findDOM(objectId) {
    if (document.getElementById) {
        return (document.getElementById(objectId));
    }
    if (document.all) {
        return (document.all[objectId]);
    }
}

function dayLightSavings() {

    // get an object to the current date
    var cDate = new Date();
    var cFullYear = cDate.getFullYear();
    var cDateInMS = cDate.getTime();
    var useDayLightSavings;

    //get the last sunday of march and october
    var dlsStart = findDLStartDate(cFullYear, 31, 2)
    var dlsEnd = findDLEndDate(cFullYear, 31, 9)
    var dlsStartinMS = dlsStart.getTime();
    var dlsEndinMS = dlsEnd.getTime();

    if ( (cDateInMS >= dlsStartinMS) && (cDateInMS <= dlsEndinMS) ) {
        useDayLightSavings = 1;
    }else{
        useDayLightSavings = 0;
    }

    return useDayLightSavings;
}

function findDLStartDate(currentYear, dlsDate, dlsMonth) {

    var oneMinute = 60 * 1000  // milliseconds in a minute
    var oneHour = oneMinute * 60
    var oneDay = oneHour * 24

    // Find the last Sunday of March
    var lastDayInMarch = new Date();
    lastDayInMarch.setFullYear(currentYear);
    lastDayInMarch.setDate(dlsDate);
    lastDayInMarch.setMonth(dlsMonth); // months start from 0 for January...

    var dlsStart, dlsEnd;
    var foundIt = 0;

    var startDateInMS = lastDayInMarch.getTime();
    
    while (foundIt == 0) {

        var diffInMS = startDateInMS - oneDay;
        var diffDate = new Date(diffInMS);

        if (diffDate.getDay() == 0) {
            foundIt = 1;
            dlsStart = diffDate;
        }else{
            startDateInMS = diffDate.getTime();
        }
    }

    return dlsStart;
}

function findDLEndDate(currentYear, dlsDate, dlsMonth) {

    var oneMinute = 60 * 1000  // milliseconds in a minute
    var oneHour = oneMinute * 60
    var oneDay = oneHour * 24

    // Find the last Sunday of October
    var lastDayInOctober = new Date();
    lastDayInOctober.setFullYear(currentYear);
    lastDayInOctober.setDate(dlsDate);
    lastDayInOctober.setMonth(dlsMonth); // months start from 0 for January...

    var dlsEnd;
    var foundIt = 0;

    var endDateInMS = lastDayInOctober.getTime();
    
    while (foundIt == 0) {

        var diffInMS = endDateInMS - oneDay;
        var diffDate = new Date(diffInMS);

        if (diffDate.getDay() == 0) {
            foundIt = 1;
            dlsEnd = diffDate;
        }else{
            endDateInMS = diffDate.getTime();
        }
    }

    return dlsEnd;
}

