diff --git a/README.md b/README.md index 9bf1df9..0ce5d87 100644 --- a/README.md +++ b/README.md @@ -62,7 +62,21 @@ An absolute date: }); ``` -Did I mention that js code weighs just **2.8 KB**? +Start manually the counter: + +```javascript + $('#counter').countdown({ + image: "digits.png", + format: "mm:ss", + endTime: new Date('07/16/13 05:00:00'), + start: false + }); + $("#startButton").click(function (e) { + $('#counter').start(); + }); +``` + +Did I mention that js code weighs just **4.0 KB**? ### Developers diff --git a/js/jquery.countdown.js b/js/jquery.countdown.js index 05ab98a..532668e 100644 --- a/js/jquery.countdown.js +++ b/js/jquery.countdown.js @@ -174,7 +174,7 @@ var parseRelativeDate = function(form, options) { var formatCompute = function(d, options) { var format = options.format; var parse = { - d: d.getUTCDate() - 1, + d: Math.floor( ( d - new Date( d.getFullYear(), 0, 1 ) ) / ( 1000 * 60 * 60 * 24 ) ), h: d.getUTCHours(), m: d.getUTCMinutes(), s: d.getUTCSeconds() @@ -187,6 +187,16 @@ var formatCompute = function(d, options) { // add leading zeros var pad = function(x){return (1e15+""+x).slice(-2)}; +var start = function (element) { + if (element.attr('started') != 'true') { + element.attr('started', true) + intervals.main = setInterval(function () { + moveDigit(digits.length - 1, element.data('options')); + }, + 1000); + } +}; + var digits = []; var intervals = []; jQuery.fn.countdown = function(userOptions) { @@ -202,7 +212,8 @@ jQuery.fn.countdown = function(userOptions) { digitHeight: 90, timerEnd: function(){}, image: "digits.png", - continuous: false + continuous: false, + start: true }; $.extend(options, userOptions); @@ -219,7 +230,14 @@ jQuery.fn.countdown = function(userOptions) { if (this.length) { clearInterval(intervals.main); createDigits(this, options); - intervals.main = setInterval(function(){ moveDigit(digits.length - 1, options); }, - 1000); + this.data('options', options); + if (options.start === true) { + start(this); + } } }; + +// start the counter +jQuery.fn.start = function () { + start(this); +}; diff --git a/js/jquery.countdown.min.js b/js/jquery.countdown.min.js index ef6e0c4..644ced6 100644 --- a/js/jquery.countdown.min.js +++ b/js/jquery.countdown.min.js @@ -1 +1 @@ -var createDigits=function(a,b){for(var d,e,c=0,f=0;f=0){if(elem=$('
').css({height:b.digitHeight,"float":"left",background:"url('"+b.image+"')",width:b.digitWidth}),elem.current=parseInt(b.startTime[f]),digits.push(elem),margin(c,-elem.current*b.digitHeight*b.digitImages),b.continuous===!0)digits[c]._max=function(){return 9};else switch(b.format[f]){case"h":digits[c]._max=function(a,b){return 0==a%2?2:b?3:9};break;case"d":digits[c]._max=function(){return 9};break;case"m":digits[c]._max=function(a){return d||(d=a),a==d?9:5};break;case"s":digits[c]._max=function(a){return e||(e=a),a==e?9:5}}c+=1}else elem=$('
').css({"float":"left"}).text(b.startTime[f]);a.append(elem)}},makeMovement=function(a,b,c,d){intervals[a]&&window.clearInterval(intervals[a]);var e=-(d.digitHeight*d.digitImages*digits[a].current);margin(a,e),digits[a].current=digits[a].current+(c?b:-b);var f=0;intervals[a]=setInterval(function(){if(f++===d.digitImages*b)return window.clearInterval(intervals[a]),delete intervals[a],void 0;var g=c?-d.digitHeight:d.digitHeight;margin(a,e+f*g)},d.stepTime/b)},margin=function(a,b){return void 0!==b?(digits[a].margin=b,digits[a].css({backgroundPosition:"0 "+b+"px"})):digits[a].margin||0},moveDigit=function(a,b){if(0!=digits[a].current)makeMovement(a,1,!1,b);else if(a>0){var c=0==digits[a-1].current;makeMovement(a,digits[a]._max(a,c),!0,b),moveDigit(a-1,b)}else{for(var d=0;d=0){if(elem=$('
').css({height:e.digitHeight,"float":"left",background:"url('"+e.image+"')",width:e.digitWidth}),elem.current=parseInt(e.startTime[a]),digits.push(elem),margin(r,-elem.current*e.digitHeight*e.digitImages),e.continuous===!0)digits[r]._max=function(){return 9};else switch(e.format[a]){case"h":digits[r]._max=function(t,e){return t%2==0?2:e?3:9};break;case"d":digits[r]._max=function(){return 9};break;case"m":digits[r]._max=function(t){return i||(i=t),t==i?9:5};break;case"s":digits[r]._max=function(t){return n||(n=t),t==n?9:5}}r+=1}else elem=$('
').css({"float":"left"}).text(e.startTime[a]);t.append(elem)}},makeMovement=function(t,e,i,n){intervals[t]&&window.clearInterval(intervals[t]);var r=-(n.digitHeight*n.digitImages*digits[t].current);margin(t,r),digits[t].current=digits[t].current+(i?e:-e);var a=0;intervals[t]=setInterval(function(){if(a++===n.digitImages*e)return window.clearInterval(intervals[t]),void delete intervals[t];var s=i?-n.digitHeight:n.digitHeight;margin(t,r+a*s)},n.stepTime/e)},margin=function(t,e){return void 0!==e?(digits[t].margin=e,digits[t].css({backgroundPosition:"0 "+e+"px"})):digits[t].margin||0},moveDigit=function(t,e){if(0!=digits[t].current)makeMovement(t,1,!1,e);else if(t>0){var i=0==digits[t-1].current;makeMovement(t,digits[t]._max(t,i),!0,e),moveDigit(t-1,e)}else{for(var n=0;n