(function($){function Countdown(){this.regional=[];this.regional['']={labels:['Years','Months','Weeks','Days','Hours','Minutes','Seconds'],labelsSingle:['Year','Month','Week','Day','Hour','Minute','Second'],compactLabels:['y','m','w','d'],compactLabelsSingle:['y','m','w','d'],timeSeparator:':'};this._defaults={format:'dHMS',compact:false,description:'',expiryUrl:null,alwaysExpire:false,onExpiry:null,onTick:null,serverTime:null};$.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',setDefaults:function(options){extendRemove(this._defaults,options||{})},_attachCountdown:function(target,options){target=$(target);if(target.is('.'+this.markerClassName)){return}target.addClass(this.markerClassName);if(!target[0].id){target[0].id='cdn'+new Date().getTime()}var inst={};inst.options=$.extend({},options);inst._periods=[0,0,0,0,0,0,0];this._adjustSettings(inst);$.data(target[0],PROP_NAME,inst);this._updateCountdown(target,inst)},_updateCountdown:function(id,inst){var target=$(id);inst=inst||$.data(target[0],PROP_NAME);if(!inst){return}target.html(this._generateHTML(inst));var onTick=this._get(inst,'onTick');if(onTick){onTick.apply(target[0],[inst._hold!='lap'?inst._periods:this._calculatePeriods(inst,inst._show,new Date())])}var expired=inst._hold!='pause'&&(inst._since?inst._now.getTime()<=inst._since.getTime():inst._now.getTime()>=inst._until.getTime());if(expired){if(inst._timer||this._get(inst,'alwaysExpire')){var onExpiry=this._get(inst,'onExpiry');if(onExpiry){onExpiry.apply(target[0],[])}var expiryUrl=this._get(inst,'expiryUrl');if(expiryUrl){window.location=expiryUrl}}inst._timer=null}else if(inst._hold=='pause'){inst._time=null}else{var format=this._get(inst,'format');inst._timer=setTimeout('$.countdown._updateCountdown("#'+target[0].id+'")',(format.match('s|S')?1:(format.match('m|M')?30:600))*980)}$.data(target[0],PROP_NAME,inst)},_changeCountdown:function(target,options){var inst=$.data(target,PROP_NAME);if(inst){extendRemove(inst.options,options||{});this._adjustSettings(inst);$.data(target,PROP_NAME,inst);this._updateCountdown(target,inst)}},_destroyCountdown:function(target){target=$(target);if(!target.is('.'+this.markerClassName)){return}target.removeClass(this.markerClassName).empty();var inst=$.data(target[0],PROP_NAME);if(inst._timer){clearTimeout(inst._timer)}$.removeData(target[0],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._since?'-':'+');inst[inst._since?'_since':'_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')}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();var serverTime=this._get(inst,'serverTime');inst._offset=(serverTime?serverTime.getTime()-now.getTime():0);inst._since=this._get(inst,'since');if(inst._since){inst._since=this._determineTime(inst._since,null)}inst._until=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 getDaysInMonth=function(year,month){return 32-new Date(year,month,32).getDate()};var offsetString=function(offset){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|S|m|M|h|H|d|D|w|W|o|O|y|Y)?/g;var matches=pattern.exec(offset);while(matches){switch(matches[2]||'s'){case's':case'S':second+=parseInt(matches[1]);break;case'm':case'M':minute+=parseInt(matches[1]);break;case'h':case'H':hour+=parseInt(matches[1]);break;case'd':case'D':day+=parseInt(matches[1]);break;case'w':case'W':day+=parseInt(matches[1])*7;break;case'o':case'O':month+=parseInt(matches[1]);day=Math.min(day,getDaysInMonth(year,month));break;case'y':case'Y':year+=parseInt(matches[1]);day=Math.min(day,getDaysInMonth(year,month));break}matches=pattern.exec(offset)}time=new Date(year,month,day,hour,minute,second,0);return time};var time=(setting==null?defaultTime:(typeof setting=='string'?offsetString(setting):(typeof setting=='number'?offsetNumeric(setting):setting)));if(time)time.setMilliseconds(0);return time},_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;period<inst._show.length;period++){shownNonZero|=(inst._show[period]=='?'&&periods[period]>0);inst._show[period]=(inst._show[period]=='?'&&!shownNonZero?null:inst._show[period]);showCount+=(inst._show[period]?1:0)}var compact=this._get(inst,'compact');var labels=(compact?this._get(inst,'compactLabels'):this._get(inst,'labels'));var labelsSingle=(compact?this._get(inst,'compactLabelsSingle'):this._get(inst,'labelsSingle'))||labels;var timeSeparator=this._get(inst,'timeSeparator');var description=this._get(inst,'description')||'';var twoDigits=function(value){return(value<10?'0':'')+value};var showCompact=function(period){return(inst._show[period]?periods[period]+(periods[period]==1?labelsSingle[period]:labels[period])+' ':'')};var showFull=function(period){return(inst._show[period]?'<div class="countdown_section"><span class="countdown_amount">'+periods[period]+'</span>'+(periods[period]==1?labelsSingle[period]:labels[period])+'</div>':'')};return(compact?'<div class="countdown_row countdown_amount'+(inst._hold?' countdown_holding':'')+'">'+showCompact(Y)+showCompact(O)+showCompact(W)+showCompact(D)+twoDigits(periods[H])+timeSeparator+twoDigits(periods[M])+(inst._show[S]?timeSeparator+twoDigits(periods[S]):''):'<div class="countdown_row countdown_show'+showCount+(inst._hold?' countdown_holding':'')+'">'+showFull(Y)+showFull(O)+showFull(W)+showFull(D)+showFull(H)+showFull(M)+showFull(S))+'</div>'+(description?'<div class="countdown_row countdown_descr">'+description+'</div>':'')},_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());if(inst._since&&now.getTime()<inst._since.getTime()){inst._now=now=until}else if(inst._since){now=inst._since}else{until.setTime(inst._until.getTime());if(now.getTime()>inst._until.getTime()){inst._now=now=until}}until.setTime(until.getTime()-inst._offset);var periods=[0,0,0,0,0,0,0];if(show[Y]||show[O]){var months=Math.max(0,(until.getFullYear()-now.getFullYear())*12+until.getMonth()-now.getMonth()+(until.getDate()<now.getDate()?-1:0));periods[Y]=(show[Y]?Math.floor(months/12):0);periods[O]=(show[O]?months-periods[Y]*12:0);if(inst._since){until.setFullYear(until.getFullYear()-periods[Y]);until.setMonth(until.getMonth()-periods[O])}else{now=new Date(now.getTime());now.setFullYear(now.getFullYear()+periods[Y]);now.setMonth(now.getMonth()+periods[O])}}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);