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