var Config={_defaults:{useFlashLogo:0,debugMode:0,profile:0,logErrors:0}};var BrowserDetect={unknownBrowser:"An unknown browser",unknownVersion:"An unknown version",init:function(){this.browser=this.searchString(this.dataBrowser)||this.unknownBrowser;this.version=this.searchVersion(navigator.userAgent)||this.searchVersion(navigator.appVersion)||this.unknownVersion;},searchString:function(data){for(var i=0;i<data.length;i++){var dataString=data[i].string;var dataProp=data[i].prop;this.versionSearchString=data[i].versionSearch||data[i].identity;if(dataString){if(dataString.indexOf(data[i].subString)!=-1)
return data[i].identity;}
else if(dataProp)
return data[i].identity;}},searchVersion:function(dataString){var index=dataString.indexOf(this.versionSearchString);if(index==-1)return;return parseFloat(dataString.substring(index+this.versionSearchString.length+1));},dataBrowser:[{string:navigator.vendor,subString:"Apple",identity:"Safari"},{prop:window.opera,identity:"Opera"},{string:navigator.userAgent,subString:"Firefox",identity:"Firefox"},{string:navigator.userAgent,subString:"MSIE",identity:"Explorer",versionSearch:"MSIE"}]};BrowserDetect.init();var Cookie={set:function(name,value,daysToExpire){if(daysToExpire==null||daysToExpire==undefined){daysToExpire=365*2;}
var expire='';if(daysToExpire!=undefined){var d=new Date();d.setTime(d.getTime()+(86400000*parseFloat(daysToExpire)));expire='; expires='+d.toGMTString();}
return(document.cookie=escape(name)+'='+escape(value||'')+expire+'; path=/');},get:function(name){var cookie=document.cookie.match(new RegExp('(^|;)\\s*'+escape(name)+'=([^;\\s]*)'));return(cookie?unescape(cookie[2]):null);},erase:function(name){var cookie=Cookie.get(name)||true;Cookie.set(name,'',-1);return cookie;},accept:function(){if(typeof navigator.cookieEnabled=='boolean'){return navigator.cookieEnabled;}
Cookie.set('_test','1');return(Cookie.erase('_test')==='1');}};if(typeof String.toBoolean=='undefined'){Object.extend(String.prototype,{toBoolean:function(){return(this=="true"||this=="1");}});}
if(typeof Element.setCustomAttribute!='undefined')throw("Element.setCustomAttribute is already defined.");if(typeof Element.getCustomAttribute!='undefined')throw("Element.getCustomAttribute is already defined.");Object.extend(Element,{setCustomAttribute:function(element,name,value){element["thisnext_"+name]=value;},getCustomAttribute:function(element,name){return element["thisnext_"+name];}});if(typeof Config=='undefined')var Config={_defaults:{}};Object.extend(Config,{getDefaultValue:function(key){var defaultValue=this._defaults[key];if(defaultValue==undefined&&arguments[1]!=undefined){defaultValue=arguments[1];}
return defaultValue;},setDefaultValue:function(key,value){this._defaults[key]=value;}});if(typeof ErrorHandler!='undefined')throw("ErrorHandler is already defined.");var ErrorHandler={name:"ErrorHandler",version:"0.01",enabled:Boolean(Config.getDefaultValue("logErrors",false)),logCount:0,initialize:function(){if(this.enabled){window.onerror=ErrorHandler.handleWindowError;}
ErrorHandler.handle=ErrorHandler.handleCaughtException;},handleWindowError:function(message,url,lineNumber){ErrorHandler.log({message:message,url:url,lineNumber:lineNumber});return false;},handleCaughtException:function(e){ErrorHandler.log(e);throw new Error((typeof(e)=="object")?e.message:e);},disable:function(){ErrorHandler.enabled=false;},enable:function(){ErrorHandler.enabled=true;},log:function(e){try{if(ErrorHandler.enabled){if(typeof(e)=="string"){e={message:e};}
if(e.url==null){if(e.fileName!=null)e.url=e.fileName;if(e.filename!=null)e.url=e.filename;}
if(e.linenumber==null){if(e.lineNumber!=null)e.linenumber=e.lineNumber;}
new Ajax.Request("/log/error/",{method:'post',postBody:$H(e).toQueryString(),asynchronous:true});ErrorHandler.disable();if(ErrorHandler.logCount++<10){ErrorHandler.enable.delay(5);}}}catch(e){}}};ErrorHandler.initialize();if(typeof Core!='undefined')throw("Core is already defined.");var Core={initialize:function(){Debugger.initialize();Profiler.initialize();Console.initialize();Page.initialize();}};if(typeof Debugger!='undefined')throw("Debugger is already defined.");var Debugger={name:"Debugger",version:"0.01",enabled:Boolean(Config.getDefaultValue("debugMode",false)),initialize:function(){var debugRequest=Page.getQueryStringValue("debug");if(debugRequest!=null){if(debugRequest=="false"){this.enabled=false;}else{this.enabled=true;}}
Page.addEventListener("dom:loaded",this.onDomLoaded.bind(this));},onDomLoaded:function(){if(this.enabled){Console.log(this.name+".onDomLoaded()");$$("a").each(function(nextLink){nextLink.setAttribute("href",QueryString.setValue("debug","true",nextLink.getAttribute("href")));});Profiler.writeTime(this.name+".onDomLoaded() COMPLETE");}}};if(typeof Profiler!='undefined')throw("Profiler is already defined.");var Profiler={name:"Profiler",version:"0.01",enabled:Boolean(Config.getDefaultValue("profile",false)),domLoaded:null,console:null,startTime:null,lastTime:null,messages:null,hasRendered:false,initialize:function(){if(Profiler.enabled==false)return;Profiler.reset();this.messages=$A([]);},addConsole:function(){if(Profiler.console==null){$$("body").each(function(bodyElement){Profiler.console=new Element("div");bodyElement.insert(Profiler.console);Profiler.console.setStyle({"backgroundColor":"#fff"});}.bind(Profiler));}},reset:function(){var now=new Date();Profiler.startTime=now.getTime();Profiler.lastTime=Profiler.startTime;},writeTime:function(message){if(Profiler.enabled==false)return;var lastMessage=message;if(message==null)message="unknown";var now=new Date();var time=now.getTime();message=message+" :: "+(time-Profiler.startTime)+" :: ";var lastTimeElapsed=time-Profiler.lastTime;if(lastTimeElapsed>30){message+="<strong style=\"color: red\">"+lastTimeElapsed+"</strong>";}else{message+=lastTimeElapsed;}
if(Profiler.hasRendered){Profiler._writeMessage(message);}else{Profiler.messages.push(message);if(Profiler.timer!=null)clearTimeout(Profiler.timer);Profiler.timer=setTimeout(Profiler.render.bind(Profiler),1000);}
Profiler.lastTime=time;Profiler.lastMessage=lastMessage;},render:function(){this.messages.each(this._writeMessage.bind(this));this.hasRendered=true;},_writeMessage:function(message){if(Profiler.console==null)Profiler.addConsole();if(Profiler.console!=null&&message!=null){Profiler.console.insert(new Element("p").insert(message));}}};if(typeof Console!='undefined')throw("Console is already defined.");var Console={name:"Console",version:"0.01",enabled:false,fireBugPath:"http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js",initialize:function(){this.enabled=Debugger.enabled;var consoleRequest=Page.getQueryStringValue("console");if(consoleRequest!=null&&consoleRequest=="true"){this.enabled=true;}
if(this.enabled){if(!window.console||window.console.log==undefined){if(!Profiler.enabled)Page.includeScript(this.fireBugPath);}}
var names=["log","debug","info","warn","error","assert","dir","dirxml","group","groupEnd","time","timeEnd","count","trace","profile","profileEnd"];if(!window.console)window.console={};for(var i=0;i<names.length;i++){if(window.console[names[i]]==undefined){window.console[names[i]]=function(){};}}
try{for(i=0;i<names.length;++i){if(typeof this[names[i]]!="function"&&typeof window.console[names[i]]=="function"){var func=function(target){if(window.console[this.funcName])window.console[this.funcName](target);else(Console.log(this.funcName+": "+target));};func.funcName=names[i];this[names[i]]=func.bind(func);}}}catch(e){}
if(Profiler.enabled)Console.log=Profiler.writeTime;},log:function(message,showTime){var time="";if(showTime!=false){var now=this.getTime();time=now.hours+":"+now.minutes+":"+now.seconds;}
if(typeof console!="undefined"&&typeof console.log=="function"){time+="     ";message=time+message;console.log(message);}},getTime:function(){var myDate=new Date();return{hours:this.leadingZero(myDate.getHours()),minutes:this.leadingZero(myDate.getMinutes()),seconds:this.leadingZero(myDate.getSeconds())};},leadingZero:function(nr){if(nr<10)nr="0"+nr;return nr;}};if(typeof QueryString!='undefined')throw("QueryString is already defined.");var QueryString={_cache:null,setValue:function(key,value,uri){var windowMode=false;if(uri==null){windowMode=true;uri=window.location.href;}
var params=QueryString.from(uri);params[key]=value;uri=uri.split("?")[0]+"?"+QueryString.to(params);if(windowMode){window.location=uri;}
return uri;},getValue:function(key,uri,caseSensitive){if(caseSensitive!=true){key=String(key).toLowerCase();}
var obj=null;if(uri==null){if(QueryString._cache==null)QueryString._cache=QueryString.from(window.location.search);obj=QueryString._cache;}else{obj=QueryString.from(uri);}
return obj[key];},to:Object.toQueryString,from:function(queryString){var array=queryString.split("?");if(array.length>1){queryString=array[1];}else{queryString=array[0];}
queryString=queryString.replace(/\+/g,' ');var obj={};$A(queryString.split("&")).each(function(next){var nextPair=next.split("=");if(nextPair.length>1){obj[nextPair[0]]=decodeURIComponent(nextPair[1]);obj[String(nextPair[0]).toLowerCase()]=decodeURIComponent(nextPair[1]);}}.bind(this));return obj;},update:function(obj,uri){for(var key in obj){uri=QueryString.setValue(key,obj[key],uri);}
return uri;}};if(typeof Page!='undefined')throw("Page is already defined.");var Page={name:"Page",version:"0.01",debugMode:false,listenerStack:null,checkTimer:null,scrollcheckTimer:null,rootElement:null,bodyElement:null,placebo:null,floatingPlacebo:null,previousState:null,domHasLoaded:false,binariesHaveLoaded:false,nextHighestDepth:100,getQueryStringValue:QueryString.getValue,setQueryStringValue:QueryString.setValue,initialize:function(){this.debugMode=Debugger.enabled;if(this.debugMode)Console.log(this.name+" (version "+this.version+") has initialized.");this.rootElement=$(document.getElementsByTagName('html')[0]);this.rootElement.addClassName('scriptable');this.rootElement.addClassName('loading');if(BrowserDetect.browser!=null&&BrowserDetect.browser!=BrowserDetect.unknownBrowser){Element.addClassName(this.rootElement,String(BrowserDetect.browser).replace(".","-").replace(" ","-"));if(BrowserDetect.version!=null&&BrowserDetect.browser!=BrowserDetect.unknownVersion){Element.addClassName(this.rootElement,String(BrowserDetect.browser+BrowserDetect.version).replace(".","-").replace(" ","-"));}}
if(Console.enabled){var attr=document.createAttribute('debug');attr.value='true';this.rootElement.setAttributeNode(attr);}
try{document.execCommand("BackgroundImageCache",false,true);}catch(e){}},onDomLoaded:function(){if(this.domHasLoaded)return;this.domHasLoaded=true;if(Profiler.enabled)Profiler.reset();if(this.debugMode)Console.log(this.name+".onDomLoaded()");this.bodyElement=this.rootElement.down("body");this.placebo=new Element("div").update(" ");this.bodyElement.insert(this.placebo);this.floatingPlacebo=new Element("div").setStyle({"position":"absolute","bottom":"0"});this.bodyElement.insert(this.floatingPlacebo);this.previousState=this.getCurrentState();this.previousScrollState=this.getCurrentScrollState();this.dispatchEvent({type:"dom:loaded"});},onBinariesLoaded:function(){if(this.binariesHaveLoaded)return;this.binariesHaveLoaded=true;this.onDomLoaded();if(this.debugMode)Console.log(this.name+".onBinariesLoaded()");this.dispatchEvent({type:"binaries:loaded"});},getMetaContent:function(name){var element=Page.rootElement.down("meta[name="+name+"]");if(element!=null)return String(element.getAttribute("content"));else return null;},addEventListener:function(type,handler){if(this.debugMode)Console.log(this.name+".addEventListener("+type+", "+typeof(handler)+")");var listener={type:type,handler:handler};if(type=="dom:loaded"&&this.domHasLoaded){this.callEventHandler({type:type,target:this},listener);return;}
if(this.listenerStack==null){this.listenerStack=$A([]);}
this.listenerStack.push(listener);if(type=="update"){if(this.domHasLoaded){this.startUpdateCheckTimer();}else{this.addEventListener("dom:loaded",this.startUpdateCheckTimer.bind(this));}}
if(type=="scroll"){if(this.domHasLoaded){this.startScrollCheckTimer();}else{this.addEventListener("dom:loaded",this.startScrollCheckTimer.bind(this));}}},startUpdateCheckTimer:function(){if(this.debugMode)Console.log(this.name+".startUpdateCheckTimer()");if(this.checkTimer==null){var delay=0.1;if(BrowserDetect.browser=="Explorer"){delay=1;}
this.checkTimer=new PeriodicalExecuter(this.checkForUpdate.bind(this),delay);}},startScrollCheckTimer:function(){if(this.debugMode)Console.log(this.name+".startScrollCheckTimer()");if(this.scrollCheckTimer==null){var delay=0.1;if(BrowserDetect.browser=="Explorer"){delay=1;}
this.scrollCheckTimer=new PeriodicalExecuter(this.checkForScroll.bind(this),delay);}},checkForUpdate:function(){if(this.debugMode)Console.log(this.name+".checkForUpdate()");var currentState=this.getCurrentState();if(this.isEqualTo(currentState,this.previousState)==false){Page.dispatchEvent({type:"update"});this.previousState=this.getCurrentState();}},checkForScroll:function(){if(this.debugMode)Console.log(this.name+".checkForScroll()");var currentScrollState=this.getCurrentScrollState();if(this.isEqualTo(currentScrollState,this.previousScrollState)==false){Page.dispatchEvent({type:"scroll"});this.previousScrollState=this.getCurrentScrollState();}},forceEvent:function(evt){if(this.debugMode)Console.log(this.name+".forceEvent("+evt.type+")");this.previousState=this.getCurrentState();Page.dispatchEvent(evt);},getCurrentState:function(){if(this.debugMode)Console.log(this.name+".getCurrentState()");var pos=Position.cumulativeOffset(this.placebo);var floatingPos=Position.cumulativeOffset(this.floatingPlacebo);return{offsetLeft:pos[0],offsetTop:pos[1],width:this.placebo.getWidth(),height:this.placebo.getHeight(),floatingOffsetLeft:floatingPos[0],floatingOffsetTop:floatingPos[1],floatingWidth:this.floatingPlacebo.getWidth(),floatingHeight:this.floatingPlacebo.getHeight()};},getCurrentScrollState:function(){if(this.debugMode)Console.log(this.name+".getCurrentScrollState()");var viewportOffsets=document.viewport.getScrollOffsets();return{scrollOffsetLeft:viewportOffsets.left,scrollOffsetTop:viewportOffsets.top};},trace:function(target){var traceString="";for(var prop in target){traceString+=prop+": "+target[prop]+"\n";}
return traceString;},isEqualTo:function(a,b){for(var prop in a){if(a[prop]!=b[prop]){return false;}}
return true;},dispatchEvent:function(evt){if(this.debugMode)Console.log(this.name+".dispatchEvent()");evt.target=this;this.listenerStack.each(function(nextListener){if(evt.type==nextListener.type){this.callEventHandler(evt,nextListener);}}.bind(this));},callEventHandler:function(evt,listener){if(this.debugMode)Console.log(this.name+".callEventHandler()"+" :: evt: "+evt.type+" :: listener: "+listener.handler.toString());if(ErrorHandler.enabled){try{listener.handler(evt);}catch(e){ErrorHandler.handle(e);}}else{listener.handler(evt);}},getBasePath:function(scriptName){if(this.debugMode)Console.log(this.name+".getBasePath()");if(scriptName==null||scriptName==""){scriptName="thisnext";}
scriptName=scriptName.replace(".js","");var scriptElements=document.getElementsByTagName("script");for(var index=0;index<scriptElements.length;index++){var nextElement=scriptElements[index];var regex="/"+scriptName+"\\.js(\\?.*)?$/";if(eval("nextElement.src.match("+regex+")")){return eval("nextElement.src.replace("+regex+", \"\")");}}
return null;},getFrameWindow:function(frameID){if(this.debugMode)Console.log(this.name+".getFrameWindow()");var frameWindow;if(Prototype.Browser.WebKit){if(frameID==null){frameWindow=frames[0];}else{frameWindow=frames[frameID];}}else{if(frameID==null){frameWindow=$$("iframe","frame")[0].contentWindow;}else{frameWindow=$(frameID).contentWindow;}}
return frameWindow;},getNextHighestDepth:function(){return this.nextHighestDepth++;},includeScript:function(url){var headElement=document.getElementsByTagName("head").item(0);var scriptElement=document.createElement("script");scriptElement.setAttribute("type","text/javascript");scriptElement.setAttribute("src",url);headElement.appendChild(scriptElement);},includeStyleSheet:function(url){var headElement=document.getElementsByTagName("head").item(0);var styleElement=document.createElement("link");styleElement.setAttribute("rel","stylesheet");styleElement.setAttribute("type","text/css");styleElement.setAttribute("media","all");styleElement.setAttribute("href",url);headElement.appendChild(styleElement);}};Event.observe(document,"dom:loaded",Page.onDomLoaded.bindAsEventListener(Page));Event.observe(window,"load",Page.onBinariesLoaded.bindAsEventListener(Page));(function(){var eventType="dom:loaded";Page.addEventListener(eventType,function(){Page.dispatchEvent({type:"load"});Page.rootElement.removeClassName('loading');});})();var AdminPreferences={hide:null,button:null,initialize:function(){if(Page.bodyElement.hasClassName("admin")==false)return;this.button=new Element("a");var options=Page.bodyElement.down("#auxNav ul");if(options!=null){var item=new Element("li");options.appendChild(item);item.appendChild(this.button);}
this.button.observe("click",this.toggle.bindAsEventListener(this));var hide=Cookie.get("hideadmin");if(hide!=null){this.set(hide.toBoolean());}else{this.set();}},toggle:function(evt){evt.preventDefault();this.set(!this.hide);},set:function(hide){if(hide==null){hide=false;}else{Cookie.set("hideadmin",hide);}
this.hide=hide;if(this.hide){Page.rootElement.addClassName('hideAdminFeatures');this.button.setAttribute("href","#show-admin-features");this.button.update("Show Admin Features");}else{Page.rootElement.removeClassName('hideAdminFeatures');this.button.setAttribute("href","#hide-admin-features");this.button.update("Hide Admin Features");}}};Page.addEventListener("load",AdminPreferences.initialize.bind(AdminPreferences));Core.initialize();if(typeof AjaxianForm!='undefined')throw("ERROR: AjaxianForm is already defined.");var AjaxianForm={progress:null,submitUrl:null,enabled:true,requireAuth:true,initialize:function(){if(this.debugMode)Console.log("AjaxianForm initialized");if(this.submitUrl==null){this.submitUrl=this.getSubmitUrl();}
if(this.submitUrl!=null){this.prepareSubmitButtonAjaxian();}else{Console.warn(this.name+" said, 'I was unable to find a delayed URL to submit the data to (this is usually stored in an input named: delayed_url.'");}},getSubmitUrl:function(){var url=null;$A(this.element.getElementsBySelector("input[name=delayed_url]")).each(function(nextElement){url=String(nextElement.getAttribute("value"));}.bind(this));if(url==null){url=this.element.getAttribute("action");}
if(url!=null){var myRegExp=new RegExp("^/(?!component)");var result=myRegExp.exec(url);if(result!=null){url=url.replace(result,"/component/");}}
return url;},prepareSubmitButtonAjaxian:function(){$A(this.element.getElementsByTagName("button")).each(function(nextButton){if(this.requireAuth){var auth=new RequireAuth(nextButton,{delayed:true,ajaxian:true});auth.addEventListener("authenticated",this.saveData.bind(this));}else{Event.observe(nextButton,"click",function(evt){evt.preventDefault();this.saveData();}.bindAsEventListener(this));}}.bind(this));},saveData:function(){if(typeof(this.validate)=="function"){var valid=this.validate();if(valid!=null&&valid==false)return;}
this.element.fire("form:submit");if(this.enabled){if(window.framedPage){window.framedPage.disable();}
var request=new Ajax.Request(this.submitUrl,{method:'post',postBody:Form.serialize(this.element),onComplete:this.handleResponse.bind(this)});this.showProgress();}},handleResponse:function(transport){if(this.debugMode)Console.log(this.name+".handleResponse()");this.hideProgress();this.dispatchEvent({target:this,type:"submit-response",transport:transport});},showProgress:function(){if(this.progress==null){this.progress=$(document.createElement("p"));this.progress.setStyle({"display":"none"});this.progress.addClassName("progress");this.progress.appendChild(document.createTextNode("Working…"));this.element.appendChild(this.progress);}
this.progress.setStyle({"display":"block"});},hideProgress:function(){if(this.progress!=null){this.progress.setStyle({"display":"none"});}},fallBack:function(){if(this.debugMode)Console.log(this.name+".fallBack()");this.enabled=false;var form=this.element.down("form");form.submit();}};if(typeof Button!='undefined')throw("ERROR: Button is already defined.");Button=Class.create();Button.prototype={type:"Button",name:"Button",version:"0.80",debugMode:false,element:null,disabled:false,useStandardStyle:false,initialize:function(element){this.debugMode=Debugger.enabled;Object.extend(this,arguments[1]||{});Event.Dispatcher.initialize(this);if(this.debugMode)Console.log(this.name+" (version "+this.version+") has initialized.");if(element!=null){this.element=$(element);if(BrowserDetect.browser=="Explorer"&&Number(BrowserDetect.version)<7){MultiClass.initialize(this.element,{ignore:$A(["disabled","hover","active"])});}
Event.observe(this.element,'mouseover',this.handleMouseOver.bindAsEventListener(this));Event.observe(this.element,'mouseout',this.handleMouseOut.bindAsEventListener(this));Event.observe(this.element,'mousedown',this.handleMouseDown.bindAsEventListener(this));Event.observe(this.element,'mouseup',this.handleMouseUp.bindAsEventListener(this));Event.observe(this.element,'click',this.handleClick.bindAsEventListener(this));if(this.useStandardStyle&&(BrowserDetect.browser!="Explorer"||Number(BrowserDetect.version)>=8||String(this.element.nodeName).toLowerCase()=="a")){this.element.addClassName("standardButton");var text=new Element("span").addClassName("text").update(this.element.innerHTML);var tr=new Element("span").addClassName("tr");var br=new Element("span").addClassName("br");var bl=new Element("span").addClassName("bl");var tl=new Element("span").addClassName("tl");tl.insert(text);tl.insert(bl);tr.insert(tl);tr.insert(br);this.element.innerHTML="";this.element.insert(tr);if(BrowserDetect.browser=="Explorer"&&Number(BrowserDetect.version)<8){bl.setStyle({"width":String(text.getWidth())+"px"});}}}},disable:function(){this.disabled=true;this.element.addClassName("disabled");if(BrowserDetect.browser=="Explorer"&&Number(BrowserDetect.version)<7){this.element.addCompoundClassName("disabled");}},enable:function(){this.disabled=false;this.element.removeClassName("disabled");if(BrowserDetect.browser=="Explorer"&&Number(BrowserDetect.version)<7){this.element.removeCompoundClassName("disabled");}},isEnabled:function(){return(this.disabled==false);},handleMouseOver:function(evt){if(this.disabled==false){this.element.addClassName("hover");if(BrowserDetect.browser=="Explorer"&&Number(BrowserDetect.version)<7){this.element.addCompoundClassName("hover");}
this.dispatchEvent({target:this,type:"mouseover",origin:evt});}},handleMouseOut:function(evt){this.element.removeClassName("hover");if(BrowserDetect.browser=="Explorer"&&Number(BrowserDetect.version)<7){this.element.removeCompoundClassName("hover");}
this.dispatchEvent({target:this,type:"mouseout",origin:evt});},handleMouseDown:function(evt){if(this.disabled==false){this.element.addClassName("active");if(BrowserDetect.browser=="Explorer"&&Number(BrowserDetect.version)<7){this.element.addCompoundClassName("active");}
this.dispatchEvent({target:this,type:"mousedown",origin:evt});}},handleMouseUp:function(evt){this.element.removeClassName("active");if(BrowserDetect.browser=="Explorer"&&Number(BrowserDetect.version)<7){this.element.removeCompoundClassName("active");}
this.dispatchEvent({target:this,type:"mouseup",origin:evt});},handleClick:function(evt){if(this.disabled){this.dispatchEvent({target:this,type:"click-disabled",origin:evt});}else{this.dispatchEvent({target:this,type:"click",origin:evt});}}};if(typeof RoundedCorners!='undefined')throw("ERROR: RoundedCorners is already defined.");RoundedCorners={applyTo:function(element){var container=new Element("span").addClassName("roundedCorners");element.appendChild(container);container.appendChild(new Element("span").addClassName("corner tl"));container.appendChild(new Element("span").addClassName("corner tr"));container.appendChild(new Element("span").addClassName("corner bl"));container.appendChild(new Element("span").addClassName("corner br"));}};if(typeof DropDown!='undefined')throw("DropDown is already defined.");DropDown=Class.create();DropDown.prototype={name:"DropDown",debugMode:false,inlineMode:false,mouseOverMode:false,enabled:true,align:"left",version:"2.0",ajaxMode:false,element:null,button:null,panel:null,dropShadow:null,isHidden:true,buttonSuspects:["h1","h2","h3","h4","h5","h6","a"],panelSuspects:["div","ul","ol"],depth:null,pageUpdateListener:null,toggleTimer:null,toggling:false,initialize:function(element){Object.extend(this,arguments[1]||{});Event.Dispatcher.initialize(this);if(this.debugMode)Console.log(this.name+" (version "+this.version+") has initialized.");this.buttonSuspects=$A(this.buttonSuspects);if(element!=null){this.element=$(element);var button=this.findElement(this.element,this.buttonSuspects);if(button.down("a")!=null)button=button.down("a");this.button=button;if(this.button==null){Console.warn(this.name+"said, \"I couldn't find an element to use as a toggle button.\"");return;}
this.button.setStyle({"cursor":"pointer"});this.initEvents();var panelContent=this.findElement(this.element,this.panelSuspects);if(panelContent==null){this.ajaxMode=true;}else{if(this.inlineMode){this.panel=panelContent;this.panelContent=panelContent;}else{this.panelContent=panelContent.cloneNode(true);panelContent.hide();}}}},initEvents:function(){if(this.mouseOverMode){Event.observe(this.element,"mouseover",this.onMouseOver.bindAsEventListener(this));Event.observe(this.element,"mouseout",this.onMouseOut.bindAsEventListener(this));}else{Event.observe(this.button,"click",this.onButtonClick.bindAsEventListener(this));Event.observe(Page.bodyElement,"click",this.onDocumentClick.bindAsEventListener(this));}},onMouseOver:function(evt){if(this.enabled){if(Event.within(evt,[this.element]))return;this.show();}},onMouseOut:function(evt){if(this.enabled){if(Event.within(evt,[this.element]))return;this.hide();}},onButtonClick:function(evt){if(this.toggling)return;this.toggling=true;this.toggleTimer=setTimeout(function(){if(this.toggleTimer!=null)clearTimeout(this.toggleTimer);this.toggling=false;}.bind(this),250);if(this.enabled){this.toggle();evt.preventDefault();}},onDocumentClick:function(evt){if(this.isHidden)return;var target=$(evt.target);if(this.panel!=null){if(target){if((target!=this.element)&&(target.descendantOf(this.element)==false)&&(target!=this.panel)&&(target.descendantOf(this.panel)==false)){this.hide();}}else{if(this.debugMode)Console.info(this.name+" said, 'I was unable to get a target for the document click event.'");if(Position.within(this.element,Event.pointerX(evt),Event.pointerY(evt))==false&&Position.within(this.panel,Event.pointerX(evt),Event.pointerY(evt))==false){this.hide();}}}},toggle:function(){if(this.debugMode)Console.log(this.name+".toggle()");if(this.isHidden){this.show();}else{this.hide();}},show:function(){if(this.debugMode)Console.log(this.name+".show()");if(this.isHidden){if(this.panel==null){this.createPanel();}else{this._show();}}},_show:function(){this.isHidden=false;this.element.addClassName("active");this.panel.show();this.position();this.dispatchEvent({target:this,type:"open"});},hide:function(){if(this.debugMode)Console.log(this.name+".hide()");if(this.isHidden==false){this.isHidden=true;this.element.removeClassName("active");this.panel.hide();this.hideDropShadow();this.dispatchEvent({target:this,type:"close"});}},createPanel:function(){if(this.debugMode)Console.log(this.name+".createPanel()");if(this.panelContent==null){this.loadPanelContent();}else{this._createPanel();this._show();}},_createPanel:function(){if(this.panel==null){this.panel=new Element("div").addClassName("dropDownPanel");this.depth=Page.getNextHighestDepth();this.panel.setStyle({"zIndex":this.depth});Page.bodyElement.insert(this.panel);}
this.fillPanel(this.panelContent);if(this.pageUpdateListener==null)Page.addEventListener("update",this.position.bind(this));},refreshPanel:function(transport){if(this.debugMode)Console.log(this.name+".refreshPanel().");var node=this.getNodeFromAjaxResponse(transport);if(node!=null){this.panelContent=node;this.fillPanel(this.panelContent);this.dispatchEvent({target:this,type:"refresh"});}else{Console.info(this.name+" failed to refresh its panel content.");}},fillPanel:function(panelContent){this.panel.innerHTML="";this.panel.insert(panelContent);},getPanel:function(){return this.panel;},loadPanelContent:function(){if(this.debugMode)Console.log(this.name+".loadPanelContent()");var url=String(this.button.getAttribute("href"));var myRegExp=new RegExp("[^/]*//[^/]*");var result=myRegExp.exec(url);if(result!=null){url=url.replace(result,"/component");}else{url="/component"+url;}
var request=new Ajax.Request(url,{method:'get',onComplete:this.onPanelContentLoaded.bind(this)});},onPanelContentLoaded:function(transport){if(this.debugMode)Console.log(this.name+".onPanelContentLoaded().");var node=this.getNodeFromAjaxResponse(transport);if(node!=null){this.panelContent=node;this.createPanel();this.dispatchEvent({target:this,type:"load"});}else{Console.info(this.name+" failed to load its panel data. Falling back to sans JS behavior...");this.fallBack();}},position:function(){if(this.isHidden)return;if(this.inlineMode){this.showDropShadow();return;}
this._position();setTimeout(this._position.bind(this),1);setTimeout(this._position.bind(this),100);setTimeout(this._position.bind(this),1000);},_position:function(){if(this.debugMode)Console.log(this.name+" is positioning...");if(this.isHidden)return;var cumulativeOffset=this.element.cumulativeOffset();var offsetTop=0;var offsetLeft=0;offsetTop=this.element.getHeight();if(this.align=="right"){offsetLeft-=(this.panel.offsetWidth-this.element.offsetWidth);}
var position={};position.left=cumulativeOffset.left+offsetLeft;position.top=cumulativeOffset.top+offsetTop;this.panel.setStyle({"left":position.left+"px","top":position.top+"px"});this.showDropShadow();},showDropShadow:function(){if(this.dropShadow==null)this.dropShadow=new DropShadow(this.panel);this.dropShadow.show();},hideDropShadow:function(){if(this.dropShadow!=null)this.dropShadow.hide();},reset:function(){this.panel.remove();this.panel=null;this.panelContent=null;this.isHidden=true;this.dropShadow.destroy();this.dropShadow=null;},fallBack:function(){this.enabled=false;var href=this.button.getAttribute("href");if(href!=null&&href!="")window.location=href;},findElement:function(parent,names){if(this.debugMode)Console.log(this.name+".findElement()");var element=null;$A(names).each(function(nextName){var nextSuspect=parent.down(nextName);if(element==null&&nextSuspect!=null){element=nextSuspect;$break;}}.bind(this));return element;},getNodeFromAjaxResponse:function(transport){var xmlDoc=NEXML.createDoc(transport.responseText);if(xmlDoc!=null){var node=this.importNode(NEXML.firstDescendant(NEXML.firstDescendant(xmlDoc)));return node;}
return null;},importNode:function(target){var temp=new Element("div");Page.bodyElement.insert(temp);temp.innerHTML=NEXML.outerXML(target);var imported=$(temp.firstChild);imported.remove();temp.remove();return imported;}};if(typeof DropShadow!='undefined')throw("DropShadow is already defined.");DropShadow=Class.create();DropShadow.prototype={name:"DropShadow",version:"0.01",debugMode:false,element:null,target:null,insertTarget:null,iframe:null,depth:null,isHidden:false,initialize:function(target){this.debugMode=Debugger.enabled;Object.extend(this,arguments[1]||{});Event.Dispatcher.initialize(this);if(this.debugMode)Console.log(this.name+" (version "+this.version+") has initialized.");if(target!=null){this.target=$(target);Page.addEventListener("update",function(){this.resize();this.reposition();}.bind(this));}},findInsertTarget:function(target){var insertTarget=target;var limit=10;while(this.isListElement(insertTarget)&&limit>0){limit--;insertTarget=insertTarget.parentNode;}
return $(insertTarget);},isListElement:function(element){return String(element.parentNode.nodeName).toLowerCase().endsWith("l");},show:function(){if(this.debugMode)Console.log(this.name+".show()");this.isHidden=false;this.resize();this.reposition();},hide:function(){if(this.debugMode)Console.log(this.name+".hide()");this.isHidden=true;this.element.container.hide();if(BrowserDetect.browser=="Explorer"&&Number(BrowserDetect.version)<7){if(this.iframe!=null)this.iframe.hide();}},render:function(){if(this.debugMode)Console.log(this.name+".render()");this.element={container:new Element("div").addClassName("dropShadow"),tl:new Element("div").addClassName("panel tl"),tr:new Element("div").addClassName("panel tr"),br:new Element("div").addClassName("panel br"),bl:new Element("div").addClassName("panel bl")};if(this.insertTarget==null){this.insertTarget=this.findInsertTarget(this.target);}
this.insertTarget.insert({before:this.element.container});this.element.container.insert(this.element.tl);this.element.container.insert(this.element.tr);this.element.container.insert(this.element.br);this.element.container.insert(this.element.bl);if(BrowserDetect.browser=="Explorer"&&Number(BrowserDetect.version)<7){this.iframe=$(document.createElement("iframe"));this.iframe.setStyle({"position":"absolute"});this.element.container.insert({before:this.iframe});}},resize:function(){if(this.isHidden)return;if(this.element==null)this.render();if(this.debugMode)Console.log(this.name+".resize()");var width=this.target.offsetWidth+27;var height=this.target.offsetHeight+22;this.element.container.setStyle({"width":width+"px","height":height+"px"});this.element.tl.setStyle({"width":(width-20)+"px","height":(height-20)+"px"});this.element.tr.setStyle({"height":(height-20)+"px"});this.element.bl.setStyle({"width":(width-20)+"px"});this.element.container.show();if(BrowserDetect.browser=="Explorer"&&Number(BrowserDetect.version)<7){if(this.iframe!=null){this.iframe.show();this.iframe.setStyle({"width":(this.target.offsetWidth)+"px","height":(this.target.offsetHeight)+"px"});}}},reposition:function(){if(this.isHidden)return;if(this.element==null)this.render();if(this.debugMode)Console.log(this.name+".reposition()");var position={top:this.target.offsetTop,left:this.target.offsetLeft};this.element.container.setStyle({"left":String(Math.round(position.left-10))+"px","top":String(Math.round(position.top-5))+"px"});if(this.depth==null){var elementDepth=this.element.container.getStyle("zIndex");if(elementDepth==null){var targetDepth=this.target.getStyle("zIndex");if(targetDepth!=null)this.depth=Number(targetDepth);}}
if(this.depth!=null)this.element.container.setStyle({"zIndex":this.depth});if(BrowserDetect.browser=="Explorer"&&Number(BrowserDetect.version)<7){if(this.iframe!=null){this.iframe.setStyle({"left":String(Math.round(position.left))+"px","top":String(Math.round(position.top))+"px"});}
if(this.depth!=null)this.iframe.setStyle({"zIndex":this.depth});}},getRootElement:function(){return this.element.container;},destroy:function(){this.element.container.remove();if(this.iframe!=null)this.iframe.remove();this.element=null;this.iframe=null;}};if(typeof ElementReady!='undefined')throw("ElementReady is already defined.");var ElementReady={listeners:null,timer:null,POLLING_INTERVAL:20,addListener:function(elementID,handler){if(Page.domHasLoaded){var element=$(id);if(element!=null){handler(element);}
return;}else{Page.addEventListener("dom:loaded",this.onDomLoaded.bind(this));}
if(this.listeners==null)this.listeners=$A([]);this.listeners.push({elementID:elementID,handler:handler});this.startChecking();},startChecking:function(){if(this.timer==null){this.timer=setInterval(this.check.bind(this),this.POLLING_INTERVAL);this.check();}},check:function(){for(var index=0;index<this.listeners.length;index++){var listener=this.listeners[index];var element=$(listener.elementID);if(element!=null&&(element.nextSibling||element.parentNode.nextSibling||Page.domHasLoaded)){listener.handler(element);this.listeners.splice(index,1);index--;}}},onDomLoaded:function(){if(this.timer!=null){clearInterval(this.timer);this.check();this.listeners=null;this.timer=null;}}};if(typeof Element.onReady!='undefined')throw("Element.onReady is already defined.");Element.onReady=ElementReady.addListener.bind(ElementReady);if(typeof Wrap!='undefined')throw("ERROR: Wrap is already defined.");var Wrap={these:function(list,options){return ElementWrapper.wrapElements(list,options);}};if(typeof ElementWrapper!='undefined')throw("ERROR: ElementWrapper is already defined.");var ElementWrapper={defaultLayoutStyle:{"position":"static","top":"auto","right":"auto","left":"auto","bottom":"auto","marginTop":"0","marginRight":"0","marginBottom":"0","marginLeft":"0","borderTopWidth":"0","borderRightWidth":"0","borderBottomWidth":"0","borderLeftWidth":"0","borderTopStyle":"none","borderRightStyle":"none","borderBottomStyle":"none","borderLeftStyle":"none","borderTopColor":"transparent","borderRightColor":"transparent","borderBottomColor":"transparent","borderLeftColor":"transparent"},cloneLayoutStyle:function(source){var layoutStyle={};for(var prop in this.defaultLayoutStyle){var style=$(source).getStyle(prop);if(style!=null){layoutStyle[prop]=style;}}
this.setStyle(layoutStyle);},clearLayoutStyle:function(){this.setStyle(this.defaultLayoutStyle);},wrapElement:function(wrapper){this.parentNode.replaceChild(wrapper,this);wrapper.appendChild(this);wrapper.cloneLayoutStyle(this);this.clearLayoutStyle();},wrapElements:function(list){var wrapper=null;if(arguments[1]){if(arguments[1].wrapper){wrapper=arguments[1].wrapper;}}
if(list!=null){list=$A([list]).flatten();if(list.length>0){var firstItem=list[0];if(wrapper==null){wrapper=$(document.createElement("div"));}
firstItem.parentNode.insertBefore(wrapper,firstItem);for(var index=0;index<list.length;index++){var nextElement=list[index];nextElement.parentNode.removeChild(nextElement);wrapper.appendChild(nextElement);}}}
return wrapper;}};if(typeof Event.preventDefault=='undefined'){Object.extend(Event,{preventDefault:function(event){if(event.preventDefault){event.preventDefault();}else{event.returnValue=false;}}});}
if(typeof Event.stopPropagation=='undefined'){Object.extend(Event,{stopPropagation:function(event){if(event.stopPropagation){event.stopPropagation();}else{event.cancelBubble=true;}}});}
if(typeof Event.getTarget=='undefined'){Object.extend(Event,{getTarget:function(event){var target=null;if(event.type=="mouseover"){target=$((event.relatedTarget)?event.relatedTarget:event.fromElement);}else if(event.type=="mouseout"){target=$((event.relatedTarget)?event.relatedTarget:event.toElement);}else{if(event.target!=null){target=$(event.target);}}
return target;}});}
if(typeof Event.withinElement=='undefined'){Object.extend(Event,{within:function(evt,elements){var elements=$A([elements]).flatten();var within=elements.collect(function(nextElement){return Event.withinElement(evt,nextElement);}.bind(this));return within.any();},withinElement:function(evt,element){if(element==null)return false;var parent=Event.getTarget(evt);while(parent&&parent!=element)try{parent=parent.parentNode;}catch(error){parent=element;}
return parent===element;}});}
if(typeof Event.Dispatcher!='undefined')throw("Event.Dispatcher is already defined.");Event.Dispatcher={ALL_TYPES:"all-event-types",template:{listenerStack:null,nextListenerID:0,addEventListener:function(eventType,eventHandler){this.nextListenerID++;if(this.listenerStack==null){this.listenerStack=$A([]);}
var listener={type:eventType,handler:eventHandler,id:this.nextListenerID};this.listenerStack.push(listener);return listener;},removeEventListener:function(listener){if(this.listenerStack!=null){this.listenerStack.each(function(nextListener,index){if(nextListener.id==listener.id){this.listenerStack.splice(index,1);}}.bind(this));}},dispatchEvent:function(eventObject){if(this.listenerStack!=null){this.listenerStack.each(function(nextListener){if(nextListener.type==eventObject.type||nextListener.type==Event.Dispatcher.ALL_TYPES){nextListener.handler(eventObject);}}.bind(this));}}},initialize:function(target){Object.extend(target,this.template);},getInstance:function(){var obj={};Event.Dispatcher.initialize(obj);return obj;}};var ExternalLinks={register:function(elements){if(Debugger.enabled)Console.log("ExternalLinks.register()");if(elements==null)return;if(elements.length==null){elements=[elements];}
$A(elements).each(function(nextElement){if(Element.getCustomAttribute(nextElement,"isRegisteredLink")==null){nextElement.observe("click",this.handleClick.bindAsEventListener(nextElement));Element.setCustomAttribute(nextElement,"isRegisteredLink",true);}else{console.warn("That element is already registered as an external link: "+nextElement);}}.bind(this));Profiler.writeTime("ExternalLinks.register() COMPLETE");},handleClick:function(evt){if(Debugger.enabled)Console.log("ExternalLinks.handleClick()");try{var link=Event.findElement(evt,"a");var keys=$A([evt.ctrlKey,evt.shiftKey,evt.altKey,evt.metaKey]);var advancedClick=keys.any();if(advancedClick==false){var myWindow=window.open(this.href);Event.preventDefault(evt);}}catch(e){};}};if(typeof LabelField!='undefined')throw("ERROR: LabelField is already defined.");LabelField=Class.create();LabelField.prototype={name:"LabelField",version:"0.80",debugMode:false,element:null,defaultText:null,hasFocus:false,useMouseOver:false,initialize:function(element){this.debugMode=Debugger.enabled;Object.extend(this,arguments[1]||{});if(this.debugMode)Console.log(this.name+" (version "+this.version+") has initialized.");if(element!=null){this.element=$(element);Event.observe(this.element,"focus",this.handleFocus.bindAsEventListener(this));Event.observe(this.element,"mouseover",this.handleMouseOver.bindAsEventListener(this));Event.observe(this.element,"blur",this.handleBlur.bindAsEventListener(this));Event.observe(this.element,"mouseout",this.handleMouseOff.bindAsEventListener(this));Event.observe(this.element,"field:change",this.handleChange.bindAsEventListener(this));this.showDefaultText();if(this.element.form){Event.observe(this.element.form,"submit",this.hideDefaultText.bindAsEventListener(this));Event.observe(this.element.form,"form:submit",this.hideDefaultText.bindAsEventListener(this));}}else{Console.log("Warning: "+this.name+" was instantiated without a target element.");}},showDefaultText:function(){if(this.debugMode)Console.log(this.name+".showDefaultText()");if(this.element.value==""){this.element.value=this.defaultText;}
if(this.element.value==""||this.element.value==this.defaultText){this.element.addClassName("defaultText");}},hideDefaultText:function(){if(this.debugMode)Console.log(this.name+".hideDefaultText()");if(this.element.value==this.defaultText){this.element.value="";this.element.removeClassName("defaultText");}},handleFocus:function(evt){if(this.debugMode)Console.log(this.name+".handleFocus()");this.hideDefaultText();this.hasFocus=true;},handleBlur:function(evt){if(this.debugMode)Console.log(this.name+".handleBlur()");this.showDefaultText();this.hasFocus=false;},handleChange:function(evt){if(this.debugMode)Console.log(this.name+".handleChange()");this.showDefaultText();},handleMouseOver:function(evt){if(this.debugMode)Console.log(this.name+".handleMouseOver()");if(this.useMouseOver==true){this.hideDefaultText();}},handleMouseOff:function(evt){if(this.debugMode)Console.log(this.name+".handleMouseOff()");if(this.useMouseOver==true&&this.hasFocus==false){this.showDefaultText();}}};if(typeof LimitedList!='undefined')throw("ERROR: LimitedList is already defined.");LimitedList=Class.create();LimitedList.prototype={name:"LimitedList",version:"0.80",debugMode:false,element:null,maxLines:null,maxChars:null,moreButton:null,list:null,defaultItemDisplay:null,showingAll:null,headlineSuspects:["h1","h2","h3","h4","h5","h6"],moreButtonLabel:null,lessButtonlabel:null,hideButtonAfterToggle:false,limitStartIndex:null,initialize:function(element){this.debugMode=Debugger.enabled;Object.extend(this,arguments[1]||{});Event.Dispatcher.initialize(this);if(this.debugMode)Console.log(this.name+" (version "+this.version+") has initialized.");if(element!=null){this.element=$(element);if(this.list==null)this.list=this.element.childElements();if(this.list.length>0){if(this.maxLines!=null&&((this.list.length-this.maxLines)<=1))return;var moreItemsExist=this.limitItems();if(moreItemsExist){var headline=this.getHeadline(this.element);this.moreButton=new MoreButton({moreButtonLabel:this.moreButtonLabel,lessButtonLabel:this.lessButtonLabel,appendCallBack:function(moreButton){if(String(this.element.nodeName).toLowerCase()=="ul"){return $(this.element.parentNode.appendChild(moreButton));}else if(this.limitStartIndex!=null){var target=null;this.list.each(function(nextElement,index){if(index==this.limitStartIndex){nextElement.insert({before:moreButton});}}.bind(this));return $(moreButton);}else{return $(this.element.appendChild(moreButton));}}.bind(this)});this.moreButton.addEventListener("more-click",function(evt){this.showAllItems();if(this.hideButtonAfterToggle)this.moreButton.element.hide();this.dispatchEvent(evt);}.bind(this));this.moreButton.addEventListener("less-click",function(evt){this.limitItems();this.dispatchEvent(evt);}.bind(this));}else{this.showingAll=null;}}}},getHeadline:function(parentElement){var headline=null;this.headlineSuspects.each(function(nextTarget){var elements=parentElement.getElementsByTagName(nextTarget);if(elements.length>0){headline=elements[0];throw $break;}});return headline;},isShowingAll:function(){return this.showingAll;},limitItems:function(){if(this.debugMode)Console.log(this.name+".limitItems()");var moreItems=false;var charCount=0;this.showingAll=false;this.defaultItemDisplay=$(this.list[0]).getStyle("display");var lastVisisbleItem=null;for(var index=0;index<this.list.length;index++){var nextItem=$(this.list[index]);if(this.maxChar!=null){charCount+=String(nextItem.getElementsByTagName("a")[0].innerHTML).length;}
var hiddenCount=this.list.length-this.maxLines;var limitEndIndex=this.limitStartIndex+hiddenCount;if(this.limitStartIndex!=null&&this.maxLines!=null&&index>=this.limitStartIndex&&index<limitEndIndex){nextItem.setStyle({"display":"none"});moreItems=true;}
else if(this.limitStartIndex==null&&((this.maxLines!=null&&index>this.maxLines-1)||(this.maxChars!=null&&charCount>this.maxChars))){nextItem.setStyle({"display":"none"});moreItems=true;if(lastVisisbleItem==null){lastVisisbleItem=$(this.list[index-1]);}}}
if(moreItems){if(lastVisisbleItem!=null){$(lastVisisbleItem).addClassName("last");}
this.element.addClassName("limited");}else{$(this.list[this.list.length-1]).addClassName("last");}
Profiler.writeTime(this.name+".limitItems() COMPLETE");return moreItems;},showAllItems:function(){this.showingAll=true;this.list.each(function(nextItem){nextItem.setStyle({"display":this.defaultItemDisplay});nextItem.removeClassName("last");}.bind(this));$(this.list[this.list.length-1]).addClassName("last");this.element.removeClassName("limited");}};if(typeof MoreButton!='undefined')throw("ERROR: MoreButton is already defined.");MoreButton=Class.create();MoreButton.prototype={name:"MoreButton",version:"0.80",debugMode:false,element:null,appendCallBack:null,moreMode:null,moreButtonLabel:"View More",lessButtonLabel:"View Less",initialize:function(){this.debugMode=Debugger.enabled;Object.extend(this,arguments[0]||{});Event.Dispatcher.initialize(this);if(this.debugMode)Console.log(this.name+" (version "+this.version+") has initialized.");this.element=this.render();Event.observe(this.element,'click',this.handleClick.bindAsEventListener(this));this.moreMode=true;},render:function(){var moreButton=$(document.createElement("a"));moreButton.setAttribute("href","#more");moreButton.innerHTML=this.moreButtonLabel;moreButton.addClassName("more");if(this.appendCallBack!=null){moreButton=$(this.appendCallBack(moreButton));}else{Console.log("NOTICE: new MoreButton() was called, but an 'append' function wasn't specified.");moreButton=$(document.getElementsByTagName("body")[0].appendChild(moreButton));}
return moreButton;},handleClick:function(evt){if(this.moreMode){track_click('tags-more');this.moreMode=false;this.element.innerHTML=this.lessButtonLabel;this.dispatchEvent({target:this,type:"more-click",origin:evt});}else{this.moreMode=true;this.element.innerHTML=this.moreButtonLabel;this.dispatchEvent({target:this,type:"less-click",origin:evt});}
Event.stop(evt);}};if(typeof PageShadow!='undefined')throw("PageShadow is already defined.");PageShadow={name:"PageShadow",version:"0.01",debugMode:false,element:null,target:null,depth:null,isHidden:false,hideTimer:null,create:function(target){this.debugMode=Debugger.enabled;Object.extend(this,arguments[1]||{});Event.Dispatcher.initialize(this);if(this.debugMode)console.log(this.name+" (version "+this.version+") has initialized.");this.depth=Page.getNextHighestDepth();if(target!=null){this.target=$(target);Page.addEventListener("update",function(){this.resize();}.bind(this));}},show:function(){if(this.debugMode)console.log(this.name+".show()");if(this.hideTimer!=null)clearTimeout(this.hideTimer);this.isHidden=false;this.resize();},hide:function(){if(this.debugMode)console.log(this.name+".hide()");if(this.hideTimer!=null)clearTimeout(this.hideTimer);this.hideTimer=setTimeout(this._hide.bind(this),250);},_hide:function(){this.isHidden=true;if(this.element!=null)this.element.setStyle({"left":"-9999px"});},render:function(){if(this.debugMode)console.log(this.name+".render()");this.element=$(document.createElement("div"));this.target.insert({before:this.element});this.element.setStyle({"position":"absolute","backgroundImage":"url(/img/ui/full-page-shadow.png)","overflow":"hidden","zIndex":this.depth});if(BrowserDetect.browser=="Explorer"&&BrowserDetect.version=="6"){this.element.setStyle({"backgroundImage":"none"});this.element.runtimeStyle.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/img/ui/full-page-shadow.png',sizingMethod='scale')";}},resize:function(){if(this.isHidden)return;if(this.element==null)this.render();if(this.debugMode)console.log(this.name+".resize()");var viewportDimensions=document.viewport.getDimensions();var viewportOffsets=document.viewport.getScrollOffsets();var pageDimensions={width:Page.bodyElement.offsetWidth,height:Page.bodyElement.offsetHeight};this.element.setStyle({"top":"0","left":"0","width":(pageDimensions.width>viewportDimensions.width?pageDimensions.width:viewportDimensions.width)+"px","height":(pageDimensions.height>viewportDimensions.height?pageDimensions.height:viewportDimensions.height)+"px"});},getRootElement:function(){return this.element;},destroy:function(){this.element.remove();this.element=null;}};if(typeof Recommendation!='undefined')throw("Recommendation is already defined.");var Recommendation=Class.create({name:"Recommendation",version:"0.01",debugMode:false,element:null,hideDetails:true,details:null,detailsButton:null,detailsShowing:false,commentForm:null,notice:null,initialize:function(element){this.debugMode=Debugger.enabled;Object.extend(this,arguments[1]||{});if(this.debugMode)Console.log(this.name+" (version "+this.version+") has initialized.");if(element!=null){this.element=$(element);if(this.hideDetails)this.initDetails();this.commentForm=new CommentForm(this.element.down(".commentForm form"),{parent:this});new AttaboyButtons(this.element.down(".attaboyOptions"));this.element.select(".attaboys > div").each(function(nextElement){new Attaboy(nextElement);});this.element.select(".comments").each(function(nextElement){var list=nextElement.select(".comment");if(list.any(function(element){return element.hasClassName("featured");}))return;var maxLines=3;var hiddenCount=list.length-maxLines;new LimitedList(nextElement,{list:list,limitStartIndex:1,maxLines:maxLines,moreButtonLabel:"See "+hiddenCount+" more comments >",hideButtonAfterToggle:true});});}},initDetails:function(){var details=this.element.select(".lists",".communities",".tags");if(details.length>0){this.details=ElementWrapper.wrapElements(details);this.details.addClassName("details");this.detailsButton=new Element("h4").addClassName("details");this.detailsButton.innerHTML="Lists, Communities, Tags";this.details.insert({before:this.detailsButton});this.detailsButton.observe("click",this.onDetailsToggle.bind(this));this.details.hide();this.details.setStyle({"opacity":"0"});}},onDetailsToggle:function(){if(this.detailsShowing){new Effect.Morph(this.details,{style:{opacity:"0"},duration:0.25,afterFinish:function(){this.details.hide();this.detailsButton.removeClassName("active");}.bind(this)});}else{this.details.show();this.detailsButton.addClassName("active");new Effect.Morph(this.details,{style:{opacity:"1"},duration:0.5});}
this.detailsShowing=(!this.detailsShowing);}});if(typeof AttaboyButtons!='undefined')throw("AttaboyButtons is already defined.");var AttaboyButtons=Class.create({name:"AttaboyButtons",version:"0.01",debugMode:false,element:null,buttons:null,initialize:function(element){this.debugMode=Debugger.enabled;Object.extend(this,arguments[1]||{});if(this.debugMode)Console.log(this.name+" (version "+this.version+") has initialized.");if(element!=null){this.element=$(element);this.buttons=$A([]);this.element.select("a").each(function(nextElement){this.buttons.push(this.initButton(nextElement));}.bind(this));}},initButton:function(element){var button=new FlagButton(element,{useToggle:false});button.addEventListener("flag",this.onFlag.bindAsEventListener(this));button.addEventListener("unflag",this.onUnflag.bindAsEventListener(this));return button;},disable:function(){this.element.addClassName("disabled");this.buttons.invoke("disable");},enable:function(){this.element.removeClassName("disabled");this.buttons.invoke("enable");},onFlag:function(e){if(this.showNotice(e))this.disable();},onUnflag:function(e){if(this.showNotice(e))this.enable();},showNotice:function(e){var success=false;var temp=new Element("div");temp.innerHTML=e.transport.responseText;Page.bodyElement.appendChild(temp);var notice=temp.down(".notice");if(notice!=null){this.removeNotice();notice.remove();var target=this.element.up(".options");if(target==null)target=this.element;if(target!=null)target.insert({after:notice});var undo=notice.down("a");if(undo)this.initButton(undo);this.notice=notice;success=true;var flagLinkLabel=String(e.target.element.innerHTML).toLowerCase();track_click("rate-"+flagLinkLabel);if(BrowserDetect.browser=="Explorer"&&Number(BrowserDetect.version)<8){this.notice.select("*:last-child").invoke("addClassName","last");}}else{}
temp.remove();return success;},removeNotice:function(){if(this.notice!=null){this.notice.remove();this.notice=null;}}});if(typeof Attaboy!='undefined')throw("Attaboy is already defined.");var Attaboy=Class.create({name:"Attaboy",version:"0.01",debugMode:false,element:null,details:null,detailsShowing:false,initialize:function(element){this.debugMode=Debugger.enabled;Object.extend(this,arguments[1]||{});if(this.debugMode)Console.log(this.name+" (version "+this.version+") has initialized.");if(element!=null){this.element=$(element);this.details=this.element.down("ul");var button=this.element.down("h5 em");if(this.details&&button){this.details.hide();this.details.setStyle({"opacity":"0"});button.observe("click",this.toggle.bindAsEventListener(this));}}},toggle:function(e){if(this.detailsShowing){new Effect.Morph(this.details,{style:{opacity:"0"},duration:0.25,afterFinish:function(){this.details.hide();}.bind(this)});}else{this.details.show();new Effect.Morph(this.details,{style:{opacity:"1"},duration:0.5});}
this.detailsShowing=(!this.detailsShowing);}});if(typeof CommentForm!='undefined')throw("CommentForm is already defined.");var CommentForm=Class.create({name:"CommentForm",version:"0.01",debugMode:false,element:null,parent:null,visible:false,notice:null,facade:null,initialize:function(element){this.debugMode=Debugger.enabled;Object.extend(this,arguments[1]||{});Event.Dispatcher.initialize(this);if(this.debugMode)Console.log(this.name+" (version "+this.version+") has initialized.");if(element!=null){this.element=$(element);var button=this.parent.element.down(".commentLink a");button.observe("click",function(e){e.preventDefault();this.show();}.bindAsEventListener(this));if(this.parent.element.down(".comments")){this.fakeForm=new Element("div").addClassName("fakeCommentForm");this.parent.element.insert(this.fakeForm);var fakeField=this.element.down("label span").cloneNode(true);this.fakeForm.insert(fakeField);this.fakeForm.observe("click",this.show.bind(this));}
this.element.hide();this.element.setStyle({"opacity":"0"});new Button(this.element.down("button"),{useStandardStyle:true});var cancelButton=new Element("span").update("Cancel").addClassName("cancel");this.element.down("button").insert({after:cancelButton});cancelButton.observe("click",this.hide.bind(this));Object.extend(this,AjaxianForm);this.initialize();this.addEventListener("submit-response",this.onResponse.bind(this));if(window.location.hash.indexOf("comment-thread")>=0&&this.parent.element.down(window.location.hash)!=null&&this.parent.element.down(".comments")==null){setTimeout(function(){this.show();}.bind(this),100);}}},validate:function(){var valid=false;if(this.element.down("textarea").value!=null&&this.element.down("textarea").value!=""){valid=true;}else{valid=false;this.showNotice("Please enter a comment before posting.");}
return valid;},onResponse:function(e){var temp=new Element("div");var comment=null;if(String(e.transport.responseText).indexOf("<html")<0){temp.innerHTML=e.transport.responseText;Page.bodyElement.appendChild(temp);comment=temp.down(".comment");}
if(comment!=null){var comments=this.parent.element.down(".comments");if(comments==null){comments=new Element("div").addClassName("comments");comments.insert(new Element("h4").update("Comments:"));this.element.insert({before:comments});}
comment.remove();comments.insert(comment);if(BrowserDetect.browser=="Explorer"&&Number(BrowserDetect.version)<7){comment.select("li:first-child").invoke("addClassName","first");}
this.element.down("textarea").value="";this.hide();}else{this.showNotice("We're sorry, but something went wrong with your request. The problem appears to be on our end. Please try again at a later time.");}
temp.remove();},show:function(){this.element.show();if(!this.visible){if(BrowserDetect.browser!="Explorer"||Number(BrowserDetect.version)>=7){var textarea=this.element.down("textarea");var parentOffset=19-2;textarea.setStyle({"width":(textarea.parentNode.offsetWidth+parentOffset)+"px"});}
this.visible=true;if(this.fakeForm){this.element.setStyle({"opacity":"1"});this.fakeForm.hide();}else{new Effect.Morph(this.element,{style:{opacity:"1"},duration:0.5});}}
var formOffsets=this.element.cumulativeOffset();var viewportDimensions=document.viewport.getDimensions();var viewportOffsets=document.viewport.getScrollOffsets();if(formOffsets[1]>viewportOffsets.top+viewportDimensions.height){window.scrollTo(formOffsets[0],formOffsets[1]-100);}
setTimeout(function(){this.element.down("textarea").focus();}.bind(this),100);},hide:function(){if(this.visible){this.visible=false;this.hideNotice();if(this.fakeForm){this.element.hide();this.fakeForm.show();}else{new Effect.Morph(this.element,{style:{opacity:"0"},duration:0.25,afterFinish:function(){this.element.hide();}.bind(this)});}}},showNotice:function(text){this.hideNotice();this.notice=new Element("p").update(text).addClassName("warning");this.element.insert({before:this.notice});},hideNotice:function(){if(this.notice){this.notice.remove();this.notice=null;}}});Page.addEventListener("load",function(){if(Debugger.enabled)Console.log("Setup: Misc (recommendations)");$$("#item .recommendations .recommendation").each(function(nextElement,nextIndex){new Recommendation(nextElement,{hideDetails:!(nextIndex==0)});if(nextIndex==0){nextElement.select("div.tags a").invoke("observe","click",function(){if(typeof pageTracker!='undefined'){if(Debugger.enabled)Console.log('Fire GA event: ItemPrimaryRec: ItemTagNav');pageTracker._trackEvent('ItemPrimaryRec','ItemTagNav');}});}else{nextElement.select("div.tags a").invoke("observe","click",function(){if(typeof pageTracker!='undefined'){if(Debugger.enabled)Console.log('Fire GA event: ItemOtherRecs: ItemTagNav');pageTracker._trackEvent('ItemOtherRecs','ItemTagNav');}});}});$$(".itemSet.detailed .item").each(function(nextElement){new Recommendation(nextElement,{hideDetails:false});});$$(".listInformation .attaboy").each(function(nextElement){new AttaboyButtons(nextElement);});});if(typeof SlideShow!='undefined')throw("ERROR: SlideShow is already defined.");SlideShow=Class.create();Object.extend(SlideShow,{HORIZONTAL:"horizontal",VERTICAL:"vertical"});SlideShow.prototype={name:"SlideShow",version:"0.80",debugMode:false,compactMode:null,automaticMode:false,transInMode:false,clientSideMode:true,showInfo:true,disabled:false,container:null,mask:null,element:null,list:null,originalList:null,maxVisibleItems:null,startItemNum:0,visibleWidth:null,visibleHeight:null,fullWidth:null,fullHeight:null,offSet:0,nextButton:null,previousButton:null,lastSelected:null,queryStringKey:null,nextButtonLabel:"Next",nextButtonTitle:"Next set of items",previousButtonLabel:"Previous",previousButtonTitle:"Previous set of items",infoTimer:null,automaticTimer:null,nextEffect:null,rows:1,columns:1,direction:null,nextItemX:0,nextItemY:0,transDuration:null,marginRight:0,marginBottom:0,itemWidth:null,itemHeight:null,loop:false,initialize:function(element){this.debugMode=Debugger.enabled;Object.extend(this,arguments[1]||{});Event.Dispatcher.initialize(this);if(this.debugMode)Console.log(this.name+" (version "+this.version+") has initialized.");if(this.queryStringKey!=null){var requestedStartItemNum=Number(Page.getQueryStringValue(this.queryStringKey||0));if(requestedStartItemNum>0){this.clientSideMode=false;}}
if(element!=null){this.element=$(element);if(this.direction==null){this.direction=SlideShow.HORIZONTAL;}
if(this.compactMode==null){this.compactMode=this.guessCompactMode();}
this.list=$A([]);var list=$A(this.element.childElements());list.each(function(nextElement){this.addItem(nextElement);}.bind(this));if(this.maxVisibleItems==null){this.maxVisibleItems=this.list.length;}
if(this.list.length>0){this.render();}
if(this.clientSideMode==false){if(this.debugMode)Console.log(this.name+".clientSideMode set to 'false'. Falling back to sans JS behavior");this.fallBack();}}else{Console.log("Warning: "+this.name+" was instantiated without a target HTML element.");}},guessCompactMode:function(){var compactMode=false;var matches=this.element.parentNode.getElementsBySelector(".nav .next a");if(matches.length>0){var link=$(matches[0]);if(String(link.getAttribute("href")).startsWith("#")==true){compactMode=true;}
}else{compactMode=true;}
if(this.element.parentNode.hasClassName("containedSlideShow")){compactMode=false;}else if(this.element.parentNode.hasClassName("compactSlideShow")){compactMode=true;}
return compactMode;},getTransDuration:function(){if(this.transDuration==null){var x=this.visibleWidth;var y=Math.sqrt(x/900);this.transDuration=Math.round(y*10)/10;if(this.transDuration<0)this.transDuration=0;}
return this.transDuration;},render:function(){if(this.debugMode)Console.log(this.name+".render()");this.calculateDimensions();if(this.nextButton==null||this.previousButton==null){this.createNav();}
this.createMask();if(this.nextButton.type!="Button"){this.nextButton=new Button(this.nextButton,{name:this.name+"_nextButton"});}
if(this.previousButton.type!="Button"){this.previousButton=new Button(this.previousButton,{name:this.name+"_previousButton"});}
if(this.startItemNum+this.maxVisibleItems>=this.list.length){this.nextButton.disable();}
if(this.startItemNum<=0){this.previousButton.disable();}
this.nextButton.parentSlideShow=this;this.previousButton.parentSlideShow=this;this.nextButton.addEventListener('click',this.handleNextButtonClick.bindAsEventListener(this));this.previousButton.addEventListener('click',this.handlePreviousButtonClick.bindAsEventListener(this));this.nextButton.addEventListener('click-disabled',function(evt){if(this.disabled)return;Event.preventDefault(evt.origin);}.bindAsEventListener(this));this.previousButton.addEventListener('click-disabled',function(evt){if(this.disabled)return;Event.preventDefault(evt.origin);}.bindAsEventListener(this));this.nextButton.addEventListener('mouseover',this.handleNavButtonMouseOver.bindAsEventListener(this));this.previousButton.addEventListener('mouseover',this.handleNavButtonMouseOver.bindAsEventListener(this));var timeGradient=1000;this.list.each(function(nextSlide){var nextImage=$(nextSlide.getElementsByTagName("img")[0]);if(this.transInMode){nextImage.setStyle({"opacity":"0"});nextImage.transInTimer=setTimeout(function(){new Effect.Appear(this,{duration:0.5});}.bind(nextImage),timeGradient);timeGradient+=1000;}}.bind(this));if(this.dataPath!=null){Object.extend(this,AjaxianSlideShow);this.initialize();}else if(this.list.length<=this.maxVisibleItems){this.hideNavigation();}
if(this.compactMode){Object.extend(this,CompactSlideShow);this.initialize();}
if(this.automaticMode){this.automaticTimer=setTimeout(function(){if(this.automaticMode){this.automaticallySlide();this.automaticTimer=new PeriodicalExecuter(this.automaticallySlide.bind(this),20);}}.bind(this),timeGradient);}},hideNavigation:function(){Console.log("Notice: "+this.name+" said, 'The list only contains one set of items, so I'm hiding the navigation...");this.disable();this.nextButton.element.hide();this.previousButton.element.hide();},automaticallySlide:function(){this.slideNext({transDuration:20,transType:Effect.Transitions.linear});},hasReachedTheEnd:function(){return(this.startItemNum+this.maxVisibleItems>=this.list.length);},disable:function(){if(this.debugMode)Console.log(this.name+".disable()");this.disabled=true;},enable:function(){if(this.debugMode)Console.log(this.name+".enable()");this.disabled=false;},calculateDimensions:function(){this.fullWidth=0;this.fullHeight=0;if(this.direction==SlideShow.HORIZONTAL){this.visibleWidth=0;this.visibleHeight=(this.itemHeight||this.list[0].offsetHeight)+this.marginBottom;for(var index=0;index<this.list.length;index++){if(index<this.maxVisibleItems){this.visibleWidth+=(this.itemWidth||this.list[index].offsetWidth)+this.marginRight;}
this.fullWidth+=(this.itemWidth||this.list[index].offsetWidth)+this.marginRight;}
if(this.rows!=null&&this.rows>1){this.visibleHeight=0;for(var index=0;index<this.rows&&index<this.list.length;index++){this.visibleHeight+=(this.itemHeight||this.list[index].offsetHeight)+this.marginBottom;if(this.debugMode)Console.log("this.visibleHeight: "+this.visibleHeight);}
if((this.maxVisibleItems-this.list.length)%2!=0){this.visibleWidth+=(this.itemWidth||this.list[0].offsetWidth)+this.marginRight;}
this.visibleWidth=this.visibleWidth/this.rows;}}else{this.visibleWidth=(this.itemWidth||this.list[0].offsetWidth);this.visibleHeight=0;for(var index=0;index<this.list.length;index++){var nextItemHeight=(this.itemHeight||this.list[index].offsetHeight);if(index<this.maxVisibleItems){this.visibleHeight+=nextItemHeight;}
this.fullHeight+=nextItemHeight;}
if(this.columns!=null&&this.columns>1){this.visibleWidth=this.visibleWidth*this.columns;this.visibleHeight=this.visibleHeight/this.columns;}}
if(this.debugMode){Console.log("this.maxVisibleItems: "+this.maxVisibleItems);Console.log("this.fullWidth:"+this.fullWidth);Console.log("this.fullHeight:"+this.fullHeight);Console.log("this.visibleWidth:"+this.visibleWidth);Console.log("this.visibleHeight:"+this.visibleHeight);}},addItem:function(newItem){if(!newItem.parentNode){this.element.appendChild(newItem);}
this.list.push(newItem);this.addEventsToItem(newItem);if(this.direction==SlideShow.HORIZONTAL){if((this.list.length%this.rows)==0){this.fullWidth+=(this.itemWidth||this.list[this.list.length-1].offsetWidth)+this.marginRight;this.element.setStyle({"width":String(this.fullWidth)+"px"});}
if(this.rows>1){newItem.setStyle({"display":"block","float":"none","position":"absolute","left":String(this.nextItemX)+"px","top":String(this.nextItemY)+"px"});if((this.list.length%this.rows)==0){this.nextItemY=0;this.nextItemX+=newItem.getWidth()+this.marginRight;}else{this.nextItemY+=newItem.getHeight()+this.marginBottom;}
if(((this.list.length-1)%this.rows)==0){newItem.addClassName("frontRow");}else{newItem.removeClassName("frontRow");}}}else{this.fullHeight+=(this.itemHeight||this.list[this.list.length-1].offsetHeight)+this.marginBottom;this.element.setStyle({"height":String(this.fullHeight)+"px"});}
if(this.startItemNum+this.maxVisibleItems<this.list.length){if(this.nextButton!=null&&this.nextButton.enable!=null){this.nextButton.enable();}}else{if(this.debugMode){Console.log("this.startItemNum: "+this.startItemNum);Console.log("this.maxVisibleItems: "+this.maxVisibleItems);Console.log("this.list.length: "+this.list.length);}}},addEventsToItem:function(targetItem){targetItem.parentSlideShow=this;Event.observe(targetItem,"click",function(evt){this.parentSlideShow.lastSelected=this;this.parentSlideShow.dispatchEvent({target:this,type:"slide-click",origin:evt});}.bindAsEventListener(targetItem));if(this.compactMode==false&&this.showInfo==true){var title=targetItem.down("span");if(title!=null){new ToolTip(targetItem,{html:title.innerHTML});}}},removeEventsFromItem:function(targetItem){Event.stopObserving(targetItem);},stopAutomaticScroll:function(){this.automaticMode=false;if(this.automaticTimer!=null){if(this.automaticTimer.stop!=null){this.automaticTimer.stop();}}
if(this.nextEffect!=null){this.nextEffect.cancel();}
this.slidePrevious();},createNav:function(){var list;matches=$(this.element.parentNode).getElementsBySelector(".nav");if(matches.length<1){var container=$(this.element.parentNode.appendChild(document.createElement("div")));container.addClassName("nav");var header=$(container.appendChild(document.createElement("h6")));header.appendChild(document.createTextNode("Navigation"));list=$(container.appendChild(document.createElement("ul")));}else{list=matches[0];}
this.nextButton=this.createNavButton(list,"next","#next",this.nextButtonTitle,this.nextButtonLabel);this.previousButton=this.createNavButton(list,"previous","#previous",this.previousButtonTitle,this.previousButtonLabel);},createNavButton:function(parent,className,href,title,label){var matches;var button;matches=parent.getElementsByClassName(className);if(matches.length<1){button=$(parent.appendChild(document.createElement("li")));button.addClassName(className);}else{button=matches[0];}
matches=button.getElementsByTagName("a");if(matches.length<1){link=$(document.createElement("a"));link.setAttribute("href",href);link.setAttribute("title",title);var span=$(link.appendChild(document.createElement("span")));span.appendChild(document.createTextNode(label));matches=button.getElementsBySelector("span.outer");if(matches.length<1){button.appendChild(link);}else{button.replaceChild(link,matches[0]);}}else{link=matches[0];}
return button;},createMask:function(){this.mask=$(document.createElement("div"));this.mask.setStyle({"width":String(this.visibleWidth)+"px","height":String(this.visibleHeight)+"px","overflow":"hidden"});var elementOriginalOffsetTop=this.element.offsetTop;var elementOriginalOffsetLeft=this.element.offsetLeft;Object.extend(this.element,ElementWrapper);Object.extend(this.mask,ElementWrapper);this.element.wrapElement(this.mask);this.mask.addClassName("mask");if(elementOriginalOffsetTop>0&&this.mask.offsetTop>elementOriginalOffsetTop){this.mask.setStyle({"top":"0"});}
if(elementOriginalOffsetLeft>0&&this.mask.offsetLeft>elementOriginalOffsetLeft){this.mask.setStyle({"left":"0"});}
if(this.direction==SlideShow.HORIZONTAL){this.element.setStyle({"position":"relative","width":String(this.fullWidth)+"px"});}else{this.element.setStyle({"position":"relative","height":String(this.fullHeight)+"px"});}},handleNextButtonClick:function(evt){if(this.disabled)return;this.slideNext();this.dispatchEvent({target:this,type:"next-click",origin:evt});Event.preventDefault(evt.origin);},handlePreviousButtonClick:function(evt){if(this.disabled)return;this.slidePrevious();this.dispatchEvent({target:this,type:"previous-click",origin:evt});Event.preventDefault(evt.origin);},handleNavButtonMouseOver:function(evt){if(this.automaticMode){this.stopAutomaticScroll();}},slideNext:function(){if(this.disabled)return;if(this.nextButton.isEnabled){var options=arguments[0]||{};if(options.transDuration==null){options.transDuration=this.getTransDuration();}
if(options.transType==null){options.transType=Effect.Transitions.sinoidal;}
var numItemsToMove=this.maxVisibleItems;if(this.startItemNum+this.maxVisibleItems>this.list.length){numItemsToMove=this.maxVisibleItems-this.startItemNum;}
if(this.direction==SlideShow.HORIZONTAL){this.nextEffect=new Effect.Morph(this.element,{style:'left:'+String(this.offSet-=this.visibleWidth)+"px",duration:options.transDuration,transition:options.transType});}else{this.nextEffect=new Effect.Morph(this.element,{style:'top:'+String(this.offSet-=this.visibleHeight)+"px",duration:options.transDuration,transition:options.transType});}
this.startItemNum+=numItemsToMove;if(this.hasReachedTheEnd()){if(this.loop){if(this.originalList==null){this.originalList=this.list.slice();this.originalList.each(function(item){this.removeEventsFromItem(item);}.bind(this));}
this.originalList.each(function(item){var newItem=item.cloneNode(true);this.element.appendChild(newItem);this.addItem(newItem);this.dispatchEvent({target:newItem,type:"slide-add"});Page.forceEvent({type:"update"});}.bind(this));}else{this.nextButton.disable();}}
if(this.startItemNum>0){this.previousButton.enable();}
this.dispatchEvent({target:this,type:"slide-next"});}},slidePrevious:function(){if(this.disabled)return;if(this.previousButton.isEnabled()){var numItemsToMove=this.maxVisibleItems;if(this.startItemNum-this.maxVisibleItems<0){numItemsToMove=this.startItemNum-0;}
if(this.direction==SlideShow.HORIZONTAL){new Effect.Morph(this.element,{style:'left:'+String(this.offSet+=this.visibleWidth)+"px",duration:this.getTransDuration()});}else{new Effect.Morph(this.element,{style:'top:'+String(this.offSet+=this.visibleHeight)+"px",duration:this.getTransDuration()});}
this.startItemNum-=numItemsToMove;if(this.startItemNum<=0){this.previousButton.disable();}
if(this.startItemNum+this.maxVisibleItems<this.list.length){this.nextButton.enable();}
this.dispatchEvent({target:this,type:"slide-previous"});}},fallBack:function(){var nextHasFallBack=false;var previousHasFallBack=false;if(this.nextButton!=null){if(String(this.nextButton.element.down("a").getAttribute("href")).startsWith("#")==false){nextHasFallBack=true;}}
if(this.previousButton!=null){if(String(this.previousButton.element.down("a").getAttribute("href")).startsWith("#")==false){previousHasFallBack=true;}}
if((this.nextButton==null||nextHasFallBack)&&(this.previousButton==null||previousHasFallBack)){this.disable();if(nextHasFallBack){this.nextButton.enable();}
if(previousHasFallBack){this.previousButton.enable();}}}};if(typeof AjaxianSlideShow!='undefined')throw("ERROR: AjaxianSlideShow is already defined.");AjaxianSlideShow={bufferSize:2,isLoading:false,lastLoadFailed:false,fallBackTimer:null,initialize:function(){this.dataAttributes=$H(this.dataAttributes);if(this.isNotPreloaded()){this.loadNextSet();}
this.addEventListener("slide-next",function(evt){if(this.isNotPreloaded()){this.loadNextSet();}}.bindAsEventListener(this));},isNotPreloaded:function(){return(this.startItemNum+(this.maxVisibleItems*this.bufferSize)>=this.list.length);},loadNextSet:function(){if(this.lastLoadFailed)return;if(this.hasReachedTheEnd()){this.showProgress();}
if(this.isLoading==false){this.isLoading=true;var attributes=$H({start:String(this.list.length),count:String(this.maxVisibleItems)}).merge(this.dataAttributes.toObject()||{});var request=new Ajax.Request(this.dataPath+"?"+$H(attributes).toQueryString(),{method:'get',onComplete:this.handleSetLoaded.bind(this)});this.fallBackTimer=setTimeout(function(){this.dispatchEvent({target:this,type:"loadset-failed"});this.hideProgress();this.isLoading=false;}.bind(this),10000);this.addEventListener("loadset-failed",function(){Console.log("Notice: "+this.name+" failed to load more items using AJAX. Falling back to sans JS behavior...");this.fallBack();}.bindAsEventListener(this));this.addEventListener("loadset-empty",function(){if(this.list.length<=this.maxVisibleItems){this.hideNavigation();}}.bindAsEventListener(this));}},handleSetLoaded:function(transport){if(this.debugMode)Console.log(this.name+".handleSetLoaded()");clearTimeout(this.fallBackTimer);this.isLoading=false;this.hideProgress();var itemList=null;var xmlDoc=NEXML.createDoc(transport.responseText);if(xmlDoc!=null&&this.responseIsValid(xmlDoc)){var tagName=String(this.list[0].nodeName).toLowerCase();if(this.debugMode)Console.log("tagName: "+tagName);itemList=$A(NEXML.immediateDescendants(NEXML.firstDescendant(xmlDoc)));itemList.each(function(nextItem,index){var newItem=this.list[0].cloneNode(false);this.element.appendChild(newItem);newItem.innerHTML=String(NEXML.innerXML(nextItem));this.addItem(newItem);this.dispatchEvent({target:newItem,type:"slide-add"});Page.forceEvent({type:"update"});}.bind(this));}
if(itemList==null){this.lastLoadFailed=true;this.dispatchEvent({target:this,type:"loadset-failed"});}else if(itemList.length<=0){this.lastLoadFailed=true;this.dispatchEvent({target:this,type:"loadset-empty"});}
else if(this.isNotPreloaded()){this.loadNextSet();}},showProgress:function(){if(this.progress==null){this.progress=$(this.nextButton.element.insertBefore(document.createElement("span"),this.nextButton.element.firstChild));this.progress.setStyle({"display":"none"});this.progress.addClassName("progress");}
this.progress.setStyle({"display":"block"});},hideProgress:function(){if(this.progress!=null){this.progress.setStyle({"display":"none"});}},responseIsValid:function(xmlDoc){var isValid=false;var container=NEXML.firstDescendant(xmlDoc);if(this.debugMode)Console.log("container.nodeName: "+container.nodeName);var tagName=String(this.list[0].parentNode.nodeName).toLowerCase();if(container.nodeName==tagName){isValid=true;}else{if(this.debugMode)Console.log("Notice: The response appears to be invalid. (The root element's tag name does not match the list container's tag name)");}
return isValid;}};if(typeof CompactSlideShow!='undefined')throw("ERROR: CompactSlideShow is already defined.");CompactSlideShow={initialize:function(element){var navButtonTargetY=this.mask.offsetTop+((this.mask.offsetHeight-this.nextButton.element.offsetHeight)/2);this.nextButton.element.setStyle({"top":navButtonTargetY+"px"});this.previousButton.element.setStyle({"top":navButtonTargetY+"px"});Event.observe(this.element,'mouseover',function(evt){if(this.list.length>this.maxVisibleItems){if(Position.within(this.mask,Event.pointerX(evt),Event.pointerY(evt))){new Effect.Appear(this.nextButton.element,{duration:0.5});new Effect.Appear(this.previousButton.element,{duration:0.5});}}}.bindAsEventListener(this));Event.observe(this.element,'mouseout',function(evt){if(Position.within(this.mask,Event.pointerX(evt),Event.pointerY(evt))==false){new Effect.Fade(this.nextButton.element,{duration:0.5});new Effect.Fade(this.previousButton.element,{duration:0.5});}}.bindAsEventListener(this));this.nextButton.element.setStyle({"opacity":"0","display":"none"});this.previousButton.element.setStyle({"opacity":"0","display":"none"});new Effect.Fade(this.nextButton.element,{duration:0});new Effect.Fade(this.previousButton.element,{duration:0});}};if(typeof AlternateImagesSlideShow!='undefined')throw("ERROR: AlternateImagesSlideShow is already defined.");AlternateImagesSlideShow=Class.create({name:"AlternateImagesSlideShow",version:"2.0",debugMode:false,element:null,associatedPhoto:null,slideShow:null,initialize:function(element){this.debugMode=Debugger.enabled;Object.extend(this,arguments[1]||{});Event.Dispatcher.initialize(this);if(this.debugMode)Console.log(this.name+" (version "+this.version+") has initialized.");if(element!=null){this.element=$(element);var params=arguments[1]||{};Object.extend(params,{maxVisibleItems:this.maxVisibleItems,compactMode:false});this.slideShow=new SlideShow(element,params);this.slideShow.addEventListener("slide-click",this.onSlideClick.bind(this));}},onSlideClick:function(evt){Event.preventDefault(evt.origin);this.changePhoto();this.dispatchEvent(evt);setTimeout(this.changePhoto.bind(this),100);},changePhoto:function(){$A($(this.slideShow.lastSelected).getElementsBySelector("img.large")).each(function(selectedPhoto){$(this.associatedPhoto).setAttribute("src",String($(selectedPhoto).getAttribute("src")));$(this.associatedPhoto).setAttribute("width",String($(selectedPhoto).getAttribute("width")));$(this.associatedPhoto).setAttribute("height",String($(selectedPhoto).getAttribute("height")));}.bind(this));}});if(typeof SubPageButton!='undefined')throw("SubPageButton is already defined.");var SubPageButton=Class.create({name:"SubPageButton",version:"0.01",debugMode:false,element:null,subPage:null,isHidden:true,url:null,link:null,initialize:function(element){this.debugMode=Debugger.enabled;Object.extend(this,arguments[1]||{});Event.Dispatcher.initialize(this);if(this.debugMode)Console.log(this.name+" (version "+this.version+") has initialized.");if(element!=null){this.element=$(element);if(String(this.element.nodeName).toLowerCase()=="a"){this.link=this.element;}else{this.link=this.element.down("a");}
this.link.observe("click",this.onButtonClick.bindAsEventListener(this));}},destroy:function(){this.subPage.destroy();this.subPage=null;},onButtonClick:function(evt){this.show();Event.preventDefault(evt);},onDocumentClick:function(evt){if(this.isHidden)return;if(this.subPage.eventWithin(evt)==false&&Event.within(evt,[this.element])==false){this.hide();}},getHeight:function(){return this.subPage.getHeight();},getRootElement:function(){return this.subPage.getRootElement();},refresh:function(transport){this.subPage.refresh(transport);},show:function(){if(this.isHidden==false){return;}
this.isHidden=false;if(this.subPage==null){this.subPage=new SubPage(this.link.getAttribute("href"),{method:"ajax",button:this});this.subPage.addEventListener(Event.Dispatcher.ALL_TYPES,this.dispatchEvent.bind(this));this.subPage.addEventListener("hide",function(){this.isHidden=true;}.bind(this));this.subPage.addEventListener("show",function(){this.isHidden=false;}.bind(this));}else{this.subPage.show();}},hide:function(){if(this.isHidden){return;}
this.isHidden=true;this.subPage.hide();}});if(typeof SubPage!='undefined')throw("SubPage is already defined.");SubPage=Class.create();SubPage.prototype={name:"SubPage",version:"0.01",debugMode:false,source:null,method:"frame",container:null,loader:null,type:null,fillWindow:null,centerVertically:true,useTransitions:false,useSmartURL:true,shrinkToFit:true,button:null,initialize:function(source){this.debugMode=Debugger.enabled;Object.extend(this,arguments[1]||{});Event.Dispatcher.initialize(this);if(this.debugMode)Console.log(this.name+" (version "+this.version+") has initialized.");if(source!=null){this.source=source;if(this.type==null){this.type=(this.container!=null)?"inline":"popover";}
var params={type:this.type,container:this.container,fillWindow:this.fillWindow,centerVertically:this.centerVertically,method:this.method,useTransitions:this.useTransitions,useSmartURL:this.useSmartURL,shrinkToFit:this.shrinkToFit,fullWindowShadow:true};if(this.fillWindow==true){this.loader=new ComponentLoader(source,params);}else{this.loader=new PageFrame(source,params);}
this.loader.addEventListener(Event.Dispatcher.ALL_TYPES,this.dispatchEvent.bind(this));}else{if(this.debugMode)Console.log("Warning: "+this.name+" was instantiated without a source URL to load the content from.");}},destroy:function(){this.loader.destroy();},getHeight:function(){return this.loader.getHeight();},getRootElement:function(){return this.loader.getRootElement();},load:function(destination){this.loader.source=destination;this.loader.load();},refresh:function(transport){if(this.debugMode)Console.log(this.name+".refresh() "+transport.responseText);var afterFinish=function(){this.loader.handleLoaded(transport);};if(this.useTransitions){afterFinish.bind(this)();}else{afterFinish.bind(this)();}},hide:function(){if(this.container)this.container.hide();if(this.loader)this.loader.hide();},show:function(){this.loader.show();},eventWithin:function(evt){return this.loader.eventWithin(evt);}};if(typeof ComponentLoader!='undefined')throw("ComponentLoader is already defined.");ComponentLoader=Class.create();ComponentLoader.prototype={name:"ComponentLoader",version:"0.01",debugMode:false,source:null,type:null,container:null,request:null,fillWindow:false,useTransitions:false,useSmartURL:true,initialize:function(source){this.debugMode=Debugger.enabled;Object.extend(this,arguments[1]||{});Event.Dispatcher.initialize(this);if(this.debugMode)Console.log(this.name+". (version "+this.version+") has initialized.");if(source!=null){this.source=source;this.load();}},load:function(){if(this.debugMode)Console.log(this.name+".load()");if(window.framedPage){window.framedPage.disable();}
if(this.container==null){this.container=new Element("div");Page.bodyElement.appendChild(this.container);}
if(this.useTransitions){this.container.setStyle({"opacity":"0"});}
var myRegExp=new RegExp("[^/]*//[^/]*");var result=myRegExp.exec(this.source);if(result!=null){this.source=this.source.replace(result,result+"/component");}else{this.source="/component"+this.source;}
var afterFinish=function(){this.request=new Ajax.Request(this.source,{method:'get',onComplete:function(transport){if(this.request.success()){this.handleLoaded(transport);}else{this.dispatchEvent({type:"load-failed",target:this});}}.bind(this)});};if(this.useTransitions){new Effect.Morph(this.container,{style:{opacity:"0"},duration:0.25,afterFinish:afterFinish.bind(this)});}else{afterFinish.bind(this)();}},getHeight:function(){return this.container.getHeight();},handleLoaded:function(transport){if(this.debugMode)Console.log(this.name+".handleLoaded()");if(transport.responseText.indexOf("<component")>=0){var xmlDoc=NEXML.createDoc(transport.responseText);if(xmlDoc!=null){var component=NEXML.firstDescendant(xmlDoc);var content=NEXML.firstDescendant(component);if(window.framedPage){window.framedPage.disable();}
this.container.innerHTML=NEXML.innerXML(component);this.dispatchEvent({type:"load",target:this,component:component});setTimeout(function(){if(window.framedPage){window.framedPage.enable();}
setTimeout(function(){if(this.useTransitions){new Effect.Morph(this.container,{style:{opacity:"1"},duration:0.25});}}.bind(this),1);}.bind(this),1);}}else{this.dispatchEvent({type:"load-failed",target:this});}},eventWithin:function(evt){return(Event.within(evt,[this.container]));}};if(typeof PageFrame!='undefined')throw("PageFrame is already defined.");PageFrame=Class.create();PageFrame.prototype={name:"PageFrame",version:"0.01",debugMode:false,dropShadow:null,border:null,closeButton:null,content:null,dimensions:{width:400,height:200,borderTopWidth:6,borderLeftWidth:6,borderBottomWidth:35},initialized:false,source:null,visible:false,proxyurl:"/frame-proxy/",target:null,type:null,container:null,positionTimer:null,positionDelay:1,lastDimensions:null,fadingIn:false,centerVertically:true,useTransitions:false,useSmartURL:true,method:null,shrinkToFit:true,fullWindowShadow:true,initialize:function(source){this.initialized=true;this.debugMode=Debugger.enabled;Object.extend(this,arguments[1]||{});Event.Dispatcher.initialize(this);if(this.debugMode)Console.log(this.name+". (version "+this.version+") has initialized.");if(BrowserDetect.browser=="Explorer"&&BrowserDetect.version=="6"){this.shrinkToFit=false;}
if(this.method=="ajax")this.positionDelay=0;if(source!=null){this.source=source;this.load();}},destroy:function(){this.dropShadow.destroy();this.dropShadow=null;this.border.remove();this.border=null;this.closeButton.remove();this.closeButton=null;this.content.remove();this.content=null;},load:function(){if(this.debugMode)Console.log(this.name+".load()");if(this.method=="ajax"&&window.framedPage){window.framedPage.disable();}
this.visible=true;if(this.content==null){this.render();}
var myRegExp=new RegExp("[^/]*//[^/]*");var result=myRegExp.exec(this.source);if(result!=null){this.proxyurl=result+this.proxyurl;}
if(this.useSmartURL){var pathPrefix=(this.method=="ajax")?"/component":"/framed";if(this.source.indexOf(pathPrefix)<0){if(result!=null){this.source=this.source.replace(result,result+pathPrefix);}else{this.source=pathPrefix+this.source;}}}
this.fadingIn=true;if(this.useTransitions){this.content.setStyle({"opacity":"0"});if(this.type!="inline"){this.border.setStyle({"opacity":"0"});this.closeButton.setStyle({"opacity":"0"});}}
if(this.method=="frame"){this.position();}else{this.hide();}
setTimeout(function(){if(this.useTransitions){if(this.type!="inline"){new Effect.Morph(this.border,{style:{opacity:"1"},duration:0.25});new Effect.Morph(this.closeButton,{style:{opacity:"1"},duration:0.25});}
new Effect.Morph(this.content,{style:{opacity:"1"},duration:0.25});}
this.fadingIn=false;this.position();this.dispatchEvent({type:"update",target:this});}.bind(this),this.positionDelay+1);Page.addEventListener("update",this.position.bind(this));if(this.method=="ajax"){this.request=new Ajax.Request(this.source,{method:'get',onComplete:function(transport){if(this.request.success()){this.handleLoaded(transport);}else{this.dispatchEvent({type:"load-failed",target:this});}}.bind(this)});}else{var destination=QueryString.setValue("parent_url",window.location.protocol+"//"+window.location.host,this.source);destination=QueryString.setValue("type",this.type,destination);this.content.setAttribute("src",destination);var myHandler=function(evt){var message=evt.message;var domain=evt.domain;var evt=eval("("+message+")");switch(evt.type){case"update":this.handleUpdated(evt);break;case"load":this.handleLoaded(evt);break;case"success":this.handleProcessComplete(evt);break;case"close":this.hide();break;default:if(this.debugMode)Console.log("Notice: "+this.name+" received an unknown event notice from the child frame");}};YAHOO.util.CrossFrame.dispatcher.addEventListener("message",myHandler.bindAsEventListener(this));}},handleLoaded:function(transportOrEvt){if(this.debugMode)Console.log(this.name+".handleLoaded()");if(this.method=="ajax"){if(transportOrEvt.responseText.indexOf("<component")>=0){var xmlDoc=NEXML.createDoc(transportOrEvt.responseText);if(xmlDoc!=null){var component=NEXML.firstDescendant(xmlDoc);if(window.framedPage){window.framedPage.disable();}
this.content.innerHTML=NEXML.innerXML(component);var classes=$A(String(component.getAttribute("class")).split(" "));if(classes.length>0){if(this.currentClass!=null)this.content.removeClassName(this.currentClass);classes.each(function(nextClass){if(Page.bodyElement.hasClassName(nextClass)==false){this.currentClass=nextClass;}}.bind(this));if(this.currentClass!=null&&this.currentClass!="null"){this.content.addClassName(this.currentClass);}}
setTimeout(function(){if(window.framedPage){window.framedPage.enable();}
this.show();this.position();this.dispatchEvent({type:"load",target:this,component:component});}.bind(this),1);}}else{Console.log("WARNING: "+this.name+" failed to load its data.");this.dispatchEvent({type:"load-failed",target:this});}}else{this.handleLoadedUpdated(transportOrEvt);this.dispatchEvent({target:this,type:"load"});}},handleUpdated:function(evt){if(this.debugMode)Console.log(this.name+".handleUpdated()");if(evt.width<1||evt.height<1)return;this.handleLoadedUpdated(evt);},handleLoadedUpdated:function(evt){var dimensions={width:Number(evt.width),height:Number(evt.height)};if(this.shrinkToFit==false&&this.dimensions!=null){if(dimensions.width<this.dimensions.width){dimensions.width=this.dimensions.width;}
if(dimensions.height<this.dimensions.height){dimensions.height=this.dimensions.height;}}
Object.extend(this.dimensions,dimensions);if(this.debugMode)Console.log("Notice: "+this.name+" said' 'I updated the dimensions to {width: "+this.dimensions.width+", height:"+this.dimensions.height+"}");this.position();},handleProcessComplete:function(evt){if(this.debugMode)Console.log(this.name+".handleProcessComplete()");if(evt.onClose){this.onClose=true;}else{if(this.hide.timer!=null)clearTimeout(this.hide.timer);this.hide.timer=setTimeout(function(){this.dropShadow.hide();var afterFinish=function(){this.hide();this.dispatchEvent({target:this,type:"success"});};if(this.useTransitions){new Effect.Morph(this.border,{style:{opacity:"0"},duration:0.25});new Effect.Morph(this.content,{style:{opacity:"0"},duration:0.25});new Effect.Morph(this.closeButton,{style:{opacity:"0"},duration:0.25,afterFinish:function(){PageShadow.hide();afterFinish();}.bind(this)});}else{afterFinish();}}.bind(this),5000);}},render:function(){if(this.method=="ajax"){this.content=new Element("div").addClassName("subPageFrame");}else{this.content=$(document.createElement("iframe"));this.content.setStyle({"display":"block","margin":"0","borderWidth":"0"});var now=new Date();this.content.setAttribute("id","iframe-"+now.getTime());this.content.setAttribute("scrolling","no");this.content.frameBorder="0";}
var parentContainer=(this.container==null)?Page.bodyElement:this.container;if(this.type=="inline"){parentContainer.appendChild(this.content);}else{this.border=new Element("div").addClassName("subPageBorder");this.border.appendChild(this.content);parentContainer.appendChild(this.border);PageShadow.create(this.border);var borderStyle={"zIndex":Page.getNextHighestDepth()};this.border.setStyle(borderStyle);this.closeButton=new Element("div").addClassName("subPageCloseButton");parentContainer.appendChild(this.closeButton);this.closeButton.addClassName("subPageCloseButton");this.closeButton.setStyle({"zIndex":Page.getNextHighestDepth()});Event.observe(this.closeButton,"click",this.hide.bind(this));}},getHeight:function(){if(this.type=="inline"){return this.container.getHeight();}else{return this.border.getHeight();}},getRootElement:function(){return this.content;},position:function(){if(this.positionTimer!=null){clearTimeout(this.positionTimer);}
this.positionTimer=setTimeout(this._position.bind(this),this.positionDelay);},_position:function(){if(this.initialized&&this.visible){if(this.debugMode)Console.log(this.name+".position()");var viewportDimensions=document.viewport.getDimensions();var viewportOffsets=document.viewport.getScrollOffsets();var pageDimensions={width:Page.bodyElement.getWidth(),height:Page.bodyElement.getHeight()};var contentDimensions=this.dimensions;if(this.method=="ajax"){Object.extend(contentDimensions,this.content.getDimensions());}
var height=(contentDimensions.height+(contentDimensions.borderTopWidth+contentDimensions.borderBottomWidth));var width=(contentDimensions.width+(contentDimensions.borderLeftWidth*2));var top=0;if(this.centerVertically){top=viewportOffsets.top+Math.floor((viewportDimensions.height-height)/2);}
var left=viewportOffsets.left+Math.floor((viewportDimensions.width-width)/2);if(top<10+viewportOffsets.top)top=10+viewportOffsets.top;if(left<10+viewportOffsets.left)left=10+viewportOffsets.left;var dimensions={width:contentDimensions.width,height:contentDimensions.height};var dimensionsStyle={"width":dimensions.width+"px","height":dimensions.height+"px"};var borderStyle={"position":"absolute","top":top+"px","left":left+"px"};if(this.type!="inline")PageShadow.show();if(this.closeButton!=null){var closeButtonStyle={"top":String(top+height-contentDimensions.borderBottomWidth+((contentDimensions.borderBottomWidth-this.closeButton.offsetHeight)/2))+"px","left":String(left+((width-this.closeButton.offsetWidth)/2))+"px"};}
if(this.useTransitions){if(this.method=="frame"||(BrowserDetect.browser=="Explorer"&&Number(BrowserDetect.version)<7)){new Effect.Morph(this.content,{style:dimensionsStyle,duration:0.25});}
if(this.type!="inline"){if(this.method=="frame"||(BrowserDetect.browser=="Explorer"&&Number(BrowserDetect.version)<7)){new Effect.Morph(this.border,{style:dimensionsStyle,duration:0.25});}
new Effect.Morph(this.border,{style:borderStyle,duration:0.25});new Effect.Morph(this.closeButton,{style:closeButtonStyle,duration:0.25});}}else{if(this.method=="frame"||(BrowserDetect.browser=="Explorer"&&Number(BrowserDetect.version)<7)){this.content.setStyle(dimensionsStyle);if(this.type!="inline"){this.border.setStyle(dimensionsStyle);}}
if(this.type!="inline"){this.border.setStyle(borderStyle);this.closeButton.setStyle(closeButtonStyle);}}
if(this.fadingIn==false){if(this.dropShadow!=null)this.dropShadow.hide();setTimeout(function(){if(this.type!="inline"&&this.fullWindowShadow){if(this.dropShadow==null)this.dropShadow=new DropShadow(this.border);this.dropShadow.show();}
this.dispatchEvent({type:"update",target:this});}.bind(this),1);}}},hide:function(){if(this.debugMode)Console.log(this.name+".hide()");this.visible=false;if(this.type=="inline"){}else{PageShadow.hide();this.border.setStyle({"left":"-9999px"});this.closeButton.setStyle({"left":"-9999px"});if(this.dropShadow!=null)this.dropShadow.hide();}
if(this.onClose){this.dispatchEvent({target:this,type:"success-onclose"});}
this.dispatchEvent({target:this,type:"close"});this.dispatchEvent({target:this,type:"hide"});},show:function(){if(this.debugMode)Console.log(this.name+".show()");this.visible=true;if(this.type!="inline"){this.position();}
this.dispatchEvent({target:this,type:"show"});},eventWithin:function(evt){return(Event.within(evt,[this.closeButton,this.border,this.content]));}};if(typeof ToolTip!='undefined')throw("ToolTip is already defined.");ToolTip=Class.create();ToolTip.prototype={name:"ToolTip",version:"0.80",debugMode:false,element:null,html:null,_enabled:true,initialize:function(element){this.debugMode=Debugger.enabled;Object.extend(this,arguments[1]||{});if(this.debugMode)Console.log(this.name+" (version "+this.version+") has initialized.");if(this.html==null&&(this.element==null||this.elementContainer==null)){if(this.debugMode)Console.log("Notice: "+this.name+" said, 'I was instantiated without any content for the tooltip'");}
if(element!=null){this.element=$(element);Event.observe(this.element,"mouseover",this.handleMouseOver.bindAsEventListener(this));Event.observe(this.element,"mouseout",this.handleMouseOff.bindAsEventListener(this));this.element.setStyle({"cursor":"pointer"});}},setHTML:function(html){this.html=html;},enable:function(){this._enabled=true;},disable:function(){this._enabled=false;},handleMouseOver:function(evt){if(Event.within(evt,[this,ToolTipManager.getInfoElement()]))return;if(!this._enabled)return;if(this.debugMode)Console.log(this.name+".handleMouseOver()");if(this.html!=null){ToolTipManager.displayInfo(evt,{element:this.element,html:this.html});}},handleMouseOff:function(evt){if(Event.within(evt,[this,ToolTipManager.getInfoElement()]))return;if(this.debugMode)Console.log(this.name+".handleMouseOff()");ToolTipManager.hideInfo(evt);}};if(typeof ToolTipManager!='undefined')throw("ToolTipManager is already defined.");ToolTipManager={name:"ToolTipManager",version:"0.01",debugMode:false,infoPanel:null,infoShadow:null,infoTimer:null,element:null,html:null,boundHandleMouseOff:null,ieTimer:null,initialize:function(){this.debugMode=Debugger.enabled;Object.extend(this,arguments[1]||{});if(this.debugMode)Console.log(this.name+" (version "+this.version+") has initialized.");this.boundHandleMouseOff=this.handleMouseOff.bindAsEventListener(this);},createInfo:function(){this.infoShadow=$(Page.bodyElement.appendChild(document.createElement("div")));this.infoPanel=$(this.infoShadow.appendChild(document.createElement("div")));this.infoShadow.addClassName("infoShadow");this.infoPanel.addClassName("infoPanel");Event.observe(this.infoShadow,"mouseout",this.boundHandleMouseOff);},displayInfo:function(evt){if(this.debugMode)Console.log(this.name+".displayInfo()");Object.extend(this,arguments[1]||{});if(BrowserDetect.browser=="Explorer"&&Number(BrowserDetect.version)<8){if(this.ieTimer!=null)return;this.ieTimer=setTimeout(function(){this.ieTimer=null;}.bind(this),1);}
if(this.infoPanel==null||this.infoShadow==null){this.createInfo();}
if(this.html!=null){this.infoPanel.innerHTML=this.html;}
var offset=this.element.cumulativeOffset();offset.top+=this.element.getHeight();var mouse={top:String(Event.pointerY(evt)+25),left:String(Event.pointerX(evt))};if(mouse.top>offset.top)offset.top=mouse.top;if(mouse.left>offset.left)offset.left=mouse.left;this.infoShadow.setStyle({"zIndex":Page.getNextHighestDepth(),"opacity":0,"top":offset.top+"px","left":offset.left+"px"});if(this.infoTimer!=null){clearTimeout(this.infoTimer);}
this.infoTimer=setTimeout(function(){this.infoShadow.setStyle({"opacity":"1"});}.bind(this),500);},hideInfo:function(evt){if(this.infoTimer!=null){clearTimeout(this.infoTimer);}
if(this.infoShadow!=null){this.infoShadow.setStyle({"opacity":0,"left":"-9999px"});}},getInfoElement:function(){return this.infoShadow;},handleMouseOff:function(evt){if(Event.within(evt,[this.infoShadow,this.element]))return;if(this.debugMode)Console.log(this.name+".handleMouseOff()");this.hideInfo();}};ToolTipManager.initialize();if(typeof NEXML!='undefined')throw("NEXML is already defined.");var NEXML={name:"NEXML",version:"0.80",debugMode:false,initialize:function(){this.debugMode=Debugger.enabled;if(this.debugMode)Console.log(this.name+" (version "+this.version+") has initialized.");},getNodeByTag:function(xmlNode,tag){var nodes=xmlNode.getElementsByTagName(tag);if(nodes.length>0)return nodes[0];return undefined;},getNodeValueByTag:function(xmlNode,tag){var node=NEXML.getNodeByTag(xmlNode,tag);if(node){return NEXML.innerXML(node);}
return undefined;},createDoc:function(xmlString){var xmlDoc=null;try{var parser=new DOMParser();xmlDoc=parser.parseFromString(xmlString,"text/xml");}
catch(e){try{if(window.ActiveXObject){xmlDoc=new ActiveXObject("Microsoft.XMLDOM");xmlDoc.async="false";xmlDoc.loadXML(xmlString);}}
catch(e){Console.log("Warning: "+this.name+" was unable to create an XML document for parsing.");}}
return xmlDoc;},outerXML:function(xmlNode){if(this.debugMode)Console.log(this.name+".outerXML("+xmlNode+")");var outerXML="";try{var serializer=new XMLSerializer();outerXML=serializer.serializeToString(xmlNode);}
catch(e){try{outerXML=xmlNode.xml;}
catch(e){Console.log("Warning: "+this.name+" was unable to serialize the requested XML node.");}}
outerXML=outerXML.replace(/(<)(textarea|script)([^\/]*)\/>/g,"$1$2$3></$2>");return outerXML;},innerXML:function(xmlNode){var innerXML="";if(xmlNode.nodeType==xmlNode.TEXT_NODE){innerXML=xmlNode.nodeValue;}else{for(var i=0;i<xmlNode.childNodes.length;i++){var nextChildXML=this.outerXML(xmlNode.childNodes[i]);innerXML+=nextChildXML;}}
return innerXML;},firstDescendant:function(xmlNode){xmlNode=xmlNode.firstChild;while(xmlNode&&xmlNode.nodeType!=1)xmlNode=xmlNode.nextSibling;return xmlNode;},immediateDescendants:function(xmlNode){if(!(xmlNode=xmlNode.firstChild))return[];if(xmlNode){var nodes=[];while(xmlNode=xmlNode.nextSibling){if(xmlNode.nodeType==1)nodes.push(xmlNode);}
return nodes;}
return[];},getElementById:function(xmlNode,id){if(this.debugMode)Console.log(this.name+".getElementById("+xmlNode+", "+id+")");try{if(this.debugMode)Console.log("xmlNode.nodeType: "+xmlNode.nodeType);if(xmlNode.nodeType==1&&xmlNode.getAttribute("id")==id){if(this.debugMode)Console.log("Found a match");return xmlNode;}
if(this.debugMode)Console.log("Attempting to find a match among the node's children.");if(xmlNode.firstChild!=null){var result=NEXML.getElementById(xmlNode.firstChild,id);if(result!=null){return result;}}
if(this.debugMode)Console.log("Attempting to find a match among the node's siblings.");if(xmlNode.nextSibling!=null){var result=NEXML.getElementById(xmlNode.nextSibling,id);if(result!=null){return result;}}}catch(e){Console.log("Notice: "+this.name+" encountered a parsing error: "+e);}
return null;},getElementsByClassName:function(xmlNode,className){if(this.debugMode)Console.log(this.name+".getElementsByClassName("+xmlNode+", "+className+")");var children=(xmlNode).getElementsByTagName('*');var elements=$A([]),child,pattern=new RegExp("(^|\\s)"+className+"(\\s|$)");for(var i=0,length=children.length;i<length;i++){child=children[i];try{var elementClassName=child.getAttribute("class");}catch(e){Console.log(e);}
if(elementClassName!=null){if(elementClassName.length==0)continue;if(elementClassName==className||elementClassName.match(pattern))
elements.push(child);}}
return elements;}};Page.addEventListener("load",NEXML.initialize.bind(NEXML));if(typeof YAHOO=="undefined"){var YAHOO={util:{}};}
YAHOO.util.CrossFrame=(function(){var r1=/^(((top|parent|frames\[((['"][a-zA-Z\d-_]*['"])|\d+)\]))(\.|$))+/;var r2=/top|parent|frames\[(?:(?:['"][a-zA-Z]*['"])|\d+)\]/;function parseQueryString(s){var r,a,p;r={};a=s.split('&');for(i=0;i<a.length;i++){p=a[i].split('=');if(p.length===2&&p[0].length>0){r[p[0]]=unescape(p[1]);}}
return r;}
if(Prototype.Browser.Opera){document.addEventListener("message",function(evt){var o=parseQueryString(evt.data);if(o.target!=null&&o.message!=null&&o.domain!=null&&o.uri!=null){if(o.target.length>0){YAHOO.util.CrossFrame.send(null,o.target,o.message,o.domain,o.uri);}else{o.type="message";YAHOO.util.CrossFrame.dispatcher.dispatchEvent(o);}}},false);}
return{dispatcher:Event.Dispatcher.getInstance(),send:function(proxy,target,message){if(parent==self)return;var m,t,d,u,s,el;if(!r1.test(target)){throw new Error("Invalid target: "+target);}
if(Prototype.Browser.Opera){m=r2.exec(target);t=eval(m[0]).document;target=target.substr(m[0].length+1);d=arguments.length>3?arguments[3]:document.domain;u=arguments.length>4?arguments[4]:location.pathname;sObj={target:target,message:message,domain:d,uri:u};s=Object.toQueryString(sObj);t.postMessage(s);}else{el=document.createElement("iframe");el.style.position="absolute";el.style.visibility="hidden";el.style.top=el.style.left="0";el.style.width=el.style.height="0";document.body.appendChild(el);$(el).observe("load",function(){this.stopObserving("load",arguments.callee);setTimeout(function(){document.body.removeChild(el);},1000);});sObj={target:target,message:message,domain:document.domain,uri:location.pathname};s=Object.toQueryString(sObj);el.src=proxy+"?"+s;document.body.appendChild(el);}}};})();Page.addEventListener("load",function(){if(Boolean(Config.getDefaultValue("useFlashLogo",false))&&Page.bodyElement.hasClassName("framed")==false){var branding=$("branding");if(branding!=null){if(typeof(swfobject.embedSWF)=="function"){var flashvars={dataPath:"/swf/branding/logo.xml"};var link=branding.down("h1 a");var target=link.getAttribute("target");if(target)flashvars.target=target;var url=link.getAttribute("href");if(url)flashvars.url=url;var params={wmode:"transparent",quality:"high"};swfobject.switchOffAutoHideShow();swfobject.embedSWF("/swf/branding/logo.swf","branding","140","90","9.0.0",null,flashvars,params);}}}});if(typeof FlagButton!='undefined')throw("FlagButton is already defined.");FlagButton=Class.create();FlagButton.prototype={name:"FlagButton",version:"0.01",debugMode:false,element:null,link:null,listID:null,flagged:null,request:null,useToggle:true,disabled:false,initialize:function(element){this.debugMode=Debugger.enabled;Object.extend(this,arguments[1]||{});Event.Dispatcher.initialize(this);if(this.debugMode)Console.log(this.name+" (version "+this.version+") has initialized.");if(element!=null){this.element=$(element);if(this.flagged==null){this.flagged=this.element.hasClassName("flagged");}
if(String(this.element.nodeName).toLowerCase()=="a"){this.link=this.element;}else{this.link=this.element.down("a");}
var auth=new RequireAuth(this.link,{delayed:true,ajaxian:true});auth.addEventListener("authenticated",this.toggle.bind(this));}},disable:function(){this.disabled=true;},enable:function(){this.disabled=false;},toggle:function(){if(this.flagged){this.unflag();}else{this.flag();}},flag:function(){if(this.debugMode)Console.log(this.name+".flag()");if(this.disabled)return;if(this.link!=null){this.request=new Ajax.Request(this.getLiveURL(this.link.getAttribute("href")).replace("flag/remove","flag/add"),{method:'post',onComplete:function(transport){if(this.request.success()){if(this.debugMode)Console.log(this.name+" flag is complete");this.element.addClassName("flagged");if(this.useToggle)this.flagged=true;this.dispatchEvent({type:"flag",target:this,transport:transport});}else{window.location=this.link.getAttribute("href");}}.bind(this)});}else{throw(this.name+" said, 'I couldn't find a URL to send the flag request to. (This is usually located in the href attribute of a link element.)");}},unflag:function(){if(this.debugMode)Console.log(this.name+".unflag()");if(this.disabled)return;if(this.link!=null){this.request=new Ajax.Request(this.getLiveURL(this.link.getAttribute("href")).replace("flag/add","flag/remove"),{method:'post',onComplete:function(transport){if(this.request.success()){if(this.debugMode)Console.log(this.name+" unflag is complete");this.element.removeClassName("flagged");if(this.useToggle)this.flagged=false;this.dispatchEvent({type:"unflag",target:this,transport:transport});}else{window.location=this.link.getAttribute("href");}}.bind(this)});}else{throw(this.name+" said, 'I couldn't find a URL to send the unflag request to. (This is usually located in the href attribute of a link element.)");}},getLiveURL:function(url){if(url.indexOf("entity_type=user")>0){url=url.replace("flag/add","flag/add/live/friend").replace("flag/remove","flag/remove/live/friend");}else if(url.indexOf("entity_type=list")>0||url.indexOf("entity_type=described_item")>0){url=url.replace("flag/add","flag/add/live/attaboy").replace("flag/remove","flag/remove/live/attaboy");}else{url=url.replace("flag/add","flag/add/live").replace("flag/remove","flag/remove/live");}
return url;}};if(typeof SimpleWishListButton!='undefined')throw("SimpleWishListButton is already defined.");SimpleWishListButton=Class.create();SimpleWishListButton.prototype={name:"SimpleWishListButton",version:"0.80",debugMode:false,element:null,itemID:null,enabled:true,request:null,toggleCaption:true,initialize:function(element){this.debugMode=Debugger.enabled;Object.extend(this,arguments[1]||{});if(this.debugMode)Console.log(this.name+" (version "+this.version+") has initialized.");if(element!=null){this.element=$(element);if($(this.element.getElementsByTagName("a")[0]).hasClassName("disabled")){this.enabled=false;}
var auth=new RequireAuth(this.element,{delayed:true,ajaxian:true});auth.addEventListener("authenticated",this.wish.bind(this));}},handleClick:function(evt){if(this.debugMode)Console.log(this.name+"handleClick()");this.wish();Event.stop(evt);},wish:function(){if(this.debugMode)Console.log(this.name+".wish()");if(this.enabled){this.request=new Ajax.Request("/wishlist/add/live/",{method:'post',postBody:$H({id:this.itemID}).toQueryString(),onComplete:function(transport){if(this.request.success()){if(this.debugMode)Console.log(this.name+" wish list add is complete");this.element.getElementsByTagName("a")[0].addClassName("disabled");if(this.toggleCaption==true){this.element.getElementsByTagName("span")[0].innerHTML="Remove from wish list";}
this.element.getElementsByTagName("a")[0].href="/wishlist/remove/?id="+this.itemID;this.enabled=false;}else{window.location=this.element.getElementsByTagName("a")[0].getAttribute("href");}}.bind(this)});}else{this.request=new Ajax.Request("/wishlist/remove/live/",{method:'post',postBody:$H({id:this.itemID}).toQueryString(),onComplete:function(transport){if(this.request.success()){if(this.debugMode)Console.log(this.name+" wish list remove is complete");this.element.getElementsByTagName("a")[0].removeClassName("disabled");if(this.toggleCaption==true){this.element.getElementsByTagName("span")[0].innerHTML="Add to wish list";}
this.element.getElementsByTagName("a")[0].href="/wishlist/add/?id="+this.itemID;this.enabled=true;}else{window.location=this.element.getElementsByTagName("a")[0].getAttribute("href");}}.bind(this)});}}};if(typeof FriendIndicator!='undefined')throw("FriendIndicator is already defined.");FriendIndicator=Class.create();FriendIndicator.prototype={name:"FriendIndicator",version:"0.01",debugMode:false,dropDown:null,initialize:function(element){this.debugMode=Debugger.enabled;Object.extend(this,arguments[1]||{});if(this.debugMode)Console.log(this.name+" (version "+this.version+") has initialized.");if(element!=null){this.element=$(element);if(BrowserDetect.browser=="Explorer"&&Number(BrowserDetect.version)<7){MultiClass.initialize(this.element,{ignore:["active"]});this.element.addAllCombinations();}
if(this.element.hasClassName("friend")){this.dropDown=new DropDown(this.element);this.dropDown.addEventListener("open",this.makeAjaxian.bind(this));}else{this.makeAjaxian();}}},makeAjaxian:function(){if(BrowserDetect.browser=="Explorer"&&Number(BrowserDetect.version)<7)return;var linkContainer;if(this.element.hasClassName("friend")){linkContainer=this.dropDown.getPanel();}else{linkContainer=this.element;}
var link=linkContainer.down("a");if(link!=null){linkContainer.friendIndicator=this.element;var button=new FlagButton(linkContainer,{flagged:this.element.hasClassName("friend")});button.addEventListener("flag",this.onFlag.bindAsEventListener(this));button.addEventListener("unflag",this.onFlag.bindAsEventListener(this));}},onFlag:function(e){var temp=new Element("div");temp.innerHTML=e.transport.responseText;Page.bodyElement.appendChild(temp);var indicator=temp.down(".friendIndicator");if(indicator!=null){indicator.remove();this.element.parentNode.replaceChild(indicator,this.element);if(this.dropDown!=null)this.dropDown.hide();this.initialize(indicator);temp.remove();}}};Page.addEventListener("load",function(){if(Debugger.enabled)Console.log("Setup: FriendIndicator");$$(".friendIndicator").each(function(nextElement){new FriendIndicator(nextElement);});});if(typeof MerchantIndicator!='undefined')throw("MerchantIndicator is already defined.");MerchantIndicator=Class.create();MerchantIndicator.prototype={name:"MerchantIndicator",version:"0.01",debugMode:false,initialize:function(element){this.debugMode=Debugger.enabled;Object.extend(this,arguments[1]||{});if(this.debugMode)Console.log(this.name+" (version "+this.version+") has initialized.");if(element!=null){this.element=$(element);Event.observe(this.element,"click",this.handleMouseClick.bind(this));}},handleMouseClick:function(evt){Event.preventDefault(evt);}};Page.addEventListener("load",function(){if(Debugger.enabled)Console.log("Setup: MerchantIndicator");$$(".merchantIndicator").each(function(nextElement){new MerchantIndicator(nextElement);});});if(typeof EmailPageForm!='undefined')throw("ERROR: EmailPageForm is already defined.");EmailPageForm=Class.create();EmailPageForm.prototype={name:"EmailPageForm",version:"0.01",debugMode:false,element:null,messageElement:null,progress:null,initialize:function(element){this.debugMode=Debugger.enabled;Object.extend(this,arguments[1]||{});Event.Dispatcher.initialize(this);if(this.debugMode)Console.log(this.name+" (version "+this.version+") has initialized.");if(element!=null){this.element=$(element);this.prepareSubmitButton();}else{Console.info(this.name+" was initalized without a target HTML element.");}},prepareSubmitButton:function(){if(this.debugMode)Console.log(this.name+".prepareSubmitButton()");this.element.select("button").each(function(nextElement){new Button(nextElement,{useStandardStyle:true});nextElement.observe("click",this.handleSubmit.bindAsEventListener(this));}.bind(this));},handleSubmit:function(evt){if(this.debugMode)Console.log(this.name+".handleSubmit()");Event.preventDefault(evt);var request=new Ajax.Request("/component/email-page/",{method:'post',postBody:Form.serialize(this.element),onComplete:this.handleResponse.bind(this)});this.showProgress();},handleResponse:function(transport){if(this.debugMode)Console.log(this.name+".handleResponse()");this.hideProgress();this.dispatchEvent({target:this,type:"submit-response",transport:transport});if(this.responseWasSuccessful(transport)){this.dispatchEvent({target:this,type:"submit-success",transport:transport});this.element.down("#emailThisPage p").remove();}else{this.prepareSubmitButton();}},responseWasSuccessful:function(transport){var success=false;var xmlDoc=NEXML.createDoc(transport.responseText);if(xmlDoc!=null){$A(xmlDoc.firstChild.getElementsByTagName('div')).each(function(nextElement){if(String(nextElement.getAttribute("class")).match(/success/)){success=true;}}.bind(this));}else{Console.warn(this.name+" failed to create an XML document from the Email Form response.");}
return success;},showProgress:function(){if(this.progress==null){this.progress=$(document.createElement("p"));this.progress.setStyle({"display":"none"});this.progress.addClassName("progress");this.progress.appendChild(document.createTextNode("Working…"));this.element.appendChild(this.progress);}
this.progress.setStyle({"display":"block"});},hideProgress:function(){if(this.progress!=null){this.progress.setStyle({"display":"none"});}},displayMessage:function(messageHTML){if(this.debugMode)Console.log(this.name+".displayMessage("+messageHTML+")");if(this.messageElement==null){this.messageElement=this.element.down("#emailThisPage p");}
this.messageElement.innerHTML=messageHTML;new Effect.Highlight(this.messageElement);Page.forceEvent({type:"update"});}};Page.addEventListener("load",function(){if(Debugger.enabled)Console.log("Setup: Search Form");$$("#search button").each(function(nextElement){new Button(nextElement,{useStandardStyle:true});});});if(typeof PageOptions!='undefined')throw("PageOptions is already defined.");PageOptions=Class.create();PageOptions.prototype={name:"PageOptions",version:"0.01",debugMode:false,shareButton:null,initialize:function(element){this.debugMode=Debugger.enabled;Object.extend(this,arguments[1]||{});if(this.debugMode)Console.log(this.name+" (version "+this.version+") has initialized.");if(element!=null){this.element=$(element);$A(this.element.getElementsByClassName("share")).each(function(nextElement){var link=nextElement.down("a");var href=link.getAttribute("href");if(QueryString.getValue("title",href)==null){href=QueryString.setValue("title",Page.rootElement.down("title").innerHTML,href);link.setAttribute("href",href);}
this.shareButton=new SubPageButton(nextElement);new ShareSubPage({shareButton:this.shareButton});}.bind(this));if(String(Page.getMetaContent("share")).toBoolean()){if(this.shareButton)this.shareButton.show();}
$A(this.element.getElementsByClassName("watch")).each(function(nextElement){var button=new SubPageButton(nextElement);button.addEventListener("load",function(){button.getRootElement().select(".toggle a").each(function(nextElement){new Button(nextElement,{useStandardStyle:true});});}.bind(this));}.bind(this));$A(this.element.getElementsByClassName("shopcast")).each(function(nextElement){var button=new SubPageButton(nextElement);}.bind(this));}}};if(typeof ShareSubPage!='undefined')throw("ShareSubPage is already defined.");ShareSubPage=Class.create();ShareSubPage.prototype={name:"ShareSubPage",version:"0.01",debugMode:false,shareButton:null,emailButton:null,emailPageForm:null,initialize:function(){this.debugMode=Debugger.enabled;Object.extend(this,arguments[0]||{});if(this.debugMode)Console.log(this.name+" (version "+this.version+") has initialized.");this.shareButton.addEventListener("load",this.onLoad.bind(this));},onLoad:function(){this.shareButton.getRootElement().select(".networks .email").each(function(nextElement){this.emailButton=new SubPageButton(nextElement);this.emailButton.addEventListener("load",this.onEmailFormLoaded.bind(this));nextElement.down("a").observe("click",this.shareButton.hide.bind(this.shareButton));}.bind(this));if(String(Page.getMetaContent("share")).toBoolean()){var container=new Element("div").addClassName("preferences");var link=new Element("a",{"href":"#dont-ask"}).update("Don't show me this again");container.appendChild(link);var sharePage=$$(".subPageFrame #shareThisPage")[0];sharePage.appendChild(container);link.observe("click",this.onPreferenceClick.bindAsEventListener(this));}},onPreferenceClick:function(evt){evt.preventDefault();var postBody={dont_ask:"on"};var request=new Ajax.Request("/component/share/preference-submit.html",{method:"post",postBody:$H(postBody).toQueryString(),asynchronous:false});this.shareButton.hide();},onEmailFormLoaded:function(evt){if(this.debugMode)Console.log("onEmailFormLoaded()");if(this.emailPageForm==null){this.emailPageForm=new EmailPageForm(this.emailButton.getRootElement());this.emailPageForm.addEventListener("submit-response",function(evt){this.emailButton.refresh(evt.transport);}.bind(this));this.emailPageForm.addEventListener("submit-success",function(evt){setTimeout(function(){this.emailButton.hide({fade:true});setTimeout(function(){this.emailButton.destroy();this.emailPageForm=null;}.bind(this),1000);}.bind(this),4000);}.bind(this));}}};Page.addEventListener("load",function(evt){new PageOptions($("pageOptions"));new PageOptions($("propel"));});if(typeof RequireAuth!='undefined')throw("ERROR: RequireAuth is already defined.");RequireAuth=Class.create();RequireAuth.prototype={name:"RequireAuth",version:"0.01",debugMode:false,element:null,mode:"signup",delayed:false,delayedURL:null,ajaxian:false,authenticated:false,initialize:function(element){this.debugMode=Debugger.enabled;Object.extend(this,arguments[1]||{});Event.Dispatcher.initialize(this);if(this.debugMode)Console.log(this.name+". (version "+this.version+") has initialized.");if(element!=null){this.element=$(element);if(this.delayed){this.delayedURL=this.getDelayedURL();}
Event.observe(this.element,"click",this.handleClick.bindAsEventListener(this));Event.observe(this.element,"button:click",this.handleClick.bindAsEventListener(this));}else{Console.log("Warning: "+this.name+" was instantiated without a target HTML element.");}},getDelayedURL:function(){var url=null;if(this.getElementType()=="button"){$A(this.element.up("form").getElementsBySelector("input[name=delayed_url]")).each(function(nextElement){url=String(nextElement.getAttribute("value"));}.bind(this));}else{url=this.element.getAttribute("href");}
if(url==null||url==""){if(this.debugMode)Console.log("Notice: "+this.name+" said, 'I was unable to find a delayed URL to submit the data to. This is usually stored in a link href, or in an input named: delayed_url.'");}
return url;},getElementType:function(){var tagName=String(this.element.nodeName).toLowerCase();if(tagName=="button"||tagName=="input"){return"button";}else{return"link";}},handleClick:function(evt){if(this.debugMode)Console.log(this.name+".handleClick()");if(User.isAuthenticated()!=true){Event.preventDefault(evt);if(AuthIFrame.initialized!=true){AuthIFrame.initialize({mode:this.mode,delayed:this.delayed,facebook:this.facebook,delayedURL:this.delayedURL});AuthIFrame.addEventListener("authenticated",this.handleAuthenticated.bindAsEventListener(this));AuthIFrame.addEventListener("authenticated-onclose",this.handleAuthenticated.bindAsEventListener(this));}else{AuthIFrame.show({mode:this.mode,delayed:this.delayed,facebook:this.facebook,delayedURL:this.delayedURL});}
}else if(this.ajaxian==true){Event.preventDefault(evt);this.dispatchEvent({target:this,type:"authenticated"});}},handleAuthenticated:function(evt){if(this.authenticated)return;this.authenticated=true;if(this.debugMode)Console.log(this.name+".handleAuthenticated()");if(this.delayed==false){window.location.reload(true);}else if(this.ajaxian==false){if(this.getElementType()=="button"){var form=this.element.up("form");if(this.delayedURL!=null){form.setAttribute("action",this.delayedURL);form.submit();}}else{if(this.delayedURL!=null){window.location=this.delayedURL;}}}else{var signinItem;var signupItem;var signinElements=$$("#auxNav a[href*=signup2]").each(function(nextElement){if(nextElement.getAttribute("href").indexOf("signin")>=0){signinItem=nextElement.up("li");}else{signupItem=nextElement.up("li");}});var signoutItem=$(document.createElement("li"));var signoutButton=$(document.createElement("a"));signoutButton.addClassName("level1");signoutButton.setAttribute("href","/signout/");signoutButton.appendChild(document.createTextNode("Sign Out"));signoutItem.appendChild(signoutButton);if(signinItem!=null){signinItem.up("ul").replaceChild(signoutItem,signinItem);}
if(signupItem!=null){signupItem.up("ul").removeChild(signupItem);}}
this.dispatchEvent({target:this,type:"authenticated"});}};Page.addEventListener("load",function(){if(Debugger.enabled)Console.log("Require authentication as needed on the page");if(Page.bodyElement.hasClassName("signup")==false&&Page.bodyElement.hasClassName("signin")==false){$$("#auxNav a[href*=signup2]",".signupPopover a[href*=signup2]").each(function(nextElement){if(nextElement.getAttribute("href").indexOf("signin")>=0){new RequireAuth(nextElement,{mode:"signin"});}else{new RequireAuth(nextElement);}});$$("#recommendationForm button","#complimentForm button",".complimentForm button").each(function(nextElement){new RequireAuth(nextElement,{delayed:true});});var autoSignup=null;if(autoSignup==null)autoSignup=Page.getQueryStringValue("signup");if(autoSignup==null)autoSignup=Page.getQueryStringValue("s5");if(autoSignup==null)autoSignup=Page.getMetaContent("signup");if(autoSignup!=null&&autoSignup!=""&&autoSignup!=undefined){if(String(autoSignup).startsWith("/")||String(autoSignup).startsWith("http")){AuthIFrame.setSignupPath(autoSignup);}
AuthIFrame.initialize();}}});if(typeof User!='undefined')throw("ERROR: User is already defined.");User={isAuthenticated:function(){try{var postBody={placebo:"useless"};var request=new Ajax.Request("/component/session/",{method:"post",postBody:$H(postBody).toQueryString(),asynchronous:false});var xmlDoc=NEXML.createDoc(request.transport.responseText);if(xmlDoc!=null){var firstElement=NEXML.firstDescendant(xmlDoc);if($A(firstElement.getElementsByTagName("user")).length>0){return true;}}}catch(e){Console.log("Warning: Unable to determine whether user has been authenticated, due to an error: "+e);}
return false;}};if(typeof AuthIFrame!='undefined')throw("ERROR: AuthIFrame is already defined.");AuthIFrame={name:"AuthIFrame",version:"0.01",debugMode:false,container:null,closeButton:null,frame:null,dropShadow:null,dimensions:{width:640,height:200,paddingTop:40,paddingLeft:25,borderTopWidth:6,borderLeftWidth:6,borderBottomWidth:35},initialized:false,mode:"signup",delayed:false,facebook:false,delayedURL:null,paths:{signin:"/signup2/signin/",signup:"/signup2/"},dispatcher:null,listener:null,useSSL:false,httpsBase:null,loadTimer:null,visible:false,proxyurl:"/frame-proxy/",target:null,initialize:function(){if(this.initialized){this.show();return;}
this.initialized=true;this.debugMode=Debugger.enabled;Object.extend(this,arguments[0]||{});Event.Dispatcher.initialize(this);if(this.debugMode)Console.log(this.name+". (version "+this.version+") has initialized.");if(User.isAuthenticated()==true)return;this.visible=true;this.render();this.target="frames["+this.frame.getAttribute("id")+"]";if(this.useSSL){var meta=$$("meta[name=https-base]");if(meta.length>0){this.httpsBase=meta[0].getAttribute("content");for(var key in this.paths){var path=this.paths[key];var myRegExp=new RegExp("[^/]*//[^/]*");var result=myRegExp.exec(path);if(result!=null){path=path.replace(result,"");}
this.paths[key]=this.httpsBase+path;}
this.proxyurl=this.httpsBase+this.proxyurl;}else{throw("ERROR: "
+this.name+" said, 'I tried to load the secure version of the signup process, "
+"but I couldn't determine the base URL for https (this is usually stored in a meta"
+"element, in the head section of the page).'");}}
this.position();Page.addEventListener("update",this.position.bind(this));this.setFrameSource();var myHandler=function(evt){var message=evt.message;var domain=evt.domain;var evt=eval("("+message+")");switch(evt.type){case"update":AuthIFrame.handleUpdated(evt);break;case"load":AuthIFrame.handleLoaded(evt);break;case"authenticated":AuthIFrame.handleAuthenticated(evt);break;case"command:load":AuthIFrame.onClose=false;AuthIFrame.hide();new SubPage(evt.url);break;case"command:close":AuthIFrame.onClose=false;AuthIFrame.hide();break;default:if(this.debugMode)Console.log("Notice: "+this.name+" received an unknown event notice from the child frame");}};YAHOO.util.CrossFrame.dispatcher.addEventListener("message",myHandler.bindAsEventListener(this));},setSignupPath:function(path){this.paths.signup=String(path);},setFrameSource:function(){var destination=this.getFrameSource();this.frame.setAttribute("src",destination);if(this.debugMode)Console.log(this.name+" is setting the frame source to: "+destination);},getFrameSource:function(){var params={};if(this.delayed){if(this.delayedURL!=null){params.delayed_url=this.delayedURL;}}
if(this.facebook){params.facebook=1;}else{params.popover=1;}
params.parent_url=window.location.protocol+"//"+window.location.host;return QueryString.update(params,this.paths[this.mode]);},render:function(){this.container=$(document.createElement("div"));this.container.addClassName("subPageContainer");this.frame=$(document.createElement("iframe"));this.frame.setAttribute("id","frameRequireAuth");this.frame.setAttribute("scrolling","no");this.frame.frameBorder="0";this.container.appendChild(this.frame);Page.bodyElement.appendChild(this.container);this.closeButton=$(document.createElement("div"));Page.bodyElement.appendChild(this.closeButton);PageShadow.create(this.container);this.container.setStyle({"zIndex":Page.getNextHighestDepth()});this.frame.setStyle({"display":"block","margin":"0","borderWidth":"0","overflow":"hidden"});this.closeButton.addClassName("subPageCloseButton");this.closeButton.setStyle({"zIndex":Page.getNextHighestDepth()});Event.observe(this.closeButton,"click",this.hide.bind(this));},position:function(){if(this.debugMode)Console.log(this.name+".position()");if(this.initialized&&this.visible){var viewportDimensions=document.viewport.getDimensions();var viewportOffsets=document.viewport.getScrollOffsets();var pageDimensions={width:Page.bodyElement.getWidth(),height:Page.bodyElement.getHeight()};var frameDimensions=this.dimensions;PageShadow.show();var width=frameDimensions.width+(frameDimensions.borderLeftWidth*2)+(frameDimensions.paddingLeft*2);var height=frameDimensions.height+frameDimensions.borderTopWidth+frameDimensions.borderBottomWidth;var top=viewportOffsets.top+Math.floor((viewportDimensions.height-(height))/2);var left=viewportOffsets.left+Math.floor((viewportDimensions.width-(width))/2);if(top<10)top=10;if(left<10)left=10;this.container.setStyle({"top":String(top)+"px","left":String(left)+"px"});this.closeButton.setStyle({"top":String(top+height-frameDimensions.borderBottomWidth+((frameDimensions.borderBottomWidth-this.closeButton.offsetHeight)/2))+"px","left":String(left+((width-this.closeButton.offsetWidth)/2))+"px"});var style={"width":frameDimensions.width+"px","height":frameDimensions.height-20+"px"};this.frame.setStyle(style);this.container.setStyle(style);if(this.dropShadow!=null)this.dropShadow.hide();setTimeout(function(){if(this.dropShadow==null)this.dropShadow=new DropShadow(this.container);this.dropShadow.show();this.dispatchEvent({type:"update",target:this});}.bind(this),1);}},handleLoaded:function(evt){if(this.debugMode)Console.log(this.name+".handleLoaded()");this.dimensions.width=Number(evt.width);this.dimensions.height=Number(evt.height);if(this.debugMode)Console.log("Notice: "+this.name+" said' 'I updated the dimensions to {width: + "+this.dimensions.width+", height:"+this.dimensions.height+"}");this.dimensions.mode=evt.mode;this.position();this.dispatchEvent({target:this,type:"load"});Page.forceEvent({type:"update"});},handleUpdated:function(evt){if(this.debugMode)Console.log(this.name+".handleUpdated()");if(evt.width<1||evt.height<1)return;this.dimensions.width=Number(evt.width);this.dimensions.height=Number(evt.height);this.position();Page.forceEvent({type:"update"});},handleAuthenticated:function(evt){if(this.debugMode)Console.log(this.name+".handleAuthenticated()");if(evt.onClose){this.onClose=true;}else{this.dispatchEvent({target:this,type:"authenticated"});this.hide();}},hide:function(){if(this.debugMode)Console.log(this.name+".hide()");this.visible=false;PageShadow.hide();this.container.setStyle({"left":"-9999px"});this.closeButton.setStyle({"left":"-9999px"});if(this.dropShadow!=null)this.dropShadow.hide();if(this.onClose){this.dispatchEvent({target:this,type:"authenticated-onclose"});}
Page.forceEvent({type:"update"});},show:function(){if(this.debugMode)Console.log(this.name+".show()");this.visible=true;if(arguments[0]){if(arguments[0].mode!=this.mode||arguments[0].delayed!=this.delayed||arguments[0].delayedURL!=this.delayedURL){this.mode=arguments[0].mode;this.delayed=arguments[0].delayed;this.delayedURL=arguments[0].delayedURL;this.setFrameSource();}}
this.position();Page.forceEvent({type:"update"});}};function track_click(area,url,asynchronous){if(asynchronous==null)asynchronous=true;var trackURL="/track/click/";var parameters={area:area,url:url?url:location.href};if(BrowserDetect.browser=="Explorer"){var now=new Date();parameters.preventcache=now.getTime();new Ajax.Request(trackURL+"?"+$H(parameters).toQueryString(),{method:"get",asynchronous:asynchronous});}else{var request=new Ajax.Request(trackURL,{method:"post",postBody:$H(parameters).toQueryString(),asynchronous:asynchronous});}}
if(typeof Track!='undefined')throw("Track is already defined.");var Track={name:"Track",version:"0.01",debugMode:false,adClicked:false,trackedElements:null,pageHasUnloaded:false,initialize:function(){this.debugMode=Debugger.enabled;if(this.debugMode)Console.log(this.name+" (version "+this.version+") has initialized.");this.trackedElements=$A([]);if(window.addEventListener){window.addEventListener("beforeunload",this.handlePageUnload.bindAsEventListener(this),false);}else{window.attachEvent("onbeforeunload",this.handlePageUnload.bindAsEventListener(this));}
Track.these($$(".advertisement iframe"));},these:function(elements){elements=$A([elements]).flatten();elements.each(this._registerElement.bind(this));},_registerElement:function(element){if(element.tracked)return;element.tracked=true;this.trackedElements.push(element);element.observe("mouseover",function(evt){this.mouseIsOver=true;});element.observe("mouseout",function(evt){this.mouseIsOver=false;});element.observe("focus",this.handleElementClick.bind(this));},handlePageUnload:function(evt){if(this.pageHasUnloaded)return;this.pageHasUnloaded=true;if(this.debugMode)Console.log(this.name+".handlePageUnload()");this.trackedElements.each(function(nextElement){if(nextElement.mouseIsOver==true){this.handleElementClick({type:"click",target:nextElement});}}.bind(this));},handleElementClick:function(evt){if(this.adClicked)return;this.adClicked=true;if(this.debugMode)Console.log("An advertisement was clicked: "+evt.target);Page.forceEvent({type:"ad:click",origin:evt});}};Page.addEventListener("load",Track.initialize.bind(Track));Page.addEventListener("load",function(){Track.these($$(".adsenseItem iframe"));});Page.addEventListener("ad:click",function(evt){if(typeof pageTracker!='undefined')pageTracker._trackPageview('/analytics-goal/clickout/afc');track_click('javascript_adsense_afc',null,false);});if(typeof SubmitButton!='undefined')throw("ERROR: SubmitButton is already defined.");SubmitButton=Class.create();SubmitButton.prototype={_submitting:false,initialize:function(element){element.observe("click",this._handleClick.bindAsEventListener(this));},_handleClick:function(evt){if(this._submitting){Event.preventDefault(evt);}
this._submitting=true;setTimeout(this._reset.bind(this),2000);},_reset:function(){this._submitting=false;}};var form_submitted_once=0;function check_form_submit(){var nowDate=new Date();var nowSecs=nowDate.getTime();if(!form_submitted_once||((form_submitted_once+2000)<nowSecs)){form_submitted_once=nowSecs;return true;}
else{form_submitted_once=nowSecs;return false;}}
Page.addEventListener("load",function(){if(Debugger.enabled)Console.log("Setup: Main Navigation");new DropDown($("mainNavMember"),{inlineMode:true});new DropDown($("mainNavExplore"),{inlineMode:true});Profiler.writeTime("Setup: Main Navigation COMPLETE");});Page.addEventListener("load",function(){if(Debugger.enabled)Console.log("Setup: Sub Navigation");$$("#subNav .parent").each(function(nextElement){new DropDown(nextElement,{inlineMode:true,mouseOverMode:true});});});var CustomGoogleAds={containers:null,trackingCode:null,numCPC:0,registerForReplacement:function(containerID){if(this.containers==null)this.containers=$A([]);this.containers.push(containerID);},getNumCPC:function(){return this.numCPC;},getNextContainerID:function(){if(this.containers==null)return null;return this.containers.shift();},onDataLoadedAFS:function(dataList){this.trackingCode="javascript_adsense_afs";this.onDataLoaded(dataList);},onDataLoadedAFC:function(dataList){this.trackingCode="javascript_adsense_afc";this.onDataLoaded(dataList);},onDataLoaded:function(dataList){if(dataList.length<=0)return;var container=$(this.getNextContainerID());if(container==null)return;switch(dataList[0].type){case"flash":container.addClassName("flash");this.renderFlashAd(container,dataList);break;case"image":container.addClassName("image");this.renderImageAd(container,dataList);break;case"html":this.renderHtmlAd(container,dataList);break;default:container.addClassName("text");if(dataList.length<=1){container.addClassName("solitary");}
this.renderTextAd(container,dataList);}},renderFeedBack:function(container,useDocumentWrite){var feedbackURL=google_info.feedback_url||"http://services.google.com/feedback/online_hws_feedback";if(useDocumentWrite){document.write("<p class=\"feedback\"><a href=\""+feedbackURL+"\">Ads by Google</a></p>");}else{var feedback=new Element("p").addClassName("feedback");container.insert(feedback);var feedbackLink=new Element("a",{"href":feedbackURL});feedbackLink.update("Ads by Google");feedback.insert(feedbackLink);}},renderTextAd:function(container,dataList){this.renderFeedBack(container);for(var index=0;index<dataList.length;index++){var dataItem=dataList[index];var item=new Element("div").addClassName("adItem");container.insert(item);var headline=new Element("h3");item.insert(headline);var link=new Element("a",{"href":dataItem.url.unescapeHTML()});link.update(dataItem.line1.unescapeHTML());headline.insert(link);var description=new Element("p");var lines=dataItem.line2+"<br />"+dataItem.line3;description.innerHTML=lines;item.insert(description);var more=new Element("p").addClassName("more");item.insert(more);var moreLink=new Element("a",{"href":dataItem.url.unescapeHTML()});moreLink.update(dataItem.visible_url.unescapeHTML());more.insert(moreLink);link.observe("click",this.onAdClick.bind(this));moreLink.observe("click",this.onAdClick.bind(this));if(dataItem.bidtype=="CPC"){this.numCPC++;}}},renderImageAd:function(container,dataList){var dataItem=dataList[0];var imageContainer=new Element("p");container.insert(imageContainer);var link=new Element("a",{"href":dataItem.url.unescapeHTML()});imageContainer.insert(link);var image=new Element("img",{"src":dataItem.image_url.unescapeHTML(),"width":dataItem.image_width.unescapeHTML(),"height":dataItem.image_height.unescapeHTML(),"alt":dataItem.visible_url.unescapeHTML()});link.insert(image);link.observe("click",this.onAdClick.bind(this));if(!container.up("#leaderboardAd")||Number(dataItem.image_height.unescapeHTML())<90){this.renderFeedBack(container);}},renderFlashAd:function(container,dataList){var dataItem=dataList[0];var placeholderID="swf-"+container.getAttribute("id");var placeholder=new Element("div",{"id":placeholderID});container.insert(placeholder);if(typeof(swfobject.embedSWF)=="function"){var flashvars={};var params={allowscriptaccess:"never",quality:"high"};swfobject.embedSWF(dataItem.image_url.unescapeHTML(),placeholderID,dataItem.image_width.unescapeHTML(),dataItem.image_height.unescapeHTML(),"6.0.0",null,flashvars,params);}
if(!container.up("#leaderboardAd")||Number(dataItem.image_height.unescapeHTML())<90){this.renderFeedBack(container);}},renderHtmlAd:function(container,dataList){var dataItem=dataList[0];document.write(dataItem.snippet);this.renderFeedBack(container,true);},onAdClick:function(evt){track_click(this.trackingCode);}};var google_afs_request_done=CustomGoogleAds.onDataLoadedAFS.bind(CustomGoogleAds);var google_ad_request_done=CustomGoogleAds.onDataLoadedAFC.bind(CustomGoogleAds);if(typeof Leaderboard!='undefined')throw("ERROR: Leaderboard is already defined.");var Leaderboard={_element:null,_type:null,initialize:function(element){if(element!=null)this._element=element;if(this._type!=null)this.updateClassName();if(this._element.down("#leaderboardAd")!=null){this.setType("ad");}else if(this._element.down("#leaderboardAdSense")!=null){this.setType("adsense");}else if(this._element.down("#leaderboardTout")!=null){this.setType("tout");}else{this.setType("empty");if(BrowserDetect.browser=="Explorer"&&Number(BrowserDetect.version)<8){this._element.down("div").insert(new Element("span").update(".").setStyle({"visibility":"hidden"}));}}},setType:function(type){this._type=type;this.updateClassName();},updateClassName:function(){if(this._element!=null){var target=this._element.down("div");if(target!=null){target.className=this._type;}}}};Page.addEventListener("dom:loaded",function(){if(Debugger.enabled)Console.log("Add behaviour to ads/touts within the page.");var signupTout=$("signupTout");if(signupTout!=null)new RequireAuth(signupTout);$$("#leaderboard .tout a").invoke("observe","click",function(e){if(typeof pageTracker!='undefined'){var href=e.target.getAttribute('href').replace(/^https?:\/\/[^\/]+/,'');pageTracker._trackPageview('/analytics-goal/click-tout/slice/'+href);}});});if(typeof Item!='undefined')throw("ERROR: Item is already defined.");Item=Class.create();Item.prototype={name:"Item",version:"2.0",debugMode:false,element:null,itemID:null,vendorList:null,tagList:null,headline:null,imagesPopover:null,shareButton:null,initialize:function(element){this.debugMode=Debugger.enabled;Object.extend(this,arguments[1]||{});if(this.debugMode)Console.log(this.name+" (version "+this.version+") has initialized.");if(element!=null){this.element=$(element);this.itemID=Page.getMetaContent("item-id");this.element.select(".options .share").each(function(nextElement){this.shareButton=new SubPageButton(nextElement);new ShareSubPage({shareButton:this.shareButton});}.bind(this));this.prepareWishListButton();this.prepareAlternateImages();this.prepareRelatedItems();this.element.select(".relatedTags ul").each(function(nextElement){var list=new LimitedList(nextElement,{maxLines:4,moreButtonLabel:"See more",lessButtonLabel:"See fewer"});}.bind(this));var sdc=$("com-shopping");if(sdc)ExternalLinks.register(sdc.select("a[rel*=external]"));this.element.select(".recommendQuestion").each(function(nextElement){var minLength=2;if(BrowserDetect.browser=="Explorer"){minLength=1;}
if(history.length>=minLength){var label;if(Page.bodyElement.hasClassName("wish")){label="Back to wish list suggestions";}else{label="Back to recommendation suggestions";}
var noButton=new Element("a",{"href":"#no","title":label});noButton.update("No");noButton.observe("click",function(evt){history.go(-1);evt.stop();});nextElement.appendChild(noButton.wrap("p").addClassName("no"));var backButton=new Element("a",{"href":"#go-back"});backButton.update(label);backButton.observe("click",function(evt){history.go(-1);evt.stop();});nextElement.appendChild(backButton.wrap("p").addClassName("back"));Page.forceEvent({type:"update"});}});if(String(Page.getMetaContent("share")).toBoolean()||String(Page.getMetaContent("share-requested")).toBoolean()){if(this.shareButton)this.shareButton.show();}}},prepareWishListButton:function(){this.element.select(".options .wishlist").each(function(nextElement){new ItemWishListButton(nextElement,{itemID:this.itemID});}.bind(this));},prepareAlternateImages:function(){this.element.select(".images a").invoke("observe","click",function(evt){Event.preventDefault(evt);var link=evt.target;if(String(link.nodeName).toLowerCase()!="a"){link=evt.findElement("a");}
if(this.imagesPopover==null){this.imagesPopover=new SubPage(link.getAttribute("href"),{method:"ajax"});this.imagesPopover.addEventListener("load",ItemQuickView.initialize);this.imagesPopover.addEventListener("load",function(){new ShoppingLinks(this.imagesPopover.getRootElement());}.bind(this));}else{this.imagesPopover.load(link.getAttribute("href"));}}.bind(this));},prepareRelatedItems:function(){this.element.select(".relatedItems").each(function(container){new RelatedItemsSlideShow(container,{itemID:this.itemID});}.bind(this));}};Page.addEventListener("load",function(){new Item($("item"));});if(typeof RelatedItemsSlideShow!='undefined')throw("ERROR: RelatedItemsSlideShow is already defined.");RelatedItemsSlideShow=Class.create();RelatedItemsSlideShow.prototype={name:"RelatedItemsSlideShow",version:"0.80",debugMode:false,element:null,itemID:null,slideShow:null,initialize:function(element){this.debugMode=Debugger.enabled;Object.extend(this,arguments[1]||{});if(this.debugMode)Console.log(this.name+" (version "+this.version+") has initialized.");if(element!=null){this.element=$(element);var test=this.element.getElementsBySelector(".setNav #setNav-previous a");if(test.length<1){this.createPreviousButton();}
var list=this.element.down("ul");this.slideShow=new SlideShow(list,{nextButton:this.element.getElementsBySelector(".setNav #setNav-next")[0],previousButton:this.element.getElementsBySelector(".setNav #setNav-previous")[0],dataPath:"/component/item-discover-more/"+this.itemID+"/",dataAttributes:{"format":"80x80"},queryStringKey:"discover_start",compactMode:false,automaticMode:false,transInMode:false,clientSideMode:true,maxVisibleItems:3,direction:SlideShow.HORIZONTAL,marginRight:5,marginBottom:5});this.slideShow.addEventListener("next-click",function(evt){track_click('discover-more-next');}.bindAsEventListener(this));this.slideShow.addEventListener("previous-click",function(evt){track_click('discover-more-prev');}.bindAsEventListener(this));this.slideShow.addEventListener("loadset-failed",this.fallBack.bindAsEventListener(this));}},createPreviousButton:function(){var previousButton=$(this.element.getElementsBySelector(".setNav #setNav-previous")[0]);var previousButtonSpan=$(previousButton.getElementsByTagName("span")[0]);var previousButtonLink=$(document.createElement("a"));previousButtonLink.innerHTML=previousButtonSpan.innerHTML;previousButtonLink.setAttribute("href","#previous-set");previousButtonLink.setAttribute("title","Go back to the last set of items");previousButton.replaceChild(previousButtonLink,previousButtonSpan);return previousButton;},fallBack:function(){this.slideShow.nextButton.enable();}};if(typeof ItemWishListButton!='undefined')throw("ItemWishListButton is already defined.");ItemWishListButton=Class.create();ItemWishListButton.prototype={name:"ItemWishListButton",version:"0.80",debugMode:false,element:null,itemID:null,enabled:true,request:null,initialize:function(element){this.debugMode=Debugger.enabled;Object.extend(this,arguments[1]||{});if(this.debugMode)Console.log(this.name+" (version "+this.version+") has initialized.");if(element!=null){this.element=$(element);if(BrowserDetect.browser=="Explorer"&&Number(BrowserDetect.version)<7){MultiClass.initialize(this.element,{ignore:["saved"]});}
if(this.element.hasClassName("saved")){this.enabled=false;if(BrowserDetect.browser=="Explorer"&&Number(BrowserDetect.version)<7){this.element.addCompoundClassName("saved");}}
var link=$(this.element.down("a"));var auth=new RequireAuth(link,{delayed:true,ajaxian:true});auth.addEventListener("authenticated",this.wish.bind(this));}else{console.warn(this.name+" was instantiated without a target element");}},handleClick:function(evt){if(this.debugMode)Console.log(this.name+"handleClick()");this.wish();Event.preventDefault(evt);},updateCount:function(value){var wishlistCount=$("wishlistCount");if(wishlistCount!=null){var strong=wishlistCount.down("strong");if(strong!=null){var count=Number(strong.innerHTML);strong.innerHTML=String(count+value);}}},wish:function(){if(this.enabled){track_click('wish-list');this.request=new Ajax.Request("/wishlist/add/live/",{method:'post',postBody:$H({id:this.itemID}).toQueryString(),onComplete:function(transport){if(this.request.success()){if(this.debugMode)Console.log(this.name+" wishlist add is complete");this.element.addClassName("saved");if(BrowserDetect.browser=="Explorer"&&Number(BrowserDetect.version)<7){this.element.addCompoundClassName("saved");}
var parentNode=this.element.down("a").parentNode;$A(parentNode.childNodes).each(function(nextNode){parentNode.removeChild(nextNode);}.bind(this));var link=$(document.createElement("a"));link.href="/wishlist/remove/?id="+this.itemID;link.appendChild(document.createTextNode("You saved it ("));var span=document.createElement("span");link.appendChild(span);span.appendChild(document.createTextNode("Remove"));link.appendChild(document.createTextNode(")"));this.updateCount(1);parentNode.appendChild(link);Event.observe(link,'click',this.handleClick.bindAsEventListener(this));this.enabled=false;}else{var link=$(this.element.getElementsByTagName("a")[0]);window.location=link.getAttribute("href");}}.bind(this)});}else{this.request=new Ajax.Request("/wishlist/remove/live/",{method:'post',postBody:$H({id:this.itemID}).toQueryString(),onComplete:function(transport){if(this.request.success()){if(this.debugMode)Console.log(this.name+" wishlist remove is complete");this.element.removeClassName("saved");if(BrowserDetect.browser=="Explorer"&&Number(BrowserDetect.version)<7){this.element.removeCompoundClassName("saved");}
var parentNode=this.element.down("a").parentNode;$A(parentNode.childNodes).each(function(nextNode){parentNode.removeChild(nextNode);}.bind(this));var link=$(document.createElement("a"));link.href="/wishlist/add/?id="+this.itemID;link.appendChild(document.createTextNode("Add to wish list"));this.updateCount(-1);parentNode.appendChild(link);Event.observe(link,'click',this.handleClick.bindAsEventListener(this));this.enabled=true;}else{var link=$(this.element.getElementsByTagName("a")[0]);window.location=link.getAttribute("href");}}.bind(this)});}}};Page.addEventListener("load",function(){$$("div.relatedTags a").invoke("observe","click",function(){if(typeof pageTracker!='undefined'){if(Debugger.enabled)Console.log('Fire GA event: ItemBreadCrumb: ItemTagNav');pageTracker._trackEvent('ItemBreadCrumb','ItemTagNav');}});});if(typeof ItemQuickView!='undefined')throw("ERROR: ItemQuickView is already defined.");var ItemQuickView={initialize:function(){if(Debugger.enabled)Console.log("ItemQuickView.initalize()");var itemImagesPage=$("itemQuickView");if(itemImagesPage!=null){var alternateImages=itemImagesPage.down("#alternateImages");if(alternateImages!=null){if(alternateImages.select("li").length>5){alternateImages.addClassName("hasNav");}
var photoSlideShow=new AlternateImagesSlideShow(alternateImages.down("ul"),{associatedPhoto:itemImagesPage.down(".image img"),maxVisibleItems:5});photoSlideShow.addEventListener("slide-click",function(){track_click("images-more");});}}
Profiler.writeTime("ItemQuickView.initalize() COMPLETE");}};Page.addEventListener("load",ItemQuickView.initialize);if(typeof ShoppingLinks!='undefined')throw("ERROR: ShoppingLinks is already defined.");var ShoppingLinks=Class.create({element:null,initialize:function(element){if(Debugger.enabled)Console.log("ShoppingLinks.initalize()");if(!element)return;else this.element=element;ExternalLinks.register(this.element.select("a[rel*=external]"));var placeholder=this.element.down("h3 span.other");var content=this.element.down(".shoppingLinks");if(placeholder==null||content==null)return;var button=new Element("a",{"href":"#more"}).update(placeholder.innerHTML);placeholder.parentNode.replaceChild(button,placeholder);var buttonObserver={content:content,contentShowing:false,onClick:function(e){if(this.contentShowing){new Effect.Morph(this.content,{style:{opacity:"0"},duration:0.25,afterFinish:function(){this.contentShowing=false;this.content.hide();Page.forceEvent({type:"update"});}.bind(this)});}else{this.contentShowing=true;this.content.show();new Effect.Morph(this.content,{style:{opacity:"1"},duration:0.5});Page.forceEvent({type:"update"});}
e.preventDefault();}};button.observe("click",buttonObserver.onClick.bind(buttonObserver));buttonObserver.content.setStyle({"opacity":"0",display:"none"});var closeButton=new Element("a",{"href":"#fewer"}).addClassName("close").update("Close");content.insert(closeButton);closeButton.observe("click",buttonObserver.onClick.bind(buttonObserver));}});Element.onReady("itemShop",function(element){new ShoppingLinks(element);});
