var ProductFinderBase=Class.create();ProductFinderBase.prototype={initialize:function(){},initSuper:function(){this.debug=false;this.layer=null;this.layerContent=null;this.xmlDoc=null;this.treeId="pf4tree";this.pfRandomId=Math.random();this.propertyNames={newWindow:"newWindow",followingSeparator:"followingSeparator",hide:"hide"};},_getSeparator:function(){return new Element("div",{"class":"separator"}).update("&#160;");},_getXMLNodeFromEvt:function(evt){var elm=Event.findElement(evt);var paKey=null;if(elm.rel.startsWith("jumpto-")){paKey=elm.rel.sub("jumpto-","");}else{if(elm.rel.startsWith("glossaryto-")){paKey=elm.rel.sub("glossaryto-","");}}var expression="//page[@paKey = "+paKey+"]";return this._xpath(expression,this.xmlDoc);},_drawLayerFrame:function(elements){elements.each(function(item){this.layerContent.appendChild(item);}.bind(this));if(!this.layer.isOpen){this.layer.toggle();}},_drawBackButton:function(layerScope){var backButton=new Element("a",{"class":"back",href:"javascript:void(0)"}).update(this.translator.getTranslation("common/back"));backButton.observe("click",function(e){this.layer.toggle();}.bind(this));layerScope.insert(new Element("div",{"class":"backbutton"}).update(backButton));},_buildLayer:function(layerId){var id=layerId||"pf4Layer";var layerOptions={position:"default",idprefix:"lightbox-layer-",curtain:true,iframe:false,cssClass:"lightbox-layer",contentCssClass:"pft-layer",src:null,callbacks:{afterOpen:function(){if(USE_SIFR===true){if(typeof sIFR!="function"||Info.browser.isOpera||Info.os.isLinux){return;}sIFR.replaceElement(named({sSelector:"div.pft-layer h1",sFlashSrc:SIFR_SLAB_PATH,sColor:"#666666",sHoverColor:"#990000",sWmode:"transparent"}));}},afterClose:function(){pf4.afterCloseLayer();}}};var trigger=new Element("span");this.layer=new pubLayer(null,trigger,id,layerOptions);this.layerContent=$("layer-content-"+id);},_openPfLayer:function(key){},_removeScrollObserving:function(){if(window.addEventListener){Event.stopObserving(window,"DOMMouseScroll");}Event.stopObserving(document,"mousewheel");},_gNA:function(node,key){return(node.attributes===null||node.attributes.getNamedItem(key)===null)?null:node.attributes.getNamedItem(key).nodeValue;},_gNP:function(node,name){var prop=this._xpath("child::properties/property[@name='"+name+"']",node);return this._gNA(prop[0],"value");},_gNE:function(node){return(this._xpath("child::page",node).length===0)?true:false;},_xpath:function(expression,xmlDoc){var ctx=new ExprContext(xmlDoc);var pathExpr=xpathParse(expression);var e=pathExpr.evaluate(ctx);return e.nodeSetValue();},log:function(o){if(this.debug){if(typeof console!=="undefined"&&typeof console.log==="function"){console.log(o);}else{}}}};var PfTranslator=Class.create();PfTranslator.prototype=Object.extend(new ProductFinderBase,{initialize:function(configfile,lang,pf){this.initSuper();this.configfile=configfile+"?"+Math.random();this.lang=lang;this.loaded=false;this.xmlDoc=null;this.pf=pf;this._loadConfig();},_loadConfig:function(){var request=new Ajax.Request(this.configfile,{method:"get",onSuccess:this._onConfigLoaded.bind(this),onFailure:this._onLoadFailure.bind(this)});},getTranslation:function(str){var nText=this._xpath("//"+this.lang+"/"+str+"/text()",this.xmlDoc);if(nText){return nText[0].data;}else{return"["+str+"]";}},_onConfigLoaded:function(xhr){this.xmlDoc=xhr.responseXML.documentElement;this.loaded=true;this.log("loaded tranlations and now loading productfinder");this.pf.loadData();},_onLoadFailure:function(xhr){this.log("File not found");}});var PfSpeechBubble=Class.create();PfSpeechBubble.prototype=Object.extend(new ProductFinderBase,{initialize:function(parentContainer,alternativeId){this.parentContainer=parentContainer;this.id=alternativeId||"speechBubble";this.clearSpeechBubble();this.bottomImagePath=pf4Config.frameworkPath+"pub/script/module/pf4/img/speechbubble2.gif";},clearSpeechBubble:function(){if($(this.id)){$(this.id).remove();}},show:function(evt,spText,spImage){var show=false;var displayImage=false;var bubble=new Element("div",{id:this.id,"class":"speechBubble"}).update("&#160;");var contentWrapper=new Element("div",{"class":"bubbleContentWrapper clearfix"});var content=new Element("div",{"class":"bubbleContent"});var bottom=new Element("img",{src:this.bottomImagePath,"class":"speechBubbleBottom"});if(spImage==null){content.update();}else{var image='<img src="'+spImage+'" alt="" />';content.update(image);show=true;displayImage=true;}if(spText==null||spText==""){show=false;}else{var text=new Element("p").update(spText);if(displayImage===true){text.addClassName("speechBubbleImage");}content.appendChild(text);show=true;}if(show){contentWrapper.update(content);bubble.update(contentWrapper);bubble.appendChild(bottom);$(this.parentContainer.id).up().insert(bubble);var elm=Event.findElement(evt);var offset=elm.positionedOffset();var cOffset=elm.cumulativeOffset();var dim=elm.getDimensions();var lineHeight=Math.floor(dim.height/2)+4;var layerTop=$(this.parentContainer.id).up("div.lightbox-layer").cumulativeOffset();var bubbleHeight=$(this.id).getDimensions();var top=lineHeight+cOffset.top-layerTop.top-bubbleHeight.height;var left=cOffset.left+dim.width-layerTop.left+2;$(this.id).absolutize();$(this.id).setStyle({top:top+"px",left:left+"px"});}},hide:function(){if($(this.id)){$(this.id).remove();}}});var PfScrollbar=Class.create();PfScrollbar.prototype={initialize:function(handle,sliderDiv,node){this.outerHeight=node.getHeight();this.innerHeight=$(node.firstChild).getHeight();this.maxScroll=this.innerHeight-this.outerHeight;this.itemHeight=16;this.sliderHeight=$(sliderDiv).getHeight();this.handle=handle;this.sliderDiv=sliderDiv;this.node=node;this.currentPos=0;this._initSlider();},_updateNodePosition:function(value){this.currentPos=value;if(this.node&&this.node.firstChild){this.node.firstChild.style.top=(-value)+"px";}},moveDown:function(){this.setValue(this.slider.value+this.itemHeight);},moveUp:function(){this.setValue(this.slider.value-this.itemHeight);},updateSliderHeight:function(newHeight){this.slider.dispose();this.innerHeight=newHeight;this.maxScroll=this.innerHeight-this.outerHeight;this._initSlider();},_initSlider:function(){$(this.handle).style.height=Math.round(this.sliderHeight*this.outerHeight/this.innerHeight)+"px";this.slider=new Control.Slider(this.handle,this.sliderDiv,{axis:"vertical",range:$R(0,this.maxScroll),onSlide:function(value){this._updateNodePosition(value);}.bind(this),onChange:function(value){this._updateNodePosition(value);}.bind(this)});this.slider.setValue(this.currentPos);},scrollIntoView:function(liNode){var offset=$(liNode).offsetTop;var minValue=this.slider.value;var maxValue=minValue+this.outerHeight;if(offset+this.itemHeight>maxValue){this.setValue(offset+this.itemHeight-this.outerHeight);}else{if(offset<minValue){this.setValue(offset);}}},setValue:function(value){this.slider.setValue(value);}};var PfTree=Class.create();PfTree.prototype=Object.extend(new ProductFinderBase,{initialize:function(treeDiv,treeRoot,pf,config){this.initSuper();this.config=config||{updateContent:true,scrollHeight:390};this.treeDiv=treeDiv;this.treeRoot=treeRoot;this.pf=pf;this.sliderCounter=0;this.scrollbar=null;this.speechBubble=new PfSpeechBubble(this.treeDiv);this._build();},_getContent:function(node,parent){var pageChildren=this._xpath("child::page",node);if(pageChildren.length>0){var ulTreeList=new Element("ul");$A(pageChildren).each(function(child){if(this._gNP(child,this.propertyNames.hide)==0){var cKey=this._gNA(child,"paKey");var isExitLink=this._gNE(child);var pageProduct=this._xpath("child::product",child)[0];var cName=this._gNA(child,"paName");var trackConfig={};var trackMode={};var aTree=null;if(isExitLink===false){aTree=new Element("a",{"class":"collapsed",href:"javascript:void(0);",rel:cKey}).update(cName);aTree.observe("click",function(evt){trackMode={mode:"node",contentNode:"",tree:this};trackConfig={name:cName,path:"",lang:pf4Config.language};this._trackExpand(evt,cKey,trackConfig,trackMode);this._expandNode(evt);Event.stop(evt);}.bindAsEventListener(this));}else{var href=this._gNA(pageProduct,"link");aTree=new Element("a",{"class":"link",href:href,rel:cKey}).update(cName);trackConfig={name:cName,path:"",lang:pf4Config.language,url:href};trackMode={mode:"exit",contentNode:"",tree:this};if(this._gNP(child,this.propertyNames.newWindow)==1){aTree.observe("click",function(evt){this.pf.track(evt,cKey,3,trackConfig,trackMode);Event.stop(evt);window.open(href);}.bindAsEventListener(this));}else{aTree.observe("click",function(evt){this.pf.track(evt,cKey,3,trackConfig,trackMode);Event.stop(evt);window.setTimeout(function(){window.location.href=href;},500);}.bindAsEventListener(this));}}var spImage=this._xpath("child::teaser",pageProduct);var spText=this._xpath("child::tooltip",pageProduct);var spI=null;if(spImage.length>0){spI=this.config.resourcePathImg+this._gNA(spImage[0],"image");}var spT=null;if(spText.length>0){spT=this._gNA(spText[0],"text");}if(!this.pf.isMobilePad){aTree.observe("mouseover",function(evt){this._showSpeechBubble(evt,spT,spI);}.bindAsEventListener(this));aTree.observe("mouseout",function(evt){this._hideSpeechBubble(evt);}.bindAsEventListener(this));}var liTree=new Element("li",{"class":"collapsed"}).update(aTree);if(isExitLink==false){this._getContent(child,liTree);}ulTreeList.appendChild(liTree);if(this._gNP(child,this.propertyNames.followingSeparator)==1){ulTreeList.appendChild(this._getSeparator());}}}.bind(this));parent.appendChild(ulTreeList);}else{}},_onmousescroll:function(value){if(value<0){this.scrollbar.moveUp();}else{if(value>0){this.scrollbar.moveDown();}}return false;},isScrollContent:function(){this._scrollPane();},_scrollPane:function(){this._removeScrollObserving();if(this.pf.isMobilePad){this.treeDiv.setStyle({overflowY:"auto"});return false;}var wheel=new MouseWheelObserver();wheel.register(function(value){if(Layer.current&&this._onmousescroll&&this.scrollbar){return this._onmousescroll(value);}else{return true;}}.bind(this));var linkList=this.treeDiv.down("ul");if(typeof linkList!=="undefined"&&linkList.getHeight()>this.config.scrollHeight){if($("slider-wrapper-"+this.sliderCounter)){this.scrollbar.updateSliderHeight(linkList.getHeight());}else{this.treeDiv.addClassName("content active-content");this.sliderCounter=Math.ceil(Math.random()*1000000);linkList.addClassName("has-scrollbar");var sliderWrapper=document.createElement("div");sliderWrapper.className="slider-wrapper";sliderWrapper.id="slider-wrapper-"+this.sliderCounter;sliderWrapper.innerHTML='<div class="arrow-up"></div><div class="slider" id="slider'+this.sliderCounter+'"><div class="handle" id="handle'+this.sliderCounter+'"></div></div><div class="arrow-down"></div>';this.treeDiv.appendChild(sliderWrapper);this.scrollbar=new PfScrollbar("handle"+this.sliderCounter,"slider"+this.sliderCounter,this.treeDiv);var elts=$(sliderWrapper).childElements();elts[0].observe("click",function(){this.scrollbar.moveUp();}.bind(this));elts[2].observe("click",function(){this.scrollbar.moveDown();}.bind(this));}return true;}else{if($("slider-wrapper-"+this.sliderCounter)){$("slider-wrapper-"+this.sliderCounter).remove();this.sliderCounter=0;this.treeDiv.firstChild.style.top=0+"px";this.scrollbar=null;this.treeDiv.removeClassName("content active-content");if(linkList!=="undefined"){linkList.removeClassName("has-scrollbar");}this._removeScrollObserving();wheel=null;return false;}}},_build:function(){this._getContent(this.treeRoot,this.treeDiv);},_trackExpand:function(evt,paKey,trackConfig,trackMode){var node=Event.findElement(evt);if(node.up().hasClassName("collapsed")){this.pf.track(evt,paKey,3,trackConfig,trackMode);}},_expandNode:function(evt){var node=Event.findElement(evt);if(node.up().hasClassName("expanded")){this._collapseSubtree(node);}else{this._expandSubtree(node);}},_updateContent:function(node,mode){if(this.config.updateContent){var rel=null;var showContentHeadline=true;if(mode==0){if(typeof node.up("li.expanded")==="undefined"){rel=this._gNA(this.treeRoot,"paKey");showContentHeadline=false;}else{rel=node.up("li.expanded").down("a").rel;}}else{if(mode==1){rel=node.rel;}}this.pf.updateContent(rel,showContentHeadline);}},_collapseNode:function(item){item.removeClassName("expanded");item.addClassName("collapsed");item.down("a").removeClassName("active");item.down("a").removeClassName("notactive");item.down("a").addClassName("collapsed");},_setSelection:function(node){if(typeof node.up("li.expanded")==="undefined"){var selector="#"+this.treeDiv.id+" li.expanded";$$(selector).each(function(item){this._collapseNode(item);}.bind(this));}if(typeof node.up().previous("li.expanded")!=="undefined"){var item=node.up().previous("li.expanded");this._collapseNode(item);}if(typeof node.up().next("li.expanded")!=="undefined"){var item=node.up().next("li.expanded");this._collapseNode(item);}if(node.up("li.expanded")&&node.up("li.expanded").down("a.active")){node.up("li.expanded").down("a.active").addClassName("notactive");node.up("li.expanded").down("a.active").removeClassName("active");}},_expandSubtree:function(linkNode){obj=this;this._setSelection(linkNode);linkNode.next("ul").setStyle({display:"none"});linkNode.addClassName("active").removeClassName("collapsed");linkNode.up("li").addClassName("expanded").removeClassName("collapsed");Effect.BlindDown(linkNode.next("ul"),{duration:0.5,beforeUpdate:function(eff){obj._scrollPane();},afterFinish:function(eff){eff.element.setStyle({display:""});obj._updateContent(linkNode,1);obj._scrollPane();}});},_collapseSubtree:function(linkNode){obj=this;linkNode.next("ul").setStyle({display:"block"});Effect.BlindUp(linkNode.next("ul"),{duration:0.5,afterUpdate:function(eff){obj._scrollPane();},afterFinish:function(eff){linkNode.addClassName("collapsed");linkNode.up().addClassName("collapsed").removeClassName("expanded");linkNode.removeClassName("notactive").removeClassName("active");eff.element.setStyle({display:""});obj._updateContent(linkNode,0);}});},_walkExpandUp:function(node){if(node.up("li.collapsed")){var n=node.up("li.collapsed");n.removeClassName("collapsed");n.addClassName("expanded");var a=n.down("a.collapsed");a.removeClassName("collapsed");a.addClassName("notactive");if(n.up("li.collapsed")){this._walkExpandUp(n);}}},_walkExpandDown:function(node){var n=node.down("li.expanded");n.removeClassName("expanded");n.addClassName("collapsed");if(n.down("li.expanded")){this._walkExpandDown(n);}},selectPage:function(paSelect,mode){var selector="#"+this.treeDiv.id+" a[rel = "+paSelect+"]";var node=$$(selector);var mode=(mode=="undefined"||mode=="")?{mode:"deep",contentNode:""}:mode;if(node.length>0){var n=node.first();if(typeof(mode.parentNode)!="undefined"){this.pf.track(null,mode.parentNode,3,{path:"",name:"",lang:pf4Config.language},mode);}else{this.log("paSelect: "+paSelect);this.pf.track(null,paSelect,3,{path:"",name:n.innerHTML,lang:pf4Config.language},mode);}this._walkExpandUp(n.up("ul"));var expandNode=null;if(typeof n.next("ul")!=="undefined"){expandNode=n;}else{expandNode=n.up("ul").previous("a");}this._expandSubtree(expandNode);}},_showSpeechBubble:function(evt,text,image){this.speechBubble.show(evt,text,image);},_hideSpeechBubble:function(evt){this.speechBubble.hide();}});var PfVisualEventHelper=Class.create();PfVisualEventHelper.prototype={initialize:function(elm,id,pf){this.elm=$(elm);this.pftmousepositionframe=id;this.offset=this.elm.cumulativeOffset();this.active=true;this.pf=pf;this.resumeEvent();},calc:function(evt){if(evt){var coordx=Event.pointerX(evt);var coordy=Event.pointerY(evt);var helperElement=$(this.pftmousepositionframe).cumulativeOffset();var taboffset=20;if(Info.browser.isIE){taboffset+=5;}if((this.offset.left>coordx-10)||(this.offset.top>coordy-taboffset)||(helperElement.top<coordy)||(this.offset.left+440<coordx+10)){if(this.active){selFeatureVisualLink=null;this.pf.hideHeader();}}}},pauseEvent:function(){this.active=false;this.elm.stopObserving("mouseout",function(evt){this.calc(evt);}.bindAsEventListener(this));},resumeEvent:function(){this.active=true;this.elm.observe("mouseout",function(evt){this.calc(evt);}.bindAsEventListener(this));}};var PfHashHistory=Class.create();PfHashHistory.prototype={_initialized:false,_iframeID:"hashHistory-iframe",_method:(navigator.appName.indexOf("Microsoft Internet")!=-1)?"IFRAME":"HASH",stateID:null,defaultStateID:"defaultState",_oldStateID:null,_intervalID:null,_checkInterval:500,_debug:false,_preventPageRefresh:false,_hashActions:new Array(),initialize:function(params){var hashCallbacks=params||false;this.stateID=this._getStateID();switch(this._method){case"IFRAME":var iframe=new Element("iframe",{name:this._iframeID,id:this._iframeID});$(iframe).setStyle({width:"0px",height:"0px",position:"absolute",display:"none"});document.body.appendChild(iframe);break;case"HASH":var srcPath=pf4Config.frameworkPath+"pub/noscript/empty.htm";var iframe=new Element("iframe",{name:this._iframeID,id:this._iframeID,src:srcPath});$(iframe).setStyle({width:"0px",height:"0px",position:"absolute",display:"none"});document.body.appendChild(iframe);this._intervalID=setInterval("pf4.hashHistory._checkForHashChange()",this._checkInterval);break;}this._initialized=true;if(typeof(hashCallbacks)=="object"&&hashCallbacks.length>0){this._hashActions=hashCallbacks;}if(this.stateID){this._dispatchEvent(this.stateID,"initialize");}},setHash:function(stateID){if(this._debug){alert("PFHashHistory.setHash("+stateID+")");}switch(this._method){case"IFRAME":frames[this._iframeID].document.open();frames[this._iframeID].document.write('<script>parent.document.location.hash = "'+(stateID==this.defaultStateID?"":stateID)+'"; /* Wait for IE to impose its title before setting ours. */ setTimeout( function(){ parent.hashHistory._updateIFrame("'+stateID+'"); }, 0);<\/script>');frames[this._iframeID].document.close();break;case"HASH":document.location.hash=(stateID==this.defaultStateID?"#":stateID);break;}},setHashAndRedir:function(stateID,newURL,targetWindow){if(this._debug){alert("PFHashHistory.setHashAndRedir() :Setting Hash to "+stateID+"\nRedirecting to "+newURL+"\nWindow: "+targetWindow);}this._oldStateID=stateID;this.setHash(stateID);if(targetWindow=="_blank"){window.open(newURL);}else{window.location.href=newURL;}},addCallback:function(hash,callback){var hashAction={hash:hash,callback:callback};this._hashActions.push(hashAction);},_getStateID:function(){return document.location.href.split("#")[1]||false;},_dispatchEvent:function(stateID,from){this._oldStateID=stateID;var cb=this._hasHashAction(stateID);if(cb!=false&&typeof(cb)=="function"){if(this._debug){alert("PfHashHistory._dispatchEvent("+stateID+") from "+from);}cb(stateID);}},_checkForHashChange:function(){var stateID=this._getStateID();if(stateID!=false&&stateID!=this._oldStateID){this._oldStateID=stateID;this._dispatchEvent(stateID,"_checkforHashChange()");}},_updateIFrame:function(stateID){if(stateID!=this.defaultStateID&&stateID!=this._oldStateID){this._oldStateID=stateID;this._dispatchEvent(stateID,"_updateIFrame()");}},_hasHashAction:function(hashToFind){if(this._debug){alert("PfHashHistory._hasHashAction: Checking if there's an action assigned to hash "+hashToFind);}if(this._hashActions.length){for(var i=0;i<this._hashActions.length;i++){if(this._hashActions[i].hash==hashToFind){return this._hashActions[i].callback;}}for(var j=0;j<=this._hashActions.length;j++){if(this._hashActions[j].hash=="@all"){return this._hashActions[j].callback;}}}return false;}};String.prototype.parseColor=function(){var color="#";if(this.slice(0,4)=="rgb("){var cols=this.slice(4,this.length-1).split(",");var i=0;do{color+=parseInt(cols[i]).toColorPart();}while(++i<3);}else{if(this.slice(0,1)=="#"){if(this.length==4){for(var i=1;i<4;i++){color+=(this.charAt(i)+this.charAt(i)).toLowerCase();}}if(this.length==7){color=this.toLowerCase();}}}return(color.length==7?color:(arguments[0]||this));};Element.collectTextNodes=function(element){return $A($(element).childNodes).collect(function(node){return(node.nodeType==3?node.nodeValue:(node.hasChildNodes()?Element.collectTextNodes(node):""));}).flatten().join("");};Element.collectTextNodesIgnoreClass=function(element,className){return $A($(element).childNodes).collect(function(node){return(node.nodeType==3?node.nodeValue:((node.hasChildNodes()&&!Element.hasClassName(node,className))?Element.collectTextNodesIgnoreClass(node,className):""));}).flatten().join("");};Element.setContentZoom=function(element,percent){element=$(element);element.setStyle({fontSize:(percent/100)+"em"});if(Prototype.Browser.WebKit){window.scrollBy(0,0);}return element;};Element.getInlineOpacity=function(element){return $(element).style.opacity||"";};Element.forceRerendering=function(element){try{element=$(element);var n=document.createTextNode(" ");element.appendChild(n);element.removeChild(n);}catch(e){}};var Effect={_elementDoesNotExistError:{name:"ElementDoesNotExistError",message:"The specified DOM element does not exist, but is required for this effect to operate"},Transitions:{linear:Prototype.K,sinoidal:function(pos){return(-Math.cos(pos*Math.PI)/2)+0.5;},reverse:function(pos){return 1-pos;},flicker:function(pos){var pos=((-Math.cos(pos*Math.PI)/4)+0.75)+Math.random()/4;return pos>1?1:pos;},wobble:function(pos){return(-Math.cos(pos*Math.PI*(9*pos))/2)+0.5;},pulse:function(pos,pulses){return(-Math.cos((pos*((pulses||5)-0.5)*2)*Math.PI)/2)+0.5;},spring:function(pos){return 1-(Math.cos(pos*4.5*Math.PI)*Math.exp(-pos*6));},none:function(pos){return 0;},full:function(pos){return 1;}},DefaultOptions:{duration:1,fps:100,sync:false,from:0,to:1,delay:0,queue:"parallel"},tagifyText:function(element){var tagifyStyle="position:relative";if(Prototype.Browser.IE){tagifyStyle+=";zoom:1";}element=$(element);$A(element.childNodes).each(function(child){if(child.nodeType==3){child.nodeValue.toArray().each(function(character){element.insertBefore(new Element("span",{style:tagifyStyle}).update(character==" "?String.fromCharCode(160):character),child);});Element.remove(child);}});},multiple:function(element,effect){var elements;if(((typeof element=="object")||Object.isFunction(element))&&(element.length)){elements=element;}else{elements=$(element).childNodes;}var options=Object.extend({speed:0.1,delay:0},arguments[2]||{});var masterDelay=options.delay;$A(elements).each(function(element,index){new effect(element,Object.extend(options,{delay:index*options.speed+masterDelay}));});},PAIRS:{slide:["SlideDown","SlideUp"],blind:["BlindDown","BlindUp"],appear:["Appear","Fade"]},toggle:function(element,effect,options){element=$(element);effect=(effect||"appear").toLowerCase();return Effect[Effect.PAIRS[effect][element.visible()?1:0]](element,Object.extend({queue:{position:"end",scope:(element.id||"global"),limit:1}},options||{}));}};Effect.DefaultOptions.transition=Effect.Transitions.sinoidal;Effect.ScopedQueue=Class.create(Enumerable,{initialize:function(){this.effects=[];this.interval=null;},_each:function(iterator){this.effects._each(iterator);},add:function(effect){var timestamp=new Date().getTime();var position=Object.isString(effect.options.queue)?effect.options.queue:effect.options.queue.position;switch(position){case"front":this.effects.findAll(function(e){return e.state=="idle";}).each(function(e){e.startOn+=effect.finishOn;e.finishOn+=effect.finishOn;});break;case"with-last":timestamp=this.effects.pluck("startOn").max()||timestamp;break;case"end":timestamp=this.effects.pluck("finishOn").max()||timestamp;break;}effect.startOn+=timestamp;effect.finishOn+=timestamp;if(!effect.options.queue.limit||(this.effects.length<effect.options.queue.limit)){this.effects.push(effect);}if(!this.interval){this.interval=setInterval(this.loop.bind(this),15);}},remove:function(effect){this.effects=this.effects.reject(function(e){return e==effect;});if(this.effects.length==0){clearInterval(this.interval);this.interval=null;}},loop:function(){var timePos=new Date().getTime();for(var i=0,len=this.effects.length;i<len;i++){this.effects[i]&&this.effects[i].loop(timePos);}}});Effect.Queues={instances:$H(),get:function(queueName){if(!Object.isString(queueName)){return queueName;}return this.instances.get(queueName)||this.instances.set(queueName,new Effect.ScopedQueue());}};Effect.Queue=Effect.Queues.get("global");Effect.Base=Class.create({position:null,start:function(options){if(options&&options.transition===false){options.transition=Effect.Transitions.linear;}this.options=Object.extend(Object.extend({},Effect.DefaultOptions),options||{});this.currentFrame=0;this.state="idle";this.startOn=this.options.delay*1000;this.finishOn=this.startOn+(this.options.duration*1000);this.fromToDelta=this.options.to-this.options.from;this.totalTime=this.finishOn-this.startOn;this.totalFrames=this.options.fps*this.options.duration;this.render=(function(){function dispatch(effect,eventName){if(effect.options[eventName+"Internal"]){effect.options[eventName+"Internal"](effect);}if(effect.options[eventName]){effect.options[eventName](effect);}}return function(pos){if(this.state==="idle"){this.state="running";dispatch(this,"beforeSetup");if(this.setup){this.setup();}dispatch(this,"afterSetup");}if(this.state==="running"){pos=(this.options.transition(pos)*this.fromToDelta)+this.options.from;this.position=pos;dispatch(this,"beforeUpdate");if(this.update){this.update(pos);}dispatch(this,"afterUpdate");}};})();this.event("beforeStart");if(!this.options.sync){Effect.Queues.get(Object.isString(this.options.queue)?"global":this.options.queue.scope).add(this);}},loop:function(timePos){if(timePos>=this.startOn){if(timePos>=this.finishOn){this.render(1);this.cancel();this.event("beforeFinish");if(this.finish){this.finish();}this.event("afterFinish");return;}var pos=(timePos-this.startOn)/this.totalTime,frame=(pos*this.totalFrames).round();if(frame>this.currentFrame){this.render(pos);this.currentFrame=frame;}}},cancel:function(){if(!this.options.sync){Effect.Queues.get(Object.isString(this.options.queue)?"global":this.options.queue.scope).remove(this);}this.state="finished";},event:function(eventName){if(this.options[eventName+"Internal"]){this.options[eventName+"Internal"](this);}if(this.options[eventName]){this.options[eventName](this);}},inspect:function(){var data=$H();for(property in this){if(!Object.isFunction(this[property])){data.set(property,this[property]);}}return"#<Effect:"+data.inspect()+",options:"+$H(this.options).inspect()+">";}});Effect.Parallel=Class.create(Effect.Base,{initialize:function(effects){this.effects=effects||[];this.start(arguments[1]);},update:function(position){this.effects.invoke("render",position);},finish:function(position){this.effects.each(function(effect){effect.render(1);effect.cancel();effect.event("beforeFinish");if(effect.finish){effect.finish(position);}effect.event("afterFinish");});}});Effect.Tween=Class.create(Effect.Base,{initialize:function(object,from,to){object=Object.isString(object)?$(object):object;var args=$A(arguments),method=args.last(),options=args.length==5?args[3]:null;this.method=Object.isFunction(method)?method.bind(object):Object.isFunction(object[method])?object[method].bind(object):function(value){object[method]=value;};this.start(Object.extend({from:from,to:to},options||{}));},update:function(position){this.method(position);}});Effect.Event=Class.create(Effect.Base,{initialize:function(){this.start(Object.extend({duration:0},arguments[0]||{}));},update:Prototype.emptyFunction});Effect.Opacity=Class.create(Effect.Base,{initialize:function(element){this.element=$(element);if(!this.element){throw (Effect._elementDoesNotExistError);}if(Prototype.Browser.IE&&(!this.element.currentStyle.hasLayout)){this.element.setStyle({zoom:1});}var options=Object.extend({from:this.element.getOpacity()||0,to:1},arguments[1]||{});this.start(options);},update:function(position){this.element.setOpacity(position);}});Effect.Move=Class.create(Effect.Base,{initialize:function(element){this.element=$(element);if(!this.element){throw (Effect._elementDoesNotExistError);}var options=Object.extend({x:0,y:0,mode:"relative"},arguments[1]||{});this.start(options);},setup:function(){this.element.makePositioned();this.originalLeft=parseFloat(this.element.getStyle("left")||"0");this.originalTop=parseFloat(this.element.getStyle("top")||"0");if(this.options.mode=="absolute"){this.options.x=this.options.x-this.originalLeft;this.options.y=this.options.y-this.originalTop;}},update:function(position){this.element.setStyle({left:(this.options.x*position+this.originalLeft).round()+"px",top:(this.options.y*position+this.originalTop).round()+"px"});}});Effect.MoveBy=function(element,toTop,toLeft){return new Effect.Move(element,Object.extend({x:toLeft,y:toTop},arguments[3]||{}));};Effect.Scale=Class.create(Effect.Base,{initialize:function(element,percent){this.element=$(element);if(!this.element){throw (Effect._elementDoesNotExistError);}var options=Object.extend({scaleX:true,scaleY:true,scaleContent:true,scaleFromCenter:false,scaleMode:"box",scaleFrom:100,scaleTo:percent},arguments[2]||{});this.start(options);},setup:function(){this.restoreAfterFinish=this.options.restoreAfterFinish||false;this.elementPositioning=this.element.getStyle("position");this.originalStyle={};["top","left","width","height","fontSize"].each(function(k){this.originalStyle[k]=this.element.style[k];}.bind(this));this.originalTop=this.element.offsetTop;this.originalLeft=this.element.offsetLeft;var fontSize=this.element.getStyle("font-size")||"100%";["em","px","%","pt"].each(function(fontSizeType){if(fontSize.indexOf(fontSizeType)>0){this.fontSize=parseFloat(fontSize);this.fontSizeType=fontSizeType;}}.bind(this));this.factor=(this.options.scaleTo-this.options.scaleFrom)/100;this.dims=null;if(this.options.scaleMode=="box"){this.dims=[this.element.offsetHeight,this.element.offsetWidth];}if(/^content/.test(this.options.scaleMode)){this.dims=[this.element.scrollHeight,this.element.scrollWidth];}if(!this.dims){this.dims=[this.options.scaleMode.originalHeight,this.options.scaleMode.originalWidth];}},update:function(position){var currentScale=(this.options.scaleFrom/100)+(this.factor*position);if(this.options.scaleContent&&this.fontSize){this.element.setStyle({fontSize:this.fontSize*currentScale+this.fontSizeType});}this.setDimensions(this.dims[0]*currentScale,this.dims[1]*currentScale);},finish:function(position){if(this.restoreAfterFinish){this.element.setStyle(this.originalStyle);}},setDimensions:function(height,width){var d={};if(this.options.scaleX){d.width=width.round()+"px";}if(this.options.scaleY){d.height=height.round()+"px";}if(this.options.scaleFromCenter){var topd=(height-this.dims[0])/2;var leftd=(width-this.dims[1])/2;if(this.elementPositioning=="absolute"){if(this.options.scaleY){d.top=this.originalTop-topd+"px";}if(this.options.scaleX){d.left=this.originalLeft-leftd+"px";}}else{if(this.options.scaleY){d.top=-topd+"px";}if(this.options.scaleX){d.left=-leftd+"px";}}}this.element.setStyle(d);}});Effect.Highlight=Class.create(Effect.Base,{initialize:function(element){this.element=$(element);if(!this.element){throw (Effect._elementDoesNotExistError);}var options=Object.extend({startcolor:"#ffff99"},arguments[1]||{});this.start(options);},setup:function(){if(this.element.getStyle("display")=="none"){this.cancel();return;}this.oldStyle={};if(!this.options.keepBackgroundImage){this.oldStyle.backgroundImage=this.element.getStyle("background-image");this.element.setStyle({backgroundImage:"none"});}if(!this.options.endcolor){this.options.endcolor=this.element.getStyle("background-color").parseColor("#ffffff");}if(!this.options.restorecolor){this.options.restorecolor=this.element.getStyle("background-color");}this._base=$R(0,2).map(function(i){return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16);}.bind(this));this._delta=$R(0,2).map(function(i){return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i];}.bind(this));},update:function(position){this.element.setStyle({backgroundColor:$R(0,2).inject("#",function(m,v,i){return m+((this._base[i]+(this._delta[i]*position)).round().toColorPart());}.bind(this))});},finish:function(){this.element.setStyle(Object.extend(this.oldStyle,{backgroundColor:this.options.restorecolor}));}});Effect.ScrollTo=function(element){var options=arguments[1]||{},scrollOffsets=document.viewport.getScrollOffsets(),elementOffsets=$(element).cumulativeOffset();if(options.offset){elementOffsets[1]+=options.offset;}return new Effect.Tween(null,scrollOffsets.top,elementOffsets[1],options,function(p){scrollTo(scrollOffsets.left,p.round());});};Effect.Fade=function(element){element=$(element);var oldOpacity=element.getInlineOpacity();var options=Object.extend({from:element.getOpacity()||1,to:0,afterFinishInternal:function(effect){if(effect.options.to!=0){return;}effect.element.hide().setStyle({opacity:oldOpacity});}},arguments[1]||{});return new Effect.Opacity(element,options);};Effect.Appear=function(element){element=$(element);var options=Object.extend({from:(element.getStyle("display")=="none"?0:element.getOpacity()||0),to:1,afterFinishInternal:function(effect){effect.element.forceRerendering();},beforeSetup:function(effect){effect.element.setOpacity(effect.options.from).show();}},arguments[1]||{});return new Effect.Opacity(element,options);};Effect.Puff=function(element){element=$(element);var oldStyle={opacity:element.getInlineOpacity(),position:element.getStyle("position"),top:element.style.top,left:element.style.left,width:element.style.width,height:element.style.height};return new Effect.Parallel([new Effect.Scale(element,200,{sync:true,scaleFromCenter:true,scaleContent:true,restoreAfterFinish:true}),new Effect.Opacity(element,{sync:true,to:0})],Object.extend({duration:1,beforeSetupInternal:function(effect){Position.absolutize(effect.effects[0].element);},afterFinishInternal:function(effect){effect.effects[0].element.hide().setStyle(oldStyle);}},arguments[1]||{}));};Effect.BlindUp=function(element){element=$(element);element.makeClipping();return new Effect.Scale(element,0,Object.extend({scaleContent:false,scaleX:false,restoreAfterFinish:true,afterFinishInternal:function(effect){effect.element.hide().undoClipping();}},arguments[1]||{}));};Effect.BlindDown=function(element){element=$(element);var elementDimensions=element.getDimensions();return new Effect.Scale(element,100,Object.extend({scaleContent:false,scaleX:false,scaleFrom:0,scaleMode:{originalHeight:elementDimensions.height,originalWidth:elementDimensions.width},restoreAfterFinish:true,afterSetup:function(effect){effect.element.makeClipping().setStyle({height:"0px"}).show();},afterFinishInternal:function(effect){effect.element.undoClipping();}},arguments[1]||{}));};Effect.SwitchOff=function(element){element=$(element);var oldOpacity=element.getInlineOpacity();return new Effect.Appear(element,Object.extend({duration:0.4,from:0,transition:Effect.Transitions.flicker,afterFinishInternal:function(effect){new Effect.Scale(effect.element,1,{duration:0.3,scaleFromCenter:true,scaleX:false,scaleContent:false,restoreAfterFinish:true,beforeSetup:function(effect){effect.element.makePositioned().makeClipping();},afterFinishInternal:function(effect){effect.element.hide().undoClipping().undoPositioned().setStyle({opacity:oldOpacity});}});}},arguments[1]||{}));};Effect.DropOut=function(element){element=$(element);var oldStyle={top:element.getStyle("top"),left:element.getStyle("left"),opacity:element.getInlineOpacity()};return new Effect.Parallel([new Effect.Move(element,{x:0,y:100,sync:true}),new Effect.Opacity(element,{sync:true,to:0})],Object.extend({duration:0.5,beforeSetup:function(effect){effect.effects[0].element.makePositioned();},afterFinishInternal:function(effect){effect.effects[0].element.hide().undoPositioned().setStyle(oldStyle);}},arguments[1]||{}));};Effect.Shake=function(element){element=$(element);var options=Object.extend({distance:20,duration:0.5},arguments[1]||{});var distance=parseFloat(options.distance);var split=parseFloat(options.duration)/10;var oldStyle={top:element.getStyle("top"),left:element.getStyle("left")};return new Effect.Move(element,{x:distance,y:0,duration:split,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:-distance*2,y:0,duration:split*2,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:distance*2,y:0,duration:split*2,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:-distance*2,y:0,duration:split*2,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:distance*2,y:0,duration:split*2,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:-distance,y:0,duration:split,afterFinishInternal:function(effect){effect.element.undoPositioned().setStyle(oldStyle);}});}});}});}});}});}});};Effect.SlideDown=function(element){element=$(element).cleanWhitespace();var oldInnerBottom=element.down().getStyle("bottom");var elementDimensions=element.getDimensions();return new Effect.Scale(element,100,Object.extend({scaleContent:false,scaleX:false,scaleFrom:window.opera?0:1,scaleMode:{originalHeight:elementDimensions.height,originalWidth:elementDimensions.width},restoreAfterFinish:true,afterSetup:function(effect){effect.element.makePositioned();effect.element.down().makePositioned();if(window.opera){effect.element.setStyle({top:""});}effect.element.makeClipping().setStyle({height:"0px"}).show();},afterUpdateInternal:function(effect){effect.element.down().setStyle({bottom:(effect.dims[0]-effect.element.clientHeight)+"px"});},afterFinishInternal:function(effect){effect.element.undoClipping().undoPositioned();effect.element.down().undoPositioned().setStyle({bottom:oldInnerBottom});}},arguments[1]||{}));};Effect.SlideUp=function(element){element=$(element).cleanWhitespace();var oldInnerBottom=element.down().getStyle("bottom");var elementDimensions=element.getDimensions();return new Effect.Scale(element,window.opera?0:1,Object.extend({scaleContent:false,scaleX:false,scaleMode:"box",scaleFrom:100,scaleMode:{originalHeight:elementDimensions.height,originalWidth:elementDimensions.width},restoreAfterFinish:true,afterSetup:function(effect){effect.element.makePositioned();effect.element.down().makePositioned();if(window.opera){effect.element.setStyle({top:""});}effect.element.makeClipping().show();},afterUpdateInternal:function(effect){effect.element.down().setStyle({bottom:(effect.dims[0]-effect.element.clientHeight)+"px"});},afterFinishInternal:function(effect){effect.element.hide().undoClipping().undoPositioned();effect.element.down().undoPositioned().setStyle({bottom:oldInnerBottom});}},arguments[1]||{}));};Effect.Squish=function(element){return new Effect.Scale(element,window.opera?1:0,{restoreAfterFinish:true,beforeSetup:function(effect){effect.element.makeClipping();},afterFinishInternal:function(effect){effect.element.hide().undoClipping();}});};Effect.Grow=function(element){element=$(element);var options=Object.extend({direction:"center",moveTransition:Effect.Transitions.sinoidal,scaleTransition:Effect.Transitions.sinoidal,opacityTransition:Effect.Transitions.full},arguments[1]||{});var oldStyle={top:element.style.top,left:element.style.left,height:element.style.height,width:element.style.width,opacity:element.getInlineOpacity()};var dims=element.getDimensions();var initialMoveX,initialMoveY;var moveX,moveY;switch(options.direction){case"top-left":initialMoveX=initialMoveY=moveX=moveY=0;break;case"top-right":initialMoveX=dims.width;initialMoveY=moveY=0;moveX=-dims.width;break;case"bottom-left":initialMoveX=moveX=0;initialMoveY=dims.height;moveY=-dims.height;break;case"bottom-right":initialMoveX=dims.width;initialMoveY=dims.height;moveX=-dims.width;moveY=-dims.height;break;case"center":initialMoveX=dims.width/2;initialMoveY=dims.height/2;moveX=-dims.width/2;moveY=-dims.height/2;break;}return new Effect.Move(element,{x:initialMoveX,y:initialMoveY,duration:0.01,beforeSetup:function(effect){effect.element.hide().makeClipping().makePositioned();},afterFinishInternal:function(effect){new Effect.Parallel([new Effect.Opacity(effect.element,{sync:true,to:1,from:0,transition:options.opacityTransition}),new Effect.Move(effect.element,{x:moveX,y:moveY,sync:true,transition:options.moveTransition}),new Effect.Scale(effect.element,100,{scaleMode:{originalHeight:dims.height,originalWidth:dims.width},sync:true,scaleFrom:window.opera?1:0,transition:options.scaleTransition,restoreAfterFinish:true})],Object.extend({beforeSetup:function(effect){effect.effects[0].element.setStyle({height:"0px"}).show();},afterFinishInternal:function(effect){effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldStyle);}},options));}});};Effect.Shrink=function(element){element=$(element);var options=Object.extend({direction:"center",moveTransition:Effect.Transitions.sinoidal,scaleTransition:Effect.Transitions.sinoidal,opacityTransition:Effect.Transitions.none},arguments[1]||{});var oldStyle={top:element.style.top,left:element.style.left,height:element.style.height,width:element.style.width,opacity:element.getInlineOpacity()};var dims=element.getDimensions();var moveX,moveY;switch(options.direction){case"top-left":moveX=moveY=0;break;case"top-right":moveX=dims.width;moveY=0;break;case"bottom-left":moveX=0;moveY=dims.height;break;case"bottom-right":moveX=dims.width;moveY=dims.height;break;case"center":moveX=dims.width/2;moveY=dims.height/2;break;}return new Effect.Parallel([new Effect.Opacity(element,{sync:true,to:0,from:1,transition:options.opacityTransition}),new Effect.Scale(element,window.opera?1:0,{sync:true,transition:options.scaleTransition,restoreAfterFinish:true}),new Effect.Move(element,{x:moveX,y:moveY,sync:true,transition:options.moveTransition})],Object.extend({beforeStartInternal:function(effect){effect.effects[0].element.makePositioned().makeClipping();},afterFinishInternal:function(effect){effect.effects[0].element.hide().undoClipping().undoPositioned().setStyle(oldStyle);}},options));};Effect.Pulsate=function(element){element=$(element);var options=arguments[1]||{},oldOpacity=element.getInlineOpacity(),transition=options.transition||Effect.Transitions.linear,reverser=function(pos){return 1-transition((-Math.cos((pos*(options.pulses||5)*2)*Math.PI)/2)+0.5);};return new Effect.Opacity(element,Object.extend(Object.extend({duration:2,from:0,afterFinishInternal:function(effect){effect.element.setStyle({opacity:oldOpacity});}},options),{transition:reverser}));};Effect.Fold=function(element){element=$(element);var oldStyle={top:element.style.top,left:element.style.left,width:element.style.width,height:element.style.height};element.makeClipping();return new Effect.Scale(element,5,Object.extend({scaleContent:false,scaleX:false,afterFinishInternal:function(effect){new Effect.Scale(element,1,{scaleContent:false,scaleY:false,afterFinishInternal:function(effect){effect.element.hide().undoClipping().setStyle(oldStyle);}});}},arguments[1]||{}));};Effect.Morph=Class.create(Effect.Base,{initialize:function(element){this.element=$(element);if(!this.element){throw (Effect._elementDoesNotExistError);}var options=Object.extend({style:{}},arguments[1]||{});if(!Object.isString(options.style)){this.style=$H(options.style);}else{if(options.style.include(":")){this.style=options.style.parseStyle();}else{this.element.addClassName(options.style);this.style=$H(this.element.getStyles());this.element.removeClassName(options.style);var css=this.element.getStyles();this.style=this.style.reject(function(style){return style.value==css[style.key];});options.afterFinishInternal=function(effect){effect.element.addClassName(effect.options.style);effect.transforms.each(function(transform){effect.element.style[transform.style]="";});};}}this.start(options);},setup:function(){function parseColor(color){if(!color||["rgba(0, 0, 0, 0)","transparent"].include(color)){color="#ffffff";}color=color.parseColor();return $R(0,2).map(function(i){return parseInt(color.slice(i*2+1,i*2+3),16);});}this.transforms=this.style.map(function(pair){var property=pair[0],value=pair[1],unit=null;if(value.parseColor("#zzzzzz")!="#zzzzzz"){value=value.parseColor();unit="color";}else{if(property=="opacity"){value=parseFloat(value);if(Prototype.Browser.IE&&(!this.element.currentStyle.hasLayout)){this.element.setStyle({zoom:1});}}else{if(Element.CSS_LENGTH.test(value)){var components=value.match(/^([\+\-]?[0-9\.]+)(.*)$/);value=parseFloat(components[1]);unit=(components.length==3)?components[2]:null;}}}var originalValue=this.element.getStyle(property);return{style:property.camelize(),originalValue:unit=="color"?parseColor(originalValue):parseFloat(originalValue||0),targetValue:unit=="color"?parseColor(value):value,unit:unit};}.bind(this)).reject(function(transform){return((transform.originalValue==transform.targetValue)||(transform.unit!="color"&&(isNaN(transform.originalValue)||isNaN(transform.targetValue))));});},update:function(position){var style={},transform,i=this.transforms.length;while(i--){style[(transform=this.transforms[i]).style]=transform.unit=="color"?"#"+(Math.round(transform.originalValue[0]+(transform.targetValue[0]-transform.originalValue[0])*position)).toColorPart()+(Math.round(transform.originalValue[1]+(transform.targetValue[1]-transform.originalValue[1])*position)).toColorPart()+(Math.round(transform.originalValue[2]+(transform.targetValue[2]-transform.originalValue[2])*position)).toColorPart():(transform.originalValue+(transform.targetValue-transform.originalValue)*position).toFixed(3)+(transform.unit===null?"":transform.unit);}this.element.setStyle(style,true);}});Effect.Transform=Class.create({initialize:function(tracks){this.tracks=[];this.options=arguments[1]||{};this.addTracks(tracks);},addTracks:function(tracks){tracks.each(function(track){track=$H(track);var data=track.values().first();this.tracks.push($H({ids:track.keys().first(),effect:Effect.Morph,options:{style:data}}));}.bind(this));return this;},play:function(){return new Effect.Parallel(this.tracks.map(function(track){var ids=track.get("ids"),effect=track.get("effect"),options=track.get("options");var elements=[$(ids)||$$(ids)].flatten();return elements.map(function(e){return new effect(e,Object.extend({sync:true},options));});}).flatten(),this.options);}});Element.CSS_PROPERTIES=$w("backgroundColor backgroundPosition borderBottomColor borderBottomStyle borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth borderRightColor borderRightStyle borderRightWidth borderSpacing borderTopColor borderTopStyle borderTopWidth bottom clip color fontSize fontWeight height left letterSpacing lineHeight marginBottom marginLeft marginRight marginTop markerOffset maxHeight maxWidth minHeight minWidth opacity outlineColor outlineOffset outlineWidth paddingBottom paddingLeft paddingRight paddingTop right textIndent top width wordSpacing zIndex");Element.CSS_LENGTH=/^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/;String.__parseStyleElement=document.createElement("div");String.prototype.parseStyle=function(){var style,styleRules=$H();if(Prototype.Browser.WebKit){style=new Element("div",{style:this}).style;}else{String.__parseStyleElement.innerHTML='<div style="'+this+'"></div>';style=String.__parseStyleElement.childNodes[0].style;}Element.CSS_PROPERTIES.each(function(property){if(style[property]){styleRules.set(property,style[property]);}});if(Prototype.Browser.IE&&this.include("opacity")){styleRules.set("opacity",this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1]);}return styleRules;};if(document.defaultView&&document.defaultView.getComputedStyle){Element.getStyles=function(element){var css=document.defaultView.getComputedStyle($(element),null);return Element.CSS_PROPERTIES.inject({},function(styles,property){styles[property]=css[property];return styles;});};}else{Element.getStyles=function(element){element=$(element);var css=element.currentStyle,styles;styles=Element.CSS_PROPERTIES.inject({},function(results,property){results[property]=css[property];return results;});if(!styles.opacity){styles.opacity=element.getOpacity();}return styles;};}Effect.Methods={morph:function(element,style){element=$(element);new Effect.Morph(element,Object.extend({style:style},arguments[2]||{}));return element;},visualEffect:function(element,effect,options){element=$(element);var s=effect.dasherize().camelize(),klass=s.charAt(0).toUpperCase()+s.substring(1);new Effect[klass](element,options);return element;},highlight:function(element,options){element=$(element);new Effect.Highlight(element,options);return element;}};$w("fade appear grow shrink fold blindUp blindDown slideUp slideDown pulsate shake puff squish switchOff dropOut").each(function(effect){Effect.Methods[effect]=function(element,options){element=$(element);Effect[effect.charAt(0).toUpperCase()+effect.substring(1)](element,options);return element;};});$w("getInlineOpacity forceRerendering setContentZoom collectTextNodes collectTextNodesIgnoreClass getStyles").each(function(f){Effect.Methods[f]=Element[f];});Element.addMethods(Effect.Methods);
