﻿var SimpleTabs=new Class({Implements:[Events,Options],options:{show:0,selector:".tab-tab",classWrapper:"tab-wrapper",classMenu:"tab-menu",classContainer:"tab-container",onSelect:function(b,a){b.addClass("tab-selected");a.setStyle("display","")},onDeselect:function(b,a){b.removeClass("tab-selected");a.setStyle("display","none")},onRequest:function(b,a){a.addClass("tab-ajax-loading")},onComplete:function(b,a){a.removeClass("tab-ajax-loading")},onFailure:function(b,a){a.removeClass("tab-ajax-loading")},onAdded:Class.empty,getContent:null,ajaxOptions:{},cache:true},initialize:function(a,b){this.element=$(a);this.setOptions(b);this.selected=null;this.build()},build:function(){this.tabs=[];this.menu=new Element("ul",{"class":this.options.classMenu});this.wrapper=new Element("div",{"class":this.options.classWrapper});this.element.getElements(this.options.selector).each(function(a){var b=a.get("href")||(this.options.getContent?this.options.getContent.call(this,a):a.getNext());this.addTab(a.innerHTML,a.title||a.innerHTML,b)},this);this.element.empty().adopt(this.menu,this.wrapper);if(this.tabs.length)this.select(this.options.show)},addTab:function(g,f,b){var c=$(b),e=(c||new Element("div")).setStyle("display","none").addClass(this.options.classContainer).inject(this.wrapper),d=this.tabs.length,h=this.options.hover?"mouseenter":"click",a={container:e,toggle:(new Element("li")).grab((new Element("a",{href:"#",title:f})).grab(new Element("span",{html:g}))).addEvent(h,this.onClick.bindWithEvent(this,[d])).inject(this.menu)};if(!c&&$type(b)=="string")a.url=b;this.tabs.push(a);return this.fireEvent("onAdded",[a.toggle,a.container,d])},onClick:function(b,a){this.select(a);return false},select:function(c){if(this.selected===c||!this.tabs[c])return this;if(this.ajax)this.ajax.cancel().removeEvents();var a=this.tabs[c],b=[a.toggle,a.container,c];if(this.selected!==null){var d=this.tabs[this.selected];if(this.ajax&&this.ajax.running)this.ajax.cancel();b.extend([d.toggle,d.container,this.selected]);this.fireEvent("onDeselect",[d.toggle,d.container,this.selected])}this.fireEvent("onSelect",b);if(a.url&&(!a.loaded||!this.options.cache)){this.ajax=this.ajax||new Request.HTML;this.ajax.setOptions({url:a.url,method:"get",update:a.container,onFailure:this.fireEvent.pass(["onFailure",b],this),onComplete:function(){a.loaded=true;this.fireEvent("onComplete",b)}.bind(this)}).setOptions(this.options.ajaxOptions);this.ajax.send();this.fireEvent("onRequest",b)}this.selected=c;return this}})
