(function($){$.tools=$.tools||{};$.tools.tabs={version:"1.0.3",conf:{tabs:"a",current:"current",onBeforeClick:null,onClick:null,effect:"default",initialIndex:0,event:"click",api:false,rotate:false},addEffect:function(name,fn){effects[name]=fn}};var effects={"default":function(i,done){this.getPanes().hide().eq(i).show();done.call()},fade:function(i,done){var conf=this.getConf(),speed=conf.fadeOutSpeed,pane=this.getCurrentPane();if(speed){pane.fadeOut(speed)}else{pane.hide()}this.getPanes().eq(i).fadeIn(conf.fadeInSpeed,done)},slide:function(i,done){this.getCurrentPane().slideUp(200);this.getPanes().eq(i).slideDown(400,done)},ajax:function(i,done){this.getPanes().eq(0).load(this.getTabs().eq(i).attr("href"),done)}};var w;$.tools.tabs.addEffect("horizontal",function(i,done){if(!w){w=this.getPanes().eq(0).width()}this.getCurrentPane().animate({width:0},function(){$(this).hide()});this.getPanes().eq(i).animate({width:w},function(){$(this).show();done.call()})});function Tabs(tabs,panes,conf){var self=this,$self=$(this),current;$.each(conf,function(name,fn){if($.isFunction(fn)){$self.bind(name,fn)}});$.extend(this,{click:function(i){var pane=self.getCurrentPane();var tab=tabs.eq(i);if(typeof i=="string"&&i.replace("#","")){tab=tabs.filter("[href*="+i.replace("#","")+"]");i=Math.max(tabs.index(tab),0)}if(conf.rotate){var last=tabs.length-1;if(i<0){return self.click(last)}if(i>last){return self.click(0)}}if(!tab.length){if(current>=0){return self}i=conf.initialIndex;tab=tabs.eq(i)}var e=$.Event("onBeforeClick");$self.trigger(e,[i]);if(e.isDefaultPrevented()){return}if(i===current){return self}tab.addClass(conf.current);effects[conf.effect].call(self,i,function(){$self.trigger("onClick",[i])});tabs.removeClass(conf.current);tab.addClass(conf.current);current=i;return self},getConf:function(){return conf},getTabs:function(){return tabs},getPanes:function(){return panes},getCurrentPane:function(){return panes.eq(current)},getCurrentTab:function(){return tabs.eq(current)},getIndex:function(){return current},next:function(){return self.click(current+1)},prev:function(){return self.click(current-1)},bind:function(name,fn){$self.bind(name,fn);return self},onBeforeClick:function(fn){return this.bind("onBeforeClick",fn)},onClick:function(fn){return this.bind("onClick",fn)},unbind:function(name){$self.unbind(name);return self}});tabs.each(function(i){$(this).bind(conf.event,function(e){self.click(i);return e.preventDefault()})});if(location.hash){self.click(location.hash)}else{self.click(conf.initialIndex)}panes.find("a[href^=#]").click(function(){self.click($(this).attr("href"))})}$.fn.tabs=function(query,conf){var el=this.eq(typeof conf=="number"?conf:0).data("tabs");if(el){return el}if($.isFunction(conf)){conf={onBeforeClick:conf}}var globals=$.extend({},$.tools.tabs.conf),len=this.length;conf=$.extend(globals,conf);this.each(function(i){var root=$(this);var els=root.find(conf.tabs);if(!els.length){els=root.children()}var panes=query.jquery?query:root.children(query);if(!panes.length){panes=len==1?$(query):root.parent().find(query)}el=new Tabs(els,panes,conf);root.data("tabs",el)});return conf.api?el:this}})(jQuery);