(function(a){a.jScrollPane={active:[]};a.fn.jScrollPane=function(c){c=a.extend({},a.fn.jScrollPane.defaults,c);var b=function(){return false};return this.each(function(){var k=a(this);k.css("overflow","hidden");var s=this;if(a(this).parent().is(".jScrollPaneContainer")){var R=c.maintainPosition?k.position().top:0;var i=a(this).parent();var x=i.innerWidth();var S=i.outerHeight();var j=S;a(">.jScrollPaneTrack, >.jScrollArrowUp, >.jScrollArrowDown",i).remove();k.css({top:0})}else{var R=0;this.originalPadding=k.css("paddingTop")+" "+k.css("paddingRight")+" "+k.css("paddingBottom")+" "+k.css("paddingLeft");this.originalSidePaddingTotal=(parseInt(k.css("paddingLeft"))||0)+(parseInt(k.css("paddingRight"))||0);var x=k.innerWidth();var S=k.innerHeight();var j=S;k.wrap(a("<div></div>").attr({className:"jScrollPaneContainer"}).css({height:S+"px",width:x+"px"}))}var H=this.originalSidePaddingTotal;var E={height:"auto",width:x-c.scrollbarWidth-c.scrollbarMargin-H+"px"};if(c.scrollbarOnLeft){E.paddingLeft=c.scrollbarMargin+c.scrollbarWidth+"px"}else{E.paddingRight=c.scrollbarMargin+"px"}k.css(E);var F=k.outerHeight();var C=S/F;if(C<0.99){var g=k.parent();g.append(a("<div></div>").attr({className:"jScrollPaneTrack"}).css({width:c.scrollbarWidth+"px"}).append(a("<div></div>").attr({className:"jScrollPaneDrag"}).css({width:c.scrollbarWidth+"px"}).append(a("<div></div>").attr({className:"jScrollPaneDragTop"}).css({width:c.scrollbarWidth+"px"}),a("<div></div>").attr({className:"jScrollPaneDragMiddle"}).css({width:c.scrollbarWidth+"px"}),a("<div></div>").attr({className:"jScrollPaneDragBottom"}).css({width:c.scrollbarWidth+"px"}))));var P=a(">.jScrollPaneTrack",g);var l=a(">.jScrollPaneTrack .jScrollPaneDrag",g);var M=a(this).css({position:"absolute",overflow:"visible"});var d;var t;var v;var K=0;var q=C*S/2;var u=function(T,V){var U=V=="X"?"Left":"Top";return T["page"+V]||(T["client"+V]+(document.documentElement["scroll"+U]||document.body["scroll"+U]))||0};var z=function(){return false};var L=function(){G();d=l.offset(false);d.top-=K;t=j-l[0].offsetHeight;v=2*c.wheelSpeed*t/F};var e=function(p){L();q=u(p,"Y")-K-d.top;a("html").bind("mouseup",n).bind("mousemove",B);if(a.browser.msie){a("html").bind("dragstart",z).bind("selectstart",z)}return false};var n=function(){a("html").unbind("mouseup",n).unbind("mousemove",B);q=C*S/2;if(a.browser.msie){a("html").unbind("dragstart",z).unbind("selectstart",z)}};var O=function(T){T=T<0?0:(T>t?t:T);K=T;l.css({top:T+"px"});var U=T/t;M.css({top:((S-F)*U)+"px"});k.trigger("scroll");if(c.showArrows){$upArrow[T==0?"addClass":"removeClass"]("disabled");$downArrow[T==t?"addClass":"removeClass"]("disabled")}};var B=function(p){O(u(p,"Y")-d.top-q)};var I=Math.max(Math.min(C*S,c.dragMaxHeight),c.dragMinHeight);l.css({height:I+"px"}).bind("mousedown",e);var A=I-(a(">.jScrollPaneDragTop",l)[0].offsetHeight+a(">.jScrollPaneDragBottom",l)[0].offsetHeight);a(">.jScrollPaneDragMiddle",l).css({height:A+"px"});var D;var m;var h;var J=function(){if(m>8||m%4==0){O((K-((K-h)/2)))}m++};var Q=function(){clearInterval(D);a("html").unbind("mouseup",Q).unbind("mousemove",y)};var y=function(p){h=u(p,"Y")-d.top-q};var o=function(p){L();y(p);m=0;a("html").bind("mouseup",Q).bind("mousemove",y);D=setInterval(J,100);J()};P.bind("mousedown",o);g.bind("mousewheel",function(T,V){L();G();var U=K;O(K-V*v);var p=U!=K;return !p});var f;var r;function w(){var p=(f-K)/c.animateStep;if(p>1||p<-1){O(K+p)}else{O(f);G()}}var G=function(){if(r){clearInterval(r);delete f}};var N=function(U,p){if(typeof U=="string"){$e=a(U,k);if(!$e.length){return}U=$e.offset().top-k.offset().top}g.scrollTop(0);G();var T=-U/(S-F)*t;if(p||!c.animateTo){O(T)}else{f=T;r=setInterval(w,c.animateInterval)}};k[0].scrollTo=N;k[0].scrollBy=function(T){var p=-parseInt(M.css("top"))||0;N(p+T)};L();N(-R,true);a("*",this).bind("focus",function(W){var V=a(this);var Y=0;while(V[0]!=k[0]){Y+=V.position().top;V=V.offsetParent()}var p=-parseInt(M.css("top"))||0;var X=p+S;var U=Y>p&&Y<X;if(!U){var T=Y-c.scrollbarMargin;if(Y>p){T+=a(this).height()+15+c.scrollbarMargin-S}N(T)}});if(location.hash){N(location.hash)}a(document).bind("click",function(T){$target=a(T.target);if($target.is("a")){var p=$target.attr("href");if(p!=null){if(p.substr(0,1)=="#"){N(p)}}}});a.jScrollPane.active.push(k[0])}else{k.css({height:S+"px",width:x-this.originalSidePaddingTotal+"px",padding:this.originalPadding});k.parent().unbind("mousewheel")}})};a.fn.jScrollPane.defaults={scrollbarWidth:10,scrollbarMargin:5,wheelSpeed:18,showArrows:false,arrowSize:0,animateTo:false,dragMinHeight:1,dragMaxHeight:99999,animateInterval:100,animateStep:3,maintainPosition:true,scrollbarOnLeft:false,reinitialiseOnImageLoad:false};a(window).bind("unload",function(){var c=a.jScrollPane.active;for(var b=0;b<c.length;b++){c[b].scrollTo=c[b].scrollBy=null}})})(jQuery);
