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