var Spry;if(!Spry){Spry={}}if(!Spry.Widget){Spry.Widget={}}Spry.Widget.CollapsiblePanel=function(A,B){this.init(A);Spry.Widget.CollapsiblePanel.setOptions(this,B);this.attachBehaviors()};Spry.Widget.CollapsiblePanel.prototype.init=function(A){this.element=this.getElement(A);this.focusElement=null;this.hoverClass="CollapsiblePanelTabHover";this.openClass="CollapsiblePanelOpen";this.closedClass="CollapsiblePanelClosed";this.focusedClass="CollapsiblePanelFocused";this.enableAnimation=true;this.enableKeyboardNavigation=true;this.animator=null;this.hasFocus=false;this.contentIsOpen=true};Spry.Widget.CollapsiblePanel.prototype.getElement=function(A){if(A&&typeof A=="string"){return document.getElementById(A)}return A};Spry.Widget.CollapsiblePanel.prototype.addClassName=function(B,A){if(!B||!A||(B.className&&B.className.search(new RegExp("\\b"+A+"\\b"))!=-1)){return}B.className+=(B.className?" ":"")+A};Spry.Widget.CollapsiblePanel.prototype.removeClassName=function(B,A){if(!B||!A||(B.className&&B.className.search(new RegExp("\\b"+A+"\\b"))==-1)){return}B.className=B.className.replace(new RegExp("\\s*\\b"+A+"\\b","g"),"")};Spry.Widget.CollapsiblePanel.prototype.hasClassName=function(B,A){if(!B||!A||!B.className||B.className.search(new RegExp("\\b"+A+"\\b"))==-1){return false}return true};Spry.Widget.CollapsiblePanel.prototype.setDisplay=function(A,B){if(A){A.style.display=B}};Spry.Widget.CollapsiblePanel.setOptions=function(D,C,A){if(!C){return}for(var B in C){if(A&&C[B]==undefined){continue}D[B]=C[B]}};Spry.Widget.CollapsiblePanel.prototype.onTabMouseOver=function(){this.addClassName(this.getTab(),this.hoverClass)};Spry.Widget.CollapsiblePanel.prototype.onTabMouseOut=function(){this.removeClassName(this.getTab(),this.hoverClass)};Spry.Widget.CollapsiblePanel.prototype.open=function(){this.contentIsOpen=true;if(this.enableAnimation){if(this.animator){this.animator.stop()}this.animator=new Spry.Widget.CollapsiblePanel.PanelAnimator(this,true);this.animator.start()}else{this.setDisplay(this.getContent(),"block")}this.removeClassName(this.element,this.closedClass);this.addClassName(this.element,this.openClass)};Spry.Widget.CollapsiblePanel.prototype.close=function(){this.contentIsOpen=false;if(this.enableAnimation){if(this.animator){this.animator.stop()}this.animator=new Spry.Widget.CollapsiblePanel.PanelAnimator(this,false);this.animator.start()}else{this.setDisplay(this.getContent(),"none")}this.removeClassName(this.element,this.openClass);this.addClassName(this.element,this.closedClass)};Spry.Widget.CollapsiblePanel.prototype.onTabClick=function(){if(this.isOpen()){this.close()}else{this.open()}this.focus()};Spry.Widget.CollapsiblePanel.prototype.onFocus=function(A){this.hasFocus=true;this.addClassName(this.element,this.focusedClass)};Spry.Widget.CollapsiblePanel.prototype.onBlur=function(A){this.hasFocus=false;this.removeClassName(this.element,this.focusedClass)};Spry.Widget.CollapsiblePanel.ENTER_KEY=13;Spry.Widget.CollapsiblePanel.SPACE_KEY=32;Spry.Widget.CollapsiblePanel.prototype.onKeyDown=function(B){var A=B.keyCode;if(!this.hasFocus||(A!=Spry.Widget.CollapsiblePanel.ENTER_KEY&&A!=Spry.Widget.CollapsiblePanel.SPACE_KEY)){return true}if(this.isOpen()){this.close()}else{this.open()}if(B.stopPropagation){B.stopPropagation()}if(B.preventDefault){B.preventDefault()}return false};Spry.Widget.CollapsiblePanel.prototype.attachPanelHandlers=function(){var C=this.getTab();if(!C){return}var B=this;Spry.Widget.CollapsiblePanel.addEventListener(C,"click",function(E){return B.onTabClick()},false);Spry.Widget.CollapsiblePanel.addEventListener(C,"mouseover",function(E){return B.onTabMouseOver()},false);Spry.Widget.CollapsiblePanel.addEventListener(C,"mouseout",function(E){return B.onTabMouseOut()},false);if(this.enableKeyboardNavigation){var D=null;var A=null;this.preorderTraversal(C,function(E){if(E.nodeType==1){var F=C.attributes.getNamedItem("tabindex");if(F){D=E;return true}if(!A&&E.nodeName.toLowerCase()=="a"){A=E}}return false});if(D){this.focusElement=D}else{if(A){this.focusElement=A}}if(this.focusElement){Spry.Widget.CollapsiblePanel.addEventListener(this.focusElement,"focus",function(E){return B.onFocus(E)},false);Spry.Widget.CollapsiblePanel.addEventListener(this.focusElement,"blur",function(E){return B.onBlur(E)},false);Spry.Widget.CollapsiblePanel.addEventListener(this.focusElement,"keydown",function(E){return B.onKeyDown(E)},false)}}};Spry.Widget.CollapsiblePanel.addEventListener=function(C,B,D,A){try{if(C.addEventListener){C.addEventListener(B,D,A)}else{if(C.attachEvent){C.attachEvent("on"+B,D)}}}catch(E){}};Spry.Widget.CollapsiblePanel.prototype.preorderTraversal=function(A,B){var D=false;if(A){D=B(A);if(A.hasChildNodes()){var E=A.firstChild;while(!D&&E){D=this.preorderTraversal(E,B);try{E=E.nextSibling}catch(C){E=null}}}}return D};Spry.Widget.CollapsiblePanel.prototype.attachBehaviors=function(){var A=this.element;var B=this.getTab();var C=this.getContent();if(this.contentIsOpen||this.hasClassName(A,this.openClass)){this.removeClassName(A,this.closedClass);this.setDisplay(C,"block");this.contentIsOpen=true}else{this.removeClassName(A,this.openClass);this.addClassName(A,this.closedClass);this.setDisplay(C,"none");this.contentIsOpen=false}this.attachPanelHandlers()};Spry.Widget.CollapsiblePanel.prototype.getTab=function(){return this.getElementChildren(this.element)[0]};Spry.Widget.CollapsiblePanel.prototype.getContent=function(){return this.getElementChildren(this.element)[1]};Spry.Widget.CollapsiblePanel.prototype.isOpen=function(){return this.contentIsOpen};Spry.Widget.CollapsiblePanel.prototype.getElementChildren=function(B){var A=[];var C=B.firstChild;while(C){if(C.nodeType==1){A.push(C)}C=C.nextSibling}return A};Spry.Widget.CollapsiblePanel.prototype.focus=function(){if(this.focusElement&&this.focusElement.focus){this.focusElement.focus()}};Spry.Widget.CollapsiblePanel.PanelAnimator=function(A,C,B){this.timer=null;this.interval=0;this.stepCount=0;this.fps=0;this.steps=10;this.duration=1;this.onComplete=null;this.panel=A;this.content=A.getContent();this.panelData=[];this.doOpen=C;Spry.Widget.CollapsiblePanel.setOptions(this,B);if(this.fps>0){this.interval=Math.floor(1000/this.fps);this.steps=parseInt((this.duration+(this.interval-1))/this.interval)}else{if(this.steps>0){this.interval=this.duration/this.steps}}var E=this.content;var D=E.offsetHeight?E.offsetHeight:0;if(C&&E.style.display=="none"){this.fromHeight=0}else{this.fromHeight=D}if(!C){this.toHeight=0}else{if(E.style.display=="none"){E.style.visibility="hidden";E.style.display="block"}E.style.height="";this.toHeight=E.offsetHeight}this.increment=(this.toHeight-this.fromHeight)/this.steps;this.overflow=E.style.overflow;E.style.height=this.fromHeight+"px";E.style.visibility="visible";E.style.overflow="hidden";E.style.display="block"};Spry.Widget.CollapsiblePanel.PanelAnimator.prototype.start=function(){var A=this;this.timer=setTimeout(function(){A.stepAnimation()},this.interval)};Spry.Widget.CollapsiblePanel.PanelAnimator.prototype.stop=function(){if(this.timer){clearTimeout(this.timer);if(this.stepCount<this.steps){this.content.style.overflow=this.overflow}}this.timer=null};Spry.Widget.CollapsiblePanel.PanelAnimator.prototype.stepAnimation=function(){++this.stepCount;this.animate();if(this.stepCount<this.steps){this.start()}else{if(this.onComplete){this.onComplete()}}};Spry.Widget.CollapsiblePanel.PanelAnimator.prototype.animate=function(){if(this.stepCount>=this.steps){if(!this.doOpen){this.content.style.display="none"}this.content.style.overflow=this.overflow;this.content.style.height=this.toHeight+"px"}else{this.fromHeight+=this.increment;this.content.style.height=this.fromHeight+"px"}};