(function(a){a.fn.hoverscroll=function(b){if(!b){b={}}b=a.extend({vertical:a.fn.hoverscroll.params.vertical,width:a.fn.hoverscroll.params.width,height:a.fn.hoverscroll.params.height,arrows:a.fn.hoverscroll.params.arrows,arrowsOpacity:a.fn.hoverscroll.params.arrowsOpacity,debug:a.fn.hoverscroll.params.debug},b);this.each(function(){var k=a(this);if(b.debug){a.log("[HoverScroll] Trying to create hoverscroll on element "+this.tagName+"#"+this.id)}k.wrap('<div class="listcontainer"></div>');k.addClass("list").addClass("ui-helper-clearfix");var l=k.parent();l.wrap('<div class="ui-widget-content hoverscroll"></div>');var c=l.parent();if(b.arrows){if(!b.vertical){l.append('<div class="arrowleft"></div>').append('<div class="arrowright"></div>')}else{l.append('<div class="arrowtop"></div>').append('<div class="arrowbottom"></div>')}}c.width(b.width).height(b.height);l.width(b.width).height(b.height);var m=0;if(!b.vertical){k.children().each(function(){a(this).addClass("horizontal-item");if(a(this).outerWidth){m+=a(this).outerWidth(true)}else{m+=a(this).width()+parseInt(a(this).css("padding-left"))+parseInt(a(this).css("padding-right"))+parseInt(a(this).css("margin-left"))+parseInt(a(this).css("margin-right"))}});k.width(m);if(b.debug){a.log("[HoverScroll] Computed content width : "+m+"px")}if(c.outerWidth){m=c.outerWidth()}else{m=c.width()+parseInt(c.css("padding-left"))+parseInt(c.css("padding-right"))+parseInt(c.css("margin-left"))+parseInt(c.css("margin-right"))}if(b.debug){a.log("[HoverScroll] Computed container width : "+m+"px")}}else{k.children().each(function(){a(this).addClass("vertical-item");if(a(this).outerHeight){m+=a(this).outerHeight(true)}else{m+=a(this).height()+parseInt(a(this).css("padding-top"))+parseInt(a(this).css("padding-bottom"))+parseInt(a(this).css("margin-bottom"))+parseInt(a(this).css("margin-bottom"))}});k.height(m);if(b.debug){a.log("[HoverScroll] Computed content height : "+m+"px")}if(c.outerHeight){m=c.outerHeight()}else{m=c.height()+parseInt(c.css("padding-top"))+parseInt(c.css("padding-bottom"))+parseInt(c.css("margin-top"))+parseInt(c.css("margin-bottom"))}if(b.debug){a.log("[HoverScroll] Computed container height : "+m+"px")}}var j={1:{action:"move",from:0,to:0.06*m,direction:-1,speed:30},2:{action:"stop",from:0.06*m,to:0.15*m,direction:-1,speed:8},3:{action:"stop",from:0.15*m,to:0.25*m,direction:-1,speed:4},4:{action:"stop",from:0.25*m,to:0.4*m,direction:-1,speed:2},5:{action:"stop",from:0.4*m,to:0.6*m},6:{action:"stop",from:0.6*m,to:0.75*m,direction:1,speed:2},7:{action:"stop",from:0.75*m,to:0.85*m,direction:1,speed:4},8:{action:"stop",from:0.85*m,to:0.94*m,direction:1,speed:8},9:{action:"move",from:0.94*m,to:m,direction:1,speed:30}};c[0].isChanging=false;c[0].direction=0;c[0].speed=1;function f(n,p){n=n-c.offset().left;p=p-c.offset().top;var o;if(!b.vertical){o=n}else{o=p}for(i in j){if(o>=j[i].from&&o<j[i].to){if(j[i].action=="move"){e(j[i].direction,j[i].speed)}else{g()}}}}function h(){if(!b.arrows){return}var q;var n;if(!b.vertical){q=l[0].scrollWidth-l.width();n=l[0].scrollLeft}else{q=l[0].scrollHeight-l.height();n=l[0].scrollTop}var p=(n/q);var o=b.arrowsOpacity;if(isNaN(p)){p=0}if(p<=0){a(".arrowleft, .arrowtop",c).hide()}else{if(p>=o){a(".arrowright, .arrowbottom",c).hide()}else{a(".arrowleft, .arrowtop",c).show().css("opacity",(p>o?o:p));a(".arrowright, .arrowbottom",c).show().css("opacity",(1-p>o?o:1-p))}}}function e(o,n){if(c[0].direction!=o){if(b.debug){a.log("[HoverScroll] Starting to move. direction: "+o+", speed: "+n)}g();c[0].direction=o;c[0].isChanging=true;d()}if(c[0].speed!=n){if(b.debug){a.log("[HoverScroll] Changed speed: "+n)}c[0].speed=n}}function g(){if(c[0].isChanging){if(b.debug){a.log("[HoverScroll] Stoped moving")}c[0].isChanging=false;c[0].direction=0;c[0].speed=1;clearTimeout(c[0].timer)}}function d(){if(c[0].isChanging==false){return}h();var n;if(!b.vertical){n="scrollLeft"}else{n="scrollTop"}l[0][n]+=c[0].direction*c[0].speed;c[0].timer=setTimeout(function(){d()},50)}c.mousemove(function(n){f(n.pageX,n.pageY)}).bind("mouseleave",function(){g()});if(b.arrows){h()}else{a(".arrowleft, .arrowright, .arrowtop, .arrowbottom",c).hide()}});return this};a.fn.hoverscroll.params={vertical:false,width:965,arrows:true,arrowsOpacity:0.7,debug:false};a.log=function(b){if(console&&console.log){console.log(b)}}})(jQuery);
