﻿(function($){  
   $.fn.extend({ 
		//定义插件名称	   
    bannerChange: function(options) {  
	    //为插件参数设定默认值
		var  defaults = {  
		     kind: "top",  //切换方向
			 selclass:"sel", //选中类名
			 indexclass:"nums" //切换响应列表类名
			  };  
			  //使用$.extend()覆盖插件中的默认值
	    var options = $.extend(defaults, options); 
		     //保持插件的连缀能力		 						   
		var obj = $(this);//获取当前对象
		var changepx; //定义切换像素数
		if(options.kind=="left") changepx=obj.width();//根据切换类型，指定像素数为当前对象的宽或高
		else changepx=obj.height();
		var nums=obj.find("ul."+options.indexclass).find("li a");//获取切换响应列表项
		nums.eq(0).addClass(options.selclass);//对第一项添加选中状态
		var maxx=nums.length;//获取列表长度
		var timer=setInterval(function(){change(obj,options.selclass,options.indexclass,maxx,changepx,options.kind)},4000);//设置自动切换
		nums.mouseover(function(){//鼠标经过时，停止自动切换，响应鼠标事件
			clearInterval(timer);//停止自动切换
			var objsel=nums.closest("."+options.selclass);//之前选中列表项
			objsel.removeClass(options.selclass);//消除选中状态
			$(this).addClass(options.selclass);//当前列表项添加选中状态
			var index=nums.index(this);//获取当前序列号
			run(obj,options.indexclass,changepx,index,options.kind);//进行图片切换
			timer=setInterval(function(){change(obj,options.selclass,options.indexclass,maxx,changepx,options.kind)},4000);//响应鼠标事件完毕，恢复自动切换功能
		})
		function change(obj,selclass,indexclass,maxx,changepx,kind){//自动切换执行函数
			var nums=obj.find("ul."+indexclass).find("li a");//获取切换响应列表项
			var objsel=nums.closest("."+selclass);//之前选中列表项
			var oldindex=nums.index(objsel);//获取当前序列号
			objsel.removeClass(selclass);//消除选中状态
			nums.eq((oldindex+1)%maxx).addClass(selclass);//下一个列表项添加选中状态
			var index=(oldindex+1)%maxx;//计算下一个列表项序列号
			run(obj,indexclass,changepx,index,kind);//进行图片切换
		}
		function run(obj,indexclass,changepx,index,kind){//图片切换函数
			var pics=obj.find("ul").not("ul."+indexclass);//获取图片列表
			if(($.browser.msie&&$.browser.version=='6.0')){
				pics.css("padding-top","4px");
				pics.find("li").css("margin-top","-4px");
			}
			var kindnum=index*changepx;//计算要改变的样式属性值
			switch(kind){//根据条件，改变相应的样式属性值
				case "top":pics.animate({"margin-top":-kindnum+'px'},0); break;
				case "left":pics.animate({"margin-left":-kindnum+'px'},0); break;
				case "fade":pics.hide();pics.css("margin-top",-kindnum+'px');pics.fadeIn(0); break;
			}
		}
   } 
  }); 
 })(jQuery);
