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