Skip to content

Instantly share code, notes, and snippets.

@bwedding
Created April 17, 2018 23:37
Show Gist options
  • Save bwedding/ec9aa6e194aea0a0af23f64f4cd8e035 to your computer and use it in GitHub Desktop.
Save bwedding/ec9aa6e194aea0a0af23f64f4cd8e035 to your computer and use it in GitHub Desktop.
!function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof exports?module.exports=t(require("jquery")):t(jQuery)}(function(t){function i(i,a){var o,l,d,r,c,u,h,p,f,m=this.data(),y=this.find("ul"),g=!1;if(m.vals&&0!==y.length){for(i||(i=m.seconds),m.intervalId&&(g=!0,clearTimeout(m.intervalId)),o=Math.floor(i/s),l=o*s,d=Math.floor((i-l)/n),l+=d*n,r=Math.floor((i-l)/60),l+=60*r,c=i-l,u=(o<100?"0"+(o<10?"0":""):"")+o+(d<10?"0":"")+d+(r<10?"0":"")+r+(c<10?"0":"")+c,h=m.vals.length-1,p=u.length-1;h>=0;h-=1,p-=1)f=parseInt(u.substr(p,1),10),m.vals[h]=f,y.eq(h).children().html(f);(g||a)&&(m.ttStartTime=t.now(),m.intervalId=setTimeout(e.bind(this),1e3),this.data("intervalId",m.intervalId))}}function e(i){var s,n,a,o,l,d,r,c=this,u=this.find("ul"),h=this.data();return h.vals&&0!==u.length?("undefined"==typeof i&&(i=h.iSec),s=h.tickCount+1,this.data("tickCount",s),n=h.vals[i],a=u.eq(i),o=a.children(),l=h.countdown?-1:1,o.eq(1).html(n),n+=l,"function"==typeof this.data("step")&&this.data("tickCount")%this.data("stepCount")===0&&this.data("step")(),i===h.iSec&&(d=h.tickTimeout,r=t.now()-h.ttStartTime,h.sec+=l,d+=Math.abs(h.seconds-h.sec)*d-r,h.intervalId=setTimeout(e.bind(this),d)),n<0||n>h.limits[i]?(n<0?(n=h.limits[i],i===h.iHour&&h.displayDays>0&&0===h.vals[i-1]&&(n=3)):n=0,i>0&&e.call(this,i-1)):!h.countdown&&i===h.iHour&&h.displayDays>0&&2===h.vals[i-1]&&3===h.vals[i]&&(n=0,e.call(this,i-1)),o.eq(0).html(n),t.support.transition?(a.addClass("transition"),a.css({top:0}),setTimeout(function(){a.removeClass("transition"),o.eq(1).html(n),a.css({top:"-"+h.height+"px"}),l>0||i!==h.iSec||(h.sec===h.countdownAlertLimit&&u.parent().addClass("timeTo-alert"),0===h.sec&&(u.parent().removeClass("timeTo-alert"),h.intervalId&&(clearTimeout(h.intervalId),c.data("intervalId",null)),"function"==typeof h.callback&&h.callback()))},410)):a.stop().animate({top:0},400,i!==h.iSec?null:function(){o.eq(1).html(n),a.css({top:"-"+h.height+"px"}),l>0||i!==h.iSec||(h.sec===h.countdownAlertLimit?u.parent().addClass("timeTo-alert"):0===h.sec&&(u.parent().removeClass("timeTo-alert"),h.intervalId&&(clearTimeout(h.intervalId),c.data("intervalId",null)),"function"==typeof h.callback&&h.callback()))}),void(h.vals[i]=n)):(h.intervalId&&(clearTimeout(h.intervalId),this.data("intervalId",null)),void(h.callback&&h.callback()))}var s=86400,n=3600,a={callback:null,step:null,stepCount:1,captionSize:0,countdown:!0,countdownAlertLimit:10,displayCaptions:!1,displayDays:0,displayHours:!0,fontFamily:"Verdana, sans-serif",fontSize:0,lang:"en",languages:{},seconds:0,start:!0,theme:"white",width:25,height:30,gap:11,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,tickCount:0},o={start:function(s){var n;s&&(i.call(this,s),n=setTimeout(e.bind(this),1e3),this.data("ttStartTime",t.now()),this.data("intervalId",n))},stop:function(){var t=this.data();return t.intervalId&&(clearTimeout(t.intervalId),this.data("intervalId",null)),t},reset:function(t){var e=o.stop.call(this),s="undefined"==typeof t?e.seconds:t;this.find("div").css({backgroundPosition:"left center"}),this.find("ul").parent().removeClass("timeTo-alert"),i.call(this,s,!0)}},l={en:{days:"days",hours:"hours",min:"minutes",sec:"seconds"},ru:{days:"дней",hours:"часов",min:"минут",sec:"секунд"},ua:{days:"днiв",hours:"годин",min:"хвилин",sec:"секунд"},de:{days:"Tag",hours:"Uhr",min:"Minuten",sec:"Secunden"},fr:{days:"jours",hours:"heures",min:"minutes",sec:"secondes"},sp:{days:"días",hours:"horas",min:"minutos",sec:"segundos"},it:{days:"giorni",hours:"ore",min:"minuti",sec:"secondi"},nl:{days:"dagen",hours:"uren",min:"minuten",sec:"seconden"},no:{days:"dager",hours:"timer",min:"minutter",sec:"sekunder"},pt:{days:"dias",hours:"horas",min:"minutos",sec:"segundos"},tr:{days:"gün",hours:"saat",min:"dakika",sec:"saniye"}};return"undefined"==typeof t.support.transition&&(t.support.transition=function(){var t=document.body||document.documentElement,i=t.style,e=void 0!==i.transition||void 0!==i.WebkitTransition||void 0!==i.MozTransition||void 0!==i.MsTransition||void 0!==i.OTransition;return e}()),t.fn.timeTo=function(){var e,d,r,c,u,h,p,f,m,y,g={},v=t.now();for(e=0;e<arguments.length;e+=1)d=arguments[e],0===e&&"string"==typeof d?c=d:"object"==typeof d?"function"==typeof d.getTime?g.timeTo=d:g=t.extend(g,d):"function"==typeof d?g.callback=d:(r=parseInt(d,10),isNaN(r)||(g.seconds=r));if(g.timeTo)g.timeTo.getTime?u=g.timeTo.getTime():"number"==typeof g.timeTo&&(u=g.timeTo),u>v?g.seconds=Math.floor((u-v)/1e3):g.seconds=0;else if(g.time||!g.seconds)if(u=g.time,u||(u=new Date),"object"==typeof u&&u.getTime)g.seconds=u.getHours()*n+60*u.getMinutes()+u.getSeconds(),g.countdown=!1;else if("string"==typeof u){for(p=u.split(":"),f=0,m=1;p.length;)y=p.pop(),f+=y*m,m*=60;g.seconds=f,g.countdown=!1}return g.countdown!==!1&&g.seconds>s&&"undefined"==typeof g.displayDays?(h=Math.floor(g.seconds/s),g.displayDays=h<10&&1||h<100&&2||3):g.displayDays===!0?g.displayDays=3:g.displayDays&&(g.displayDays=g.displayDays>0?Math.floor(g.displayDays):3),this.each(function(){var e,s,n,d,r,u,h,p,f,m,y,v,T,w,I,S,x,b,k,M,C,D,z=t(this),H=z.data();if(H.intervalId&&(clearInterval(H.intervalId),H.intervalId=null),H.vals)"reset"!==c&&t.extend(H,g);else{if(s=H.opt?H.options:g,e=Object.keys(a).reduce(function(t,i){return Array.isArray(a[i])?t[i]=a[i].slice(0):t[i]=a[i],t},{}),H=t.extend(e,s),H.options=s,H.height=Math.round(100*H.fontSize/93)||H.height,H.width=Math.round(.8*H.fontSize+.13*H.height)||H.width,H.displayHours=!(!H.displayDays&&!H.displayHours),d={fontFamily:H.fontFamily},H.fontSize>0&&(d.fontSize=H.fontSize+"px"),r=H.languages[H.lang]||l[H.lang],z.addClass("timeTo").addClass("timeTo-"+H.theme).css(d),u=Math.round(H.height/10),h='<ul style="left:'+u+"px; top:-"+H.height+'px"><li>0</li><li>0</li></ul></div>',p=H.fontSize?' style="width:'+H.width+"px; height:"+H.height+'px;"':' style=""',f='<div class="first"'+p+">"+h,m="<div"+p+">"+h,y="<span>:</span>",v=Math.round(2*H.width+3),T=H.captionSize||H.fontSize&&Math.round(.43*H.fontSize),w=T?"font-size:"+T+"px;":"",I=T?' style="'+w+'"':"",S=(H.displayCaptions?(H.displayHours?'<figure style="max-width:'+v+'px">$1<figcaption'+I+">"+r.hours+"</figcaption></figure>"+y:"")+'<figure style="max-width:'+v+'px">$1<figcaption'+I+">"+r.min+"</figcaption></figure>"+y+'<figure style="max-width:'+v+'px">$1<figcaption'+I+">"+r.sec+"</figcaption></figure>":(H.displayHours?"$1"+y:"")+"$1"+y+"$1").replace(/\$1/g,f+m),H.displayDays>0){for(x=.4*H.fontSize||a.gap,b=f,n=H.displayDays-1;n>0;n-=1)b+=1===n?m.replace('">',"margin-right:"+Math.round(x)+'px">'):m;S=(H.displayCaptions?'<figure style="width:'+Math.round(H.width*H.displayDays+x+4)+'px">$1<figcaption style="'+w+"padding-right:"+Math.round(x)+'px">'+r.days+"</figcaption></figure>":"$1").replace(/\$1/,b)+S}z.html(S)}if(k=z.find("div"),k.length<H.vals.length){for(M=H.vals.length-k.length,C=H.vals,D=H.limits,H.vals=[],H.limits=[],n=0;n<k.length;n+=1)H.vals[n]=C[M+n],H.limits[n]=D[M+n];H.iSec=H.vals.length-1,H.iHour=H.vals.length-5}H.sec=H.seconds,z.data(H),c&&o[c]?o[c].call(z,H.seconds):H.start?o.start.call(z,H.seconds):i.call(z,H.seconds)})},t});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment