/* Copyright (c) 2010 Brandon Aaron (http://brandonaaron.net)
* Licensed under the MIT License (LICENSE.txt).
*
* Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.
* Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.
* Thanks to: Seamus Leahy for adding deltaX and deltaY
*
* Version: 3.0.4
* 
* Requires: 1.2.2+
*/
(function(a){var c=["DOMMouseScroll","mousewheel"];a.event.special.mousewheel={setup:function(){if(this.addEventListener){for(var d=c.length;d;){this.addEventListener(c[--d],b,false)}}else{this.onmousewheel=b}},teardown:function(){if(this.removeEventListener){for(var d=c.length;d;){this.removeEventListener(c[--d],b,false)}}else{this.onmousewheel=null}}};a.fn.extend({mousewheel:function(d){return d?this.bind("mousewheel",d):this.trigger("mousewheel")},unmousewheel:function(d){return this.unbind("mousewheel",d)}});function b(h){var i=h||window.event,d=[].slice.call(arguments,1),e=0,j=true,f=0,g=0;h=a.event.fix(i);h.type="mousewheel";if(h.wheelDelta){e=h.wheelDelta/120}if(h.detail){e=-h.detail/3}g=e;if(i.axis!==undefined&&i.axis===i.HORIZONTAL_AXIS){g=0;f=-1*e}if(i.wheelDeltaY!==undefined){g=i.wheelDeltaY/120}if(i.wheelDeltaX!==undefined){f=-1*i.wheelDeltaX/120}d.unshift(h,e,f,g);return a.event.handle.apply(this,d)}})(jQuery);(function(e,d,f){e.fn.jScrollPane=function(c){function a(a9,bo){var a2,bs=this,bH,aQ,bG,aS,by,bJ,bM,bx,a3,aH,aY,bh,bg,bf,bj,bL,bA,aU,bF,bC,s,aV,aI,aT,bc,bn,aX,a1,bK,aZ,aN,bd,aF,aP=true,bq=true,aL=false,bl=false,bP=e.fn.mwheelIntent?"mwheelIntent.jsp":"mousewheel.jsp";aN=a9.css("paddingTop")+" "+a9.css("paddingRight")+" "+a9.css("paddingBottom")+" "+a9.css("paddingLeft");bd=(parseInt(a9.css("paddingLeft"))||0)+(parseInt(a9.css("paddingRight"))||0);aW(bo);function aW(i){var m,l,k,h,g,j;a2=i;if(bH==f){a9.css({overflow:"hidden",padding:0});aQ=a9.innerWidth()+bd;bG=a9.innerHeight();a9.width(aQ);bH=e('<div class="jspPane" />').wrap(e('<div class="jspContainer" />').css({width:aQ+"px",height:bG+"px"}));a9.wrapInner(bH.parent());aS=a9.find(">.jspContainer");bH=aS.find(">.jspPane");bH.css("padding",aN)}else{a9.css("width",null);j=a9.outerWidth()+bd!=aQ||a9.outerHeight()!=bG;if(j){aQ=a9.innerWidth()+bd;bG=a9.innerHeight();aS.css({width:aQ+"px",height:bG+"px"})}aF=bH.innerWidth();if(!j&&bH.outerWidth()==by&&bH.outerHeight()==bJ){if(aH||a3){bH.css("width",aF+"px");a9.css("width",(aF+bd)+"px")}return}bH.css("width",null);a9.css("width",(aQ)+"px");aS.find(">.jspVerticalBar,>.jspHorizontalBar").remove().end()}m=bH.clone().css("position","absolute");l=e('<div style="width:1px; position: relative;" />').append(m);e("body").append(l);by=Math.max(bH.outerWidth(),m.outerWidth());l.remove();bJ=bH.outerHeight();bM=by/aQ;bx=bJ/bG;a3=bx>1;aH=bM>1;if(!(aH||a3)){a9.removeClass("jspScrollable");bH.css({top:0,width:aS.width()-bd});br();ba();bu();bI();aO()}else{a9.addClass("jspScrollable");k=a2.maintainPosition&&(bg||bL);if(k){h=a6();g=a4()}aJ();bO();bb();if(k){bm(h);bk(g)}bi();aK();if(a2.enableKeyboardNavigation){bw()}if(a2.clickOnTrack){bv()}a8();if(a2.hijackInternalLinks){bp()}}if(a2.autoReinitialise&&!aZ){aZ=setInterval(function(){aW(a2)},a2.autoReinitialiseDelay)}else{if(!a2.autoReinitialise&&aZ){clearInterval(aZ)}}a9.trigger("jsp-initialised",[aH||a3])}function aJ(){if(a3){aS.append(e('<div class="jspVerticalBar" />').append(e('<div class="jspCap jspCapTop" />'),e('<div class="jspTrack" />').append(e('<div class="jspDrag" />').append(e('<div class="jspDragTop" />'),e('<div class="jspDragBottom" />'))),e('<div class="jspCap jspCapBottom" />')));bA=aS.find(">.jspVerticalBar");aU=bA.find(">.jspTrack");aY=aU.find(">.jspDrag");if(a2.showArrows){aV=e('<a class="jspArrow jspArrowUp" />').bind("mousedown.jsp",a7(0,-1)).bind("click.jsp",a5);aI=e('<a class="jspArrow jspArrowDown" />').bind("mousedown.jsp",a7(0,1)).bind("click.jsp",a5);if(a2.arrowScrollOnHover){aV.bind("mouseover.jsp",a7(0,-1,aV));aI.bind("mouseover.jsp",a7(0,1,aI))}aR(aU,a2.verticalArrowPositions,aV,aI)}bC=bG;aS.find(">.jspVerticalBar>.jspCap:visible,>.jspVerticalBar>.jspArrow").each(function(){bC-=e(this).outerHeight()});aY.hover(function(){aY.addClass("jspHover")},function(){aY.removeClass("jspHover")}).bind("mousedown.jsp",function(g){e("html").bind("dragstart.jsp selectstart.jsp",function(){return false});aY.addClass("jspActive");var h=g.pageY-aY.position().top;e("html").bind("mousemove.jsp",function(i){bB(i.pageY-h,false)}).bind("mouseup.jsp mouseleave.jsp",a0);return false});bt()}}function bt(){aU.height(bC+"px");bg=0;bF=a2.verticalGutter+aU.outerWidth();bH.width(aQ-bF-bd);if(bA.position().left==0){bH.css("margin-left",bF+"px")}}function bO(){if(aH){aS.append(e('<div class="jspHorizontalBar" />').append(e('<div class="jspCap jspCapLeft" />'),e('<div class="jspTrack" />').append(e('<div class="jspDrag" />').append(e('<div class="jspDragLeft" />'),e('<div class="jspDragRight" />'))),e('<div class="jspCap jspCapRight" />')));aT=aS.find(">.jspHorizontalBar");bc=aT.find(">.jspTrack");bf=bc.find(">.jspDrag");if(a2.showArrows){a1=e('<a class="jspArrow jspArrowLeft" />').bind("mousedown.jsp",a7(-1,0)).bind("click.jsp",a5);bK=e('<a class="jspArrow jspArrowRight" />').bind("mousedown.jsp",a7(1,0)).bind("click.jsp",a5);if(a2.arrowScrollOnHover){a1.bind("mouseover.jsp",a7(-1,0,a1));bK.bind("mouseover.jsp",a7(1,0,bK))}aR(bc,a2.horizontalArrowPositions,a1,bK)}bf.hover(function(){bf.addClass("jspHover")},function(){bf.removeClass("jspHover")}).bind("mousedown.jsp",function(g){e("html").bind("dragstart.jsp selectstart.jsp",function(){return false});bf.addClass("jspActive");var h=g.pageX-bf.position().left;e("html").bind("mousemove.jsp",function(i){bD(i.pageX-h,false)}).bind("mouseup.jsp mouseleave.jsp",a0);return false});bn=aS.innerWidth();aM()}else{}}function aM(){aS.find(">.jspHorizontalBar>.jspCap:visible,>.jspHorizontalBar>.jspArrow").each(function(){bn-=e(this).outerWidth()});bc.width(bn+"px");bL=0}function bb(){if(aH&&a3){var g=bc.outerHeight(),h=aU.outerWidth();bC-=g;e(aT).find(">.jspCap:visible,>.jspArrow").each(function(){bn+=e(this).outerWidth()});bn-=h;bG-=h;aQ-=g;bc.parent().append(e('<div class="jspCorner" />').css("width",g+"px"));bt();aM()}if(aH){bH.width((aS.outerWidth()-bd)+"px")}bJ=bH.outerHeight();bx=bJ/bG;if(aH){aX=1/bM*bn;if(aX>a2.horizontalDragMaxWidth){aX=a2.horizontalDragMaxWidth}else{if(aX<a2.horizontalDragMinWidth){aX=a2.horizontalDragMinWidth}}bf.width(aX+"px");bj=bn-aX;aG(bL)}if(a3){s=1/bx*bC;if(s>a2.verticalDragMaxHeight){s=a2.verticalDragMaxHeight}else{if(s<a2.verticalDragMinHeight){s=a2.verticalDragMinHeight}}aY.height(s+"px");bh=bC-s;bQ(bg)}}function aR(h,j,g,m){var l="before",i="after",k;if(j=="os"){j=/Mac/.test(navigator.platform)?"after":"split"}if(j==l){i=j}else{if(j==i){l=j;k=g;g=m;m=k}}h[l](g)[i](m)}function a7(g,i,h){return function(){be(g,i,this,h);this.blur();return false}}function be(i,g,l,k){l=e(l).addClass("jspActive");var j,m=function(){if(i!=0){bD(bL+i*a2.arrowButtonSpeed,false)}if(g!=0){bB(bg+g*a2.arrowButtonSpeed,false)}},h=setInterval(m,a2.arrowRepeatFreq);m();j=k==f?"mouseup.jsp":"mouseout.jsp";k=k||e("html");k.bind(j,function(){l.removeClass("jspActive");clearInterval(h);k.unbind(j)})}function bv(){bI();if(a3){aU.bind("mousedown.jsp",function(i){if(i.originalTarget==f||i.originalTarget==i.currentTarget){var h=e(this),j=setInterval(function(){var k=h.offset(),l=i.pageY-k.top;if(bg+s<l){bB(bg+a2.trackClickSpeed)}else{if(l<bg){bB(bg-a2.trackClickSpeed)}else{g()}}},a2.trackClickRepeatFreq),g=function(){j&&clearInterval(j);j=null;e(document).unbind("mouseup.jsp",g)};e(document).bind("mouseup.jsp",g);return false}})}if(aH){bc.bind("mousedown.jsp",function(i){if(i.originalTarget==f||i.originalTarget==i.currentTarget){var h=e(this),j=setInterval(function(){var k=h.offset(),l=i.pageX-k.left;if(bL+aX<l){bD(bL+a2.trackClickSpeed)}else{if(l<bL){bD(bL-a2.trackClickSpeed)}else{g()}}},a2.trackClickRepeatFreq),g=function(){j&&clearInterval(j);j=null;e(document).unbind("mouseup.jsp",g)};e(document).bind("mouseup.jsp",g);return false}})}}function bI(){bc&&bc.unbind("mousedown.jsp");aU&&aU.unbind("mousedown.jsp")}function a0(){e("html").unbind("dragstart.jsp selectstart.jsp mousemove.jsp mouseup.jsp mouseleave.jsp");aY&&aY.removeClass("jspActive");bf&&bf.removeClass("jspActive")}function bB(h,g){if(!a3){return}if(h<0){h=0}else{if(h>bh){h=bh}}if(g==f){g=a2.animateScroll}if(g){bs.animate(aY,"top",h,bQ)}else{aY.css("top",h);bQ(h)}}function bQ(g){if(g==f){g=aY.position().top}aS.scrollTop(0);bg=g;var j=bg==0,h=bg==bh,i=g/bh,k=-i*(bJ-bG);if(aP!=j||aL!=h){aP=j;aL=h;a9.trigger("jsp-arrow-change",[aP,aL,bq,bl])}bE(j,h);bH.css("top",k);a9.trigger("jsp-scroll-y",[-k,j,h])}function bD(g,h){if(!aH){return}if(g<0){g=0}else{if(g>bj){g=bj}}if(h==f){h=a2.animateScroll}if(h){bs.animate(bf,"left",g,aG)}else{bf.css("left",g);aG(g)}}function aG(g){if(g==f){g=bf.position().left}aS.scrollTop(0);bL=g;var j=bL==0,i=bL==bj,h=g/bj,k=-h*(by-aQ);if(bq!=j||bl!=i){bq=j;bl=i;a9.trigger("jsp-arrow-change",[aP,aL,bq,bl])}bz(j,i);bH.css("left",k);a9.trigger("jsp-scroll-x",[-k,j,i])}function bE(g,h){if(a2.showArrows){aV[g?"addClass":"removeClass"]("jspDisabled");aI[h?"addClass":"removeClass"]("jspDisabled")}}function bz(g,h){if(a2.showArrows){a1[g?"addClass":"removeClass"]("jspDisabled");bK[h?"addClass":"removeClass"]("jspDisabled")}}function bk(i,g){var h=i/(bJ-bG);bB(h*bh,g)}function bm(g,i){var h=g/(by-aQ);bD(h*bj,i)}function bN(o,m,g){var k,i,p=0,h,l,n;try{k=e(o)}catch(j){return}i=k.outerHeight();aS.scrollTop(0);while(!k.is(".jspPane")){p+=k.position().top;k=k.offsetParent();if(/^body|html$/i.test(k[0].nodeName)){return}}h=a4();l=h+bG;if(p<h||m){n=p-a2.verticalGutter}else{if(p+i>l){n=p-bG+i+a2.verticalGutter}}if(n){bk(n,g)}}function a6(){return -bH.position().left}function a4(){return -bH.position().top}function aK(){aS.unbind(bP).bind(bP,function(j,k,i,g){var h=bL,l=bg;bD(bL+i*a2.mouseWheelSpeed,false);bB(bg-g*a2.mouseWheelSpeed,false);return h==bL&&l==bg})}function br(){aS.unbind(bP)}function a5(){return false}function bi(){bH.unbind("focusin.jsp").bind("focusin.jsp",function(g){if(g.target===bH[0]){return}bN(g.target,false)})}function ba(){bH.unbind("focusin.jsp")}function bw(){var g,h;a9.attr("tabindex",0).unbind("keydown.jsp").bind("keydown.jsp",function(l){if(l.target!==a9[0]){return}var j=bL,i=bg,k=g?2:16;switch(l.keyCode){case 40:bB(bg+k,false);break;case 38:bB(bg-k,false);break;case 34:case 32:bk(a4()+Math.max(32,bG)-16);break;case 33:bk(a4()-bG+16);break;case 35:bk(bJ-bG);break;case 36:bk(0);break;case 39:bD(bL+k,false);break;case 37:bD(bL-k,false);break}if(!(j==bL&&i==bg)){g=true;clearTimeout(h);h=setTimeout(function(){g=false},260);return false}});if(a2.hideFocus){a9.css("outline","none");if("hideFocus" in aS[0]){a9.attr("hideFocus",true)}}else{a9.css("outline","");if("hideFocus" in aS[0]){a9.attr("hideFocus",false)}}}function bu(){a9.attr("tabindex","-1").removeAttr("tabindex").unbind("keydown.jsp")}function a8(){if(location.hash&&location.hash.length>1){var h,g;try{h=e(location.hash)}catch(i){return}if(h.length&&bH.find(h)){if(aS.scrollTop()==0){g=setInterval(function(){if(aS.scrollTop()>0){bN(location.hash,true);e(document).scrollTop(aS.position().top);clearInterval(g)}},50)}else{bN(location.hash,true);e(document).scrollTop(aS.position().top)}}}}function aO(){e("a.jspHijack").unbind("click.jsp-hijack").removeClass("jspHijack")}function bp(){aO();e("a[href^=#]").addClass("jspHijack").bind("click.jsp-hijack",function(){var h=this.href.split("#"),g;if(h.length>1){g=h[1];if(g.length>0&&bH.find("#"+g).length>0){bN("#"+g,true);return false}}})}e.extend(bs,{reinitialise:function(g){g=e.extend({},g,a2);aW(g)},scrollToElement:function(h,g,i){bN(h,g,i)},scrollTo:function(h,i,g){bm(h,g);bk(i,g)},scrollToX:function(g,h){bm(g,h)},scrollToY:function(h,g){bk(h,g)},scrollBy:function(g,i,h){bs.scrollByX(g,h);bs.scrollByY(i,h)},scrollByX:function(j,h){var g=a6()+j,i=g/(by-aQ);bD(i*bj,h)},scrollByY:function(j,h){var g=a4()+j,i=g/(bJ-bG);bB(i*bh,h)},animate:function(g,j,k,i){var h={};h[j]=k;g.animate(h,{duration:a2.animateDuration,ease:a2.animateEase,queue:false,step:i})},getContentPositionX:function(){return a6()},getContentPositionY:function(){return a4()},getIsScrollableH:function(){return aH},getIsScrollableV:function(){return a3},getContentPane:function(){return bH},scrollToBottom:function(g){bB(bh,g)},hijackInternalLinks:function(){bp()}})}c=e.extend({},e.fn.jScrollPane.defaults,c);var b;this.each(function(){var i=e(this),j=i.data("jsp");if(j){j.reinitialise(c)}else{j=new a(i,c);i.data("jsp",j)}b=b?b.add(i):i});return b};e.fn.jScrollPane.defaults={showArrows:false,maintainPosition:true,clickOnTrack:true,autoReinitialise:false,autoReinitialiseDelay:500,verticalDragMinHeight:0,verticalDragMaxHeight:99999,horizontalDragMinWidth:0,horizontalDragMaxWidth:99999,animateScroll:false,animateDuration:300,animateEase:"linear",hijackInternalLinks:false,verticalGutter:4,horizontalGutter:4,mouseWheelSpeed:10,arrowButtonSpeed:10,arrowRepeatFreq:100,arrowScrollOnHover:false,trackClickSpeed:30,trackClickRepeatFreq:100,verticalArrowPositions:"split",horizontalArrowPositions:"split",enableKeyboardNavigation:true,hideFocus:false}})(jQuery,this);
