/**
 * @classDescription 模拟选项卡
 * @date 2010-2-11
 * @DOM
 *  	<div class="tabs">
 *  		<ul>
 *   			<li></li>
 *   			<li></li>
 *  		</ul>
	 <div class='tabs'>
		<div class="tabcaption">
			<ul><li class="curr">最新评论</li>
				<li>近期热评</li>
				<li>随机文章</li>
			</ul>
		</div>
		<div class="tabcontent">
			<div class="curr">第一个选项卡，默认显示</div>
			<div>第二个选项卡，默认隐藏</div>
			<div>第三个选项卡，默认隐藏</div>
		</div>
	</div>
 *  	
 * @CSS
 *  	.tabs{}
        .tabs .tabcaption{}
		.tabs .tabcaption li{}
		.tabs .tabcaption li a{}
		.tabs .tabcaption .curr{}
		.tabs .tabcaption .curr a{}
		.tabs .tabcontent{}
		.tabs .tabcontent div{}
		.tabs .tabcontent .curr{}
 *
 * @call options
 *
    $("#testtab").tab({
	tabId:"#tabtag", //切换控制器的ID
	tabTag:"li",  //切换控制器标签
	conId:"#tabcon", //内容容器ID
	conTag:"div",  //容器标签
	act:"click", //点击触发 也可以不设置 默认就为click 设置为 mouseover则为划过
	effact: "scrolly", //效果为纵向滚动()
	auto:true, //是否自动滚动
	dft:2 //设置起始显示序列
	})
 */
(function($){
	function cur(ele,currentClass,tag){
	ele= $(ele)? $(ele):ele;
	if(!tag){
		ele.addClass(currentClass).siblings().removeClass(currentClass);
		}else{
			ele.addClass(currentClass).siblings(tag).removeClass(currentClass);
		}
	}
	$.fn.tab=function(options){
	var org={
		tabId:    "",
		tabTag:   "",
		conId:    "",
		conTag:   "",
		curClass: "cur",
		act:      "click",
		dft:      0,
		effact:   null,
		auto:     false,
		autotime: 3000,
		aniSpeed: 500
		}	
		
	$.extend(org,options);
	
	var t=false;
	var k=0;
	var _this=$(this);
	var tagwrp=$(org.tabId);
	var conwrp=$(org.conId);
	var tag=tagwrp.find(org.tabTag);
	var con=conwrp.find(org.conTag);	
	var len=tag.length;
	var taght=parseInt(tagwrp.css("height"));
	var conwh=conwrp.get(0).offsetWidth;
	var conht=conwrp.get(0).offsetHeight;
	var curtag=tag.eq(org.dft);
	//prepare
	cur(curtag,org.curClass);
	con.eq(org.dft).show().siblings(org.conTag).hide();
	
	if(org.effact=="scrollx"){
		var padding=parseInt(con.css("padding-left"))+parseInt(con.css("padding-right"));										
		_this.css({
				  "position"   :"relative",
				  "height"     :taght+conht+"px",
				  "overflow"   :"hidden" 
				  });				
		
		conwrp.css({
				   "width"     :len*conwh+"px",
				   "height"    :conht+"px",
				   "position"  :"absolute",
				   "top"       :taght+"px"
				   });
		
		con.css({
				"float"        :"left",
				"width"        :conwh-padding+"px",
				"display"      :"block"
				});
		}
		
	if(org.effact=="scrolly"){
		var padding=parseInt(con.css("padding-top"))+parseInt(con.css("padding-bottom"));										
		_this.css({
				  "position"   :"relative",
				  "height"     :taght+conht+"px",
				  "overflow"   :"hidden" 
				  });
		tagwrp.css({
				   "z-index"   :100
				   })		
		conwrp.css({
				   "width"     :"100%",
				   "height"    :len*conht+"px",
				   "position"  :"absolute",
				   "z-index"   :99												 
				   })		
		con.css({
				"height"       :conht-padding+"px",
				"float"        :"none",											
				"display"      :"block"
				});
		}	
	
	tag.css({"cursor":"pointer"})
	    .each(function(i){
		tag.eq(i).bind(org.act,function(){
				cur(this,org.curClass);	
				k=i;
				switch(org.effact){					
					case "slow"    : con.eq(i).show("slow").siblings(org.conTag).hide("slow");
					break;
					case "fast"    : con.eq(i).show("fast").siblings(org.conTag).hide("fast");
					break;
					case "scrollx" : conwrp.animate({left:-i*conwh+"px"},org.aniSpeed);
					break;
					case "scrolly" : conwrp.animate({top:-i*conht+taght+"px"},org.aniSpeed);
					break;
					default        : con.eq(i).show().siblings(org.conTag).hide();
					break;
					//End of switch
					}			
				}		
			)									  
		})	
	
	if(org.auto){		
		var drive=function(){
			if(org.act=="mouseover"){
				tag.eq(k).mouseover();
				}else if(org.act=="click"){
				tag.eq(k).click();
				}			
			k++;			
			if(k==len) k=0;			
			}
		t=setInterval(drive,org.autotime);	
		}
	}//End of $.fn.tab	
})(jQuery);