CountdownClock = Class.create( {
initialize: function( data ) {
this.minutes = $(data.minutes);
this.seconds = $(data.seconds);
this.time_left = $(data.time_left);
this.is_running = false;
this.update_time_display();
},
start: function() {
this.is_running = true;
this.start_time = new Date();
this.update_time_display();
},
stop: function() {
if ( this.timeout ) {
clearTimeout( this.timeout );
delete this.timeout;
}
},
update_time_display: function() {
var now = new Date();
var elapsed = Math.floor( (now - this.start_time) / 1000 );
var time_left = this.time_left - elapsed;
if ( time_left < 0 )
time_left = 0;
var minutes = Math.floor( time_left/60 );
var seconds = time_left % 60;
if ( seconds < 10 )
seconds = "0" + seconds;
if ( minutes < 10 )
minutes = "0" + minutes;
this.minutes.innerHTML = minutes;
this.seconds.innerHTML = seconds;
if ( this.is_running && time_left > 0 ) {
this.timeout = setTimeout( this.update_time_display.bind( this, this.update_time_display ), 1000 );
}
else
this.stop();
}
});
