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