var CacheLoader=function(){var _cacheDir='_cache';var _mode='offline';var _gatewayUrl;var self={initialize:function(options){options=options||{};_mode=options.mode||_mode;_cacheDir=options.cacheDir||_cacheDir;_gatewayUrl={dynamic:'/rpc/cachegateway.php',offline:_cacheDir};},load:function(id,key,callbacks){var resultObj;var url=self.buildUrl(id,key);var request=new Ajax.Request(url,{method:'get',onSuccess:function(transport){if(_mode=='offline'){resultObj={result:'success',content:transport.responseText};transport.responseText=Object.toJSON(resultObj);}
callbacks.onSuccess(transport.responseText);},onFailure:callbacks.onFailure});},joinKey:function(key,pairDelimeter,kvDelimeter){var keyParts=[];for(var i in key){keyParts.push(i+kvDelimeter+key[i]);}
return keyParts.sort().join(pairDelimeter);},buildUrl:function(id,key){var url=(_mode=='offline')?_gatewayUrl.offline+'/'+id+'/'+id+'_'+self.joinKey(key,',','='):_gatewayUrl.dynamic+'?id='+id+'&'+self.joinKey(key,'&','=');return url;}};return self;}();;var Clock=function(){var _hashKey='clock';var _date=new Date();var _observers=[];var self={initialize:function(){HashHelper.addObserver({key:_hashKey,callback:self.setDate});HashHelper.startWatching();},setDate:function(date){var parts=date.match(/(\d\d\d\d)\-(\d\d)\-(\d\d)/)||[];if(parts.length<4){return;}
var string=parts[2]+'/'+parts[3]+'/'+parts[1];_date=new Date(string);self.notifyObservers();},getDate:function(){return _date;},format:function(formatString,date){date=date||_date;return date.format(formatString);},addObserver:function(callback){_observers.push(callback);},notifyObservers:function(){for(var i=0,length=_observers.length;i<length;i++){_observers[i](_date);}}};return self;}();;Date.prototype.format=function(format){var returnStr='';var replace=Date.replaceChars;var curChar;for(var i=0;i<format.length;i++){curChar=format.charAt(i);if(replace[curChar]){returnStr+=replace[curChar].call(this);}
else{returnStr+=curChar;}}
return returnStr;};Date.replaceChars={shortMonths:['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'],longMonths:['January','February','March','April','May','June','July','August','September','October','November','December'],shortDays:['Sun','Mon','Tue','Wed','Thu','Fri','Sat'],longDays:['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],d:function(){return(this.getDate()<10?'0':'')+this.getDate();},D:function(){return Date.replaceChars.shortDays[this.getDay()];},j:function(){return this.getDate();},l:function(){return Date.replaceChars.longDays[this.getDay()];},N:function(){return this.getDay()+1;},S:function(){return(this.getDate()%10==1&&this.getDate()!=11?'st':(this.getDate()%10==2&&this.getDate()!=12?'nd':(this.getDate()%10==3&&this.getDate()!=13?'rd':'th')));},w:function(){return this.getDay();},z:function(){return"Not Yet Supported";},W:function(){return"Not Yet Supported";},F:function(){return Date.replaceChars.longMonths[this.getMonth()];},m:function(){return(this.getMonth()<9?'0':'')+(this.getMonth()+1);},M:function(){return Date.replaceChars.shortMonths[this.getMonth()];},n:function(){return this.getMonth()+1;},t:function(){return"Not Yet Supported";},L:function(){return"Not Yet Supported";},o:function(){return"Not Supported";},Y:function(){return this.getFullYear();},y:function(){return(''+this.getFullYear()).substr(2);},a:function(){return this.getHours()<12?'am':'pm';},A:function(){return this.getHours()<12?'AM':'PM';},B:function(){return"Not Yet Supported";},g:function(){return this.getHours()===0?12:(this.getHours()>12?this.getHours()-12:this.getHours());},G:function(){return this.getHours();},h:function(){return(this.getHours()<10||(12<this.getHours()<22)?'0':'')+(this.getHours()<10?this.getHours()+1:this.getHours()-12);},H:function(){return(this.getHours()<10?'0':'')+this.getHours();},i:function(){return(this.getMinutes()<10?'0':'')+this.getMinutes();},s:function(){return(this.getSeconds()<10?'0':'')+this.getSeconds();},e:function(){return"Not Yet Supported";},I:function(){return"Not Supported";},O:function(){return(this.getTimezoneOffset()<0?'-':'+')+(this.getTimezoneOffset()/60<10?'0':'')+(this.getTimezoneOffset()/60)+'00';},T:function(){return"Not Yet Supported";},Z:function(){return this.getTimezoneOffset()*60;},c:function(){return"Not Yet Supported";},r:function(){return this.toString();},U:function(){return this.getTime()/1000;}};;var Dimmer=function(){var locked=false;var _outTimeoutId;var self={onClick:function(event){},show:function(){if(_outTimeoutId){window.clearTimeout(_outTimeoutId);_outTimeoutId=null;}
if(!$$('body')[0].hasClassName('dimmerPrepared')){self.prepareDimmer();}
var effect;if(typeof Effect=='object'){$('dimmer').addClassName('active');effect=new Effect.Appear('dimmer',{duration:1,to:0.8});}
else{$('dimmer').addClassName('active');}
$('dimmer').observe('click',function(event){self.onClick(event);});},hide:function(){_outTimeoutId=window.setTimeout(self.doHide,100);},doHide:function(){if(!$$('body')[0].hasClassName('dimmerPrepared')){self.prepareDimmer();}
var effect;if(typeof Effect=='object'){effect=new Effect.Appear('dimmer',{duration:0.5,to:0.0});window.setTimeout(function(){$('dimmer').removeClassName('active');},500);}
else{$('dimmer').removeClassName('active');}},prepareDimmer:function(){var div=new Element('div',{'id':'dimmer'}).setStyle({'width':self.getPageSize()[0]+'px','height':self.getPageSize()[1]+'px'});$$('body')[0].addClassName('dimmerPrepared').appendChild(div);Event.observe(window,'resize',function(){$('dimmer').setStyle({'width':self.getPageSize()[0]+'px','height':self.getPageSize()[1]+'px'});});},getPageSize:function(){var xScroll,yScroll;if(window.innerHeight&&window.scrollMaxY){xScroll=document.body.scrollWidth;yScroll=window.innerHeight+window.scrollMaxY;}else if(document.body.scrollHeight>document.body.offsetHeight){xScroll=document.body.scrollWidth;yScroll=document.body.scrollHeight;}else{xScroll=document.body.offsetWidth;yScroll=document.body.offsetHeight;}
var windowWidth,windowHeight;if(self.innerHeight){windowWidth=self.innerWidth;windowHeight=self.innerHeight;}else if(document.documentElement&&document.documentElement.clientHeight){windowWidth=document.documentElement.clientWidth;windowHeight=document.documentElement.clientHeight;}else if(document.body){windowWidth=document.body.clientWidth;windowHeight=document.body.clientHeight;}
var pageWidth,pageHeight;if(yScroll<windowHeight){pageHeight=windowHeight;}else{pageHeight=yScroll;}
if(xScroll<windowWidth){pageWidth=windowWidth;}else{pageWidth=xScroll;}
return[pageWidth,pageHeight,windowWidth,windowHeight];}};return self;}();;var GhostValues=function(){var _placeholderPrefix='ghostvalues_placeholder_';var self={initialize:function(textfield){if(textfield.type!=='text'&&textfield.type!=='password'){return;}
var label=self.findLabelForTextfield(textfield);textfield.setAttribute('data-ghostvalue',label);self.enterGhostedState(textfield);textfield.observe('focus',self.handleFocus);textfield.observe('blur',self.handleBlur);},findLabelForTextfield:function(textfield){if(textfield.hasAttribute('data-ghostvalue')){return textfield.readAttribute('data-ghostvalue');}
var siblingLabels=Element.select(textfield.parentNode,'label');if(siblingLabels.length==1){return siblingLabels[0].innerHTML;}
for(var i=0,length=siblingLabels.length;i<length;i++){if(siblingLabels[i].readAttribute('for')==textfield.readAttribute('id')){return siblingLabels[i].innerHTML;}}
return textfield.readAttribute('value');},handleFocus:function(event){self.doFocus(event.element());},doFocus:function(textfield){if(textfield.hasClassName('ghosted')){textfield.value='';}
self.exitGhostedState(textfield);},handleBlur:function(event){var textfield=event.element();var fun=(textfield.value==='')?self.enterGhostedState:self.exitGhostedState;fun(textfield);},handlePasswordPlaceholderFocus:function(event){var placeholder=event.element();var textfield=self.getPasswordFieldForPlaceholder(placeholder);self.doFocus(textfield);textfield.focus();},enterGhostedState:function(textfield){textfield.addClassName('ghosted');if(textfield.type=='password'){self.showPasswordPlaceholder(textfield);textfield.addClassName('ghosted_password');}
textfield.value=textfield.readAttribute('data-ghostvalue');},exitGhostedState:function(textfield){if(textfield.hasClassName('ghosted_password')){textfield.removeClassName('ghosted_password');self.hidePasswordPlaceholder(textfield);}
textfield.removeClassName('ghosted');},showPasswordPlaceholder:function(textfield){var placeholder=self.createPasswordPlaceholder(textfield);textfield.insert({before:placeholder});},hidePasswordPlaceholder:function(textfield){var placeholder=self.getPasswordPlaceholder(textfield);if(placeholder){placeholder.remove();}},createPasswordPlaceholder:function(textfield){var placeholder=new Element('input',{type:'text',id:_placeholderPrefix+textfield.id,value:textfield.readAttribute('data-ghostvalue'),className:'ghosted ghostvalues_placeholder'});placeholder.observe('focus',self.handlePasswordPlaceholderFocus);return placeholder;},getPasswordPlaceholder:function(textfield){return $(_placeholderPrefix+textfield.id);},getPasswordFieldForPlaceholder:function(placeholder){return $(placeholder.id.replace(_placeholderPrefix,''));}};return self;}();;var HashHelper=function(){var _settings={};var _keepWatching=false;var _delay=100;var _observers=[];var _timeoutId;var _lastHashString;var self={initialize:function(){self.refreshSettings();},addObserver:function(observer){_observers.push(observer);},notifyObservers:function(key,value){for(var i=0,length=_observers.length;i<length;i++){if(_observers[i].key==key){_observers[i].callback(value);}}},watch:function(){window.clearTimeout(_timeoutId);if(_keepWatching){self.refreshSettings();self.updateLocation();_timeoutId=window.setTimeout(self.watch,_delay);}},startWatching:function(){if(!_keepWatching){_keepWatching=true;self.watch();}},stopWatching:function(){_keepWatching=false;},refreshSettings:function(){var hash=location.hash;if(hash==_lastHashString){return false;}
else{_lastHashString=hash;self.mergeSettings(self.extractSettings(hash));return true;}},mergeSettings:function(newSettings){for(var key in newSettings){self.setValue(key,newSettings[key]);}},setValue:function(key,value){if(!_settings[key]||_settings[key]!=value){_settings[key]=value;self.notifyObservers(key,value);}
else{}},getValue:function(key){return _settings[key];},extractSettings:function(hashString){var settings={};var pattern=/\b\w+\:[\w\-]+\b/g;var matches=hashString.match(pattern)||[];var parts;for(var i=0,length=matches.length;i<length;i++){parts=matches[i].split(':');settings[parts[0]]=parts[1];}
return settings;},updateLocation:function(){var newHashString=self.buildHashString();if(newHashString!==''){newHashString='#'+newHashString;}
if(location.hash!=='#'&&location.hash!==newHashString){location.hash=newHashString;}},buildHashString:function(){var parts=[];for(var key in _settings){parts.push(key+':'+_settings[key]);}
return parts.join('~');}};return self;}();;var NewWindow=function(){var self={initialize:function(linkElm){linkElm.observe('click',self.handleClick);},handleClick:function(event){var linkElm=this;var url=linkElm.readAttribute('href');var name=linkElm.readAttribute('title')||linkElm.innerHTML;var className=linkElm.className;var matches=className.match(/\bwidth\-(\d+)/);var width=matches?matches[1]:'600';matches=className.match(/\bheight\-(\d+)/);var height=matches?matches[1]:'500';window.open(url,name,'width='+width+',height='+height+',toolbar=1,location=1,menubar=1,scrollbars=1,resizable=1');event.stop();}};return self;}();;var Options=function(){var self={merge:function(h1,h2){for(var key in h2){h1[key]=h2[key];}
return h1;}};return self;}();;var Overlays=function(){var _containerId='overlaycontainer';var _containerElm;var _containerInnerElm;var _sequence=0;var _zIndexSequence=1000;var _private;var self={initialize:function(){_containerElm=new Element('div',{id:_containerId});_containerElm.innerHTML='<div class="inner"></div>';var children=$$('body')[0].childElements();children[children.length-1].insert({before:_containerElm});_containerInnerElm=_containerElm.select('.inner')[0];},bringToFront:function(baseElm){var placeholderElm=_private.ensureHasPlaceholder(baseElm);if(!baseElm.up('#'+_containerId)){_containerInnerElm.insert({top:baseElm});baseElm.observe('click',function(){self.bringToFront(baseElm);});}
baseElm.clonePosition(placeholderElm,{setHeight:false,setWidth:false});baseElm.setStyle({zIndex:_zIndexSequence++});}};_private={ensureHasPlaceholder:function(baseElm){var placeholderElm=_private.getPlaceholder(baseElm);if(!placeholderElm){placeholderElm=_private.createPlaceholder(baseElm);}
return placeholderElm;},getPlaceholder:function(baseElm){return $('placeholder_'+baseElm.readAttribute('id'));},createPlaceholder:function(baseElm){_private.ensureHasId(baseElm);var placeholdeElm=new Element('div',{'id':'placeholder_'+baseElm.readAttribute('id'),'class':'overlayplaceholder'});baseElm.parentNode.insertBefore(placeholdeElm,baseElm);return placeholdeElm;},ensureHasId:function(baseElm){if(!baseElm.hasAttribute('id')){baseElm.setAttribute('id','overlay_'+(_sequence++));}}};return self;}();;var PagedSets=function(){var _markers={base:'pagedset',currentNavItem:'current-set',navActive:'nav-active',currentSet:'current'};var _selectors={nav:'.set-navigation',navItem:'li',currentNavItem:'.'+_markers.currentNavItem,set:'.set'};var _settings={tweenDuration:1,spaceBetweenSets:20,clipDimensions:null};function mergeHash(h1,h2){for(var key in h2){h1[key]=h2[key];}
return h1;}
var self={create:function(baseElm,options){var instance={baseElm:baseElm,markers:_markers,selectors:_selectors,settings:_settings};options=options||{};if(options.markers){instance.markers=mergeHash(instance.markers,options.markers);}
if(options.selectors){instance.selectors=mergeHash(instance.selectors,options.selectors);}
if(options.settings){instance.settings=mergeHash(instance.settings,options.settings);}
if(!instance.settings.clipDimensions){instance.settings.clipDimensions=baseElm.getDimensions();}
instance.tweenOut=null;self.initialize(instance);return instance;},initialize:function(instance){instance.baseElm.addClassName(instance.markers.base);instance.baseElm.select(instance.selectors.set)[0].addClassName(instance.markers.currentSet);self.initNav(instance);},countSets:function(instance){return instance.baseElm.select(instance.selectors.set).length;},getCurrentSetNum:function(instance){var navElm=self.getNavElm(instance);var currentItem=navElm.select(instance.selectors.currentNavItem)[0];return navElm.select(instance.selectors.navItem).indexOf(currentItem)+1;},getNavElm:function(instance){return instance.baseElm.select(instance.selectors.nav)[0];},getNavItems:function(instance){var navElm=self.getNavElm(instance);return navElm.select(instance.selectors.navItem);},getSets:function(instance){return instance.baseElm.select(instance.selectors.set);},initNav:function(instance){var navElm=self.getNavElm(instance);var numSets=self.countSets(instance);if(numSets<=1){instance.baseElm.removeClassName(instance.markers.navActive);}
else{instance.baseElm.addClassName(instance.markers.navActive);navElm.observe('click',function(event){self.handleNavClick(event,instance);});self.constructNavigation(instance,numSets);}},constructNavigation:function(instance,numSets){var navElm=self.getNavElm(instance);var links=navElm.select(instance.selectors.navItem);var parent=links[0].parentNode;for(var i=0,length=links.length;i<length-2;i++){links[i].remove();}
var newElm;for(i=0;i<numSets;i++){newElm=new Element('li').update('<a href="#">Set'+(numSets-i)+'<span></span></a>');parent.insert({top:newElm});}
self.setSelectedNavButton(instance,1);},handleNavClick:function(event,instance){var elm=event.findElement('a');if(!elm){return;}
if(elm.nodeName=='A'){event.stop();self.doNavItemClick(instance,elm.parentNode);}},doNavItemClick:function(instance,elm){var currentSetNum=self.getCurrentSetNum(instance);var newSetNum;if(elm.hasClassName('previous-set')){newSetNum=Math.max(currentSetNum-1,1);}
else if(elm.hasClassName('next-set')){newSetNum=Math.min(currentSetNum+1,self.countSets(instance));}
else{newSetNum=self.getNavItems(instance).indexOf(elm)+1;}
if(newSetNum==currentSetNum){return;}
self.gotoSet(instance,currentSetNum,newSetNum);},gotoSet:function(instance,currentSetNum,newSetNum){self.animateSetChange(instance,currentSetNum,newSetNum);self.setSelectedNavButton(instance,newSetNum);},animateSetChange:function(instance,currentSetNum,newSetNum){var sets=self.getSets(instance);var delta=(newSetNum<currentSetNum)?1:-1;var oldSet=sets[currentSetNum-1];var finishleft=(instance.settings.clipDimensions.width+instance.settings.spaceBetweenSets)*delta;if(instance.tweenOut){instance.tweenOut.stop();}
instance.tweenOut=new Tween(oldSet.style,'left',Tween.backEaseOut,0,finishleft,instance.settings.tweenDuration,'px');var newSet=sets[newSetNum-1];var newSetLeft=(instance.settings.clipDimensions.width+instance.settings.spaceBetweenSets)*-delta;newSet.setStyle({left:newSetLeft+'px'});sets.each(function(elm){if(elm.hasClassName('animating')){self.finishAnimatingSet(elm);}
elm.removeClassName(instance.markers.currentSet);});oldSet.addClassName('animating');newSet.addClassName('animating');var listener={onMotionChanged:function(data){newSetLeft+=(data.target._pos-data.target.prevPos);newSet.setStyle({left:newSetLeft+'px'});},onMotionFinished:function(data){if(newSet.hasClassName('animating')){newSet.addClassName(instance.markers.currentSet);}
self.finishAnimatingSet(oldSet);self.finishAnimatingSet(newSet);}};instance.tweenOut.addListener(listener);instance.tweenOut.start();},finishAnimatingSet:function(elm){elm.removeClassName('animating');},setSelectedNavButton:function(instance,setNum){var navElm=self.getNavElm(instance);navElm.select(instance.selectors.currentNavItem).each(function(elm){elm.removeClassName(instance.markers.currentNavItem);});navElm.select(instance.selectors.navItem)[setNum-1].addClassName(instance.markers.currentNavItem);}};return self;}();;var TabbedPanel=function(){var self={initTabs:function(tabElm){tabElm.observe('click',self.handleTabClick);},handleTabClick:function(event){var tabElm=this;self.activateTab(tabElm);self.activatePanel(self.getPanelForTab(tabElm));event.stop();},getPanelForTab:function(tabElm){var panelId=tabElm.readAttribute('data-panelid');return $(panelId);},activateTab:function(tabElm){tabElm.siblings().each(self.exitActiveState);self.enterActiveState(tabElm);},activatePanel:function(panelElm){panelElm.siblings().each(self.exitActiveState);self.enterActiveState(panelElm);},enterActiveState:function(elm){elm.addClassName('active');},exitActiveState:function(elm){elm.removeClassName('active');}};return self;}();