/*****************WY-top*****************
*				滚动栏
* @file			surScrollBar.jq.js
* @author		maming
* @version		1.0.0 2011-01-25
*****************WY-top*****************/
;(function($){
	$.SurScrollBar = function(settings)
	{
		var obj = {mask:{},scrollItem:{}},
			oneWidth = 0,
			oneHeight = 0,
			options =
			{
				autoPlay : 0,
				playDelay : 2000,
				barNum : {x:4,y:1},
				selector :
				{
					mask : '.surMask',
					scrollItem : '.surScrollItem',
					scrollLeft : '.surScrollLeft',
					scrollRight : '.surScrollRight',
					scrollUp : '.surScrollUp',
					scrollDown : '.surScrollDown'
				},
				direction : 'h',
				activeClass : 'surActive',
				onClick : function(){return;}
			},
			timer = 0,
			dealLeft = function(){
				obj.scrollItem.children(':lt('+options.barNum.x+')').appendTo(obj.scrollItem).end().end().children(':first').click();
			},
			dealRight = function(){
				obj.scrollItem.children(':gt('+(obj.scrollItem.children().length - options.barNum.x - 1)+')').prependTo(obj.scrollItem).end().end().css('margin-left',-(oneWidth * options.barNum.x));
			},
			dealUp = function(){
				obj.scrollItem.children(':lt('+options.barNum.x+')').appendTo(obj.scrollItem).end().end().children(':first').click();
			},
			dealDown = function(){
				obj.scrollItem.children(':gt('+(obj.scrollItem.children().length - options.barNum.x - 1)+')').prependTo(obj.scrollItem).end().end().css('margin-top',-(oneHeight * options.barNum.y));
			},
			init = function(settings){
				$.extend(options, options, settings || {});
				obj.mask = $(options.selector.mask);
				obj.scrollItem = $(options.selector.scrollItem);
				obj.scrollItem.children().removeClass(options.activeClass).clone(true).appendTo(obj.scrollItem);
				var _child = obj.scrollItem.children().eq(0);
//				_child.addClass(options.activeClass);
				oneWidth = _child.outerWidth(true);
				oneHeight = _child.outerHeight(true);
				obj.mask.css({'width' : options.barNum.x * oneWidth, 'height' : options.barNum.y * oneHeight, overflow : 'hidden'});

				if(options.direction == 'h')
				{
					obj.scrollItem.css({'width':obj.scrollItem.children().length * oneWidth});
					//绑定事件
					$(options.selector.scrollLeft).click(scrollLeft);
					$(options.selector.scrollRight).click(scrollRight);
				}
				else if(options.direction == 'v')
				{
					obj.scrollItem.css({'width':options.barNum.x * oneWidth});
					//绑定事件
					$(options.selector.scrollUp).click(scrollUp);
					$(options.selector.scrollDown).click(scrollDown);
				}

				//绑定事件
				obj.scrollItem.children().click(function(){
					$(this).addClass(options.activeClass).siblings().removeClass(options.activeClass);
				}).click(options.onClick);

				obj.scrollItem.children(':first').click();

				if(options.autoPlay == 1) timer = setInterval(function(){play();},options.playDelay);
			},
			scrollLeft = function(){
				if(options.autoPlay == 1) clearInterval(timer);
				obj.scrollItem.not(':animated').animate({'marginLeft' : '-='+ (oneWidth * options.barNum.x)},'slow',dealLeft).animate({'marginLeft': 0},0,function(){if(options.autoPlay == 1) timer = setInterval(function(){play();},options.playDelay);});
			},
			scrollRight = function(){
				if(options.autoPlay == 1) clearInterval(timer);
				obj.scrollItem.not(':animated').animate({},0,dealRight).animate({'marginLeft' : '+='+ (oneWidth * options.barNum.x)},'slow',function(){obj.scrollItem.children(':eq('+(options.barNum.x - 1)+')').click();if(options.autoPlay == 1) timer = setInterval(function(){play();},options.playDelay);});
			},
			scrollUp = function(){
				if(options.autoPlay == 1) clearInterval(timer);
				obj.scrollItem.not(':animated').animate({'marginTop' : '-='+ (oneHeight * options.barNum.y)},'normal',dealUp).animate({'marginTop': 0},0,function(){if(options.autoPlay == 1) timer = setInterval(function(){play();},options.playDelay);});
			},
			scrollDown = function(){
				if(options.autoPlay == 1) clearInterval(timer);
				obj.scrollItem.not(':animated').animate({},0,dealDown).animate({'marginTop' : '+='+ (oneHeight * options.barNum.y)},'normal',function(){obj.scrollItem.children(':eq('+(options.barNum.x - 1)+')').click();if(options.autoPlay == 1) timer = setInterval(function(){play();},options.playDelay);});
			},
			play = function(){
				if(obj.scrollItem.children('.'+options.activeClass).index() == (options.barNum.x - 1))
				{
					scrollLeft();
				}
				else
				{
					obj.scrollItem.children('.'+options.activeClass).next(':not(:animated)').click();
				}
			};
		init(settings);
	};
})(jQuery);
