var timersArray=new Array(); function log(str) { return; logElement=document.getElementById("log"); if (logElement==null) return; logElement.innerHTML+=str+"
\n"; } function timerUpdate(element, deadline){ var today=new Date(); //Calculate difference btw the two dates, and convert to days // log("timerUpdate messageAfter:"+element.messageAfter); var one_day=1000*60*60*24; var one_hour=1000*60*60; var one_minute=1000*60; var one_second=1000; var ms=deadline.getTime()-today.getTime()-today.getTimezoneOffset()*one_minute; var delta=ms; log("timerUpdate: deltaMs="+ms); // log("getTimezoneOffset(): "+ today.getTimezoneOffset()/60); if (ms < 0 ) {ms=-ms;} var days=Math.floor(ms/one_day); ms-=days*one_day; var hours=Math.floor(ms/one_hour); ms-=hours*one_hour; var minutes=Math.floor(ms/one_minute); ms-=minutes*one_minute; var seconds=Math.floor(ms/one_second); var dayUnit="дней"; if (days%10==1 && days != 11) dayUnit="день"; if (days%10>1 && days%10<5 && !(days>=11 && days<=14) ) dayUnit="дня"; var hourUnit="часов"; if (hours%10==1 && hours != 11) hourUnit="час"; if (hours%10>1 && hours%10 < 5 && !(hours>=11 && hours<=14) ) hourUnit="часа"; var minuteUnit="минут"; if (minutes%10==1 && minutes != 11) minuteUnit="минуту"; if (minutes%10>1 && minutes%10<5 && !(minutes>=11 && minutes<=14) ) minuteUnit="минуты"; var secondUnit="секунд"; if (seconds%10==1 && seconds != 11) secondUnit="секунду"; if (seconds%10>1 && seconds%10<5 && !(seconds>=11 && seconds<=14) ) secondUnit="секунды"; if (days==0) { timerString=hours+" "+hourUnit+" "+minutes+" "+minuteUnit+" "+seconds+" "+secondUnit; } else { timerString=days+" "+dayUnit+" "+hours+" "+hourUnit; } var message=""; if (delta > 0) { message=element.messageBefore; } else { message=element.messageAfter; } message=message.replace("%TIME_LEFT%", timerString); element.innerHTML=message; return delta; } function refreshTimers() { var timeout=10000; for (timerIndex in timersArray) { if (Math.abs(timerUpdate(timersArray[timerIndex], timersArray[timerIndex].deadline)) < 1000*60*60*24 ) { timeout=1000; } } setTimeout(refreshTimers, timeout); } function registerTimer(element) { if (element.deadline!=null) { timersArray.push(element); } else { log("registerTimer failed"); } refreshTimers(); }