﻿/*!
 * cxScroll 1.0.0
 */
(function($){
	$.fn.cxScroll=function(settings){
		if(!this.length){return;};
		settings=$.extend({},$.cxScroll.defaults,settings);

		var obj=this;
		var scroller={};
		scroller.fn={};

		scroller.box=obj.find(".mw_box");
		scroller.list=scroller.box.find(".list");
		scroller.items=scroller.list.find("li");
		scroller.itemSum=scroller.items.length;

		if(scroller.itemSum<=1){return;};

		scroller.plusBtn=obj.find(".plus");
		scroller.minusBtn=obj.find(".minus");
		scroller.itemWidth=scroller.items.outerWidth();
		scroller.itemHeight=scroller.items.outerHeight();

		if(settings.direction=="left"||settings.direction=="right"){
			if(scroller.itemWidth*scroller.itemSum<=scroller.box.outerWidth()){return;};
			scroller.plusVal="left";
			scroller.minusVal="right";
			scroller.moveVal=scroller.itemWidth;
		}else{
			if(scroller.itemHeight*scroller.itemSum<=scroller.box.outerHeight()){return;};
			scroller.plusVal="top";
			scroller.minusVal="bottom";
			scroller.moveVal=scroller.itemHeight;
		};

		// 元素：左右操作按钮
		if(settings.plus&&!scroller.plusBtn.length){
			scroller.plusBtn=$("<a></a>",{"class":"plus"}).appendTo(obj);
		};
		if(settings.minus&&!scroller.minusBtn.length){
			scroller.minusBtn=$("<a></a>",{"class":"minus"}).appendTo(obj);
		};

		// 元素：后补
		scroller.list.append(scroller.list.html());

		// 方法：开始
		scroller.fn.on=function(){
			if(!settings.auto){return;};
			scroller.fn.off();

			scroller.run=setTimeout(function(){
				scroller.fn.goto(settings.direction);
			},settings.time);
		};

		// 方法：停止
		scroller.fn.off=function(){
			if(typeof(scroller.run)!=="undefined"){clearTimeout(scroller.run);};
		};

		// 方法：增加控制
		scroller.fn.addControl=function(){
			if(settings.plus&&scroller.minusBtn.length){
				scroller.plusBtn.bind("click",function(){
					scroller.fn.goto(scroller.plusVal);
				});
			};
			if(settings.minus&&scroller.minusBtn.length){
				scroller.minusBtn.bind("click",function(){
					scroller.fn.goto(scroller.minusVal);
				});
			};
		};

		// 方法：解除控制
		scroller.fn.removeControl=function(){
			if(scroller.plusBtn.length){scroller.plusBtn.unbind("click");};
			if(scroller.minusBtn.length){scroller.minusBtn.unbind("click");};
		};

		// 方法：滚动
		scroller.fn.goto=function(d){
			scroller.fn.off();
			scroller.fn.removeControl();
			scroller.box.stop(true);

			var _max;	// _max	滚动的最大限度
			var _dis;	// _dis	滚动的距离

			switch(d){
			case "left":
			case "top":
				_max=0;
				if(d=="left"){
					if(parseInt(scroller.box.scrollLeft(),10)==0){
						scroller.box.scrollLeft(scroller.itemSum*scroller.moveVal);
					};
					_dis=scroller.box.scrollLeft()-(scroller.moveVal*settings.step);
					if(_dis<_max){_dis=_max};
					scroller.box.animate({"scrollLeft":_dis},settings.speed,function(){
						if(parseInt(scroller.box.scrollLeft(),10)<=_max){
							scroller.box.scrollLeft(0);
						};
						scroller.fn.addControl();
					});
				}else{
					if(parseInt(scroller.box.scrollTop(),10)==0){
						scroller.box.scrollTop(scroller.itemSum*scroller.moveVal);
					};
					_dis=scroller.box.scrollTop()-(scroller.moveVal*settings.step);
					if(_dis<_max){_dis=_max};
					scroller.box.animate({"scrollTop":_dis},settings.speed,function(){
						if(parseInt(scroller.box.scrollTop(),10)<=_max){
							scroller.box.scrollTop(0);
						};
						scroller.fn.addControl();
					});
					console.log($(".mw_scroll_2_2 .mw_box").scrollTop())
				};
				break;
			case "right":
			case "bottom":
				_max=scroller.itemSum*scroller.moveVal;
				if(d=="right"){
					_dis=scroller.box.scrollLeft()+(scroller.moveVal*settings.step);
					if(_dis>_max){_dis=_max};
					scroller.box.animate({"scrollLeft":_dis},settings.speed,function(){
						if(parseInt(scroller.box.scrollLeft(),10)>=_max){
							scroller.box.scrollLeft(0);
						};
					});
				}else{
					_dis=scroller.box.scrollTop()+(scroller.moveVal*settings.step);
					if(_dis>_max){_dis=_max};
					scroller.box.animate({"scrollTop":_dis},settings.speed,function(){
						if(parseInt(scroller.box.scrollTop(),10)>=_max){
							scroller.box.scrollTop(0);
						};
					});
					console.log($(".mw_scroll_2_2 .mw_box").scrollTop())
				};
				break;
			};
			scroller.box.queue(function(){
				scroller.fn.addControl();
				scroller.fn.on();
				$(this).dequeue();
			});
		};

		// 事件：鼠标移入停止，移出开始
		scroller.box.hover(function(){
			scroller.fn.off();
		},function(){
			scroller.fn.on();
		});

		scroller.fn.addControl();
		scroller.fn.on();
	};

	// 默认值
	$.cxScroll={defaults:{
		direction:"right",	// 滚动方向
		step:2,				// 滚动步长
		speed:300,			// 滚动速度
		time:1000,			// 自动滚动间隔时间
		auto:true,			// 是否自动滚动
		plus:true,			// 是否使用 plus 按钮
		minus:true			// 是否使用 minus 按钮
	}};
})(jQuery);