(function($){$.extend({tabs:{remoteCount:0}});$.fn.tabs=function(initial,settings){if(typeof initial=="object"){settings=initial}settings=$.extend({initial:(initial&&typeof initial=="number"&&initial>0)?--initial:0,disabled:null,bookmarkable:$.ajaxHistory?true:false,remote:false,spinner:"Loading&#8230;",hashPrefix:"remote-tab-",fxFade:null,fxSlide:null,fxShow:null,fxHide:null,fxSpeed:"normal",fxShowSpeed:null,fxHideSpeed:null,fxAutoHeight:false,onClick:null,onHide:null,onShow:null,navClass:"tabs-nav",selectedClass:"tabs-selected",disabledClass:"tabs-disabled",containerClass:"tabs-container",hideClass:"tabs-hide",loadingClass:"tabs-loading",tabStruct:"div"},settings||{});$.browser.msie6=$.browser.msie&&($.browser.version&&$.browser.version<7||/MSIE 6.0/.test(navigator.userAgent));function unFocus(){scrollTo(0,0)}return this.each(function(){var container=this;var nav=$("ul."+settings.navClass,container);nav=nav.size()&&nav||$(">ul:eq(0)",container);var tabs=$("a",nav);if(settings.remote){tabs.each(function(){var id=settings.hashPrefix+(++$.tabs.remoteCount),hash="#"+id,url=this.href;this.href=hash;$("<div id=\""+id+"\" class=\""+settings.containerClass+"\"></div>").appendTo(container);$(this).bind("loadRemoteTab",function(e,callback){var $$=$(this).addClass(settings.loadingClass),span=$("span",this)[0],tabTitle=span.innerHTML;if(settings.spinner){span.innerHTML="<em>"+settings.spinner+"</em>"}setTimeout(function(){$(hash).load(url,function(){if(settings.spinner){span.innerHTML=tabTitle}$$.removeClass(settings.loadingClass);callback&&callback()})},0)})})}var containers=$("div."+settings.containerClass,container);containers=containers.size()&&containers||$(">"+settings.tabStruct,container);nav.is("."+settings.navClass)||nav.addClass(settings.navClass);containers.each(function(){var $$=$(this);$$.is("."+settings.containerClass)||$$.addClass(settings.containerClass)});var hasSelectedClass=$("li",nav).index($("li."+settings.selectedClass,nav)[0]);if(hasSelectedClass>=0){settings.initial=hasSelectedClass}if(location.hash){tabs.each(function(i){if(this.hash==location.hash){settings.initial=i;if(($.browser.msie||$.browser.opera)&&!settings.remote){var toShow=$(location.hash);var toShowId=toShow.attr("id");toShow.attr("id","");setTimeout(function(){toShow.attr("id",toShowId)},500)}unFocus();return false}})}if($.browser.msie){unFocus()}containers.filter(":eq("+settings.initial+")").show().end().not(":eq("+settings.initial+")").addClass(settings.hideClass);$("li",nav).removeClass(settings.selectedClass).eq(settings.initial).addClass(settings.selectedClass);tabs.eq(settings.initial).trigger("loadRemoteTab").end();if(settings.fxAutoHeight){var _setAutoHeight=function(reset){var heights=$.map(containers.get(),function(el){var h,jq=$(el);if(reset){if($.browser.msie6){el.style.removeExpression("behaviour");el.style.height="";el.minHeight=null}h=jq.css({"min-height":""}).height()}else{h=jq.height()}return h}).sort(function(a,b){return b-a});if($.browser.msie6){containers.each(function(){this.minHeight=heights[0]+"px";this.style.setExpression("behaviour","this.style.height = this.minHeight ? this.minHeight : \"1px\"")})}else{containers.css({"min-height":heights[0]+"px"})}};_setAutoHeight();var cachedWidth=container.offsetWidth;var cachedHeight=container.offsetHeight;var watchFontSize=$("#tabs-watch-font-size").get(0)||$("<span id=\"tabs-watch-font-size\">M</span>").css({display:"block",position:"absolute",visibility:"hidden"}).appendTo(document.body).get(0);var cachedFontSize=watchFontSize.offsetHeight;setInterval(function(){var currentWidth=container.offsetWidth;var currentHeight=container.offsetHeight;var currentFontSize=watchFontSize.offsetHeight;if(currentHeight>cachedHeight||currentWidth!=cachedWidth||currentFontSize!=cachedFontSize){_setAutoHeight((currentWidth>cachedWidth||currentFontSize<cachedFontSize));cachedWidth=currentWidth;cachedHeight=currentHeight;cachedFontSize=currentFontSize}},50)}var showAnim={},hideAnim={},showSpeed=settings.fxShowSpeed||settings.fxSpeed,hideSpeed=settings.fxHideSpeed||settings.fxSpeed;if(settings.fxSlide||settings.fxFade){if(settings.fxSlide){showAnim["height"]="show";hideAnim["height"]="hide"}if(settings.fxFade){showAnim["opacity"]="show";hideAnim["opacity"]="hide"}}else{if(settings.fxShow){showAnim=settings.fxShow}else{showAnim["min-width"]=0;showSpeed=1}if(settings.fxHide){hideAnim=settings.fxHide}else{hideAnim["min-width"]=0;hideSpeed=1}}var onClick=settings.onClick,onHide=settings.onHide,onShow=settings.onShow;tabs.bind("triggerTab",function(){var li=$(this).parents("li:eq(0)");if(container.locked||li.is("."+settings.selectedClass)||li.is("."+settings.disabledClass)){return false}var hash=this.hash;if($.browser.msie){$(this).trigger("click");if(settings.bookmarkable){$.ajaxHistory.update(hash);location.hash=hash.replace("#","")}}else{if($.browser.safari){var tempForm=$("<form action=\""+hash+"\"><div><input type=\"submit\" value=\"h\" /></div></form>").get(0);tempForm.submit();$(this).trigger("click");if(settings.bookmarkable){$.ajaxHistory.update(hash)}}else{if(settings.bookmarkable){location.hash=hash.replace("#","")}else{$(this).trigger("click")}}}});tabs.bind("disableTab",function(){var li=$(this).parents("li:eq(0)");if($.browser.safari){li.animate({opacity:0},1,function(){li.css({opacity:""})})}li.addClass(settings.disabledClass)});if(settings.disabled&&settings.disabled.length){for(var i=0,k=settings.disabled.length;i<k;i++){tabs.eq(--settings.disabled[i]).trigger("disableTab").end()}}tabs.bind("enableTab",function(){var li=$(this).parents("li:eq(0)");li.removeClass(settings.disabledClass);if($.browser.safari){li.animate({opacity:1},1,function(){li.css({opacity:""})})}});tabs.bind("click",function(e){var trueClick=e.clientX;if (trueClick && mustSave) if ( confirm('Are you sure want change tab without saving ?')!=true) return false;mustSave=false; var clicked=this,li=$(this).parents("li:eq(0)"),toShow=$(this.hash),toHide=containers.filter(":visible");if(container["locked"]||li.is("."+settings.selectedClass)||li.is("."+settings.disabledClass)||typeof onClick=="function"&&onClick(this,toShow[0],toHide[0])===false){this.blur();return false}container["locked"]=true;if(toShow.size()){if($.browser.msie&&settings.bookmarkable){var toShowId=this.hash.replace("#","");toShow.attr("id","");setTimeout(function(){toShow.attr("id",toShowId)},0)}var resetCSS={display:"",overflow:"",height:""};if(!$.browser.msie){resetCSS["opacity"]=""}function switchTab(){if(settings.bookmarkable&&trueClick){$.ajaxHistory.update(clicked.hash)}toHide.animate(hideAnim,hideSpeed,function(){$(clicked).parents("li:eq(0)").addClass(settings.selectedClass).siblings().removeClass(settings.selectedClass);toHide.addClass(settings.hideClass).css(resetCSS);if(typeof onHide=="function"){onHide(clicked,toShow[0],toHide[0])}if(!(settings.fxSlide||settings.fxFade||settings.fxShow)){toShow.css("display","block")}toShow.animate(showAnim,showSpeed,function(){toShow.removeClass(settings.hideClass).css(resetCSS);if($.browser.msie){toHide[0].style.filter="";toShow[0].style.filter=""}if(typeof onShow=="function"){onShow(clicked,toShow[0],toHide[0])}container["locked"]=null})})}if(!settings.remote){switchTab()}else{$(clicked).trigger("loadRemoteTab",[switchTab])}}else{alert("There is no such container.")}var scrollX=window.pageXOffset||document.documentElement&&document.documentElement.scrollLeft||document.body.scrollLeft||0;var scrollY=window.pageYOffset||document.documentElement&&document.documentElement.scrollTop||document.body.scrollTop||0;setTimeout(function(){window.scrollTo(scrollX,scrollY)},0);this.blur();return settings.bookmarkable&&!!trueClick});if(settings.bookmarkable){$.ajaxHistory.initialize(function(){tabs.eq(settings.initial).trigger("click").end()})}})};var tabEvents=["triggerTab","disableTab","enableTab"];for(var i=0;i<tabEvents.length;i++){$.fn[tabEvents[i]]=(function(tabEvent){return function(tab){return this.each(function(){var nav=$("ul.tabs-nav",this);nav=nav.size()&&nav||$(">ul:eq(0)",this);var a;if(!tab||typeof tab=="number"){a=$("li a",nav).eq((tab&&tab>0&&tab-1||0))}else{if(typeof tab=="string"){a=$("li a[@href$=\"#"+tab+"\"]",nav)}}a.trigger(tabEvent)})}})(tabEvents[i])}$.fn.activeTab=function(){var selectedTabs=[];this.each(function(){var nav=$("ul.tabs-nav",this);nav=nav.size()&&nav||$(">ul:eq(0)",this);var lis=$("li",nav);selectedTabs.push(lis.index(lis.filter(".tabs-selected")[0])+1)});return selectedTabs[0]}})(jQuery)