Files
jQuery-EasyTabs-mirror/javascripts/jquery.easytabs.min.js

13 lines
7.2 KiB
JavaScript

/*
* jQuery EasyTabs plugin 2.2.1
*
* Copyright (c) 2010-2011 Steve Schwartz (JangoSteve)
*
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*
* Date: Sat Mar 30 21:00:00 2011 -0500
*/
(function(b){function a(f,c,e){var d=b.Event(c);f.trigger(d,e);return d.result!==false}b.fn.easyTabs=function(){b.error("easyTabs() is no longer used. Now use easytabs() -- no capitalization.")};b.fn.easytabs=function(d){var c=arguments;return this.each(function(){var f=b(this),e=f.data("easytabs");if(!e){b.fn.easytabs.methods.init.apply(f,[d]);b.fn.easytabs.methods.initHashChange.apply(f);b.fn.easytabs.methods.initCycle.apply(f)}if(b.fn.easytabs.publicMethods[d]){return b.fn.easytabs.publicMethods[d].apply(f,Array.prototype.slice.call(c,1))}})};b.fn.easytabs.defaults={animate:true,panelActiveClass:"active",tabActiveClass:"active",defaultTab:"li:first-child",animationSpeed:"normal",tabs:"> ul > li",updateHash:true,cycle:false,collapsible:false,collapsedClass:"collapsed",collapsedByDefault:true,uiTabs:false,transitionIn:"fadeIn",transitionOut:"fadeOut",transitionCollapse:"slideUp",transitionUncollapse:"slideDown"};b.fn.easytabs.methods={init:function(d){var i=this,h,c,g=b(),f,j,e={fast:200,normal:400,slow:600};if(d&&d.uiTabs){i.addClass("ui-tabs");b.extend(b.fn.easytabs.defaults,{tabActiveClass:"ui-tabs-selected"})}if(d&&d.collapsible&&d.defaultTab){b.fn.easytabs.defaults.collapsedByDefault=false}h=b.extend({},b.fn.easytabs.defaults,d);if(typeof(h.animationSpeed)=="string"){h.animationSpeed=e[h.animationSpeed]}c=i.find(h.tabs);c.each(function(){targetId=b(this).children("a").attr("href").match(/#([^\?]+)/)[0].substr(1);$matchingPanel=i.find("div[id="+targetId+"]");if($matchingPanel.size()>0){$matchingPanel.data("easytabs",{height:$matchingPanel.outerHeight()});g=g.add($matchingPanel.hide())}else{c=c.not(b(this))}});b("a.anchor").remove().prependTo("body");i.data("easytabs",{opts:h,skipUpdateToHash:false,tabs:c,panels:g});b.fn.easytabs.methods.setDefaultTab.apply(i);c.children("a").bind("click.easytabs",function(k){i.data("easytabs").opts.cycle=false;i.data("easytabs").skipUpdateToHash=false;$clicked=b(this);b.fn.easytabs.methods.selectTab.apply($clicked,[i]);k.preventDefault()})},loadFromData:function(){return this.data("easytabs")},setDefaultTab:function(){var k=this,h=b.fn.easytabs.methods.loadFromData.apply(k),c=h.opts,j=h.tabs,d=h.panels,g=window.location.hash.match(/^[^\?]*/)[0],i=j.find("a[href='"+g+"']").parent(),e,f;if(i.size()==1){e=i;k.data("easytabs").opts.cycle=false}else{e=j.parent().find(c.defaultTab);if(e.size()==0){b.error("The specified default tab ('"+c.defaultTab+"') could not be found in the tab set.")}}f=e.children("a").first();k.data("easytabs").defaultTab=e;k.data("easytabs").defaultTabLink=f;if(c.collapsible&&i.size()==0&&c.collapsedByDefault){e.addClass(c.collapsedClass).children().addClass(c.collapsedClass)}else{d.filter("#"+f.attr("href").match(/#([^\?]+)/)[0].substr(1)).show().addClass(c.panelActiveClass);e.addClass(c.tabActiveClass).children().addClass(c.tabActiveClass)}},selectTab:function(s,r){var g=this,d=window.location,l=d.hash.match(/^[^\?]*/)[0],m=b.fn.easytabs.methods.loadFromData.apply(s),c=m.opts,h=m.skipUpdateToHash,o=m.tabs,f=m.panels,n=f.filter(g.attr("href").match(/#([^\?]+)/)[0]),k=m.defaultTabLink,q=(c.animate)?{show:c.transitionIn,hide:c.transitionOut,speed:c.animationSpeed,collapse:c.transitionCollapse,uncollapse:c.transitionUncollapse,halfSpeed:c.animationSpeed/2}:{show:"show",hide:"hide",speed:0,collapse:"hide",uncollapse:"show",halfSpeed:0};if(c.collapsible&&!h&&(g.hasClass(c.tabActiveClass)||g.hasClass(c.collapsedClass))){f.stop(true,true);if(a(s,"easytabs:before",[g,n,m])){o.filter("."+c.tabActiveClass).removeClass(c.tabActiveClass).children().removeClass(c.tabActiveClass);if(g.hasClass(c.collapsedClass)){g.parent().removeClass(c.collapsedClass).addClass(c.tabActiveClass).children().removeClass(c.collapsedClass).addClass(c.tabActiveClass);n.addClass(c.panelActiveClass)[q.uncollapse](q.speed,function(){s.trigger("easytabs:midTransition",[g,n,m]);if(typeof r=="function"){r()}})}else{g.parent().addClass(c.collapsedClass).children().addClass(c.collapsedClass);n.removeClass(c.panelActiveClass)[q.collapse](q.speed,function(){s.trigger("easytabs:midTransition",[g,n,m]);if(typeof r=="function"){r()}})}}}else{if(!g.hasClass(c.tabActiveClass)||!n.hasClass(c.panelActiveClass)){f.stop(true,true);if(a(s,"easytabs:before",[g,n,m])){var i=f.filter(":visible"),e=n.parent(),j=i.length?n.data("easytabs").height-i.data("easytabs").height:n.data("easytabs").height,p=function(){s.trigger("easytabs:midTransition",[g,n,m]);if(c.animate&&c.transitionIn=="fadeIn"&&j<0){e.animate({height:e.height()+j},{duration:(q.halfSpeed)})}if(c.updateHash&&!h){window.location.hash=g.attr("href")}else{s.data("easytabs").skipUpdateToHash=false}n[q.show](q.speed,function(){s.data("easytabs").tabs=o;s.data("easytabs").panels=f;s.trigger("easytabs:after",[g,n,m]);if(typeof r=="function"){r()}})};if(c.animate&&c.transitionOut=="fadeOut"){if(j>0){e.animate({height:(e.height()+j)},{duration:(q.halfSpeed)})}else{e.css({height:e.height()})}}o.filter("."+c.tabActiveClass).removeClass(c.tabActiveClass).children().removeClass(c.tabActiveClass);o.filter("."+c.collapsedClass).removeClass(c.collapsedClass).children().removeClass(c.collapsedClass);g.parent().addClass(c.tabActiveClass).children().addClass(c.tabActiveClass);f.filter("."+c.panelActiveClass).removeClass(c.panelActiveClass);n.addClass(c.panelActiveClass);if(i.size()>0){i[q.hide](q.speed,p)}else{n[q.uncollapse](q.speed,p)}}}}},selectTabFromHashChange:function(){var i=this,g=b.fn.easytabs.methods.loadFromData.apply(i),e=g.opts,c=g.tabs,d=g.defaultTab,j=g.defaultTabLink,h=window.location.hash.match(/^[^\?]*/)[0],f=c.find("a[href='"+h+"']");if(e.updateHash){if(f.size()>0){i.data("easytabs").skipUpdateToHash=true;b.fn.easytabs.methods.selectTab.apply(f,[i])}else{if(h==""&&!d.hasClass(e.tabActiveClass)&&!e.cycle){i.data("easytabs").skipUpdateToHash=true;b.fn.easytabs.methods.selectTab.apply(j,[i])}}}},cycleTabs:function(d){var g=this,f=b.fn.easytabs.methods.loadFromData.apply(g),e=f.opts,c=f.tabs;if(e.cycle){d=d%c.size();$tab=b(c[d]).children("a").first();g.data("easytabs").skipUpdateToHash=true;b.fn.easytabs.methods.selectTab.apply($tab,[g,function(){setTimeout(function(){b.fn.easytabs.methods.cycleTabs.apply(g,[d+1])},e.cycle)}])}},initHashChange:function(){var c=this;if(typeof b(window).hashchange=="function"){b(window).hashchange(function(){b.fn.easytabs.methods.selectTabFromHashChange.apply(c)})}else{if(b.address&&typeof b.address.change=="function"){b.address.change(function(){b.fn.easytabs.methods.selectTabFromHashChange.apply(c)})}}},initCycle:function(){var h=this,g=b.fn.easytabs.methods.loadFromData.apply(h),f=g.opts,d=g.tabs,e=g.defaultTab,c;if(f.cycle){c=d.index(e);setTimeout(function(){b.fn.easytabs.methods.cycleTabs.apply(h,[c+1])},f.cycle)}}};b.fn.easytabs.publicMethods={select:function(d){var g=this,f=b.fn.easytabs.methods.loadFromData.apply(g),c=f.tabs,e;if((e=c.filter(d)).size()==0){if((e=c.find("a[href='"+d+"']")).size()==0){if((e=c.find("a"+d)).size()==0){b.error("Tab '"+d+"' does not exist in tab set")}}}else{e=e.children("a").first()}b.fn.easytabs.methods.selectTab.apply(e,[g])}}})(jQuery);