
/* Merged Plone Javascript file
 * This file is dynamically assembled from separate parts.
 * Some of these parts have 3rd party licenses or copyright information attached
 * Such information is valid for that section,
 * not for the entire composite file
 * originating files are separated by - filename.js -
 */

/* - fckeditor.js - */
// http://www.gormanhealthgroup.com/portal_javascripts/fckeditor.js?original=1
var FCKeditor=function(instanceName,width,height,toolbarSet,value){this.InstanceName=instanceName ;this.Width=width||'100%' ;this.Height=height||'200' ;this.ToolbarSet=toolbarSet||'Default' ;this.Value=value||'' ;this.BasePath=FCKeditor.BasePath ;this.CheckBrowser=true ;this.DisplayErrors=true ;this.Config=new Object() ;this.OnError=null }
FCKeditor.BasePath='/fckeditor/' ;FCKeditor.MinHeight=200 ;FCKeditor.MinWidth=750 ;FCKeditor.prototype.Version='2.6.3' ;FCKeditor.prototype.VersionBuild='19836' ;FCKeditor.prototype.Create=function(){document.write(this.CreateHtml()) }
FCKeditor.prototype.CreateHtml=function(){if(!this.InstanceName||this.InstanceName.length==0){this._ThrowError(701,'You must specify an instance name.') ;return '' }
var sHtml='' ;if(!this.CheckBrowser||this._IsCompatibleBrowser()){sHtml+='<input type="hidden" id="'+this.InstanceName+'" name="'+this.InstanceName+'" value="'+this._HTMLEncode(this.Value)+'" style="display:none" />' ;sHtml+=this._GetConfigHtml() ;sHtml+=this._GetIFrameHtml() }
else{var sWidth=this.Width.toString().indexOf('%')>0?this.Width:this.Width+'px' ;var sHeight=this.Height.toString().indexOf('%')>0?this.Height:this.Height+'px' ;sHtml+='<textarea name="'+this.InstanceName+'" rows="4" cols="40" style="width:'+sWidth+';height:'+sHeight ;if(this.TabIndex)
sHtml+='" tabindex="'+this.TabIndex ;sHtml+='">'+this._HTMLEncode(this.Value)+'<\/textarea>' }
return sHtml }
FCKeditor.prototype.ReplaceTextarea=function(){if(!this.CheckBrowser||this._IsCompatibleBrowser()){var oTextarea=document.getElementById(this.InstanceName) ;var colElementsByName=document.getElementsByName(this.InstanceName) ;var i=0;while(oTextarea||i==0){if(oTextarea&&oTextarea.tagName.toLowerCase()=='textarea')
break ;oTextarea=colElementsByName[i++] }
if(!oTextarea){alert('Error: The TEXTAREA with id or name set to "'+this.InstanceName+'" was not found') ;return }
oTextarea.style.display='none' ;if(oTextarea.tabIndex)
this.TabIndex=oTextarea.tabIndex ;this._InsertHtmlBefore(this._GetConfigHtml(),oTextarea) ;this._InsertHtmlBefore(this._GetIFrameHtml(),oTextarea) }}
FCKeditor.prototype._InsertHtmlBefore=function(html,element){if(element.insertAdjacentHTML)
element.insertAdjacentHTML('beforeBegin',html) ;else{var oRange=document.createRange() ;oRange.setStartBefore(element) ;var oFragment=oRange.createContextualFragment(html);element.parentNode.insertBefore(oFragment,element) }}
FCKeditor.prototype._GetConfigHtml=function(){var sConfig='' ;for(var o in this.Config){if(sConfig.length>0) sConfig+='&amp;' ;sConfig+=encodeURIComponent(o)+'='+encodeURIComponent(this.Config[o]) }
return '<input type="hidden" id="'+this.InstanceName+'___Config" value="'+sConfig+'" style="display:none" />' }
FCKeditor.prototype._GetIFrameHtml=function(){var sFile='fckeditor.html' ;try{if((/fcksource=true/i).test(window.top.location.search))
sFile='fckeditor.original.html' }
catch(e){}
var sLink=this.BasePath+'editor/'+sFile+'?InstanceName='+encodeURIComponent(this.InstanceName) ;if(this.ToolbarSet)
sLink+='&amp;Toolbar='+this.ToolbarSet ;html='<iframe id="'+this.InstanceName+'___Frame" src="'+sLink+'" width="'+this.Width+'" height="'+this.Height ;if(this.TabIndex)
html+='" tabindex="'+this.TabIndex ;html+='" frameborder="0" scrolling="no"></iframe>' ;return html }
FCKeditor.prototype._IsCompatibleBrowser=function(){return FCKeditor_IsCompatibleBrowser() }
FCKeditor.prototype._ThrowError=function(errorNumber,errorDescription){this.ErrorNumber=errorNumber ;this.ErrorDescription=errorDescription ;if(this.DisplayErrors){document.write('<div style="COLOR: #ff0000">') ;document.write('[ FCKeditor Error '+this.ErrorNumber+': '+this.ErrorDescription+' ]') ;document.write('</div>') }
if(typeof(this.OnError)=='function')
this.OnError(this,errorNumber,errorDescription) }
FCKeditor.prototype._HTMLEncode=function(text){if(typeof(text)!="string")
text=text.toString() ;text=text.replace(/&/g,"&amp;").replace(/"/g, "&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;") ;return text }
;(function(){var textareaToEditor=function(textarea){var editor=new FCKeditor(textarea.name) ;editor.Width=Math.max(textarea.offsetWidth,FCKeditor.MinWidth) ;editor.Height=Math.max(textarea.offsetHeight,FCKeditor.MinHeight) ;return editor }
FCKeditor.ReplaceAllTextareas=function(){var textareas=document.getElementsByTagName('textarea') ;for(var i=0 ;i<textareas.length ;i++){var editor=null ;var textarea=textareas[i] ;var name=textarea.name ;if(!name||name.length==0)
continue ;if(typeof arguments[0]=='string'){var classRegex=new RegExp('(?:^| )'+arguments[0]+'(?:$| )') ;if(!classRegex.test(textarea.className))
continue }
else if(typeof arguments[0]=='function'){editor=textareaToEditor(textarea) ;if(arguments[0](textarea,editor)===false)
continue }
if(!editor)
editor=textareaToEditor(textarea) ;editor.ReplaceTextarea() }}})() ;
function FCKeditor_IsCompatibleBrowser(){var sAgent=navigator.userAgent.toLowerCase() ;if(/*@cc_on!@*/false&&sAgent.indexOf("mac")==-1){var sBrowserVersion=navigator.appVersion.match(/MSIE (.\..)/)[1] ;return(sBrowserVersion>=5.5) }
if(navigator.product=="Gecko"&&navigator.productSub>=20030210&&!(typeof(opera)=='object'&&opera.postError))
return true ;if(window.opera&&window.opera.version&&parseFloat(window.opera.version())>=9.5)
return true ;if(sAgent.indexOf(' adobeair/')!=-1)
return(sAgent.match(/ adobeair\/(\d+)/ )[1] >= 1 ) ;	// Build must be at least v1
if(sAgent.indexOf(' applewebkit/')!=-1)
return(sAgent.match(/ applewebkit\/(\d+)/ )[1] >= 522 ) ;	// Build must be at least 522(v3)
return false }


/* - fck_plone.js - */
// http://www.gormanhealthgroup.com/portal_javascripts/fck_plone.js?original=1
var FCKBaseHref={};makeLinksRelative=function(basehref,contents){var base=basehref.replace('http://www.gormanhealthgroup.com','');var href=base.replace(/\/[^\/]*$/,'/');var hrefparts=href.split('/');return contents.replace(/(<[^>]* (?:src|href)=")([^"]*)"/g,
function(str,tag,url,offset,contents){url=url.replace('http://www.gormanhealthgroup.com','');if(url.substring(0,1)=='#'){str=tag+url+'"'}
else{var urlparts=url.split('#');var anchor=urlparts[1]||'';url=urlparts[0];var urlparts=url.split('/');var common=0;while(common<urlparts.length&&common<hrefparts.length&&urlparts[common]==hrefparts[common])
common++;var last=urlparts[common];if(common+1==urlparts.length&&last=='emptypage'){urlparts[common]=''}
if(common>0){var path=new Array();var i=0;for(;i+common<hrefparts.length-1;i++){path[i]='..'};while(common<urlparts.length){path[i++]=urlparts[common++]};if(i==0){path[i++]='.'}
str=path.join('/');if(anchor){str=[str,anchor].join('#')}
str=tag+str+'"'}}
return str})};finalizePublication=function(editorInstance){var oField=editorInstance.LinkedField;var fieldName=oField.name;var baseHref=FCKBaseHref[fieldName];if(baseHref){relativeLinksHtml=makeLinksRelative(FCKBaseHref[fieldName],editorInstance.GetXHTML());oField.value=relativeLinksHtml}
else oField.value=editorInstance.GetXHTML()}
getParamValue=function(id){value=document.getElementById(id).value;if(value=='true') return true;if(value=='false') return false;return value}
FCKeditor_Plone_start_instance=function(fckContainer,inputname){var inputContainer=document.getElementById(inputname+'_'+'cleaninput');if(inputContainer){var fckParams=['path_user','base_path','fck_basehref','links_basehref','input_url','allow_server_browsing','browser_root','allow_file_upload','allow_image_upload','allow_flash_upload','fck_skin_path','lang','fck_default_r2l','force_paste_as_text','allow_latin_entities','spellchecker','keyboard_entermode','keyboard_shiftentermode','fck_toolbar','editor_width','editor_height'];var fckValues={};for(var i=0;i<fckParams.length;i++){var id=inputname+'_'+fckParams [i];fckValues [fckParams [i]]=getParamValue(id)}
var oFck=new FCKeditor(inputname);var pathUser=fckValues ['path_user']+'/';oFck.BasePath=fckValues ['base_path']+'/';oFck.Config['CustomConfigurationsPath']=fckValues ['input_url']+'/fckconfigPlone.js?field_name='+inputname;oFck.BaseHref=fckValues ['fck_basehref'];FCKBaseHref[inputname]=fckValues ['links_basehref'];if(inputContainer.innerText!=undefined) oFck.Value=inputContainer.innerText;else oFck.Value=inputContainer.textContent;oFck.Config['LinkBrowser']=fckValues ['allow_server_browsing'];oFck.Config['LinkBrowserURL']=fckValues ['base_path']+'/fckbrowser/browser.html?field_name='+inputname+'&Connector='+fckValues ['input_url']+'/connectorPlone&ServerPath='+fckValues ['browser_root']+'&CurrentPath='+pathUser ;oFck.Config['LinkUpload']=fckValues ['allow_file_upload'] ;oFck.Config['LinkUploadURL']=fckValues ['input_url']+'/uploadPlone?field_name='+inputname+'&CurrentPath='+pathUser;oFck.Config['ImageBrowser']=fckValues ['allow_server_browsing'];oFck.Config['ImageBrowserURL']=fckValues ['base_path']+'/fckbrowser/browser.html?field_name='+inputname+'&Type=Image&Connector='+fckValues ['input_url']+'/connectorPlone&ServerPath='+fckValues ['browser_root']+'&CurrentPath='+pathUser ;oFck.Config['ImageUpload']=fckValues ['allow_image_upload'] ;oFck.Config['ImageUploadURL']=fckValues ['input_url']+'/uploadPlone?field_name='+inputname+'&CurrentPath='+pathUser;oFck.Config['FlashBrowser']=fckValues ['allow_server_browsing'];oFck.Config['FlashBrowserURL']=fckValues ['base_path']+'/fckbrowser/browser.html?field_name='+inputname+'&Type=Flash&Connector='+fckValues ['input_url']+'/connectorPlone&ServerPath='+fckValues ['browser_root']+'&CurrentPath='+pathUser ;oFck.Config['FlashUpload']=fckValues ['allow_flash_upload'] ;oFck.Config['FlashUploadURL']=fckValues ['input_url']+'/uploadPlone?field_name='+inputname+'&CurrentPath='+pathUser;oFck.Config['MediaBrowser']=fckValues ['allow_server_browsing'];oFck.Config['MediaBrowserURL']=fckValues ['base_path']+'/fckbrowser/browser.html?field_name='+inputname+'&Type=Media&Connector='+fckValues ['input_url']+'/connectorPlone&ServerPath='+fckValues ['browser_root']+'&CurrentPath='+pathUser ;oFck.Config['SkinPath']=fckValues ['base_path']+'/editor/'+fckValues ['fck_skin_path'];oFck.Config['AutoDetectLanguage']=false;oFck.Config['DefaultLanguage']=fckValues ['lang'];oFck.Config['ForcePasteAsPlainText']=fckValues ['force_paste_as_text'];oFck.Config['IncludeLatinEntities']=fckValues ['allow_latin_entities'];oFck.Config['SpellChecker']=fckValues ['spellchecker'];oFck.Config['EnterMode']=fckValues ['keyboard_entermode'];oFck.Config['ShiftEnterMode']=fckValues ['keyboard_shiftentermode'];oFck.ToolbarSet=fckValues ['fck_toolbar'];oFck.Width=fckValues ['editor_width'];oFck.Height=fckValues ['editor_height'];try{fckContainer.innerHTML=oFck.CreateHtml();document.getElementById(inputname+'_fckLoading').style.display='none'}
catch(e){document.getElementById(inputname+'_fckLoading').style.display='none';document.getElementById(inputname+'_fckError').style.display='block'}}}
Save_inline=function(fieldname,form,editorInstance){if(editorInstance.Commands.GetCommand('FitWindow').GetState()){kukit.log('Full screen mode must be disabled before saving inline');editorInstance.Commands.GetCommand('FitWindow').Execute()} ;saveField=document.getElementById(fieldname+'_fckSaveField');if(saveField){kukit.log('Fire the savekupu server event = save inline without submitting');saveField.style.visibility='visible';if(saveField.fireEvent){saveField.fireEvent('onChange')}
else{var evt=document.createEvent("HTMLEvents");evt.initEvent("change",true,true);saveField.dispatchEvent(evt)}
comp=(setTimeout("saveField.style.visibility='hidden'",2000));return false}
else{kukit.log('Try to submit the form in portal_factory');window.onbeforeunload=null;form.submit()}}


/* - ++resource++ghg.theme.scripts/ghg.js - */
// http://www.gormanhealthgroup.com/portal_javascripts/++resource++ghg.theme.scripts/ghg.js?original=1
function ghg_logit(msg){if(console&&console.log)
console.log(msg)}
function limitChars(textid,limit,infodiv,parent,event){var text=jq('#'+textid);if(!(text.length)){return}
var textlength=text.val().length;if(textlength>limit){jq('#'+infodiv).html('You cannot enter more then '+limit+' characters!');jq('#'+parent).addClass('error');jq('#'+infodiv).addClass('portalMessage');return false}
else{jq('#'+infodiv).html('You have '+(limit-textlength)+' characters left.');jq('#'+parent).removeClass('error');jq('#'+infodiv).removeClass('portalMessage');return true}}
jq(document).ready(function(){var x=jq('#formfield-form-feedback');if(!x.length)
return;jq('#formfield-form-feedback').append('<div class="formHelp" style="display: block;" id="charlimitinfo">Write your message within 10000 characters.</div>');limitChars('form\\.feedback',10000,'charlimitinfo','formfield-form-feedback',null)});jq(function(){var elemid='form\\.feedback';var maxchar=10000;var x=jq('#'+elemid);if(!x.length)
return;jq('#'+elemid).keyup(function(event){var timeout=0;var keyCode=event.which?event.which:event.keyCode;if((keyCode==8)||(keyCode==46))
timeout=100;setTimeout(function(){if(timeout>0)
limitChars(elemid,maxchar,'charlimitinfo','formfield-form-feedback',event)},timeout)});jq('#'+elemid).keydown(function(event){var timeout=0;var keyCode=event.which?event.which:event.keyCode;if((keyCode==8)||(keyCode==46))
timeout=100;setTimeout(function(){limitChars(elemid,maxchar,'charlimitinfo','formfield-form-feedback',event)},timeout)});jq('#'+elemid).change(function(){setTimeout(function(){limitChars(elemid,maxchar,'charlimitinfo','formfield-form-feedback',null)},100)});jq('#'+elemid).blur(function(){limitChars(elemid,maxchar,'charlimitinfo','formfield-form-feedback',null)});jq('#'+elemid).bind('cut copy paste', function(e){setTimeout(function(){limitChars(elemid,maxchar,'charlimitinfo','formfield-form-feedback',null)},100)})});
function ghg_serverTime(){var time=null;jq.ajax({url:'@@get-datetime',async:false,dataType:'text',success: function(text){time=new Date(text*1)},error: function(http,message,exc){time=new Date()}});return time};
function ghg_getClockLayout(){var layoutstr='<span class="day">{dnn}<br /><span class="unit">{dl}</span></span><span class="clockSeparator">{sep}</span><span class="hour">{hnn}<br /><span class="unit">{hl}</span></span><span class="clockSeparator">{sep}</span><span class="minute">{mnn}<br /><span class="unit">{ml}</span></span><span class="clockSeparator">{sep}</span><span class="second">{snn}<br /><span class="unit">{sl}</span></span>';return layoutstr}


/* - ++resource++ghg.theme.scripts/jquery.countdown.js - */
// http://www.gormanhealthgroup.com/portal_javascripts/++resource++ghg.theme.scripts/jquery.countdown.js?original=1
(function($){
function Countdown(){this.regional=[];this.regional['']={labels:['Years','Months','Weeks','Days','Hours','Minutes','Seconds'],labels1:['Year','Month','Week','Day','Hour','Minute','Second'],compactLabels:['y','m','w','d'],timeSeparator:':',isRTL:false};this._defaults={until:null,since:null,timezone:null,serverSync:null,format:'dHMS',layout:'',compact:false,description:'',expiryUrl:'',expiryText:'',alwaysExpire:false,onExpiry:null,onTick: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',_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},periodsToSeconds: function(periods){return periods[0] * 31557600+periods[1] * 2629800+periods[2] * 604800+periods[3] * 86400+periods[4] * 3600+periods[5] * 60+periods[6]},_settingsCountdown: function(target,name){if(!name){return $.countdown._defaults}
var inst=$.data(target,PROP_NAME);return(name=='all'?inst.options:inst.options[name])},_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<this._timerTargets.length;i++){this._updateCountdown(this._timerTargets[i])}},_updateCountdown: function(target,inst){var $target=$(target);inst=inst||$.data(target,PROP_NAME);if(!inst){return}
$target.html(this._generateHTML(inst));$target[(this._get(inst,'isRTL')?'add':'remove')+'Class']('countdown_rtl');var onTick=this._get(inst,'onTick');if(onTick){var periods=inst._hold!='lap'?inst._periods:this._calculatePeriods(inst,inst._show,new Date());onTick.apply(target,[periods])}
var expired=inst._hold!='pause'&&(inst._since?inst._now.getTime()<inst._since.getTime():inst._now.getTime()>=inst._until.getTime());if(expired&&!inst._expiring){inst._expiring=true;if(this._hasTarget(target)||this._get(inst,'alwaysExpire')){this._removeTarget(target);var onExpiry=this._get(inst,'onExpiry');if(onExpiry){onExpiry.apply(target,[])}
var expiryText=this._get(inst,'expiryText');if(expiryText){var layout=this._get(inst,'layout');inst.options.layout=expiryText;this._updateCountdown(target,inst);inst.options.layout=layout}
var expiryUrl=this._get(inst,'expiryUrl');if(expiryUrl){window.location=expiryUrl}}
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(target,inst);$.data(target,PROP_NAME,inst);var now=new Date();if((inst._since&&inst._since<now)||(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}}}},_adjustSettings: function(target,inst){var serverSync=this._get(inst,'serverSync');serverSync=(serverSync?serverSync.apply(target,[]):null);var now=new Date();var timezone=this._get(inst,'timezone');timezone=(timezone==null?-now.getTimezoneOffset():timezone);inst._since=this._get(inst,'since');if(inst._since!=null){inst._since=this.UTCDate(timezone,this._determineTime(inst._since,null));if(inst._since&&serverSync){inst._since.setMilliseconds(inst._since.getMilliseconds()+now.getTime()-serverSync.getTime())}}
inst._until=this.UTCDate(timezone,this._determineTime(this._get(inst,'until'),now));if(serverSync){inst._until.setMilliseconds(inst._until.getMilliseconds()+now.getTime()-serverSync.getTime())}
inst._show=this._determineShow(inst)},_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._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');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])},_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;var show=$.extend({},inst._show);for(var period=0;period<inst._show.length;period++){shownNonZero|=(inst._show[period]=='?'&&periods[period]>0);show[period]=(inst._show[period]=='?'&&!shownNonZero?null:inst._show[period]);showCount+=(show[period]?1:0)}
var compact=this._get(inst,'compact');var layout=this._get(inst,'layout');var labels=(compact?this._get(inst,'compactLabels'):this._get(inst,'labels'));var timeSeparator=this._get(inst,'timeSeparator');var description=this._get(inst,'description')||'';var showCompact=function(period){var labelsNum=$.countdown._get(inst,'compactLabels'+periods[period]);return(show[period]?periods[period]+(labelsNum?labelsNum[period]:labels[period])+' ':'')};var showFull=function(period){var labelsNum=$.countdown._get(inst,'labels'+periods[period]);return(show[period]?'<span class="countdown_section"><span class="countdown_amount">'+periods[period]+'</span><br/>'+(labelsNum?labelsNum[period]:labels[period])+'</span>':'')};return(layout?this._buildLayout(inst,show,layout,compact):((compact?'<span class="countdown_row countdown_amount'+(inst._hold?' countdown_holding':'')+'">'+showCompact(Y)+showCompact(O)+showCompact(W)+showCompact(D)+(show[H]?this._minDigits(periods[H],2):'')+(show[M]?(show[H]?timeSeparator:'')+this._minDigits(periods[M],2):'')+(show[S]?(show[H]||show[M]?timeSeparator:'')+this._minDigits(periods[S],2):''):'<span class="countdown_row countdown_show'+showCount+(inst._hold?' countdown_holding':'')+'">'+showFull(Y)+showFull(O)+showFull(W)+showFull(D)+showFull(H)+showFull(M)+showFull(S))+'</span>'+(description?'<span class="countdown_row countdown_descr">'+description+'</span>':'')))},_buildLayout: function(inst,show,layout,compact){var labels=this._get(inst,(compact?'compactLabels':'labels'));var labelFor=function(index){return($.countdown._get(inst,(compact?'compactLabels':'labels')+inst._periods[index])||labels)[index]};var digit=function(value,position){return Math.floor(value/position)%10};var subs={desc:this._get(inst,'description'),sep:this._get(inst,'timeSeparator'),yl:labelFor(Y),yn:inst._periods[Y],ynn:this._minDigits(inst._periods[Y],2),ynnn:this._minDigits(inst._periods[Y],3),y1:digit(inst._periods[Y],1),y10:digit(inst._periods[Y],10),y100:digit(inst._periods[Y],100),y1000:digit(inst._periods[Y],1000),ol:labelFor(O),on:inst._periods[O],onn:this._minDigits(inst._periods[O],2),onnn:this._minDigits(inst._periods[O],3),o1:digit(inst._periods[O],1),o10:digit(inst._periods[O],10),o100:digit(inst._periods[O],100),o1000:digit(inst._periods[O],1000),wl:labelFor(W),wn:inst._periods[W],wnn:this._minDigits(inst._periods[W],2),wnnn:this._minDigits(inst._periods[W],3),w1:digit(inst._periods[W],1),w10:digit(inst._periods[W],10),w100:digit(inst._periods[W],100),w1000:digit(inst._periods[W],1000),dl:labelFor(D),dn:inst._periods[D],dnn:this._minDigits(inst._periods[D],2),dnnn:this._minDigits(inst._periods[D],3),d1:digit(inst._periods[D],1),d10:digit(inst._periods[D],10),d100:digit(inst._periods[D],100),d1000:digit(inst._periods[D],1000),hl:labelFor(H),hn:inst._periods[H],hnn:this._minDigits(inst._periods[H],2),hnnn:this._minDigits(inst._periods[H],3),h1:digit(inst._periods[H],1),h10:digit(inst._periods[H],10),h100:digit(inst._periods[H],100),h1000:digit(inst._periods[H],1000),ml:labelFor(M),mn:inst._periods[M],mnn:this._minDigits(inst._periods[M],2),mnnn:this._minDigits(inst._periods[M],3),m1:digit(inst._periods[M],1),m10:digit(inst._periods[M],10),m100:digit(inst._periods[M],100),m1000:digit(inst._periods[M],1000),sl:labelFor(S),sn:inst._periods[S],snn:this._minDigits(inst._periods[S],2),snnn:this._minDigits(inst._periods[S],3),s1:digit(inst._periods[S],1),s10:digit(inst._periods[S],10),s100:digit(inst._periods[S],100),s1000:digit(inst._periods[S],1000)};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,(show[i]?'$1':''))}
$.each(subs, function(n,v){var re=new RegExp('\\{'+n+'\\}','g');html=html.replace(re,v)});return html},_minDigits: function(value,len){value=''+value;if(value.length>=len){return value}
value='0000000000'+value;return value.substr(value.length-len)},_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){if(now.getTime()<inst._since.getTime()){inst._now=now=until}
else{now=inst._since}}
else{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()<now.getDate()&&!sameDay)||(sameDay&&getSecs(until)<getSecs(now))?-1:0));periods[Y]=(show[Y]?Math.floor(months/12):0);periods[O]=(show[O]?months-periods[Y] * 12:0);var adjustDate=function(date,offset,last){var wasLastDay=(date.getDate()==last);var lastDay=$.countdown._getDaysInMonth(date.getFullYear()+offset * periods[Y],date.getMonth()+offset * periods[O]);if(date.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};if(inst._since){until=adjustDate(until,-1,lastUntil)}
else{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);if(diff>0&&!inst._since){var multiplier=[1,12,4.3482,7,24,60,60];var lastShown=S;var max=1;for(var period=S;period>=Y;period--){if(show[period]){if(periods[lastShown]>=max){periods[lastShown]=0;diff=1}
if(diff>0){periods[period]++;diff=0;lastShown=period;max=1}}
max *=multiplier[period]}}
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'||options=='settings'){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);
