// JavaScript Document

(function($){
	$.fn.mouseSlider = function(options){
		var defaults = {
			containerID:'cont',
			containertag:'<div id="%%containerID%%" class="cont" />'
		}; 		
		var options = $.extend(defaults, options);
		this.each(function() {
			var obj=$(this);
			var contobjid;
			var contobj;
			var $items;
			var mousePosX;
			var mousePosY;
			var totalwidth=0;
			var t=0;
			var tc=0;
			var xl=0;
			var xm=0;
			var xr=0;
			function init(){
				contobjid = obj.attr("id")+"_"+options.containerID;
				$items = $("li",obj);
				$items.each(function(){ totalwidth += $(this).width()+parseInt($(this).css("padding-left"))+parseInt($(this).css("padding-right"))+parseInt($(this).css("margin-left"))+parseInt($(this).css("margin-right")); });
				$("> ul",obj).wrap(String(options.containertag).replace("%%containerID%%",contobjid));
				contobj = $("#"+contobjid);
				contobj.css("margin-left","0px");
				contobj.css("width",totalwidth+"px");
				obj.css("overflow","hidden");
				if(contobj.width()>obj.width()){
					obj.mouseenter(function(){
						t = setInterval(mouseCatcher,10);
						tc = setInterval(animate,10);
					});
					obj.mouseleave(function(){
						clearInterval(t);
						clearInterval(tc);
					});
				}else{
					contobj.css("display","inline-block");
					//contobj.css("margin","auto");
					//obj.css("text-align","center");
				}
				xl=obj.offset().left;
				xm=obj.offset().left+(obj.width()/2);
				xr=obj.offset().left+obj.width();
			}
			function animate(){
				var step=1;
				var per=0;
				var ratio=5;
				if(contobj.width()>obj.width()){
					if(mousePosX>(xm+10)){ 
						per = (mousePosX-(xm+10))/(xr-(xm+10));
						step = -1 * (1 + Math.round(ratio*per)); 
					}
					if(mousePosX<(xm-10)){
						per = (mousePosX-(xm-10))/((xm-10)-xl);
						step =  Math.abs(1 + Math.round(ratio*per));
					}
					if(mousePosX<(xm+10)&&mousePosX>(xm-10)){ step=0; }
					$("#debug").html(step);
					var cm=parseInt(contobj.css("margin-left"));
					contobj.css("margin-left",(cm+step)+"px");
					if(parseInt(contobj.css("margin-left"))>0){ contobj.css("margin-left","0px"); }
					if(parseInt(contobj.css("margin-left"))<((obj.width()+Math.abs(step))-totalwidth)){ contobj.css("margin-left",(obj.width()-totalwidth)+"px"); }
				}
			}
			function mouseCatcher(){
				$(document).mousemove(function(e){ mousePosX=e.pageX; mousePosY=e.pageY; })
			}
			init();
		});
	}
})(jQuery);
		
		
