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