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