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