(function($){function Countdown(){this.regional=[];this.regional['']={labels:['Days','Hours','Minutes','Seconds'],labels1:['Day','Hour','Minute','Second']};this._defaults={until:null,format:'DHMS',layout:''};$.extend(this._defaults,this.regional[''])}var PROP_NAME='countdown';var Y=0;var O=1;var W=2;var D=3;var H=4;var M=5;var S=6;$.extend(Countdown.prototype,{markerClassName:'hasCountdown',_timer:setInterval(function(){$.countdown._updateTargets()},980),_timerTargets:[],setDefaults:function(options){this._resetExtraLabels(this._defaults,options);extendRemove(this._defaults,options||{})},UTCDate:function(tz,year,month,day,hours,mins,secs,ms){if(typeof year=='object'&&year.constructor==Date){ms=year.getMilliseconds();secs=year.getSeconds();mins=year.getMinutes();hours=year.getHours();day=year.getDate();month=year.getMonth();year=year.getFullYear()}var d=new Date();d.setUTCFullYear(year);d.setUTCDate(1);d.setUTCMonth(month||0);d.setUTCDate(day||1);d.setUTCHours(hours||0);d.setUTCMinutes((mins||0)-(Math.abs(tz)<30?tz*60:tz));d.setUTCSeconds(secs||0);d.setUTCMilliseconds(ms||0);return d},_attachCountdown:function(target,options){var $target=$(target);if($target.hasClass(this.markerClassName)){return}$target.addClass(this.markerClassName);var inst={options:$.extend({},options),_periods:[0,0,0,0,0,0,0]};$.data(target,PROP_NAME,inst);this._changeCountdown(target)},_addTarget:function(target){if(!this._hasTarget(target)){this._timerTargets.push(target)}},_hasTarget:function(target){return($.inArray(target,this._timerTargets)>-1)},_removeTarget:function(target){this._timerTargets=$.map(this._timerTargets,function(value){return(value==target?null:value)})},_updateTargets:function(){for(var i=0;i=inst._until.getTime());if(expired&&!inst._expiring){inst._expiring=true;if(this._hasTarget(target)){this._removeTarget(target)}inst._expiring=false}else if(inst._hold=='pause'){this._removeTarget(target)}$.data(target,PROP_NAME,inst)},_changeCountdown:function(target,options,value){options=options||{};if(typeof options=='string'){var name=options;options={};options[name]=value}var inst=$.data(target,PROP_NAME);if(inst){this._resetExtraLabels(inst.options,options);extendRemove(inst.options,options);this._adjustSettings(inst);$.data(target,PROP_NAME,inst);var now=new Date();if(inst._until&&inst._until>now){this._addTarget(target)}this._updateCountdown(target,inst)}},_resetExtraLabels:function(base,options){var changingLabels=false;for(var n in options){if(n.match(/[Ll]abels/)){changingLabels=true;break}}if(changingLabels){for(var n in base){if(n.match(/[Ll]abels[0-9]/)){base[n]=null}}}},_destroyCountdown:function(target){var $target=$(target);if(!$target.hasClass(this.markerClassName)){return}this._removeTarget(target);$target.removeClass(this.markerClassName).empty();$.removeData(target,PROP_NAME)},_pauseCountdown:function(target){this._hold(target,'pause')},_lapCountdown:function(target){this._hold(target,'lap')},_resumeCountdown:function(target){this._hold(target,null)},_hold:function(target,hold){var inst=$.data(target,PROP_NAME);if(inst){if(inst._hold=='pause'&&!hold){inst._periods=inst._savePeriods;var sign='+';inst['_until']=this._determineTime(sign+inst._periods[0]+'y'+sign+inst._periods[1]+'o'+sign+inst._periods[2]+'w'+sign+inst._periods[3]+'d'+sign+inst._periods[4]+'h'+sign+inst._periods[5]+'m'+sign+inst._periods[6]+'s');this._addTarget(target)}inst._hold=hold;inst._savePeriods=(hold=='pause'?inst._periods:null);$.data(target,PROP_NAME,inst);this._updateCountdown(target,inst)}},_getTimesCountdown:function(target){var inst=$.data(target,PROP_NAME);return(!inst?null:(!inst._hold?inst._periods:this._calculatePeriods(inst,inst._show,new Date())))},_get:function(inst,name){return(inst.options[name]!=null?inst.options[name]:$.countdown._defaults[name])},_adjustSettings:function(inst){var now=new Date();inst._until=this.UTCDate(-new Date().getTimezoneOffset(),this._determineTime(this._get(inst,'until'),now));inst._show=this._determineShow(inst)},_determineTime:function(setting,defaultTime){var offsetNumeric=function(offset){var time=new Date();time.setTime(time.getTime()+offset*1000);return time};var offsetString=function(offset){offset=offset.toLowerCase();var time=new Date();var year=time.getFullYear();var month=time.getMonth();var day=time.getDate();var hour=time.getHours();var minute=time.getMinutes();var second=time.getSeconds();var pattern=/([+-]?[0-9]+)\s*(s|m|h|d|w|o|y)?/g;var matches=pattern.exec(offset);while(matches){switch(matches[2]||'s'){case's':second+=parseInt(matches[1],10);break;case'm':minute+=parseInt(matches[1],10);break;case'h':hour+=parseInt(matches[1],10);break;case'd':day+=parseInt(matches[1],10);break;case'w':day+=parseInt(matches[1],10)*7;break;case'o':month+=parseInt(matches[1],10);day=Math.min(day,$.countdown._getDaysInMonth(year,month));break;case'y':year+=parseInt(matches[1],10);day=Math.min(day,$.countdown._getDaysInMonth(year,month));break}matches=pattern.exec(offset)}return new Date(year,month,day,hour,minute,second,0)};var time=(setting==null?defaultTime:(typeof setting=='string'?offsetString(setting):(typeof setting=='number'?offsetNumeric(setting):setting)));if(time)time.setMilliseconds(0);return time},_getDaysInMonth:function(year,month){return 32-new Date(year,month,32).getDate()},_generateHTML:function(inst){inst._periods=periods=(inst._hold?inst._periods:this._calculatePeriods(inst,inst._show,new Date()));var shownNonZero=false;var showCount=0;for(var period=0;period0);inst._show[period]=(inst._show[period]=='?'&&!shownNonZero?null:inst._show[period]);showCount+=(inst._show[period]?1:0)}var layout=this._get(inst,'layout');var labels=this._get(inst,'labels');var showFull=function(period){var labelsNum=$.countdown._get(inst,'labels'+periods[period]);return(inst._show[period]?''+periods[period]+'
'+(labelsNum?labelsNum[period]:labels[period])+'
':'')};return this._buildLayout(inst,layout)},_buildLayout:function(inst,layout){var labels=this._get(inst,'labels');var labelFor=function(index){return($.countdown._get(inst,'labels'+inst._periods[index])||labels)[index]};var subs={yl:labelFor(Y),yn:inst._periods[Y],ynn:this._twoDigits(inst._periods[Y]),ol:labelFor(O),on:inst._periods[O],onn:this._twoDigits(inst._periods[O]),wl:labelFor(W),wn:inst._periods[W],wnn:this._twoDigits(inst._periods[W]),dl:labelFor(D),dn:inst._periods[D],dnn:this._twoDigits(inst._periods[D]),dnnn:this._threeDigits(inst._periods[D]),hl:labelFor(H),hn:inst._periods[H],hnn:this._twoDigits(inst._periods[H]),ml:labelFor(M),mn:inst._periods[M],mnn:this._twoDigits(inst._periods[M]),sl:labelFor(S),sn:inst._periods[S],snn:this._twoDigits(inst._periods[S])};var html=layout;for(var i=0;i<7;i++){var period='yowdhms'.charAt(i);var re=new RegExp('\\{'+period+'<\\}(.*)\\{'+period+'>\\}','g');html=html.replace(re,(inst._show[i]?'$1':''))}$.each(subs,function(n,v){var re=new RegExp('\\{'+n+'\\}','g');html=html.replace(re,v)});return html},_twoDigits:function(value){return(value<10?'0':'')+value},_threeDigits:function(value){return(value<100?(value<10?'00':'0'):'')+value},_determineShow:function(inst){var format=this._get(inst,'format');var show=[];show[Y]=(format.match('y')?'?':(format.match('Y')?'!':null));show[O]=(format.match('o')?'?':(format.match('O')?'!':null));show[W]=(format.match('w')?'?':(format.match('W')?'!':null));show[D]=(format.match('d')?'?':(format.match('D')?'!':null));show[H]=(format.match('h')?'?':(format.match('H')?'!':null));show[M]=(format.match('m')?'?':(format.match('M')?'!':null));show[S]=(format.match('s')?'?':(format.match('S')?'!':null));return show},_calculatePeriods:function(inst,show,now){inst._now=now;inst._now.setMilliseconds(0);var until=new Date(inst._now.getTime());until.setTime(inst._until.getTime());if(now.getTime()>inst._until.getTime()){inst._now=now=until}var periods=[0,0,0,0,0,0,0];if(show[Y]||show[O]){var lastNow=$.countdown._getDaysInMonth(now.getFullYear(),now.getMonth());var lastUntil=$.countdown._getDaysInMonth(until.getFullYear(),until.getMonth());var sameDay=(until.getDate()==now.getDate()||(until.getDate()>=Math.min(lastNow,lastUntil)&&now.getDate()>=Math.min(lastNow,lastUntil)));var getSecs=function(date){return(date.getHours()*60+date.getMinutes())*60+date.getSeconds()};var months=Math.max(0,(until.getFullYear()-now.getFullYear())*12+until.getMonth()-now.getMonth()+((until.getDate()lastDay){date.setDate(lastDay)}date.setFullYear(date.getFullYear()+offset*periods[Y]);date.setMonth(date.getMonth()+offset*periods[O]);if(wasLastDay){date.setDate(lastDay)}return date};now=adjustDate(new Date(now.getTime()),+1,lastNow)}var diff=Math.floor((until.getTime()-now.getTime())/1000);var extractPeriod=function(period,numSecs){periods[period]=(show[period]?Math.floor(diff/numSecs):0);diff-=periods[period]*numSecs};extractPeriod(W,604800);extractPeriod(D,86400);extractPeriod(H,3600);extractPeriod(M,60);extractPeriod(S,1);return periods}});function extendRemove(target,props){$.extend(target,props);for(var name in props){if(props[name]==null){target[name]=null}}return target}$.fn.countdown=function(options){var otherArgs=Array.prototype.slice.call(arguments,1);if(options=='getTimes'){return $.countdown['_'+options+'Countdown'].apply($.countdown,[this[0]].concat(otherArgs))}return this.each(function(){if(typeof options=='string'){$.countdown['_'+options+'Countdown'].apply($.countdown,[this].concat(otherArgs))}else{$.countdown._attachCountdown(this,options)}})};$.countdown=new Countdown()})(jQuery);