/* Copyright (c) 2006 Kelvin Luck (kelvin AT kelvinluck DOT com || http://www.kelvinluck.com)
Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
See http://kelvinluck.com/assets/jquery/jScrollPane/ || jScrollPane.js 2008-12-10 22:55:28 */
(function(a){a.jScrollPane={active:[]};a.fn.jScrollPane=function(c){c=a.extend({},a.fn.jScrollPane.defaults,c);var l=function(){return false};return this.each(function(){var d=a(this);d.css("overflow","hidden");var J=this;if(a(this).parent().is(".jScrollPaneContainer")){var K=c.maintainPosition?d.position().top:0,h=a(this).parent(),j=h.innerWidth(),f=h.outerHeight(),o=f;a(">.jScrollPaneTrack, >.jScrollArrowUp, >.jScrollArrowDown",h).remove();d.css({top:0})}else{K=0;this.originalPadding=d.css("paddingTop")+ " "+d.css("paddingRight")+" "+d.css("paddingBottom")+" "+d.css("paddingLeft");this.originalSidePaddingTotal=(parseInt(d.css("paddingLeft"))||0)+(parseInt(d.css("paddingRight"))||0);j=d.innerWidth();o=f=d.innerHeight();d.wrap(a("<div></div>").attr({className:"jScrollPaneContainer"}).css({height:f+"px",width:j+"px"}));a(document).bind("emchange",function(){d.jScrollPane(c)})}if(c.reinitialiseOnImageLoad){var q=a.data(J,"jScrollPaneImagesToLoad")||a("img",d),L=[];q.length&&q.each(function(b,e){a(this).bind("load", function(){if(a.inArray(b,L)==-1){L.push(e);q=a.grep(q,function(g){return g!=e});a.data(J,"jScrollPaneImagesToLoad",q);c.reinitialiseOnImageLoad=false;d.jScrollPane(c)}}).each(function(){if(this.complete||this.complete===undefined)this.src=this.src})})}h={height:"auto",width:j-c.scrollbarWidth-c.scrollbarMargin-this.originalSidePaddingTotal+"px"};if(c.scrollbarOnLeft)h.paddingLeft=c.scrollbarMargin+c.scrollbarWidth+"px";else h.paddingRight=c.scrollbarMargin+"px";d.css(h);var s=d.outerHeight(),t=f/ s;if(t<0.99){var k=d.parent();k.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"}))));j=a(">.jScrollPaneTrack",k);var u=a(">.jScrollPaneTrack .jScrollPaneDrag",k);if(c.showArrows){var v, D,M,w,N=function(){if(w>4||w%4==0)m(i+D*E);w++},O=function(){a("html").unbind("mouseup",O);v.removeClass("jScrollActiveArrowButton");clearInterval(M)},P=function(){a("html").bind("mouseup",O);v.addClass("jScrollActiveArrowButton");w=0;N();M=setInterval(N,100)};k.append(a("<a></a>").attr({href:"javascript:;",className:"jScrollArrowUp"}).css({width:c.scrollbarWidth+"px"}).html("Scroll up").bind("mousedown",function(){v=a(this);D=-1;P();this.blur();return false}).bind("click",l),a("<a></a>").attr({href:"javascript:;", className:"jScrollArrowDown"}).css({width:c.scrollbarWidth+"px"}).html("Scroll down").bind("mousedown",function(){v=a(this);D=1;P();this.blur();return false}).bind("click",l));var Q=a(">.jScrollArrowUp",k),R=a(">.jScrollArrowDown",k);if(c.arrowSize){o=f-c.arrowSize-c.arrowSize;j.css({height:o+"px",top:c.arrowSize+"px"})}else{h=Q.height();c.arrowSize=h;o=f-h-R.height();j.css({height:o+"px",top:h+"px"})}}var F=a(this).css({position:"absolute",overflow:"visible"}),r,n,E,i=0,x=t*f/2,G=function(b,e){var g= e=="X"?"Left":"Top";return b["page"+e]||b["client"+e]+(document.documentElement["scroll"+g]||document.body["scroll"+g])||0},y=function(){return false},A=function(){z();r=u.offset(false);r.top-=i;n=o-u[0].offsetHeight;E=2*c.wheelSpeed*n/s},S=function(){a("html").unbind("mouseup",S).unbind("mousemove",T);x=t*f/2;a.browser.msie&&a("html").unbind("dragstart",y).unbind("selectstart",y)},m=function(b){i=b=b<0?0:b>n?n:b;u.css({top:b+"px"});F.css({top:(f-s)*(b/n)+"px"});d.trigger("scroll");if(c.showArrows){Q[b== 0?"addClass":"removeClass"]("disabled");R[b==n?"addClass":"removeClass"]("disabled")}},T=function(b){m(G(b,"Y")-r.top-x)};u.css({height:Math.max(Math.min(t*(f-c.arrowSize*2),c.dragMaxHeight),c.dragMinHeight)+"px"}).bind("mousedown",function(b){A();x=G(b,"Y")-i-r.top;a("html").bind("mouseup",S).bind("mousemove",T);a.browser.msie&&a("html").bind("dragstart",y).bind("selectstart",y);return false});var U,B,V,W=function(){if(B>8||B%4==0)m(i-(i-V)/2);B++},X=function(){clearInterval(U);a("html").unbind("mouseup", X).unbind("mousemove",H)},H=function(b){V=G(b,"Y")-r.top-x};j.bind("mousedown",function(b){A();H(b);B=0;a("html").bind("mouseup",X).bind("mousemove",H);U=setInterval(W,100);W()});k.bind("mousewheel",function(b,e){A();z();var g=i;m(i-e*E);return g==i});var C,I,Y=function(){var b=(C-i)/c.animateStep;if(b>1||b<-1)m(i+b);else{m(C);z()}},z=function(){if(I){clearInterval(I);delete C}},p=function(b,e){if(typeof b=="string"){$e=a(b,d);if(!$e.length)return;b=$e.offset().top-d.offset().top}k.scrollTop(0);z(); var g=-b/(f-s)*n;if(e||!c.animateTo)m(g);else{C=g;I=setInterval(Y,c.animateInterval)}};d[0].scrollTo=p;d[0].scrollBy=function(b){var e=-parseInt(F.css("top"))||0;p(e+b)};A();p(-K,true);a("*",this).bind("focus",function(){for(var b=a(this),e=0;b[0]!=d[0];){e+=b.position().top;b=b.offsetParent()}b=-parseInt(F.css("top"))||0;var g=b+f;if(!(e>b&&e<g)){g=e-c.scrollbarMargin;if(e>b)g+=a(this).height()+15+c.scrollbarMargin-f;p(g)}});location.hash&&p(location.hash);a(document).bind("click",function(b){$target= a(b.target);if($target.is("a")){b=$target.attr("href");b.substr(0,1)=="#"&&p(b)}});a.jScrollPane.active.push(d[0])}else{d.css({height:f+"px",width:j-this.originalSidePaddingTotal+"px",padding:this.originalPadding});d.parent().unbind("mousewheel")}})};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(){for(var c=a.jScrollPane.active,l=0;l<c.length;l++)c[l].scrollTo=c[l].scrollBy=null})})(jQuery);