forked from Lexxus/jq-timeTo
-
Notifications
You must be signed in to change notification settings - Fork 0
/
jquery.timeTo.min.js
10 lines (10 loc) · 6.67 KB
/
jquery.timeTo.min.js
1
2
3
4
5
6
7
8
9
10
/**
* TimeTo jQuery plug-in
* Show countdown timer or realtime clock
*
* @author Alexey Teterin <altmoc@gmail.com>
* @version 1.0.9
* @license MIT http://opensource.org/licenses/MIT
* @date 2013-12-07
*/
(function(k){if("object"===typeof exports){var l=require("jquery");module.exports=k(l||$)}else"function"===typeof define&&define.amd?define(["jquery"],k):k(l||$)})(function(k){function l(c){var h=this.data(),a=this.find("ul");if(h.vals&&0!==a.length){c||(c=h.seconds);var f=!1;h.intervalId&&(f=!0,clearTimeout(h.intervalId));var e=Math.floor(c/86400),d=86400*e,g=Math.floor((c-d)/3600),d=d+3600*g,m=Math.floor((c-d)/60);c-=d+60*m;e=(100>e?"0"+(10>e?"0":""):"")+e+(10>g?"0":"")+g+(10>m?"0":"")+m+(10>c?"0":"")+c;g=h.vals.length-1;for(m=e.length-1;0<=g;g--,m--)c=parseInt(e.substr(m,1)),h.vals[g]=c,a.eq(g).children().html(c);if(f){var b=this;h.ttStartTime=Date.now();h.intervalId=setTimeout(function(){q.call(b)},1E3);this.data("intervalId",h.intervalId)}}}function q(c){var h=this.find("ul"),a=this.data();if(a.vals&&0!=h.length){void 0==c&&(c=a.iSec);var f=a.vals[c],e=h.eq(c),d=e.children(),g=a.countdown?-1:1;d.eq(1).html(f);f+=g;if(c==a.iSec){var m=a.tickTimeout,b=(new Date).getTime()-a.ttStartTime;a.sec+=g;m+=Math.abs(a.seconds-a.sec)*m-b;a.intervalId=setTimeout(function(){q.call(s)},m)}if(0>f||f>a.limits[c])f=0>f?a.limits[c]:0,0<c&&q.call(this,c-1);d.eq(0).html(f);var s=this;k.support.transition?(e.addClass("transition"),e.css({top:0}),setTimeout(function(){e.removeClass("transition");d.eq(1).html(f);e.css({top:"-"+a.height+"px"});0<g||c!=a.iSec||(a.sec==a.countdownAlertLimit&&h.parent().addClass("timeTo-alert"),0===a.sec&&(h.parent().removeClass("timeTo-alert"),a.intervalId&&(clearTimeout(a.intervalId),s.data("intervalId",null)),"function"===typeof a.callback&&a.callback()))},410)):e.stop().animate({top:0},400,c!=a.iSec?null:function(){d.eq(1).html(f);e.css({top:"-"+a.height+"px"});0<g||c!=a.iSec||(a.sec==a.countdownAlertLimit?h.parent().addClass("timeTo-alert"):0==a.sec&&(h.parent().removeClass("timeTo-alert"),a.intervalId&&(clearTimeout(a.intervalId),s.data("intervalId",null)),"function"===typeof a.callback&&a.callback()))});a.vals[c]=f}else a.intervalId&&(clearTimeout(a.intervalId),this.data("intervalId",null)),a.callback&&a.callback()}var p={start:function(c){c&&l.call(this,c);var h=this;c=setTimeout(function(){q.call(h)},1E3);this.data("ttStartTime",(new Date).getTime());this.data("intervalId",c)},stop:function(){var c=this.data();c.intervalId&&(clearTimeout(c.intervalId),this.data("intervalId",null));return c},reset:function(c){var h=p.stop.call(this);this.find("div").css({backgroundPosition:"left center"});"undefined"===typeof c&&(c=h.value);l.call(this,c)}},r={en:{days:"days",hours:"hours",min:"minutes",sec:"seconds"},ru:{days:"\u0434\u043d\u0435\u0439",hours:"\u0447\u0430\u0441\u043e\u0432",min:"\u043c\u0438\u043d\u0443\u0442",sec:"\u0441\u0435\u043a\u0443\u043d\u0434"},ua:{days:"\u0434\u043di\u0432",hours:"\u0433\u043e\u0434\u0438\u043d",min:"\u0445\u0432\u0438\u043b\u0438\u043d",sec:"\u0441\u0435\u043a\u0443\u043d\u0434"},de:{days:"Tag",hours:"Uhr",min:"Minuten",sec:"Secunden"},fr:{days:"jours",hours:"heures",min:"minutes",sec:"secondes"},sp:{days:"d\u00edas",hours:"reloj",min:"minutos",sec:"segundos"},it:{days:"giorni",hours:"ore",min:"minuti",sec:"secondi"},nl:{days:"dagen",hours:"uren",min:"minuten",sec:"seconden"}};"undefined"===typeof k.support.transition&&(k.support.transition=function(){var c=(document.body||document.documentElement).style;return void 0!==c.transition||void 0!==c.WebkitTransition||void 0!==c.MozTransition||void 0!==c.MsTransition||void 0!==c.OTransition}());k.fn.timeTo=function(){for(var c={callback:null,captionSize:0,countdown:!0,countdownAlertLimit:10,displayCaptions:!1,displayDays:0,displayHours:!0,fontFamily:"Verdana, sans-serif",fontSize:28,lang:"en",seconds:0,start:!0,theme:"white",vals:[0,0,0,0,0,0,0,0,0],limits:[9,9,9,2,9,5,9,5,9],iSec:8,iHour:4,tickTimeout:1E3,intervalId:null},h,a={},f=0,e;e=arguments[f];++f)0==f&&"string"===typeof e?h=e:"object"==typeof e?"function"===typeof e.getTime?a.timeTo=e:a=k.extend(a,e):"function"==typeof e?a.callback=e:(e=parseInt(e),isNaN(e)||(a.seconds=e));if(a.timeTo){var d,f=(new Date).getTime();a.timeTo.getTime?d=a.timeTo.getTime():"number"===typeof a.timeTo&&(d=a.timeTo);a.timeTo>f&&(a.seconds=Math.floor((d-f)/1E3))}else if(a.time||!a.seconds)if((d=a.time)||(d=new Date),"object"===typeof d&&d.getTime)a.seconds=3600*d.getHours()+60*d.getMinutes()+d.getSeconds(),a.countdown=!1;else if("string"===typeof d){d=d.split(":");f=0;e=1;for(var g;g=d.pop();)f+=g*e,e*=60;a.seconds=f;a.countdown=!1}!1!==a.countdown&&86400<a.seconds&&"undefined"===typeof a.displayDays?(d=Math.floor(a.seconds/86400),a.displayDays=10>d&&1||100>d&&2||3):!0===a.displayDays?a.displayDays=3:a.displayDays&&(a.displayDays=0<a.displayDays?Math.floor(a.displayDays):3);return this.each(function(){var e=k(this),b=e.data(),d;if(b.vals)b.intervalId&&(clearInterval(b.intervalId),b.intervalId=null),k.extend(b,a);else{b=k.extend(c,a);b.height=Math.round(100*b.fontSize/93);b.width=Math.round(0.8*b.fontSize+0.13*b.height);b.displayHours=!(!b.displayDays&&!b.displayHours);e.addClass("timeTo").addClass("timeTo-"+b.theme).css({fontFamily:b.fontFamily,fontSize:b.fontSize+"px"});var f='<ul style="left:'+Math.round(b.height/10)+"px; top:-"+b.height+'px"><li>0</li><li>0</li></ul></div>',g=' style="width:'+b.width+"px; height:"+b.height+'px;"';d='<div class="first"'+g+">"+f;var f="<div"+g+">"+f,n=Math.round(2*b.width+3),g=b.captionSize||Math.round(0.43*b.fontSize);thtml=(b.displayCaptions?(b.displayHours?'<figure style="max-width:'+n+'px">$1<figcaption style="font-size:'+g+'px">'+r[b.lang].hours+"</figcaption></figure><span>:</span>":"")+'<figure style="max-width:'+n+'px">$1<figcaption style="font-size:'+g+'px">'+r[b.lang].min+'</figcaption></figure><span>:</span><figure style="max-width:'+n+'px">$1<figcaption style="font-size:'+g+'px">'+r[b.lang].sec+"</figcaption></figure>":(b.displayHours?"$1<span>:</span>":"")+"$1<span>:</span>$1").replace(/\$1/g,d+f);if(0<b.displayDays){var n=0.4*b.fontSize,l=d;for(d=b.displayDays-1;0<d;d--)l+=1===d?f.replace('">'," margin-right:"+Math.round(n)+'px">'):f;thtml=(b.displayCaptions?'<figure style="width:'+Math.round(b.width*b.displayDays+n+4)+'px">$1<figcaption style="font-size:'+g+"px; padding-right:"+Math.round(n)+'px">'+r[b.lang].days+"</figcaption></figure>":"$1").replace(/\$1/,l)+thtml}e.html(thtml)}f=e.find("div");if(f.length<b.vals.length){g=b.vals.length-f.length;n=b.vals;l=b.limits;b.vals=[];b.limits=[];for(d=0;d<f.length;d++)b.vals[d]=n[g+d],b.limits[d]=l[g+d];b.iSec=b.vals.length-1;b.iHour=b.vals.length-5}b.sec=b.seconds;e.data(b);h&&p[h]?p[h].call(e,b.seconds):b.start?p.start.call(e,b.seconds):p.init.call(e,b.seconds)})};return jQuery});