(function($){$.fn.hoverscroll=function(params){if(!params){params={};}
params=$.extend({},$.fn.hoverscroll.params,params);this.each(function(){var $this=$(this);$this.wrap('<div class="listcontainer"></div>');$this.addClass('list');var listctnr=$this.parent();listctnr.wrap('<div class="ui-widget-content hoverscroll"></div>');var ctnr=listctnr.parent();ctnr.width(params.width).height(params.height);listctnr.width(params.width).height(params.height);var size=0;ctnr.addClass('horizontal');$this.children().each(function(){$(this).addClass('item');if($(this).outerWidth){size+=$(this).outerWidth(true);}
else{size+=$(this).width()+parseInt($(this).css('padding-left'))+parseInt($(this).css('padding-right'))
+parseInt($(this).css('margin-left'))+parseInt($(this).css('margin-right'));}});$this.width(size);if(ctnr.outerWidth){size=ctnr.outerWidth();}
else{size=ctnr.width()+parseInt(ctnr.css('padding-left'))+parseInt(ctnr.css('padding-right'))
+parseInt(ctnr.css('margin-left'))+parseInt(ctnr.css('margin-right'));}
var zone={1:{action:'move',from:0,to:0.06*size,direction:-1,speed:16},2:{action:'move',from:0.06*size,to:0.15*size,direction:-1,speed:8},3:{action:'move',from:0.15*size,to:0.25*size,direction:-1,speed:4},4:{action:'move',from:0.25*size,to:0.4*size,direction:-1,speed:2},5:{action:'stop',from:0.4*size,to:0.6*size},6:{action:'move',from:0.6*size,to:0.75*size,direction:1,speed:2},7:{action:'move',from:0.75*size,to:0.85*size,direction:1,speed:4},8:{action:'move',from:0.85*size,to:0.94*size,direction:1,speed:8},9:{action:'move',from:0.94*size,to:size,direction:1,speed:16}}
ctnr[0].isChanging=false;ctnr[0].direction=0;ctnr[0].speed=1;function checkMouse(x,y){x=x-ctnr.offset().left;y=y-ctnr.offset().top;var pos;if(!params.vertical){pos=x;}
else{pos=y;}
for(i in zone){if(pos>=zone[i].from&&pos<zone[i].to){if(zone[i].action=='move'){startMoving(zone[i].direction,zone[i].speed);}
else{stopMoving();}}}}
function startMoving(direction,speed){if(ctnr[0].direction!=direction){if(params.debug){$.log('[HoverScroll] Starting to move. direction: '+direction+', speed: '+speed);}
stopMoving();ctnr[0].direction=direction;ctnr[0].isChanging=true;move();}
if(ctnr[0].speed!=speed){if(params.debug){$.log('[HoverScroll] Changed speed: '+speed);}
ctnr[0].speed=speed;}}
function stopMoving(){if(ctnr[0].isChanging){if(params.debug){$.log('[HoverScroll] Stoped moving');}
ctnr[0].isChanging=false;ctnr[0].direction=0;ctnr[0].speed=1;clearTimeout(ctnr[0].timer);}}
function move(){if(ctnr[0].isChanging==false){return;}
var scrollSide;scrollSide='scrollLeft';listctnr[0][scrollSide]+=ctnr[0].direction*ctnr[0].speed;ctnr[0].timer=setTimeout(function(){move();},50);}
ctnr.mousemove(function(e){checkMouse(e.pageX,e.pageY);}).bind('mouseleave',function(){stopMoving();});});return this;};$.fn.hoverscroll.params={vertical:false,width:400,height:50,arrows:false,arrowsOpacity:0.7,debug:false};$.log=function(msg){if(console&&console.log){console.log(msg);}};})(jQuery);
