/*
 * 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({
							},{
								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(
							{
							},{
								duration:(q.halfSpeed)
							}
						)
					}else{
						e.css(
								{
								}
							)
					}
				}
				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);


