var TabSwapper=new Class({options:{selectedClass:"tabSelected",mouseoverClass:"tabOver",deselectedClass:"",rearrangeDOM:true,initPanel:0,smooth:false,smoothSize:false,maxSize:null,effectOptions:{duration:500},cookieName:null,cookieDays:999,onActive:Class.empty,onActiveAfterFx:Class.empty,onBackground:Class.empty},initialize:function(A){this.tabs=[];this.sections=[];this.clickers=[];this.sectionFx=[];A=this.compatability(A);this.setOptions(A);this.setup();if(this.options.cookieName&&this.recall()){this.swap(this.recall().toInt())}else{this.swap(this.options.initPanel)}},compatability:function(A){if(A.tabSelector){A.tabs=$$(A.tabSelector);A.sections=$$(A.sectionSelector);A.clickers=$$(A.clickSelector)}return A},setup:function(){var A=this.options;sections=$$(A.sections);tabs=$$(A.tabs);clickers=$$(A.clickers);tabs.each(function(C,B){this.addTab(C,sections[B],clickers[B],B)},this)},addTab:function(C,D,A,B){C=$(C);A=$(A);D=$(D);if(this.tabs.indexOf(C)>=0&&C.getProperty("tabbered")&&this.tabs.indexOf(C)!=B&&this.options.rearrangeDOM){this.moveTab(this.tabs.indexOf(C),B);return }if(!$defined(B)){B=this.tabs.length}if(B>0&&this.tabs[B-1]&&this.options.rearrangeDOM){C.injectAfter(this.tabs[B-1]);D.injectAfter(this.sections[B-1])}this.tabs.splice(B,0,C);this.sections.splice(B,0,D);A=A||C;this.clickers.splice(B,0,A);C.addEvent("mouseout",function(){C.removeClass(this.options.mouseoverClass)}.bind(this)).addEvent("mouseover",function(){C.addClass(this.options.mouseoverClass)}.bind(this));A.addEvent("click",function(){this.swap(this.clickers.indexOf(A))}.bind(this));C.setProperty("tabbered",true);this.hideSection(B);return },removeTab:function(B){var A=this.tabs[this.now];if(this.now==B){if(B>0){this.swap(B-1)}else{if(B<this.tabs.length){this.swap(B+1)}}}this.sections.splice(B,1);this.tabs.splice(B,1);this.clickers.splice(B,1);this.sectionFx.splice(B,1);this.now=this.tabs.indexOf(A)},moveTab:function(H,G){var C=this.tabs[H];var B=this.clickers[H];var E=this.sections[H];var A=this.tabs[G];var F=this.clickers[G];var D=this.sections[G];this.tabs.remove(C).splice(G,0,C);this.clickers.remove(B).splice(G,0,B);this.sections.remove(E).splice(G,0,E);C.injectBefore(A);B.injectBefore(F);E.injectBefore(D)},swap:function(A){if(!$chk(this.now)){this.sections.each(function(C,B){if(A!=B){this.hideSection(B)}},this)}this.showSection(A);this.save(A)},save:function(A){if(this.options.cookieName){Cookie.set(this.options.cookieName,A,{duration:this.options.cookieDays})}},recall:function(){return(this.options.cookieName)?$pick(Cookie.get(this.options.cookieName),false):false},hideSection:function(A){if(this.sections[A].getStyle("display")!="none"){this.lastHeight=this.sections[A].getSize().size.y;this.sections[A].setStyle("display","none");this.tabs[A].removeClass(this.options.selectedClass+A).removeClass(this.options.selectedClass).addClass(this.options.deselectedClass).addClass(this.options.deselectedClass+A);this.fireEvent("onBackground",[A,this.sections[A],this.tabs[A]])}},showSection:function(A){var B=this.sections[A];if(!B){return this}if(!window.ie6){var E=this.options.smooth&&(!window.ie6||(window.ie6&&B.fxOpacityOk()))}else{var E=false}if(this.now!=A){if(!this.sectionFx[A]){this.sectionFx[A]=this.sections[A].effects(this.options.effectOptions)}var F={display:"block",overflow:"hidden"};if(E){F.opacity=0}var D=false;if(E){D={opacity:1}}else{if(B.getStyle("opacity")<1){this.sectionFx[A].set({opacity:1});if(!this.options.smoothSize){this.fireEvent("onActiveAfterFx",[A,this.sections[A],this.tabs[A]])}}}if(this.options.smoothSize){var C=B.getDimensions().height;if($chk(this.options.maxSize)&&this.options.maxSize<C){C=this.options.maxSize}if(!D){D={}}D.height=C}if($chk(this.now)){this.hideSection(this.now)}if(this.options.smoothSize&&this.lastHeight){F.height=this.lastHeight}B.setStyles(F);if(D){this.sectionFx[A].start(D).chain(function(){this.fireEvent("onActiveAfterFx",[A,this.sections[A],this.tabs[A]]);B.setStyle("height","auto")}.bind(this))}this.now=A;this.fireEvent("onActive",[A,this.sections[A],this.tabs[A]])}this.tabs[A].addClass(this.options.selectedClass).addClass(this.options.selectedClass+A).removeClass(this.options.deselectedClass).removeClass(this.options.deselectedClass+A);return this}});TabSwapper.implement(new Options);TabSwapper.implement(new Events);var tabSwapper=TabSwapper;
