(function(){if(typeof Spry=="undefined"||!Spry.Widget||!Spry.Widget.Base){alert("SpryPanelSelector.js requires SpryWidget.js!");return}Spry.Widget.PanelSelector=function(elements,panel,opts){Spry.Widget.Base.call(this);this.buttons=Spry.$$(elements);this.panel=panel;this.disablePanelCallbacks=0;this.currentButton=null;this.setOptions(this,Spry.Widget.PanelSelector.config);this.setOptions(this,opts);if(typeof(this.defaultButton)=="number"){if(this.defaultButton<0)this.defaultButton=0;else{var count=this.getButtonCount();if(this.defaultButton>=count)this.defaultButton=(count>1)?(count-1):0}}this.attachBehaviors()};Spry.Widget.PanelSelector.config={event:"click",defaultButton:0,selectionStopsSlideShow:true,useHrefs:false,selectedClass:"PanelSelectorButtonSelected",unselectedClass:"PanelSelectorButtonUnselected",downClass:"PanelSelectorButtonDown",disabledClass:"PanelSelectorButtonDisabled",hoverClass:"PanelSelectorButtonHover",focusedClass:"PanelSelectorButtonFocused"};Spry.Widget.PanelSelector.prototype=new Spry.Widget.Base();Spry.Widget.PanelSelector.prototype.constructor=Spry.Widget.PanelSelector;Spry.Widget.PanelSelector.prototype.getPanelIDFromHREF=function(ele){if(ele){var href=ele.getAttribute("href");if(href!=undefined&&href.search(/^#\w/)!=-1)return href.replace(/.*#/,"#")}return null};Spry.Widget.PanelSelector.prototype.getButtonCount=function(){return this.buttons.length};Spry.Widget.PanelSelector.prototype.getCurrentButton=function(){return this.currentButton};Spry.Widget.PanelSelector.prototype.getCurrentButtonIndex=function(){return this.elementToIndex(this.getCurrentButton())};Spry.Widget.PanelSelector.prototype.elementToIndex=function(ele){var ea=this.buttons;var n=ea.length;for(var i=0;i<n;i++)if(ea[i]==ele)return i;return-1};Spry.Widget.PanelSelector.prototype.indexToElement=function(eleOrIndex){return(typeof eleOrIndex=="number")?this.buttons[eleOrIndex]:eleOrIndex};Spry.Widget.PanelSelector.prototype.enableButton=function(eleOrIndex){var ele=this.indexToElement(eleOrIndex);if(ele&&ele.psButton)ele.psButton.enable()};Spry.Widget.PanelSelector.prototype.disableButton=function(eleOrIndex){var ele=this.indexToElement(eleOrIndex);if(ele&&ele.psButton)ele.psButton.disable()};Spry.Widget.PanelSelector.prototype.focusButton=function(eleOrIndex){var ele=this.indexToElement(eleOrIndex);if(ele&&ele.psButton)ele.psButton.focus()};Spry.Widget.PanelSelector.prototype.selectButton=function(eleOrIndex,suppressPanelSync){++this.disablePanelCallbacks;var buttons=this.buttons;var ele=this.indexToElement(eleOrIndex);for(var i=0;i<buttons.length;i++){var e=buttons[i];this.removeClassName(e,(e==ele)?this.unselectedClass:this.selectedClass);this.addClassName(e,(e==ele)?this.selectedClass:this.unselectedClass)}this.currentButton=ele;if(!suppressPanelSync&&this.panel){var href=this.useHrefs?this.getPanelIDFromHREF(ele):null;this.panel.showPanel(href?href:this.elementToIndex(ele))}--this.disablePanelCallbacks};Spry.Widget.PanelSelector.prototype.selectPreviousButton=function(){var evt=new Spry.Widget.Event(this);this.notifyObservers("onPrePanelSelectorSelectPreviousButton",evt);if(!evt.performDefaultAction)return;var curIndex=this.getCurrentButtonIndex();this.handleActivate(((curIndex<1)?this.getButtonCount():curIndex)-1);this.notifyObservers("onPostPanelSelectorSelectPreviousButton",evt)};Spry.Widget.PanelSelector.prototype.selectNextButton=function(){var evt=new Spry.Widget.Event(this);this.notifyObservers("onPrePanelSelectorSelectNextButton",evt);if(!evt.performDefaultAction)return;this.handleActivate((this.getCurrentButtonIndex()+1)%this.getButtonCount());this.notifyObservers("onPostPanelSelectorSelectNextButton",evt)};Spry.Widget.PanelSelector.prototype.selectFirstButton=function(){var evt=new Spry.Widget.Event(this);this.notifyObservers("onPrePanelSelectorSelectFirstButton",evt);if(!evt.performDefaultAction)return;this.handleActivate(0);this.notifyObservers("onPostPanelSelectorSelectFirstButton",evt)};Spry.Widget.PanelSelector.prototype.selectLastButton=function(){var evt=new Spry.Widget.Event(this);this.notifyObservers("onPrePanelSelectorSelectLastButton",evt);if(!evt.performDefaultAction)return;var count=this.getButtonCount();this.handleActivate(count>0?count-1:0);this.notifyObservers("onPostPanelSelectorSelectLastButton",evt)};Spry.Widget.PanelSelector.prototype.handleActivate=function(ele){if(typeof ele=="string")ele=document.getElementById(ele);var evt=new Spry.Widget.Event(this,{target:ele,targetIndex:this.elementToIndex(ele)});this.notifyObservers("onPrePanelSelectorClick",evt);if(!evt.performDefaultAction)return;if(this.selectionStopsSlideShow&&this.panel)this.panel.stop();this.selectButton(ele);this.notifyObservers("onPostPanelSelectorClick",evt)};Spry.Widget.PanelSelector.prototype.handlePanelChange=function(data){if(this.disablePanelCallbacks)return;var panelEle=data.target;var panelIndex=data.targetIndex;if(!this.panel)return;var panelID=panelEle.id;var btns=this.buttons;var btn=btns[panelIndex];if(panelID){for(var i=0;!btn&&i<btns.length;i++){var b=btns[i];var id=this.getPanelIDFromHREF(b);if(id==panelID){btn=b;break}}}if(btn)this.selectButton(btn,true)};Spry.Widget.PanelSelector.prototype.attachButtonBehaviors=function(ele){var self=this;var activateFunc=function(e){self.handleActivate(ele);return false};ele.psButton=new Spry.Widget.Button(ele,{onclick:activateFunc,downClass:this.downClass,hoverClass:this.hoverClass,disabledClass:this.disabledClass,focusedClass:this.focusedClass});if(this.event!="click")this.addEventListener(ele,this.event,activateFunc,false)};Spry.Widget.PanelSelector.prototype.attachBehaviors=function(){var self=this;var buttons=this.buttons;for(var i=0;i<buttons.length;i++)this.attachButtonBehaviors(buttons[i]);if(this.panel)this.panel.addObserver({onPostShowPanel:function(n,data){self.handlePanelChange(data)}});this.selectButton(this.defaultButton)}})();
