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