Files
jQuery-EasyTabs-mirror/javascripts/jquery.easytabs.min.js
Steve Schwartz b25ae15f88 Version 2.3.3
2011-09-15 09:55:03 -04:00

13 lines
9.4 KiB
JavaScript

/*
* jQuery EasyTabs plugin 2.3.3
*
* 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: Thu Sep 15 09:50: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",cache:true};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(){var m=b(this),l=m.children("a"),k=m.children("a").data("target");if(k!==undefined&&k!==null){m.data("easytabs",{ajax:l.attr("href")})}else{k=l.attr("href")}k=k.match(/#([^\?]+)/)[0].substr(1);$matchingPanel=i.find("#"+k);if($matchingPanel.size()>0){$matchingPanel.data("easytabs",{position:$matchingPanel.css("position"),visibility:$matchingPanel.css("visibility")});g=g.add($matchingPanel.hide());m.data("easytabs",b.extend(m.data("easytabs"),{panel:$matchingPanel}))}else{c=c.not(m)}});b("a.anchor").remove().prependTo("body");i.data("easytabs",{opts:h,skipUpdateToHash:false,tabs:c,panels:g}).attr("data-easytabs",true);b.fn.easytabs.methods.setDefaultTab.apply(i);c.children("a").bind("click.easytabs",function(k){k.preventDefault();i.data("easytabs").opts.cycle=false;i.data("easytabs").skipUpdateToHash=false;$clicked=b(this);b.fn.easytabs.methods.selectTab.apply($clicked,[i])})},loadFromData:function(){return this.data("easytabs")},setDefaultTab:function(){var m=this,h=b.fn.easytabs.methods.loadFromData.apply(m),c=h.opts,j=h.tabs,d=h.panels,g=window.location.hash.match(/^[^\?]*/)[0],i=b.fn.easytabs.methods.matchTab(j,g).parent(),e,f,l,k,n;if(i.size()==1){e=i;m.data("easytabs").opts.cycle=false}else{n=b.fn.easytabs.methods.matchInPanel(d,g);if(n.length){g="#"+n.attr("id");e=b.fn.easytabs.methods.matchTab(j,g).parent()}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();m.data("easytabs").defaultTab=e;m.data("easytabs").defaultTabLink=f;if(c.collapsible&&i.size()==0&&c.collapsedByDefault){e.addClass(c.collapsedClass).children().addClass(c.collapsedClass)}else{l=b(e.data("easytabs").panel);k=e.data("easytabs").ajax;if(k&&(!c.cache||!e.data("easytabs").cached)){m.trigger("easytabs:ajax:beforeSend",[f,l]);l.load(k,function(p,o,q){e.data("easytabs").cached=true;m.trigger("easytabs:ajax:complete",[f,l,p,o,q])})}e.data("easytabs").panel.show().addClass(c.panelActiveClass);e.addClass(c.tabActiveClass).children().addClass(c.tabActiveClass)}},getHeightForHidden:function(){if(this.data("easytabs")&&this.data("easytabs").lastHeight){return this.data("easytabs").lastHeight}var d=this.css("display"),c=this.wrap(b("<div>",{position:"absolute",visibility:"hidden",overflow:"hidden"})).css({position:"relative",visibility:"hidden",display:"block"}).outerHeight();this.unwrap();this.css({position:this.data("easytabs").position,visibility:this.data("easytabs").visibility,display:d});b.extend(this.data("easytabs"),{lastHeight:c});return c},setAndReturnHeight:function(){var c=this.outerHeight(),d={lastHeight:c};if(this.data("easytabs")){b.extend(this.data("easytabs"),d)}else{this.data("easytabs",d)}return c},selectTab:function(q,i){var r=this,h=window.location,e=h.hash.match(/^[^\?]*/)[0],v=b.fn.easytabs.methods.loadFromData.apply(q),n=v.opts,g=v.skipUpdateToHash,d=v.tabs,k=v.panels,f=r.parent().data("easytabs").panel,u=r.parent().data("easytabs").ajax,p=v.defaultTabLink,t=(n.animate)?{show:n.transitionIn,hide:n.transitionOut,speed:n.animationSpeed,collapse:n.transitionCollapse,uncollapse:n.transitionUncollapse,halfSpeed:n.animationSpeed/2}:{show:"show",hide:"hide",speed:0,collapse:"hide",uncollapse:"show",halfSpeed:0};if(n.collapsible&&!g&&(r.hasClass(n.tabActiveClass)||r.hasClass(n.collapsedClass))){k.stop(true,true);if(a(q,"easytabs:before",[r,f,v])){d.filter("."+n.tabActiveClass).removeClass(n.tabActiveClass).children().removeClass(n.tabActiveClass);if(r.hasClass(n.collapsedClass)){if(u&&(!n.cache||!r.parent().data("easytabs").cached)){q.trigger("easytabs:ajax:beforeSend",[r,f]);f.load(u,function(x,w,y){r.parent().data("easytabs").cached=true;q.trigger("easytabs:ajax:complete",[r,f,x,w,y])})}r.parent().removeClass(n.collapsedClass).addClass(n.tabActiveClass).children().removeClass(n.collapsedClass).addClass(n.tabActiveClass);f.addClass(n.panelActiveClass)[t.uncollapse](t.speed,function(){q.trigger("easytabs:midTransition",[r,f,v]);if(typeof i=="function"){i()}})}else{r.parent().addClass(n.collapsedClass).children().addClass(n.collapsedClass);f.removeClass(n.panelActiveClass)[t.collapse](t.speed,function(){q.trigger("easytabs:midTransition",[r,f,v]);if(typeof i=="function"){i()}})}}}else{if(!r.hasClass(n.tabActiveClass)||!f.hasClass(n.panelActiveClass)){k.stop(true,true);if(a(q,"easytabs:before",[r,f,v])){var l=k.filter(":visible"),o=f.parent(),j=b.fn.easytabs.methods.getHeightForHidden.apply(f),m=l.length?b.fn.easytabs.methods.setAndReturnHeight.apply(l):0,c=j-m,s=function(){q.trigger("easytabs:midTransition",[r,f,v]);if(n.animate&&n.transitionIn=="fadeIn"&&c<0){o.animate({height:o.height()+c},t.halfSpeed).css({"min-height":""})}if(n.updateHash&&!g){window.location.hash="#"+f.attr("id")}else{q.data("easytabs").skipUpdateToHash=false}f[t.show](t.speed,function(){q.data("easytabs").tabs=d;q.data("easytabs").panels=k;o.css({height:"","min-height":""});q.trigger("easytabs:after",[r,f,v]);if(typeof i=="function"){i()}})};if(u&&(!n.cache||!r.parent().data("easytabs").cached)){q.trigger("easytabs:ajax:beforeSend",[r,f]);f.load(u,function(x,w,y){r.parent().data("easytabs").cached=true;q.trigger("easytabs:ajax:complete",[r,f,x,w,y])})}if(n.animate&&n.transitionOut=="fadeOut"){if(c>0){o.animate({height:(o.height()+c)},t.halfSpeed)}else{o.css({"min-height":o.height()})}}d.filter("."+n.tabActiveClass).removeClass(n.tabActiveClass).children().removeClass(n.tabActiveClass);d.filter("."+n.collapsedClass).removeClass(n.collapsedClass).children().removeClass(n.collapsedClass);r.parent().addClass(n.tabActiveClass).children().addClass(n.tabActiveClass);k.filter("."+n.panelActiveClass).removeClass(n.panelActiveClass);f.addClass(n.panelActiveClass);if(l.size()>0){l[t.hide](t.speed,s)}else{f[t.uncollapse](t.speed,s)}}}}},matchTab:function(c,d){return c.find("[href='"+d+"'],[data-target='"+d+"']").first()},matchInPanel:function(c,d){return(d?c.filter(":has("+d+")").first():[])},selectTabFromHashChange:function(){var k=this,h=b.fn.easytabs.methods.loadFromData.apply(k),c=h.opts,i=h.tabs,d=h.panels,e=h.defaultTab,f=h.defaultTabLink,g=window.location.hash.match(/^[^\?]*/)[0],j=b.fn.easytabs.methods.matchTab(i,g),l;if(c.updateHash){if(j.length){k.data("easytabs").skipUpdateToHash=true;b.fn.easytabs.methods.selectTab.apply(j,[k])}else{l=b.fn.easytabs.methods.matchInPanel(d,g);if(l.length){g="#"+l.attr("id");j=b.fn.easytabs.methods.matchTab(i,g);k.data("easytabs").skipUpdateToHash=true;b.fn.easytabs.methods.selectTab.apply(j,[k])}else{if(!e.hasClass(c.tabActiveClass)&&!c.cycle){if(g==""||k.closest(g).length){k.data("easytabs").skipUpdateToHash=true;b.fn.easytabs.methods.selectTab.apply(f,[k])}}}}}},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){if((e=c.find("[data-target='"+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);