﻿jQuery.fn.scroller = function(settings) {
		settings = jQuery.extend({
		speed: 0.1,
		moveto:'left',
		width:300,
		divclass:null
		}, settings);	
		return this.each(function(){
				var $slider=jQuery(this);
				var $id=this.id;
				var $height=0;
				var $width=0;
				//var item_height;
                
				$slider.wrap('<div '+((settings.divclass==null)?'':(' class="'+settings.divclass+'"'))+' id="window-'+$id+'"></div>');

				$slider.find("li").each(function(i){
					$(this).css({float:'left'});
					$(this).wrapInner('<div style="padding-left:5px"></div>');
					$width+=$(this).width();
				});
				
				$window=jQuery('#window-'+$id).css({width:settings.width,
				                overflow:'hidden',position:'relative'});

				$slider.css({width:3*$width,position:'relative',listStyle:'none',padding:0,margin:0});
				var list=$slider.html();
				$slider.append(list).append(list);
                $slider.css({left:(settings.moveto.toLowerCase()=='left')?'0':-$width});


				//var defTiming = stripWidth/settings.travelocity;
				//var totalTravel = stripWidth+containerWidth;
				
				var totaltiming = $width/settings.speed;
				var totalshift = $width;
				var direction = settings.moveto;
				
				function scrollItems(shift, timing, direction){
				    //alert(direction);
					var left,sign;
				    if(direction.toLowerCase()=='left') {
				        sign='-';
				        left=0;
				    } else {
				        sign='+';
				        left=-totalshift;
				    }
				    
				    //sign=(direction.toString().toLowerCase()=='left')?'-':'+';
				    //$slider.css({left:left});
				    
				    $slider.animate({left: sign+'='+ shift}, timing, "linear", 
				    function(){
				        //alert('qui');
						//alert(left);
				        $slider.css('left',left);
				        scrollItems(totalshift, totaltiming,direction);
				    });
				}

				
				scrollItems(totalshift,totaltiming,direction);
				
				$slider.hover(function(){
				    jQuery(this).stop();
				},
				function(){
				    var offset = parseInt(jQuery(this).css('left'));
					
					//var offset=jQuery(this).offset();
					var direction=settings.moveto;
				    //alert(offset);
					//alert(direction);
				    var residualSpace = ((direction.toLowerCase()=='left')?(totalshift+offset):-offset);//offset.left + $width;
				    //alert(residualSpace);
					//alert(settings.speed);
				    var residualTime = residualSpace/settings.speed;
				    scrollItems(residualSpace, residualTime,direction);
				});	
				
		});	
};