/**
 * Tabs - jQuery plugin for accessible, unobtrusive tabs
 * @requires jQuery v1.1.1
 *
 * http://stilbuero.de/tabs/
 *
 * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 *
 * Version: 2.7.4
 */
(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,
			
			remoteClass:'tabs-remote',
			hashPrefix:'remote-tab-',
			loadingClass:'tabs-loading',
			
			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',
			tabStruct:'div',
			anchorJump:false
		},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);

			tabs.each(function(i){
				var url=this.href;
				if($(this).hasClass(settings.remoteClass))
				{
					if(url.indexOf("#")>0)
					{
						var id = url.substr(url.indexOf("#")+1);
						url = url.substr(0, url.indexOf("#") );
						url += (url.indexOf("?")>0) ? "&ajax=Y" : "?ajax=Y";
					}
					else
					{
						var id=settings.hashPrefix+(++$.tabs.remoteCount);
					}
					var tabid='#tab-'+id;
					var hash='#'+id;
					this.tabid=tabid;
					this.hash=hash;
					this.href=hash;
					
					$(this).bind('loadRemoteTab',function(e,callback){
						var $$=$(this).addClass(settings.loadingClass);
						setTimeout(function(){
							$(tabid).load(
								url,
								function(){
									$$.removeClass(settings.loadingClass+" "+settings.remoteClass).unbind('loadRemoteTab');
									callback && callback();
									
									SKLoadInit($(tabid));// SK design
								}
							);
						},0);
					});
				}
				else
				{
					if(url.indexOf("#")>0)
					{
						var id = url.substr(url.indexOf("#")+1);
					}
					else
					{
						var id=settings.hashPrefix + i;
					}
					var tabid='#tab-'+id;
					hash='#'+id;
					this.tabid=tabid;
					this.hash=hash;
					this.href=hash;
				}
			});
			
			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) && !$(this).hasClass(settings.remoteClass) ){
							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.safari){
					var tempForm=$('<form action="'+hash+'"><div><input type="submit" value="h" /></div></form>').get(0);
					tempForm.submit();
				}
				$(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;
				var clicked=this;
				var li=$(this).parents('li:eq(0)');
//alert([this.hash, this.tabid]);
				var toShow=$(this.tabid);
				var 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()){
					var resetCSS={display:'',overflow:'',height:''};
					if(!$.browser.msie){resetCSS['opacity']='';}
					
					function switchTab()
					{
						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.removeClass(settings.hideClass).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.anchorJump)
						{
							//$(window).scrollTo( $(".tabs-container").filter("#"+clicked.hash) );
							//window.location.hash = clicked.hash.replace('#','');
							//$(window).scrollTo("h1.g-heading");
						}*/
					}
					
					if($(this).hasClass(settings.remoteClass)){
						$(clicked).trigger('loadRemoteTab',[switchTab]);
					}else{
						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 !!trueClick;
			});
		});
	};
	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);


