JAMLite.widgets.Tabset=Class.create();JAMLite.widgets.Tabset.prototype={config:{},activeTabIndex:null,getNavItems:function(){return this.DOM.navList.childElements()},getPanels:function(){return this.DOM.tabset.childElements().findAll(function(ce){return ce.hasClassName(this.config.classNames.panelElement)}.bind(this))},getActiveIndex:function(){var i=-1;var found=this.DOM.navItems.find(function(tab){i++;return tab.hasClassName(this.config.classNames.activeTab)}.bind(this));if(found){return i}else{return -1}},setTabInterface:function(){this.DOM.tabset.addClassName(this.config.classNames.activeTabset);this.DOM.navList=this.DOM.tabset.down(this.config.selectors.navList);this.DOM.navItems=this.getNavItems();this.DOM.panels=this.getPanels();if(this.DOM.navItems.length<1){return }this.activeTabIndex=this.getActiveIndex();if(this.activeTabIndex==-1){this.activeTabIndex=0}this.setActiveTab(this.activeTabIndex);this.DOM.panels.each(function(panel){if(panel!=this.DOM.panels[this.activeTabIndex]){panel.addClassName(this.config.classNames.inactivePanel)}}.bind(this));var j=0;this.DOM.navItems.each(function(ni){ni.writeAttribute("navIndex",j);++j}.bind(this));this.setSwitchEvent()},setActiveTab:function(newIndex){this.DOM.panels[this.activeTabIndex].addClassName(this.config.classNames.inactivePanel);this.DOM.panels[newIndex].removeClassName(this.config.classNames.inactivePanel);this.toggleActiveNode(this.DOM.navItems,this.activeTabIndex,newIndex,this.config.classNames.activeTab);this.toggleActiveNode(this.DOM.panels,this.activeTabIndex,newIndex,this.config.classNames.activePanel);this.activeTabIndex=newIndex},toggleActiveNode:function(nodes,currentIndex,newIndex,className){var currentNode=$(nodes[currentIndex]);var newNode=$(nodes[newIndex]);if(currentIndex>=0){currentNode.removeClassName(className)}newNode.addClassName(className);return newNode},setSwitchEvent:function(){this.DOM.navItems.each(function(tab){tab.observe("click",this.setSwitch.bindAsEventListener(this))}.bind(this))},setSwitch:function(event){var indexElement=event.element().up(this.config.selectors.navItem).readAttribute(this.config.navIndexAttr);this.setActiveTab(indexElement);Event.stop(event)},initialize:function(container,config){this.config=Object.extend(this.config,config);if(container==null){JAMLite.throwException("JAMLite.widgets.tabset(): please supply a container to the tabs constructor.")}this.DOM={tabset:null,navList:null,navItems:null,panels:null};this.DOM.tabset=$(container);this.setTabInterface()}};
