(function($) { 
	$.fn.scrolling = function (o){
		o = $.extend(
		{
			speed:1,
			direction:'horizontal'
		}, o);
		
		var timeout;
		if(o.direction == 'vertical'){
			var dir = "top";
			var dim = "height";
		}else{
			var dir = "left";
			var dim = "width";
		}
		function scroll(obj,dist,done){
			if (done < dist){
				if(o.direction == 'vertical')
					obj.css("top",obj.position().top-o.speed);
				else
					obj.css("left",obj.position().left-o.speed);
			} else {
				clearInterval(timeout);
				obj.scrolling(o.speed);
			}
		}

		$(this).each(function(){
			var i = $(this);
			i.unbind();
			i.parent().css('position','relative');
			if(o.direction == 'vertical')
				var widthpx = i.parent().css('height');
			else
				var widthpx = i.parent().css('width');
			width = widthpx.replace(/px/,'');
			
			if(o.direction == 'vertical'){
				var scrollwidth = i.height() + (+width);
				i.css({'position':'absolute','top':+width,'left':'0'});
			}else{
				var scrollwidth = i.width() + (+width);
				i.css({'position':'absolute','left':+width,'top':'0'});
			}
			i.bind('mouseenter',function(){
				
				clearInterval(timeout);
				i.stop(true);
			});
			i.bind('mouseleave',function(){
				var currentpos = i.position().left;
				var leftover = currentpos + scrollwidth;
				i.clearQueue();
				clearInterval(timeout);
				distdone = 0;
				timeout = setInterval(function(){scroll(i,scrollwidth,distdone);distdone+=o.speed;},26);
			});
			var distdone = 0;
			timeout = setInterval(function(){scroll(i,scrollwidth,distdone);distdone+=o.speed;},26);
		});
	}
})(jQuery);
