/*!
 * liScroll 1.0
 * Examples and documentation at: 
 * http://www.gcmingati.net/wordpress/wp-content/lab/jquery/newsticker/jq-liscroll/scrollanimate.html
 * 2007-2010 Gian Carlo Mingati
 * Version: 1.0.2 (30-MARCH-2009)
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 * Requires:
 * jQuery v1.2.x or later
 * 
 
 * Modified by Steve Roberts to be more 'continuous' - original code below.
 *
 */
 
 
 
jQuery.fn.liScroll = function(settings) {
		settings = jQuery.extend({
		travelocity: 0.07
		}, settings);		
		return this.each(function(){
				var $strip = jQuery(this);
				$strip.addClass("newsticker")
				
				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 	
				var stripWidth = 5 ; 
				
				var origPos = new Array();
				var li_widths = new Array();
				
				$strip.find("li").each(function(i){
				/*
					jQuery(this, i).css('left',stripWidth);
					jQuery(this, i).css('position','absolute');
					jQuery(this, i).css('float','none');*/
					li_widths.push(jQuery(this, i).outerWidth(true));
					stripWidth += li_widths[i]; 
					
				});
				//var shortStripPad = Math.max(0,(containerWidth - stripWidth));
				$strip.width(stripWidth);	
				
				
				$strip.css('left',containerWidth);
				
				//duplicate the ul and place it to the right of strips.eq(0);
				$strip.clone().appendTo('.mask');
				$strips = $strip.parent().children();
				$strips.eq(1).css('left',(containerWidth + stripWidth) );
		
				
				function scrollnews($strip_ul){
				
					
					var offset = parseFloat($strip_ul.css('left'));
					if(offset <= (0 - stripWidth)){
						
						offset = Math.max(stripWidth,containerWidth);
						$strip_ul.css('left',offset);
					}
					var space = offset + stripWidth;
					var time = space/settings.travelocity;
					
					$strip_ul.animate({left: '-='+ space}, time, "linear", function(){
						scrollnews($(this));
					});
					
				}
					
				function startScroll(){
					$strips.each(function(i){
						scrollnews(jQuery(this, i));
					});
				}
				
				function stopScroll(){
					$strips.each(function(i){
						jQuery(this).stop();
					});
				}
				
				$strips.hover(function(){stopScroll();},function(){startScroll();});		
				
				startScroll();
		});	
};
 
 /*
 
 ul take 1
 
 jQuery.fn.liScroll = function(settings) {
		settings = jQuery.extend({
		travelocity: 0.07
		}, 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).outerWidth(true); // thanks to Michael Haszprunar
				});
				$strip.width(stripWidth);	
				
				//duplicate the ul and place it to the right of strips.eq(0);
				$strip.clone().appendTo('.mask');
				$strips = $strip.parent();
				$strips.children().eq(1).css('left',stripWidth+'px');
		
				function scrollnews($strip_ul){
				
					var $p = $($strip_ul).parent().children();
					var ul_index = $p.index($strip_ul);
					
					var space = Math.max(stripWidth,containerWidth); //offset + li_w;
					var time = space/settings.travelocity;
					
					$strip_ul.animate({left: '-='+ space}, time, "linear", function(){
						scrollnews($(this));
					});
					
				}
					
				function startScroll(){
					$strips.each(function(i){
						scrollnews(jQuery(this, i));
					});
				}
				
				function stopScroll(){
					$strips.each(function(i){
						jQuery(this).stop();
					});
				}
				
				$strips.hover(function(){stopScroll();},function(){startScroll();});		
				
				startScroll();
		});	
};
 

jQuery.fn.liScroll = function(settings) {
		settings = jQuery.extend({
		travelocity: 0.07
		}, settings);		
		return this.each(function(){
				var $strip = jQuery(this);
				$strip.addClass("newsticker")
				
				var $mask = $strip.wrap("<div class='mask'></div>");
				var $tickercontainer = $strip.parent().wrap("<div class='tickercontainer'></div>");	
				
				$strip.css('left',0);
				var containerWidth = $strip.parent().parent().width();	//a.k.a. 'mask' width 	
				var stripWidth = 0;
				var origPos = new Array();
				var li_widths = new Array();
				var prev_w = 0;
				var trailingedge_offset = 0;
				var trailingedge_offsets = new Array();
				$strip.find("li").each(function(i){
					origPos.push(containerWidth + stripWidth);
					jQuery(this, i).css('left',origPos[i]);
					jQuery(this, i).css('position','absolute');
					jQuery(this, i).css('float','none');
					li_widths.push(jQuery(this, i).outerWidth(true));
					stripWidth += li_widths[i]; 
					prev_w = i == 0 ? prev_w : li_widths[i-1] ;
					trailingedge_offset += Math.max(0,(prev_w - li_widths[i]));
					trailingedge_offsets.push(trailingedge_offset);
				});
				var shortStripPad = Math.max(0,(containerWidth - stripWidth));
				
				function scrollnews($strip_li){
				
					var $p = $($strip_li).parent().children();
					var li_index = $p.index($strip_li);
					var li_w = li_widths[li_index];
				
					var offset = parseFloat($strip_li.css('left'));
					if(offset <= (0 -li_w)){
						
						var init_offset = (stripWidth - li_w) + shortStripPad;

						offset = Math.max(init_offset,(containerWidth + trailingedge_offsets[li_index]) ); // if the list is msaller than the container then it needs to be positioned taking into account the container width AND the trailing edge of the previously animated item
						$strip_li.css('left',offset);
					}
					var space = offset + li_w;
					var time = space/settings.travelocity;
					
					$strip_li.animate({left: '-='+ space}, time, "linear", function(){
						scrollnews($(this));
					});
					
				}
					
				function startScroll(){
					$strip.find("li").each(function(i){
						scrollnews(jQuery(this, i));
					});
				}
				
				function stopScroll(){
					$strip.find("li").each(function(i){
						jQuery(this).stop();
					});
				}
				
				$strip.hover(function(){stopScroll();},function(){startScroll();});		
				
				startScroll();
		});	
};



	jQuery.fn.liScroll = function(settings) {
		settings = jQuery.extend({
		travelocity: 0.07
		}, 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).outerWidth(true); // thanks to Michael Haszprunar
				});
				$strip.width(stripWidth);			
				var totalTravel = stripWidth+containerWidth;
				var defTiming = totalTravel/settings.travelocity;	// thanks to Scott Waye		
				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, residualTime);
				});			
		});	
};

*/

