-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcountdown-timer.min.js
More file actions
1 lines (1 loc) · 1.44 KB
/
countdown-timer.min.js
File metadata and controls
1 lines (1 loc) · 1.44 KB
1
function CountDownTimer(a,b,c){_validateNonNegativeInt(a,"mills"),_validateCallback(b,!0,"tickCallback"),_validateCallback(c,!0,"elapsedCallback");var d=a,e=a,f=1e3;this._tickInterval=null,this._tickCallback=null,this._elapsedCallback=null,b&&(this._tickCallback=b),c&&(this._elapsedCallback=c),this.start=function(){this.tick()},this.stop=function(){this._tickInterval&&clearInterval(this._tickInterval)},this.tick=function(){var a=this,c=(a.getCurrentTime(),f);a._tickInterval=setInterval(function(){var b=a.getCurrentTime();b>0?(a.setCurrentTime(Math.max(b-c,0)),a._tickCallback&&a._tickCallback()):(clearInterval(a._tickInterval),a._elapsedCallback&&a._elapsedCallback())},this.getTickDuration())},this.reset=function(){e=d,this.stop(),this._tickInterval=null},this.getInitialTime=function(){return d},this.getCurrentTime=function(){return e},this.setCurrentTime=function(a){_validateNonNegativeInt(a,"mills"),e=a},this.getTickDuration=function(){return f},this.setTickDuration=function(a){_validateNonNegativeInt(a,"mills"),f=a}}function _validateNonNegativeInt(a,b){if(b||(b="variable"),"number"!=typeof a)throw"ERROR: "+b+" must be defined as an integer.";if(a<0)throw"ERROR: "+b+" must be a positive integer.";return a}function _validateCallback(a,b,c){if(b){if(("undefined"!=typeof a||null===a)&&"function"!=typeof a)throw"ERROR: "+c+" is optional, but must be a function, if defined."}else if("function"!=typeof a)throw"ERROR: "+c+" must be a function.";return a}