if(typeof Control=="undefined")var Control={};Control.Tabs=Class.create();Object.extend(Control.Tabs,{instances:[],findByTabId:function(a){return Control.Tabs.instances.find(function(b){return b.links.find(function(c){return c.key==a})})}}); Object.extend(Control.Tabs.prototype,{initialize:function(a,b){this.activeLink=this.activeContainer=false;this.containers=$H({});this.links=[];Control.Tabs.instances.push(this);this.options={beforeChange:Prototype.emptyFunction,afterChange:Prototype.emptyFunction,hover:false,linkSelector:"li a",setClassOnContainer:false,activeClassName:"active",defaultTab:"first",autoLinkExternal:true,targetRegExp:/#(.+)$/,showFunction:Element.show,hideFunction:Element.hide};Object.extend(this.options,b||{});(typeof(this.options.linkSelector== "string")?$(a).getElementsBySelector(this.options.linkSelector):this.options.linkSelector($(a))).findAll(function(c){return/^#/.exec(c.href.replace(window.location.href.split("#")[0],""))}).each(function(c){this.addTab(c)}.bind(this));this.containers.values().each(this.options.hideFunction);if(this.options.defaultTab=="first")this.setActiveTab(this.links.first());else this.options.defaultTab=="last"?this.setActiveTab(this.links.last()):this.setActiveTab(this.options.defaultTab);(a=this.options.targetRegExp.exec(window.location))&& a[1]&&a[1].split(",").each(function(c){this.links.each(function(d,e){if(e.key==d){this.setActiveTab(e);throw $break;}}.bind(this,c))}.bind(this));this.options.autoLinkExternal&&$A(document.getElementsByTagName("a")).each(function(c){if(!this.links.include(c)){var d=c.href.replace(window.location.href.split("#")[0],"");d.substring(0,1)=="#"&&this.containers.keys().include(d.substring(1))&&$(c).observe("click",function(e,f){this.setActiveTab(f.substring(1))}.bindAsEventListener(this,d))}}.bind(this))}, addTab:function(a){this.links.push(a);a.key=a.getAttribute("href").replace(window.location.href.split("#")[0],"").split("/").last().replace(/#/,"");this.containers[a.key]=$(a.key);a[this.options.hover?"onmouseover":"onclick"]=function(b){window.event&&Event.stop(window.event);this.setActiveTab(b);return false}.bind(this,a)},setActiveTab:function(a){if(a)if(typeof a=="string")this.links.each(function(b){if(b.key==a){this.setActiveTab(b);throw $break;}}.bind(this));else{this.notify("beforeChange",this.activeContainer); this.activeContainer&&this.options.hideFunction(this.activeContainer);this.links.each(function(b){(this.options.setClassOnContainer?$(b.parentNode):b).removeClassName(this.options.activeClassName)}.bind(this));(this.options.setClassOnContainer?$(a.parentNode):a).addClassName(this.options.activeClassName);this.activeContainer=this.containers[a.key];this.activeLink=a;this.options.showFunction(this.containers[a.key]);this.notify("afterChange",this.containers[a.key])}},next:function(){this.links.each(function(a, b){if(this.activeLink==a&&this.links[b+1]){this.setActiveTab(this.links[b+1]);throw $break;}}.bind(this));return false},previous:function(){this.links.each(function(a,b){if(this.activeLink==a&&this.links[b-1]){this.setActiveTab(this.links[b-1]);throw $break;}}.bind(this));return false},first:function(){this.setActiveTab(this.links.first());return false},last:function(){this.setActiveTab(this.links.last());return false},notify:function(a){try{if(this.options[a])return[this.options[a].apply(this.options[a], $A(arguments).slice(1))]}catch(b){if(b!=$break)throw b;else return false}}});typeof Object.Event!="undefined"&&Object.Event.extend(Control.Tabs);