(function() { 'use strict';
var root = this;
var Countdown = function(duration, onTick, onComplete) { var secondsLeft = Math.round(duration) , tick = function() { if (secondsLeft > 0) { onTick(secondsLeft); secondsLeft -= 1; } else { clearInterval(interval); onComplete(); } } // Setting the interval, by call tick and passing through this via a self-calling function wrap. , interval = setInterval( (function(self){ return function() { tick.call(self); }; })(this), 1000 );
// First tick.
tick.call(this);
return {
abort: function() {
clearInterval(interval);
}
, getRemainingTime: function() {
return secondsLeft;
}
};
};
if (typeof exports !== 'undefined') module.exports = exports = Countdown; else root.Countdown = Countdown;
}).call(this);