/**
 * Tab插件
 * @author youjue
 */
(function($){
	var isShow = false;
	$.fn.tab = function(options){
		this.settings = $.extend({},$.fn.tab.defaults,options);
		this.init();
		this.disableArr = [];
	}
	$.fn.tab.prototype = {
		init:function(){
			var _this = this;
			if($(_this.settings.tabList).length > 0){
				$(_this.settings.tabList).each(function(index){
					$(this).bind(_this.settings.eventType,function(){
						//判断是否禁用，是否效果还在执行中，是否在当前选中的按钮上
						if($.inArray(index,_this.disableArr) == -1 && (!isShow) && $(this).attr("class").indexOf(_this.settings.tabActiveClass) == -1){
							if(_this.settings.callBackStartEvent){
								_this.settings.callBackStartEvent(index);
							}
							$(_this.settings.tabList).removeClass(_this.settings.tabActiveClass);
							$(this).addClass(_this.settings.tabActiveClass);
							_this.showContent(index);
						}
					});
				});
			}
		},
		
		showContent:function(index){
			isShow = true;
			var _this = this;
			switch(_this.settings.showType){
				case "show" :
				     $(_this.settings.contentList + ":visible").hide();
					 if(_this.settings.callBackHideEvent){
					 	_this.settings.callBackHideEvent(index);
					 }
					 $(_this.settings.contentList).eq(index).show();
					 if(_this.settings.callBackShowEvent){
					 	_this.settings.callBackShowEvent(index);
					 }
					 isShow = false;
				     break;
				case "fade" :
				     $(_this.settings.contentList + ":visible").fadeOut(_this.settings.showSpeed,function(){
					 	if(_this.settings.callBackHideEvent){
					 	   _this.settings.callBackHideEvent(index);
					    }
						$(_this.settings.contentList).eq(index).fadeIn(function(){
							if(_this.settings.callBackShowEvent){
					 	         _this.settings.callBackShowEvent(index);
					        }
					        isShow = false;
						});
					 });
				     break;
				case "slide" :
				     $(_this.settings.contentList + ":visible").slideUp(_this.settings.showSpeed,function(){
					 	if(_this.settings.callBackHideEvent){
					 	   _this.settings.callBackHideEvent(index);
					    }
						$(_this.settings.contentList).eq(index).slideDown(function(){
							if(_this.settings.callBackShowEvent){
					 	         _this.settings.callBackShowEvent(index);
					        }
					        isShow = false;
						});
					 });
				     break;
			}
		},
		
		setDisable:function(index){
			var _this = this;
			if($.inArray(index,this.disableArr) == -1){
				this.disableArr.push(index);
				$(_this.settings.tabList).eq(index).addClass(_this.settings.tabDisableClass);
			}
		},
		
		setEnable:function(index){
			var _this = this;
			var i =$.inArray(index,this.disableArr);
			if(i>-1){
				this.disableArr.splice(i,1);
				$(_this.settings.tabList).eq(index).removeClass(_this.settings.tabDisableClass);
			}

		},
		
		triggleTab:function(index){
			$(this.settings.tabList).eq(index).trigger(this.settings.eventType);
		}
	};
	
	$.fn.tab.defaults = {
		tabList:".ui-tab-container .ui-tab-list li",
	    contentList:".ui-tab-container .ui-tab-content",
        tabActiveClass:"ui-tab-active",
	    tabDisableClass:"ui-tab-disable",
	    eventType:"click",									//触发事件，有click和mouseover两种类型
	    showType:"show",									//显示方式，show 直接显示，fade渐变，slide滑动
	    showSpeed:200,										//显示速度，单位为毫秒
	    callBackStartEvent:null,
	    callBackHideEvent:null,
	    callBackShowEvent:null
	};
})(jQuery);
