(function($){			  
	$.fn.myscroller = function(){
		$this = $(this);
		$clip = $this.children("ul").wrap('<div class="clip">').parent();
		
		$clip.children("ul").clone().appendTo($clip);
		$list = new Array();
		$list[0] = $clip.children("ul:first").addClass("list-1").css("left", 0);
		$list[1] = $clip.children("ul:last").addClass("list-2").css("left", $list[0].width());
		
		$('<div class="btn btn-left"></div><div class="btn btn-right"></div>').appendTo($this);
		$btnleft = $this.children("div.btn-left");
		
		var clipwidth = $clip.width();
		var listwidth = $list[0].width();
		var left = new Array();
		left[0] = 0;
		left[1] = listwidth;
		var i = 0;	
		var scrolltimer;
		
		function initMoveLeft(){
			//clearInterval(scrolltimer);
			
			if(left[0] <= (-1 * listwidth))
			{
				left[0] = left[1] + listwidth;
				i = 1;
			}
			else if(left[1] <= (-1 * listwidth))
			{
				left[1] = left[0] + listwidth;
				i = 0;
			}
		}
		
		function moveLeft(){
			initMoveLeft();
/*			if(Math.abs(left[i]) == listwidth)
			{
				left[i] = left[not(i)] + listwidth;
				i = not(i);
				console.log("moveLeft: i = " + i);
			}
*/			
			left[0] -= 2;
			left[1] -= 2;
			
			$list[0].css("left", left[0]);
			$list[1].css("left", left[1]);
		}
		
		initMoveLeft();
		scrolltimer = setInterval(moveLeft, 100);
		
		function initMoveRight(){
			//clearInterval(scrolltimer);
			
			if(left[0] > clipwidth)
			{
				left[0] = left[1] - listwidth;
				i = 1;
			}
			else if(left[1] > clipwidth)
			{
				left[1] = left[0] - listwidth;
				i = 0;
			}
		}
		
		function moveRight(){
			initMoveRight();			
/*			if(left[i] == clipwidth)
			{
				left[i] = left[not(i)] - listwidth;
				i = not(i);
				console.log("moveRight: i = " + i);
			}
*/			
			left[0] += 2;
			left[1] += 2;
			
			$list[0].css("left", left[0]);
			$list[1].css("left", left[1]);
		}

		$btnleft.mouseenter(function(){
			clearInterval(scrolltimer);
			initMoveRight();
			scrolltimer = setInterval(moveRight, 30);		
		});
		
		$btnleft.mouseleave(function(){
			clearInterval(scrolltimer);
			initMoveLeft();
			scrolltimer = setInterval(moveLeft, 30);
		});
		
		$clip.mouseenter(function(){
			clearInterval(scrolltimer);
		});
		
		$clip.mouseleave(function(){
			clearInterval(scrolltimer);
			initMoveLeft();
			scrolltimer = setInterval(moveLeft, 30);
		});
	};
	
	function not(value){
		return value == 0?1:0;
	}
})(jQuery);
