


jQuery.fn.liScroll = function(settings) {
		settings = jQuery.extend({
		travelocity: 0.5
		}, settings);
		return this.each(function(){
				var $strip = jQuery(this);
				$strip.addClass("newsticker")
				var stripWidth = 0;
				var $mask = $strip.wrap("<div class='mask'></div>");
				var $tickercontainer = $strip.parent().wrap("<div class='tickercontainer'></div>");
				var containerWidth = $strip.parent().parent().width();	//a.k.a. 'mask' width
				$strip.find("li").each(function(i){
				stripWidth += jQuery(this, i).width();
				});
				$strip.width(stripWidth);

				/* Baseline for constant speed with varying strip widths */
				constantSpeed = 43650; // arbitrary desired speed
				constantSpeedAtWidth = 2374; // width of strip for that speed

				/* Use baseline to adjust speed at this width */
				adjustTravelocity = stripWidth / constantSpeed;

				/* To keep the speed constant with varying strip widths, we need to adjust the speed based on the current width compared to our baseline width */
				var totalTravel = stripWidth+containerWidth;
				percentAdjust = constantSpeedAtWidth/totalTravel;
				adjustTravelocity = adjustTravelocity * percentAdjust * settings.travelocity;
				var defTiming = stripWidth/adjustTravelocity;

				function scrollnews(spazio, tempo){
				$strip.animate({left: '-='+ spazio}, tempo, "linear", function(){
					$strip.css("left", containerWidth);
					scrollnews(totalTravel, defTiming);
				});
				}

				scrollnews(totalTravel, defTiming);

				$strip.hover(function(){
				jQuery(this).stop();
				},
				function(){
					var offset = jQuery(this).offset();
					var residualSpace = offset.left + stripWidth;
					var residualTime = residualSpace/settings.travelocity;
					scrollnews(residualSpace, defTiming);
				});
		});
};

$().ready(function () {
	$("ul#ticker").show();
	$("ul#ticker").liScroll({travelocity: 1.5});
});

