(function(){if(typeof Spry=="undefined"||!Spry.Widget||!Spry.Widget.Base)
{alert("SpryPanelSet.js requires SpryWidget.js!");return;}
Spry.Widget.PanelSet=function(elements,opts)
{Spry.Widget.Base.call(this);this.elements=elements?Spry.$$(elements):[];this.currentPanel=null;this.displayTimerID=0;this.setOptions(this,Spry.Widget.PanelSet.config);this.setOptions(this,opts);if(typeof(this.defaultPanel)=="number")
{if(this.defaultPanel<0)
this.defaultPanel=0;else
{var count=this.getPanelCount();if(this.defaultPanel>=count)
this.defaultPanel=(count>1)?(count-1):0;}}
this.initialize();};Spry.Widget.PanelSet.prototype=new Spry.Widget.Base();Spry.Widget.PanelSet.prototype.constructor=Spry.Widget.PanelSet;Spry.Widget.PanelSet.config={defaultPanel:0,autoPlay:false,displayInterval:4000,visibleClass:"PanelVisible",hiddenClass:"PanelHidden"}
Spry.Widget.PanelSet.prototype.initialize=function()
{var evt=new Spry.Widget.Event(this);this.notifyObservers("onPreInitialize",evt);if(!evt.performDefaultAction)
return;this.defaultPanel=this.indexToElement(this.defaultPanel);var panels=this.getPanels();for(var i=0;i<panels.length;i++)
{var ele=panels[i];var addClass=this.hiddenClass;var removeClass=this.visibleClass;if(ele==this.defaultPanel)
{addClass=this.visibleClass;removeClass=this.hiddenClass;this.currentPanel=this.defaultPanel;}
Spry.Utils.addClassName(ele,addClass);Spry.Utils.removeClassName(ele,removeClass);}
if(this.autoPlay)
this.play();this.notifyObservers("onPostInitialize",evt);};Spry.Widget.PanelSet.prototype.getPanels=function()
{return this.elements.slice(0);};Spry.Widget.PanelSet.prototype.getPanelCount=function()
{return this.getPanels().length;};Spry.Widget.PanelSet.prototype.getCurrentPanel=function()
{return this.currentPanel;};Spry.Widget.PanelSet.prototype.getCurrentPanelIndex=function()
{return this.getPanelIndex(this.getCurrentPanel());};Spry.Widget.PanelSet.prototype.getPanelIndex=function(panel)
{var panels=this.getPanels();for(var i=0;i<panels.length;i++)
{if(panel==panels[i])
return i;}
return-1;};Spry.Widget.PanelSet.prototype.getPanel=function(panelIndex)
{return this.getPanels()[panelIndex];};Spry.Widget.PanelSet.prototype.indexToElement=function(eleOrIndex)
{if(typeof eleOrIndex=="number")
return this.getPanels()[eleOrIndex];return eleOrIndex?Spry.$$(eleOrIndex)[0]:eleOrIndex;};Spry.Widget.PanelSet.prototype.elementToIndex=function(eleOrIndex)
{var panels=this.getPanels();if(typeof eleOrIndex=="number")
return panels[eleOrIndex];if(typeof eleOrIndex=="string")
eleOrIndex=Spry.$$(eleOrIndex)[0];return!eleOrIndex?-1:panels.indexOf(eleOrIndex);};Spry.Widget.PanelSet.prototype.createEvent=function(target,opts)
{var eopts={target:target,targetIndex:this.getPanelIndex(target)};return new Spry.Widget.Event(this,this.setOptions(eopts,opts));};Spry.Widget.PanelSet.prototype.showPanel=function(eleOrIndex)
{var ele=this.indexToElement(eleOrIndex);if(ele&&ele!=this.currentPanel)
{var evt=this.createEvent(ele,{currentPanel:this.currentPanel});this.notifyObservers("onPreShowPanel",evt);if(evt.performDefaultAction)
{if(this.currentPanel)
this.hidePanel(this.currentPanel);this.currentPanel=ele;Spry.Utils.addClassName(ele,this.visibleClass);Spry.Utils.removeClassName(ele,this.hiddenClass);this.notifyObservers("onPostShowPanel",evt);}}};Spry.Widget.PanelSet.prototype.hidePanel=function(eleOrIndex)
{var evt=this.createEvent(this.currentPanel);this.notifyObservers("onPreHidePanel",evt);if(evt.performDefaultAction)
{var ele=this.currentPanel;Spry.Utils.addClassName(ele,this.hiddenClass);Spry.Utils.removeClassName(ele,this.visibleClass);this.currentPanel=null;this.notifyObservers("onPostHidePanel",evt);}};Spry.Widget.PanelSet.prototype.showPreviousPanel=function()
{var evt=new Spry.Widget.Event(this);this.notifyObservers("onPreShowPreviousPanel",evt);if(!evt.performDefaultAction)
return;var curIndex=this.getCurrentPanelIndex();this.showPanel(((curIndex<1)?this.getPanelCount():curIndex)-1);this.notifyObservers("onPostShowPreviousPanel",evt);};Spry.Widget.PanelSet.prototype.showNextPanel=function()
{var evt=new Spry.Widget.Event(this);this.notifyObservers("onPreShowNextPanel",evt);if(!evt.performDefaultAction)
return;this.showPanel((this.getCurrentPanelIndex()+1)%this.getPanelCount());this.notifyObservers("onPostShowNextPanel",evt);};Spry.Widget.PanelSet.prototype.showFirstPanel=function()
{var evt=new Spry.Widget.Event(this);this.notifyObservers("onPreShowFirstPanel",evt);if(!evt.performDefaultAction)
return;this.showPanel(0);this.notifyObservers("onPostShowFirstPanel",evt);};Spry.Widget.PanelSet.prototype.showLastPanel=function()
{var evt=new Spry.Widget.Event(this);this.notifyObservers("onPreShowLastPanel",evt);if(!evt.performDefaultAction)
return;var count=this.getPanelCount();this.showPanel(count>0?count-1:0);this.notifyObservers("onPostShowLastPanel",evt);};Spry.Widget.PanelSet.prototype.startTimer=function()
{this.stopTimer();var self=this;this.displayTimerID=setTimeout(function(){self.showNextPanel();self.startTimer();},this.displayInterval);};Spry.Widget.PanelSet.prototype.stopTimer=function()
{if(this.displayTimerID)
clearTimeout(this.displayTimerID);this.displayTimerID=0;};Spry.Widget.PanelSet.prototype.isPlaying=function()
{return this.displayTimerID!=0;};Spry.Widget.PanelSet.prototype.play=function()
{var evt=new Spry.Widget.Event(this);this.notifyObservers("onPreStartSlideShowMode",evt);if(!evt.performDefaultAction)
return;this.startTimer();this.notifyObservers("onPostStartSlideShowMode",evt);};Spry.Widget.PanelSet.prototype.stop=function()
{var evt=new Spry.Widget.Event(this);this.notifyObservers("onPreStopSlideShowMode",evt);if(!evt.performDefaultAction)
return;this.stopTimer();this.notifyObservers("onPostStopSlideShowMode",evt);};})();
