(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 S=A(this);S.css("overflow","hidden");var d=this;if(A(this).parent().is(".jScrollPaneContainer")){var AL=C.maintainPosition?S.position().top:0;var P=A(this).parent();var k=P.innerWidth();var AM=P.outerHeight();var Q=AM;A(">.jScrollPaneTrack, >.jScrollArrowUp, >.jScrollArrowDown",P).remove();S.css({top:0})}else{var AL=0;this.originalPadding=S.css("paddingTop")+" "+S.css("paddingRight")+" "+S.css("paddingBottom")+" "+S.css("paddingLeft");this.originalSidePaddingTotal=(parseInt(S.css("paddingLeft"))||0)+(parseInt(S.css("paddingRight"))||0);var k=S.innerWidth();var AM=S.innerHeight();var Q=AM;S.wrap(A("<div></div>").attr({className:"jScrollPaneContainer"}).css({height:AM+"px",width:k+"px"}).attr("tabindex",C.tabIndex));A(document).bind("emchange",function(AN,AO,p){S.jScrollPane(C)})}if(C.reinitialiseOnImageLoad){var R=A.data(d,"jScrollPaneImagesToLoad")||A("img",S);var I=[];if(R.length){R.each(function(p,AN){A(this).bind("load readystatechange",function(){if(A.inArray(p,I)==-1){I.push(AN);R=A.grep(R,function(AQ,AP){return AQ!=AN});A.data(d,"jScrollPaneImagesToLoad",R);var AO=A.extend(C,{reinitialiseOnImageLoad:false});S.jScrollPane(AO)}}).each(function(AO,AP){if(this.complete||this.complete===undefined){this.src=this.src}})})}}var x=this.originalSidePaddingTotal;var AH=k-C.scrollbarWidth-C.scrollbarMargin-x;var u={height:"auto",width:AH+"px"};if(C.scrollbarOnLeft){u.paddingLeft=C.scrollbarMargin+C.scrollbarWidth+"px"}else{u.paddingRight=C.scrollbarMargin+"px"}S.css(u);var v=S.outerHeight();var r=AM/v;if(r<0.99){var J=S.parent();J.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:"jScrollPaneDragBottom"}).css({width:C.scrollbarWidth+"px"}))));var AI=A(">.jScrollPaneTrack",J);var T=A(">.jScrollPaneTrack .jScrollPaneDrag",J);var AK;var G=[];var z;var s=function(){if(z>4||z%4==0){AG(AD+AK*h)}z++};if(C.enableKeyboardNavigation){J.bind("keydown.jscrollpane",function(p){switch(p.keyCode){case 38:AK=-1;z=0;s();G[G.length]=setInterval(s,100);return false;case 40:AK=1;z=0;s();G[G.length]=setInterval(s,100);return false;case 32:case 33:case 34:return false;default:console.log(p.keyCode)}}).bind("keyup.jscrollpane",function(AN){if(AN.keyCode==38||AN.keyCode==40){for(var p=0;p<G.length;p++){clearInterval(G[p])}return false}})}if(C.showArrows){var o;var X;var O=function(p){A("html").unbind("mouseup",O);o.removeClass("jScrollActiveArrowButton");clearInterval(X)};var f=function(){A("html").bind("mouseup",O);o.addClass("jScrollActiveArrowButton");z=0;s();X=setInterval(s,100)};J.append(A("<a></a>").attr({href:"javascript:;",className:"jScrollArrowUp",tabindex:-1}).css({width:C.scrollbarWidth+"px"}).html("Scroll up").bind("mousedown",function(){o=A(this);AK=-1;f();this.blur();return false}).bind("click",B),A("<a></a>").attr({href:"javascript:;",className:"jScrollArrowDown",tabindex:-1}).css({width:C.scrollbarWidth+"px"}).html("Scroll down").bind("mousedown",function(){o=A(this);AK=1;f();this.blur();return false}).bind("click",B));var U=A(">.jScrollArrowUp",J);var M=A(">.jScrollArrowDown",J);if(C.arrowSize){Q=AM-C.arrowSize-C.arrowSize;AI.css({height:Q+"px",top:C.arrowSize+"px"})}else{var AA=U.height();C.arrowSize=AA;Q=AM-AA-M.height();AI.css({height:Q+"px",top:AA+"px"})}}var AE=A(this).css({position:"absolute",overflow:"visible"});var D;var e;var h;var AD=0;var b=r*AM/2;var g=function(AN,AP){var AO=AP=="X"?"Left":"Top";return AN["page"+AP]||(AN["client"+AP]+(document.documentElement["scroll"+AO]||document.body["scroll"+AO]))||0};var n=function(){return false};var AC=function(){w();D=T.offset(false);D.top-=AD;e=Q-T[0].offsetHeight;h=2*C.wheelSpeed*e/v};var E=function(p){AC();b=g(p,"Y")-AD-D.top;A("html").bind("mouseup",Y).bind("mousemove",q);if(A.browser.msie){A("html").bind("dragstart",n).bind("selectstart",n)}return false};var Y=function(){A("html").unbind("mouseup",Y).unbind("mousemove",q);b=r*AM/2;if(A.browser.msie){A("html").unbind("dragstart",n).unbind("selectstart",n)}};var AG=function(AN){AN=AN<0?0:(AN>e?e:AN);AD=AN;T.css({top:AN+"px"});var AO=AN/e;S.data("jScrollPanePosition",(AM-v)*-AO);AE.css({top:((AM-v)*AO)+"px"});S.trigger("scroll");if(C.showArrows){U[AN==0?"addClass":"removeClass"]("disabled");M[AN==e?"addClass":"removeClass"]("disabled")}};var q=function(p){AG(g(p,"Y")-D.top-b)};var y=Math.max(Math.min(r*(AM-C.arrowSize*2),C.dragMaxHeight),C.dragMinHeight);T.css({height:y+"px"}).bind("mousedown",E);var t;var V;var L;var AB=function(){if(V>8||V%4==0){AG((AD-((AD-L)/2)))}V++};var AJ=function(){clearInterval(t);A("html").unbind("mouseup",AJ).unbind("mousemove",m)};var m=function(p){L=g(p,"Y")-D.top-b};var Z=function(p){AC();m(p);V=0;A("html").bind("mouseup",AJ).bind("mousemove",m);t=setInterval(AB,100);AB();return false};AI.bind("mousedown",Z);J.bind("mousewheel",function(AN,AP){AC();w();var AO=AD;AG(AD-AP*h);var p=AO!=AD;return !p});var F;var c;function i(){var p=(F-AD)/C.animateStep;if(p>1||p<-1){AG(AD+p)}else{AG(F);w()}}var w=function(){if(c){clearInterval(c);delete F}};var AF=function(AP,p){if(typeof AP=="string"){$e=A(AP,S);if(!$e.length){return }AP=$e.offset().top-S.offset().top}J.scrollTop(0);w();var AO=v-AM;AP=AP>AO?AO:AP;S.data("jScrollPaneMaxScroll",AO);var AN=AP/AO*e;if(p||!C.animateTo){AG(AN)}else{F=AN;c=setInterval(i,C.animateInterval)}};S[0].scrollTo=AF;S[0].scrollBy=function(AN){var p=-parseInt(AE.css("top"))||0;AF(p+AN)};AC();AF(-AL,true);A("*",this).bind("focus",function(AQ){var AP=A(this);var AS=0;while(AP[0]!=S[0]){AS+=AP.position().top;AP=AP.offsetParent()}var p=-parseInt(AE.css("top"))||0;var AR=p+AM;var AO=AS>p&&AS<AR;if(!AO){var AN=AS-C.scrollbarMargin;if(AS>p){AN+=A(this).height()+15+C.scrollbarMargin-AM}AF(AN)}});if(location.hash){setTimeout(function(){AF(location.hash)},A.browser.safari?100:0)}A(document).bind("click",function(AN){$target=A(AN.target);if($target.is("a")){var p=$target.attr("href");if(p&&p.substr(0,1)=="#"){setTimeout(function(){AF(p,!C.animateToInternalLinks)},A.browser.safari?100:0)}}});function a(p){A(document).bind("mousemove.jScrollPaneDragging",W);A(document).bind("mouseup.jScrollPaneDragging",N)}var l;var H;function j(){direction=l<0?-1:1;S[0].scrollBy(l/2)}function K(){if(H){clearInterval(H);H=undefined}}function W(AO){var AP=S.parent().offset().top;var p=AP+AM;var AN=g(AO,"Y");l=AN<AP?AN-AP:(AN>p?AN-p:0);if(l==0){K()}else{if(!H){H=setInterval(j,100)}}}function N(p){A(document).unbind("mousemove.jScrollPaneDragging").unbind("mouseup.jScrollPaneDragging");K()}J.bind("mousedown.jScrollPane",a);A.jScrollPane.active.push(S[0])}else{S.css({height:AM+"px",width:k-this.originalSidePaddingTotal+"px",padding:this.originalPadding});S.parent().unbind("mousewheel").unbind("mousedown.jScrollPane").unbind("keydown.jscrollpane").unbind("keyup.jscrollpane")}})};A.fn.jScrollPaneRemove=function(){A(this).each(function(){$this=A(this);var B=$this.parent();if(B.is(".jScrollPaneContainer")){$this.css({top:"",height:"",width:"",padding:"",overflow:"",position:""});B.after($this).remove()}})};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,tabIndex:0,enableKeyboardNavigation:true,animateToInternalLinks: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);