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