﻿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(a,b){if(!a||!b||a.className&&a.className.search(new RegExp("\\b"+b+"\\b"))!=-1)return;a.className+=(a.className?" ":"")+b};Spry.Widget.CollapsiblePanel.prototype.removeClassName=function(a,b){if(!a||!b||a.className&&a.className.search(new RegExp("\\b"+b+"\\b"))==-1)return;a.className=a.className.replace(new RegExp("\\s*\\b"+b+"\\b","g"),"")};Spry.Widget.CollapsiblePanel.prototype.hasClassName=function(a,b){if(!a||!b||!a.className||a.className.search(new RegExp("\\b"+b+"\\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,a,c){if(!a)return;for(var b in a){if(c&&a[b]==undefined)continue;d[b]=a[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(){this.hasFocus=true;this.addClassName(this.element,this.focusedClass)};Spry.Widget.CollapsiblePanel.prototype.onBlur=function(){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(a){var b=a.keyCode;if(!this.hasFocus||b!=Spry.Widget.CollapsiblePanel.ENTER_KEY&&b!=Spry.Widget.CollapsiblePanel.SPACE_KEY)return true;if(this.isOpen())this.close();else this.open();if(a.stopPropagation)a.stopPropagation();if(a.preventDefault)a.preventDefault();return false};Spry.Widget.CollapsiblePanel.prototype.attachPanelHandlers=function(){var b=this.getTab();if(!b)return;var a=this;Spry.Widget.CollapsiblePanel.addEventListener(b,"click",function(){return a.onTabClick()},false);Spry.Widget.CollapsiblePanel.addEventListener(b,"mouseover",function(){return a.onTabMouseOver()},false);Spry.Widget.CollapsiblePanel.addEventListener(b,"mouseout",function(){return a.onTabMouseOut()},false);if(this.enableKeyboardNavigation){var d=null,c=null;this.preorderTraversal(b,function(a){if(a.nodeType==1){var e=b.attributes.getNamedItem("tabindex");if(e){d=a;return true}if(!c&&a.nodeName.toLowerCase()=="a")c=a}return false});if(d)this.focusElement=d;else if(c)this.focusElement=c;if(this.focusElement){Spry.Widget.CollapsiblePanel.addEventListener(this.focusElement,"focus",function(b){return a.onFocus(b)},false);Spry.Widget.CollapsiblePanel.addEventListener(this.focusElement,"blur",function(b){return a.onBlur(b)},false);Spry.Widget.CollapsiblePanel.addEventListener(this.focusElement,"keydown",function(b){return a.onKeyDown(b)},false)}}};Spry.Widget.CollapsiblePanel.addEventListener=function(a,b,c,d){try{if(a.addEventListener)a.addEventListener(b,c,d);else if(a.attachEvent)a.attachEvent("on"+b,c)}catch(e){}};Spry.Widget.CollapsiblePanel.prototype.preorderTraversal=function(c,d){var b=false;if(c){b=d(c);if(c.hasChildNodes()){var a=c.firstChild;while(!b&&a){b=this.preorderTraversal(a,d);try{a=a.nextSibling}catch(e){a=null}}}}return b};Spry.Widget.CollapsiblePanel.prototype.attachBehaviors=function(){var a=this.element,c=this.getTab(),b=this.getContent();if(this.contentIsOpen||this.hasClassName(a,this.openClass)){this.removeClassName(a,this.closedClass);this.setDisplay(b,"block");this.contentIsOpen=true}else{this.removeClassName(a,this.openClass);this.addClassName(a,this.closedClass);this.setDisplay(b,"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(c){var b=[],a=c.firstChild;while(a){if(a.nodeType==1)b.push(a);a=a.nextSibling}return b};Spry.Widget.CollapsiblePanel.prototype.focus=function(){if(this.focusElement&&this.focusElement.focus)this.focusElement.focus()};Spry.Widget.CollapsiblePanel.PanelAnimator=function(c,b,e){this.timer=null;this.interval=0;this.stepCount=0;this.fps=0;this.steps=10;this.duration=500;this.onComplete=null;this.panel=c;this.content=c.getContent();this.panelData=[];this.doOpen=b;Spry.Widget.CollapsiblePanel.setOptions(this,e);if(this.fps>0){this.interval=Math.floor(1e3/this.fps);this.steps=parseInt((this.duration+(this.interval-1))/this.interval)}else if(this.steps>0)this.interval=this.duration/this.steps;var a=this.content,d=a.offsetHeight?a.offsetHeight:0;if(b&&a.style.display=="none")this.fromHeight=0;else this.fromHeight=d;if(!b)this.toHeight=0;else{if(a.style.display=="none"){a.style.visibility="hidden";a.style.display="block"}a.style.height="";this.toHeight=a.offsetHeight}this.increment=(this.toHeight-this.fromHeight)/this.steps;this.overflow=a.style.overflow;a.style.height=this.fromHeight+"px";a.style.visibility="visible";a.style.overflow="hidden";a.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"}}