/*
 * jScroller
 * based on...
 * jScroller 0.3 - Scroller Script by Markus Bordihn (http://markusbordihn.de)
 *
 * $Date: Thu, 06 Dec 2007 $
 * $Rev: 2.0 $
 */

jQuery.fn.jScroller = function(settings) {
	settings = jQuery.extend({
		interval: 0,
		refresh: 30,
		direction: "left",
		speed: 2,
		left: 0
	}, settings);
	return this.each(function(){
		var $scroller = jQuery(this);
		$scroller.addClass("scroller");
		$scroller.css("position", "relative");
		$scroller.css("left", settings.left);
		$scroller.css("top", "0");
		var $container = $scroller.parent();
		$container.css("overflow", "hidden");
		
		var containerWidth = $container.width();
		var scrollerWidth = 0;
		
		$scroller.find("li").each(function(i){
			scrollerWidth += jQuery(this, i).width();
		});	
		$scroller.width(scrollerWidth);
		
		var totalTravel = scrollerWidth + containerWidth;
		
		function start() {
			this.interval = window.setInterval(doScroll, settings.refresh);
		}
		function stop() {
			window.clearInterval(this.interval);
			this.interval = 0;
		}
		function doScroll() {
			var offset = $scroller.offset();
			var residualSpace = offset.left + scrollerWidth;
			
			var left = Number((/[0-9-,.]+/.exec($scroller.css('left'))||0));
			
			switch(settings.direction) {
				case 'left':
					if (offset.left <= -1*scrollerWidth) {left = containerWidth;}
					$scroller.css("left", (left - settings.speed) + "px");
					break;
			}
		}
		$scroller.hover(function(){
			stop();
			},
			function(){
				start();
			});
		$scroller.focus(function(){
			stop();
			},
			function(){
				start();
			});
		start();
	});	
};