$.fn.Tab = function(opt){


	var cfg={
		items:[{'id':1,'title':'tab','closed':true,'icon':'','html':'',load:'',domNode:'',share:false,'callback':function(){}}],
		//宽度
		width:540,
		//高度
		//height:500,
		//内容宽度
		tabcontentWidth:538,
		//sheet标题宽度
		tabWidth:80,
		//sheet标题高度
		tabHeight:25,
		//是否有导航栏
		tabScroll:false,
		//导航栏宽度
		tabScrollWidth:19,
		tabClassDiv:'benma_ui_tab',
	    tabClass:'benma_ui_tab',
	    tabClassClose:'tab_close',
	    tabClassOn:'tab_item',
	    tabClassInner:'tab_item',
	    tabClassInnerLeft:'tab_item1',
	    tabClassInnerMiddle:'tab_item2',
	    tabClassInnerRight:'tab_item3',
	    tabClassText:'text',
	    tabClassScrollLeft:'scroll-left',
	    tabClassScrollRight:'scroll-right',
		tabContentClass:'tab-div-content',
		tabClassHtmlDiv:'tab-div-html',
		tabHtml:'',
		//sheet标题宽度是否一致
		tabWidthSame: false
	};
	
	var newIframe = function(){	  
		var iframe = document.createElement("iframe");
		iframe.marginHeight="0";
		iframe.marginWidth="0";
		iframe.frameBorder="0";
		iframe.style.borderBottomColor="#999999";
		iframe.style.borderLeftColor="#999999";
		iframe.style.borderRightColor="#999999";
		iframe.style.borderBottomStyle="solid";
		iframe.style.borderLeftStyle="solid";
		iframe.style.borderRightStyle="solid";
		iframe.style.borderBottomWidth="1px";
		iframe.style.borderLeftWidth="1px";
		iframe.style.borderRightWidth="1px";
		iframe.style.borderTop="none";
		//iframe.style.display = "none";
		iframe.width = "100%";
		iframe.height = "100%";
		iframe.scrolling = "no";
		return iframe;	
	}
	
	var tabDiv = null;
	var sharedIframe = newIframe();
	
	//默认显示第一个li
	var displayLINum=0;
	$.extend(cfg,opt);
	//判断是不是有隐藏的tab
	var tW=cfg.tabWidth*cfg.items.length;
	cfg.tabScroll?tW-=cfg.tabScrollWidth*2:null;
	
	//tabDiv,该div是自动增加的
	var tab=$('<div />').attr('id','jquery_tab_div').height(cfg.tabHeight).addClass(cfg.tabClass).append('<ul />');
	//tab target content
	var tabContent=$('<div />').attr('id','jquery_tab_div_content').width(cfg.tabcontentWidth).height("100%").addClass(cfg.tabContentClass);
	for(var i=0;i<cfg.items.length;i++)
	{
		var item = cfg.items[i];
		//判断是显示html代码还是ajax请求内容
        addContentDiv(item,i);
	}
	var ccW=(cfg.items.length*cfg.tabWidth)-cfg.width;
	//var tabH=$('<div />').append(cfg.tabHtml).addClass(cfg.tabClassHtmlDiv).height(cfg.tabHeight);
	var tabH='';
	//增加一个tab下的li得模板
	var tabTemplate='';
	tabTemplate = '<table class="'+cfg.tabClassInner+'"  id="{0}" border="0" cellpadding="0" cellspacing="0" '+(cfg.tabWidthSame?'width="'+cfg.tabWidth+'"':'')+' ><tr>' + '<td class="'+cfg.tabClassInnerLeft+'" style="background-image:url('+efico.get("eftab.tab1")+')"></td>'
			+ '<td class="'+cfg.tabClassInnerMiddle+'" style="background-image:url('+efico.get("eftab.tab2")+')"><span class="'+cfg.tabClassText+'">{1}</span></td>' + '<td class="'+cfg.tabClassInnerMiddle+'" style="background-image:url('+efico.get("eftab.tab2")+')"><div class="'+cfg.tabClassClose+' '+cfg.tabClassClose+'_noselected"></div></td>' + '<td class="'+cfg.tabClassInnerRight+'" style="background-image:url('+efico.get("eftab.tab3")+')"></td>'
			+ '</tr></table>';
	var scrollTab=function(o,flag){
		//////log.debug("开始移动！");
		//当前的left
		var displayWidth=Number(tab.css('left').replace('px',''));
		!displayWidth?displayWidth=0:null;
       //////log.debug("displayWidth："+displayWidth);
	   //////log.debug("flag："+flag);

		var DW=0;
		var left=0;
		if(flag&&displayWidth==0){
			return;
		}
        //////log.debug("displayNum："+displayNum);
		//向左边移动一个tab
		if(flag){
			
			//displayLINum--;
            //////log.debug("displayWidth:"+displayWidth);
			left=displayWidth+tab.find('li').eq(displayLINum).width();

			left>0?left=0:null;

		}
		//向右边移动一个tab
		else{
			//判断当前显示得li得宽度
			var _divRight = tab.find('li:last').offset().left+tab.find('li:last').width();
	        //////log.debug("_divRight:"+_divRight);
			var _dispalyWidth = cfg.width-2*cfg.tabScrollWidth;
			//////log.debug("_dispalyWidth："+_dispalyWidth);
			var _offsetLeft = tab.find('li').eq(displayLINum).offset().left;
			//////log.debug("_offsetLeft："+_offsetLeft);
			/*
			if((_divRight-_offsetLeft)<=_dispalyWidth){
				return;
			}
			*/
			var _liWidth =tab.find('li').eq(displayLINum).width();
			//////log.debug("_liWidth："+_liWidth);
			var _deviant = (_divRight-_liWidth)>= _dispalyWidth? _liWidth:_divRight - _dispalyWidth-cfg.tabScrollWidth;
			//////log.debug("_deviant："+_deviant);
			left=displayWidth-_deviant;
			//displayLINum++;
		}

		//////log.debug("left："+left);
		tab.animate({'left':left});
	}
	
	
  function getContentPanel(){
  	return tabContent;
  }
  	
  function addTab(item){

		var innerString=tabTemplate.replace("{0}",'eftab_title_'+item.id).replace("{1}",item.title);
		var liObj=$('<li></li>');
		item.dom = liObj;
		liObj.append(innerString).appendTo(tab.find('ul')).find('table td:eq(1)').click(function(){
			//判断当前是不是处于激活状态
			var _self=liObj;
			//alert("kaishi_cilck");
			if(_self.hasClass(cfg.tabClassOn)) return;
				//回调函数是什么
			if(item.callback) {
				if(item.callback(item)== false) return;
				
			}
			//alert("callback OK");
			//改变内部得css
			_self.find('td:first').addClass(cfg.tabClassInnerLeft+'_selected');
			_self.find('td:last').addClass(cfg.tabClassInnerRight+'_selected');
			_self.find('td:eq(1)').addClass(cfg.tabClassInnerMiddle+'_selected');
			_self.find('td:eq(2)').addClass(cfg.tabClassInnerMiddle+'_selected');
			
			var activeLi=_self.parent().find('li.'+cfg.tabClassOn);
			activeLi.find('td:first').removeClass().addClass(cfg.tabClassInnerLeft);
			activeLi.find('td:first').style = "background-image:url("+efico.get("eftab.tab1")+")";
	
			activeLi.find('td:last').removeClass().addClass(cfg.tabClassInnerRight);
			activeLi.find('td:last').style="background-image:url("+efico.get("eftab.tab3")+")";

			activeLi.find('td:eq(1)').removeClass().addClass(cfg.tabClassInnerMiddle);
			activeLi.find('td:eq(1)').style = "background-image:url("+efico.get("eftab.tab2")+")";
			activeLi.find('td:eq(2)').removeClass().addClass(cfg.tabClassInnerMiddle).find('div').addClass(cfg.tabClassClose+'_noselected');
			activeLi.find('td:eq(2)').style = "background-image:url("+efico.get("eftab.tab2")+")";
			
			activeLi.removeClass().addClass(cfg.tabClassOff);
			
			$(this).next().find('div').removeClass().addClass(cfg.tabClassClose);
			_self.removeClass().addClass(cfg.tabClassOn);
			//判断是显示html代码还是ajax请求内容
			setAlldisplayNone(tabContent,item);	
			
			
						
		
		}).hover(function(){
			var _self=liObj;
			if(_self.hasClass(cfg.tabClassOn)) return;
			_self.find('td:first').addClass(cfg.tabClassInnerLeft+'_mouseover');
			_self.find('td:last').addClass(cfg.tabClassInnerRight+'_mouseover');
			_self.find('td:eq(1)').addClass(cfg.tabClassInnerMiddle+'_mouseover');
			_self.find('td:eq(2)').addClass(cfg.tabClassInnerMiddle+'_mouseover');
		},function(){
			var _self=liObj;
			if(_self.hasClass(cfg.tabClassOn)) return;
			_self.find('td:first').removeClass(cfg.tabClassInnerLeft+'_mouseover');
			_self.find('td:last').removeClass(cfg.tabClassInnerRight+'_mouseover');
			_self.find('td:eq(1)').removeClass(cfg.tabClassInnerMiddle+'_mouseover');
			_self.find('td:eq(2)').removeClass(cfg.tabClassInnerMiddle+'_mouseover');
		});
		if(item.closed){
			liObj.find('td:eq(2)').find('div').click(function(){
				var _self=$(this);
				if(tab.find('li').length<2){
					_self.remove();
				}
				else{
					liObj.remove();
				}
			
			   removeDiv( item.id);
			}).hover(function(){
				if(liObj.hasClass(cfg.tabClassOn)) return;
				var _self=$(this);
				_self.removeClass().addClass(cfg.tabClassClose);
			},function(){
				if(liObj.hasClass(cfg.tabClassOn)) return;
				var _self=$(this);
				_self.addClass(cfg.tabClassClose+'_noselected');
			});
		}
		else{
			liObj.find('td:eq(2)').html('');
		}
	}
	function getItemWithId( _id)
	{

		////log.debug("_id:"+_id);
		    
			for( var i=0; i<cfg.items.length; i++ )
			{
				var _item = cfg.items[i];
				if(_item.id == _id) 
				{
					////log.debug("返回item");
					return _item;
				}
			}
	}

	function getItemWithNum( _num)
	{
		    
			return cfg.items[_num];
	}
/*	
	function setAlldisplayNone( jqTab)
	{
			var tabDivs = $(">div", jqTab);
	        for( var i=0; i<tabDivs.length; i++ ){
				var tabDiv = tabDivs[i];
				tabDiv.style.display = "none";
			}
	}
	* */
	function setAlldisplayNone( jqTab,_item)
	{
		  ////alert("显示："+_item.id);
			var tabDivs = $(">div", jqTab);
	        for( var i=0; i<tabDivs.length; i++ ){
				var tabDiv = tabDivs[i];
				//_tabId = tabDiv.id.slice(12);
				//alert("tabDiv.id: "+tabDiv.id+"  _item.id: "+_item.id);
				if(tabDiv.id !=_item.id)
				{
					tabDiv.style.display = "none";
				}else
				{
					tabDiv.style.display = "block";
                    ////alert("开始显示："+_item.load +"   share:"+_item.share);
					if(!(_item.load == null ||_item.load=='') && !_item.share)
					{
						 ////alert("重新加载"+ _item.load);
			    		 if ( _item.iframe == null ){
						
						_item.iframe = newIframe();
						if ( _item.height == null ){
						  _item.height = "100%";
						}
						_item.iframe.height = _item.height;
					}
				//	alert(" _item.load:"+ _item.load);
					_item.iframe.src = _item.load;					
					tabDiv.appendChild(_item.iframe);
					}
				}
			}
	}
	function removeDiv( DivId)
	{
		var div = document.getElementById(DivId);  
        div.parentNode.removeChild(div); //删除
	}
	function addContentDiv(item,i)
	{
				//兼容以前没有id
		if(!item.id) item.id = "ef_tab_"+i;
				if(item.load){	
		
					var iframediv=$("<div id= "+item.id + " title='"+item.title+"' eftabSrc='"+item.load+"'  eftabHeight='"+ item.height+"'  efRemember="+(item.share?"yes":"no")+" style=\"display:none\" />" );
					tabContent.get(0).appendChild(iframediv.get(0));
			
				if ( item.share ){
					if ( sharedIframe == null ){
						sharedIframe = newIframe();
					}
					if ( item.height == null ){
						  item.height = "100%";
					}
					//alert(item.height);
					sharedIframe.height = item.height;
					sharedIframe.src = item.load;
					
					iframediv.append(sharedIframe);
				} 
				
			}else if(item.domNode){
			
				//item.domNode.style.display="none";
				if ( item.height == null ){
						 item.height = "100%";
				}
				item.domNode.style.height = item.height;
				tabContent.get(0).appendChild(item.domNode);
			}else
			{

				var htmldiv=$("<div  id= "+item.id +" style=\"display:none\" />" );		

		        tabContent.get(0).appendChild(htmldiv.get(0));
				htmldiv.append(item.html);
				
			}
	}
	function setDivNode(nd){
		tabDiv = nd;
	}
	
	function getIframe(idx){

		var item = cfg.items[idx];
		if ( item == null )
			return null;
		if(item.load){
			if ( item.share ){
				return sharedIframe;
	    	} else {
	    		if ( item.iframe == null ){
					item.iframe = newIframe();
				}
	    		return item.iframe;	
			}
		}
		
		return null;
	}
	
	function hideItem(idx){
		var item = cfg.items[idx];
		var itemDom = item.dom;
		itemDom.hide();
		if ( itemDom.hasClass(cfg.tabClassOn) ){			
			if(idx < cfg.items.length-1){
				clickTab(idx+1);							
			} else if( idx > 0 ){
				clickTab(idx-1);
			} else {
			  tabDiv.hide();
			}
		}		
	}
	
	function showItem(idx){
		var item = cfg.items[idx];
		var itemDom = item.dom;
		itemDom.show();	
	}
	function clickTab(idx,_noCallback){
	 		var item = cfg.items[idx];
			if(!_noCallback)
			{
				//log.debug("clickTab回调");
				//回调函数是什么
				if(item.callback)
			   {	
					if(item.callback(item) == false)
					return;
			   }
		  	 }
	    var _self = item.dom;
			if(!_self.hasClass(cfg.tabClassOn)) 
          {

			//改变内部得css
			_self.find('td:first').addClass(cfg.tabClassInnerLeft+'_selected');
			_self.find('td:last').addClass(cfg.tabClassInnerRight+'_selected');
			_self.find('td:eq(1)').addClass(cfg.tabClassInnerMiddle+'_selected');
			_self.find('td:eq(2)').addClass(cfg.tabClassInnerMiddle+'_selected');
			
			var activeLi=_self.parent().find('li.'+cfg.tabClassOn);
			activeLi.find('td:first').removeClass().addClass(cfg.tabClassInnerLeft);
			activeLi.find('td:first').style="background-image:url("+efico.get("eftab.tab1")+")";
			activeLi.find('td:last').removeClass().addClass(cfg.tabClassInnerRight);
			activeLi.find('td:last').style="background-image:url("+efico.get("eftab.tab3")+")";
			activeLi.find('td:eq(1)').removeClass().addClass(cfg.tabClassInnerMiddle);
			activeLi.find('td:eq(1)').style = "background-image:url("+efico.get("eftab.tab2")+")";

			activeLi.find('td:eq(2)').removeClass().addClass(cfg.tabClassInnerMiddle).find('div').addClass(cfg.tabClassClose+'_noselected');
			activeLi.find('td:eq(2)').style = "background-image:url("+efico.get("eftab.tab2")+")";
			activeLi.removeClass().addClass(cfg.tabClassOff);
			
			$(this).next().find('div').removeClass().addClass(cfg.tabClassClose);
			_self.removeClass().addClass(cfg.tabClassOn);
			}
			//判断是显示html代码还是ajax请求内容
			setAlldisplayNone(tabContent,item);	
		
						
			
	}
//	function showTab(idx)
//	{
//		var item = cfg.items[idx];
//		//log.debug("www1"+item.id +"  "+ item.load);
//	    var _self = item.dom;
//		
//			//改变内部得css
//			_self.find('td:first').addClass(cfg.tabClassInnerLeft+'_selected');
//			_self.find('td:last').addClass(cfg.tabClassInnerRight+'_selected');
//			_self.find('td:eq(1)').addClass(cfg.tabClassInnerMiddle+'_selected');
//			_self.find('td:eq(2)').addClass(cfg.tabClassInnerMiddle+'_selected');
//			
//			var activeLi=_self.parent().find('li.'+cfg.tabClassOn);
//			activeLi.find('td:first').removeClass().addClass(cfg.tabClassInnerLeft);
//			activeLi.find('td:last').removeClass().addClass(cfg.tabClassInnerRight);
//			activeLi.find('td:eq(1)').removeClass().addClass(cfg.tabClassInnerMiddle);
//			activeLi.find('td:eq(2)').removeClass().addClass(cfg.tabClassInnerMiddle).find('div').addClass(cfg.tabClassClose+'_noselected');
//			activeLi.removeClass().addClass(cfg.tabClassOff);
//			
//			$(this).next().find('div').removeClass().addClass(cfg.tabClassClose);
//			//log.debug("_self.hasClass(cfg.tabClassOn):"+_self.hasClass(cfg.tabClassOn));
//			_self.removeClass().addClass(cfg.tabClassOn);
//			//log.debug("_self.hasClass(cfg.tabClassOn):"+_self.hasClass(cfg.tabClassOn));
//			//判断是显示html代码还是ajax请求内容
//			setAlldisplayNone(tabContent,item);	
//	}
	
	function newTab(item){
				//兼容没有id
	
		addContentDiv(item,cfg.items.length);
		var liLength=tab.find('li').length;
		//var nW=liLength*cfg.tabWidth;
		var nW = tab.find('li:last').offset().left+tab.find('li:last').width()+cfg.tabWidth;

		ccW+=cfg.tabWidth;

		//(ccW>0&&ccW<cfg.tabWidth)?ccW=cfg.tabWidth:null;
		if(nW>cfg.width){

			if(!cfg.tabScroll){
				cfg.tabScroll=true;
		
				scrollLeft=$('<div class="'+cfg.tabClassScrollLeft+'"></div>').click(function(){
					//////log.debug("左导航栏");
					scrollTab(scrollLeft,true);
				});
			
				srcollRight=$('<div class="'+cfg.tabClassScrollRight+'"></div>').click(function(){
				   //////log.debug("右导航栏");
					scrollTab($(this),false);
				});
	    //     	srcollRight=$('<div class="'+cfg.tabClassScrollRight+'"></div>');
				cW-=cfg.tabScrollWidth*2;
		
				tabContenter.width(cW);
		
				scrollLeft.insertBefore(tabContenter);

				srcollRight.insertBefore(tabContenter);
			}
		
			addTab(item);
			scrollTab(srcollRight,false);
		}
		else{
			addTab(item);
		}
      cfg.items.push(item);
	}
	$.each(cfg.items,function(i,o){
		addTab(o);
	});
	var cW=cfg.width;
	var scrollLeft,srcollRight;

	if(cfg.tabScroll){
		scrollLeft=$('<div class="'+cfg.tabClassScrollLeft+'"></div>').click(function(){
				scrollTab($(this),true);
		});
		//if(tW>cW){
			srcollRight=$('<div class="'+cfg.tabClassScrollRight+'"></div>').click(function(){
	
				scrollTab($(this),false);
			});
		//}
		//else{
			//srcollRight=$('<div class="'+cfg.tabClassScrollRight+'"></div>');
		//}
		cW-=cfg.tabScrollWidth*2;
	}
	// Download by http://www.codefans.net
	var container=$('<div />').css({
		'overflow':'hidden',
		'position':'relative',
		'width':cfg.width,
		'height':cfg.tabHeight
	}).append(scrollLeft).append(srcollRight).addClass(cfg.tabClassDiv);

	var tabContenter=$('<div />').css({
		'overflow':'hidden',
		'width':cW,
		'height':cfg.tabHeight,
		'float':'left'
	}).append(tab);
	var obj=$(this).append('<br>').append(tabH).append(container.append(tabContenter));
	obj.get(0).appendChild(tabContent.get(0));
	//点击第一
	tab.find('li:first td:eq(1)').click();
	return obj.extend({'addTab':addTab,'newTab':newTab, 'getContentPanel':getContentPanel, 'getIframe':getIframe, 'hideItem':hideItem, 'showItem':showItem, 'setDivNode':setDivNode, 'clickTab':clickTab,'getItemWithNum':getItemWithNum,'getItemWithId': getItemWithId});
};
