/*
SCROLLER
Author: Francesco Paggin

Scroller orizzontale

parameters:
	panel: il pannello scorrevole
	
*/
(function($) {
	$.fn.panescroller = function(params) {
		
		var defaults = {
			panel:'ul',
			element: 'li',
			direction:'vert',
			size:400
		};
		
		var opts = $.extend(defaults, params);
		
		return this.each(function() {
			var $wrapper = $(this);
			var $panel = $(opts.panel, this);
			var $elements = $(opts.element, this);
			
			var speed = 0;
			var pos = 0;
			var loop = 0;
						
			if (opts.direction == 'vert') {
			
				var size = $elements.eq(0).outerHeight();
				var width = $elements.eq(0).width();
				var panel_size = size * $elements.length;
				
				if (panel_size > opts.size) {
				
					var limit = opts.size - panel_size;
								
					$wrapper.css({
						position:'relative',
						overflow:'hidden',
						height:opts.size
					});
					$panel.css({
						position:'absolute',
						top:0,
						left:0,
						height:panel_size,
						width:width
					});
				
					$wrapper.mousemove(function(e) {
						var relativeY = e.pageY - $wrapper.offset().top;
						var wrapperCenter = opts.size / 2;
						speed = - Math.round((relativeY - wrapperCenter) / 25);
					});
					
					$wrapper.mouseout(function() {
						clearInterval(loop);
					});
					
					$wrapper.mouseover(function() {
						loop = setInterval(function() {
							pos = pos + speed;
							if (pos > 0) pos = 0;
							if (pos < limit) pos = limit;
							$panel.css({top:pos});
						}, 25);				
					});
					
				}
				
			} else {

				/*
				SCROLL ORIZZONTALE
				*/
				var size = $elements.eq(0).outerWidth();
				var height = $elements.eq(0).outerHeight();
				var panel_size = size * $elements.length+15;
				
				if (panel_size > opts.size) {
				
					var limit = opts.size - panel_size;
								
					$wrapper.css({
						position:'relative',
						overflow:'hidden',
						width:opts.size,
						height:height
					})
					$panel.css({
						position:'absolute',
						top:0,
						left:0,
						width:panel_size
					});
				
					$wrapper.mousemove(function(e) {
						var relativeX = e.pageX - $wrapper.offset().left;
						var wrapperCenter = opts.size / 2;
						speed = - Math.round((relativeX - wrapperCenter) / 25);
					});
					
					$wrapper.mouseout(function() {
						clearInterval(loop);
					});
					
					$wrapper.mouseover(function() {
						loop = setInterval(function() {
							pos = pos + speed;
							if (pos > 0) pos = 0;
							if (pos < limit) pos = limit;
							$panel.css({left:pos});
						}, 25);				
					});
					
				}
			
			}
		});
	}
})(jQuery)