--- /dev/null
+(function(){
+ 'use strict';
+
+ function update_timer(timer){
+ var start = parseInt(timer.dataset.start);
+ var stop = parseInt(timer.dataset.stop);
+ var value = parseInt(timer.dataset.value);
+ var now = Math.floor(Date.now() / 1000);
+
+ var left = stop - now;
+ var total = stop - start;
+ if(left < 0)
+ left = 0;
+
+ if(value) {
+ value = Math.max(value * 3 / 10, value * left / total);
+ timer.innerHTML = Math.floor(value);
+ } else {
+ var hours = left / 60 / 60;
+ var minutes = left / 60 % 60;
+ var seconds = left % 60;
+ timer.innerHTML = sprintf('%02d:%02d:%02d', hours, minutes, seconds);
+ }
+ }
+
+ $( document ).ready(function() {
+ $('.timer').each(function(index, item){
+ update_timer(item);
+ setInterval(function(){update_timer(item)}, 1000);
+ });
+ });
+})();