﻿var clockID;
        
var hours = 0;
var minutes = 0;
var seconds = 0;

var beginTime = new Date();
        
function UpdateClock() {
   seconds += 1;
   if(seconds == 60){
        seconds=0;
        minutes+=1;
   }
   if(minutes == 60){
        minutes=0;
        hours+=1;
   }
   if(hours == 24){
        hours=0;
   }
   
   var clock = hours;
   clock += ((minutes < 10) ? ":0" : ":") + minutes;
   clock += ((seconds < 10) ? ":0" : ":") + seconds;

   document.getElementById("clock").innerHTML = clock;
   clockID = setTimeout("UpdateClock()", 1000);
}

function StartClock(hoursStart,minutesStart,secondsStart) {
    //Calcolo il tempo trascorso tra l'inizio del caricamento e la partenza dell'orologio e lo sommo all'orario passato dal server
    var startTime = new Date();
    var msecStartTime = (startTime.getHours() * 1440000) + (startTime.getMinutes() * 60000) + (startTime.getSeconds() * 1000) + startTime.getMilliseconds();
    var msecBeginTime = (beginTime.getHours() * 1440000) + (beginTime.getMinutes() * 60000) + (beginTime.getSeconds() * 1000) + beginTime.getMilliseconds();
    var addSec = Math.round((msecStartTime - msecBeginTime) / 1000);
    
    seconds = secondsStart + addSec;
    while(seconds >= 60){
        seconds=seconds-60;
        minutes+=1;
    }
    minutes += minutesStart;
    while(minutes >= 60){
        minutes=minutes-60;
        hours+=1;
    }
    hours += hoursStart;
    
    clockID = setTimeout("UpdateClock()", 0);
}

function KillClock() {
   if(clockID) {
      clearTimeout(clockID);
      clockID  = 0;
   }
}

