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