(function($){
$.jScrollPane={active:[]};
$.fn.jScrollPane=function(_2){
_2=$.extend({},$.fn.jScrollPane.defaults,_2);
var rf=function(){
return false;
};
return this.each(function(){
var _4=$(this);
var _5=this;
var _6=0;
var _7;
var _8;
var _9;
var _a=_2.topCapHeight;
if($(this).parent().is(".jScrollPaneContainer")){
_6=_2.maintainPosition?_4.position().top:0;
var $c=$(this).parent();
_7=$c.innerWidth();
_8=$c.outerHeight();
$(">.jScrollPaneTrack, >.jScrollArrowUp, >.jScrollArrowDown, >.jScrollCap",$c).remove();
_4.css({"top":0});
}else{
_4.data("originalStyleTag",_4.attr("style"));
_4.css("overflow","hidden");
this.originalPadding=_4.css("paddingTop")+" "+_4.css("paddingRight")+" "+_4.css("paddingBottom")+" "+_4.css("paddingLeft");
this.originalSidePaddingTotal=(parseInt(_4.css("paddingLeft"))||0)+(parseInt(_4.css("paddingRight"))||0);
_7=_4.innerWidth();
_8=_4.innerHeight();
var _c=$("<div></div>").attr({"className":"jScrollPaneContainer"}).css({"height":_8+"px","width":_7+"px"});
if(_2.enableKeyboardNavigation){
_c.attr("tabindex",_2.tabIndex);
}
_4.wrap(_c);
$(document).bind("emchange",function(e,_e,_f){
_4.jScrollPane(_2);
});
}
_9=_8;
if(_2.reinitialiseOnImageLoad){
var _10=$.data(_5,"jScrollPaneImagesToLoad")||$("img",_4);
var _11=[];
if(_10.length){
_10.each(function(i,val){
$(this).bind("load readystatechange",function(){
if($.inArray(i,_11)==-1){
_11.push(val);
_10=$.grep(_10,function(n,i){
return n!=val;
});
$.data(_5,"jScrollPaneImagesToLoad",_10);
var s2=$.extend(_2,{reinitialiseOnImageLoad:false});
_4.jScrollPane(s2);
}
}).each(function(i,val){
if(this.complete||this.complete===undefined){
this.src=this.src;
}
});
});
}
}
var p=this.originalSidePaddingTotal;
var _1a=_7-_2.scrollbarWidth-_2.scrollbarMargin-p;
var _1b={"height":"auto","width":_1a+"px"};
if(_2.scrollbarOnLeft){
_1b.paddingLeft=_2.scrollbarMargin+_2.scrollbarWidth+"px";
}else{
_1b.paddingRight=_2.scrollbarMargin+"px";
}
_4.css(_1b);
var _1c=_4.outerHeight();
var _1d=_8/_1c;
if(_1d<0.99){
var _c=_4.parent();
_c.append($("<div></div>").addClass("jScrollCap jScrollCapTop").css({height:_2.topCapHeight}),$("<div></div>").attr({"className":"jScrollPaneTrack"}).css({"width":_2.scrollbarWidth+"px"}).append($("<div></div>").attr({"className":"jScrollPaneDrag"}).css({"width":_2.scrollbarWidth+"px"}).append($("<div></div>").attr({"className":"jScrollPaneDragTop"}).css({"width":_2.scrollbarWidth+"px"}),$("<div></div>").attr({"className":"jScrollPaneDragBottom"}).css({"width":_2.scrollbarWidth+"px"}))),$("<div></div>").addClass("jScrollCap jScrollCapBottom").css({height:_2.bottomCapHeight}));
var _1e=$(">.jScrollPaneTrack",_c);
var _1f=$(">.jScrollPaneTrack .jScrollPaneDrag",_c);
var _20;
var _21=[];
var _22;
var _23=function(){
if(_22>4||_22%4==0){
_24(_25+_20*_26);
}
_22++;
};
if(_2.enableKeyboardNavigation){
_c.bind("keydown.jscrollpane",function(e){
switch(e.keyCode){
case 38:
_20=-1;
_22=0;
_23();
_21[_21.length]=setInterval(_23,100);
return false;
case 40:
_20=1;
_22=0;
_23();
_21[_21.length]=setInterval(_23,100);
return false;
case 33:
case 34:
return false;
default:
}
}).bind("keyup.jscrollpane",function(e){
if(e.keyCode==38||e.keyCode==40){
for(var i=0;i<_21.length;i++){
clearInterval(_21[i]);
}
return false;
}
});
}
if(_2.showArrows){
var _2a;
var _2b;
var _2c=function(_2d){
$("html").unbind("mouseup",_2c);
_2a.removeClass("jScrollActiveArrowButton");
clearInterval(_2b);
};
var _2e=function(){
$("html").bind("mouseup",_2c);
_2a.addClass("jScrollActiveArrowButton");
_22=0;
_23();
_2b=setInterval(_23,100);
};
_c.append($("<a></a>").attr({"href":"javascript:;","className":"jScrollArrowUp","tabindex":-1}).css({"width":_2.scrollbarWidth+"px","top":_2.topCapHeight+"px"}).html("Scroll up").bind("mousedown",function(){
_2a=$(this);
_20=-1;
_2e();
this.blur();
return false;
}).bind("click",rf),$("<a></a>").attr({"href":"javascript:;","className":"jScrollArrowDown","tabindex":-1}).css({"width":_2.scrollbarWidth+"px","bottom":_2.bottomCapHeight+"px"}).html("Scroll down").bind("mousedown",function(){
_2a=$(this);
_20=1;
_2e();
this.blur();
return false;
}).bind("click",rf));
var _2f=$(">.jScrollArrowUp",_c);
var _30=$(">.jScrollArrowDown",_c);
}
if(_2.arrowSize){
_9=_8-_2.arrowSize-_2.arrowSize;
_a+=_2.arrowSize;
}else{
if(_2f){
var _31=_2f.height();
_2.arrowSize=_31;
_9=_8-_31-_30.height();
_a+=_31;
}
}
_9-=_2.topCapHeight+_2.bottomCapHeight;
_1e.css({"height":_9+"px",top:_a+"px"});
var _32=$(this).css({"position":"absolute","overflow":"visible"});
var _33;
var _34;
var _26;
var _25=0;
var _35=_1d*_8/2;
var _36=function(_37,c){
var p=c=="X"?"Left":"Top";
return _37["page"+c]||(_37["client"+c]+(document.documentElement["scroll"+p]||document.body["scroll"+p]))||0;
};
var _3a=function(){
return false;
};
var _3b=function(){
_3c();
_33=_1f.offset(false);
_33.top-=_25;
_34=_9-_1f[0].offsetHeight;
_26=2*_2.wheelSpeed*_34/_1c;
};
var _3d=function(_3e){
_3b();
_35=_36(_3e,"Y")-_25-_33.top;
$("html").bind("mouseup",_3f).bind("mousemove",_40);
if($.browser.msie){
$("html").bind("dragstart",_3a).bind("selectstart",_3a);
}
return false;
};
var _3f=function(){
$("html").unbind("mouseup",_3f).unbind("mousemove",_40);
_35=_1d*_8/2;
if($.browser.msie){
$("html").unbind("dragstart",_3a).unbind("selectstart",_3a);
}
};
var _24=function(_41){
_c.scrollTop(0);
_41=_41<0?0:(_41>_34?_34:_41);
_25=_41;
_1f.css({"top":_41+"px"});
var p=_41/_34;
_4.data("jScrollPanePosition",(_8-_1c)*-p);
_32.css({"top":((_8-_1c)*p)+"px"});
_4.trigger("scroll");
if(_2.showArrows){
_2f[_41==0?"addClass":"removeClass"]("disabled");
_30[_41==_34?"addClass":"removeClass"]("disabled");
}
};
var _40=function(e){
_24(_36(e,"Y")-_33.top-_35);
};
var _44=Math.max(Math.min(_1d*(_8-_2.arrowSize*2),_2.dragMaxHeight),_2.dragMinHeight);
_1f.css({"height":_44+"px"}).bind("mousedown",_3d);
var _45;
var _46;
var _47;
var _48=function(){
if(_46>8||_46%4==0){
_24((_25-((_25-_47)/2)));
}
_46++;
};
var _49=function(){
clearInterval(_45);
$("html").unbind("mouseup",_49).unbind("mousemove",_4a);
};
var _4a=function(_4b){
_47=_36(_4b,"Y")-_33.top-_35;
};
var _4c=function(_4d){
_3b();
_4a(_4d);
_46=0;
$("html").bind("mouseup",_49).bind("mousemove",_4a);
_45=setInterval(_48,100);
_48();
return false;
};
_1e.bind("mousedown",_4c);
_c.bind("mousewheel",function(_4e,_4f){
_4f=_4f||(_4e.wheelDelta?_4e.wheelDelta/120:(_4e.detail)?-_4e.detail/3:0);
_3b();
_3c();
var d=_25;
_24(_25-_4f*_26);
var _51=d!=_25;
return !_51;
});
var _52;
var _53;
function animateToPosition(){
var _54=(_52-_25)/_2.animateStep;
if(_54>1||_54<-1){
_24(_25+_54);
}else{
_24(_52);
_3c();
}
}
var _3c=function(){
if(_53){
clearInterval(_53);
delete _52;
}
};
var _55=function(pos,_57){
if(typeof pos=="string"){
$e=$(pos,_4);
if(!$e.length){
return;
}
pos=$e.offset().top-_4.offset().top;
}
_3c();
var _58=_1c-_8;
pos=pos>_58?_58:pos;
_4.data("jScrollPaneMaxScroll",_58);
var _59=pos/_58*_34;
if(_57||!_2.animateTo){
_24(_59);
}else{
_c.scrollTop(0);
_52=_59;
_53=setInterval(animateToPosition,_2.animateInterval);
}
};
_4[0].scrollTo=_55;
_4[0].scrollBy=function(_5a){
var _5b=-parseInt(_32.css("top"))||0;
_55(_5b+_5a);
};
_3b();
_55(-_6,true);
$("*",this).bind("focus",function(_5c){
var $e=$(this);
var _5e=0;
while($e[0]!=_4[0]){
_5e+=$e.position().top;
$e=$e.offsetParent();
}
var _5f=-parseInt(_32.css("top"))||0;
var _60=_5f+_8;
var _61=_5e>_5f&&_5e<_60;
if(!_61){
var _62=_5e-_2.scrollbarMargin;
if(_5e>_5f){
_62+=$(this).height()+15+_2.scrollbarMargin-_8;
}
_55(_62);
}
});
if(location.hash&&location.hash.length>1){
setTimeout(function(){
_55(location.hash);
},$.browser.safari?100:0);
}
$(document).bind("click",function(e){
$target=$(e.target);
if($target.is("a")){
var h=$target.attr("href");
if(h&&h.substr(0,1)=="#"&&h.length>1){
setTimeout(function(){
_55(h,!_2.animateToInternalLinks);
},$.browser.safari?100:0);
}
}
});
function onSelectScrollMouseDown(e){
$(document).bind("mousemove.jScrollPaneDragging",onTextSelectionScrollMouseMove);
$(document).bind("mouseup.jScrollPaneDragging",onSelectScrollMouseUp);
}
var _66;
var _67;
function onTextSelectionInterval(){
direction=_66<0?-1:1;
_4[0].scrollBy(_66/2);
}
function clearTextSelectionInterval(){
if(_67){
clearInterval(_67);
_67=undefined;
}
}
function onTextSelectionScrollMouseMove(e){
var _69=_4.parent().offset().top;
var _6a=_69+_8;
var _6b=_36(e,"Y");
_66=_6b<_69?_6b-_69:(_6b>_6a?_6b-_6a:0);
if(_66==0){
clearTextSelectionInterval();
}else{
if(!_67){
_67=setInterval(onTextSelectionInterval,100);
}
}
}
function onSelectScrollMouseUp(e){
$(document).unbind("mousemove.jScrollPaneDragging").unbind("mouseup.jScrollPaneDragging");
clearTextSelectionInterval();
}
_c.bind("mousedown.jScrollPane",onSelectScrollMouseDown);
$.jScrollPane.active.push(_4[0]);
}else{
_4.css({"height":_8+"px","width":_7-this.originalSidePaddingTotal+"px","padding":this.originalPadding});
_4[0].scrollTo=_4[0].scrollBy=function(){
};
_4.parent().unbind("mousewheel").unbind("mousedown.jScrollPane").unbind("keydown.jscrollpane").unbind("keyup.jscrollpane");
}
});
};
$.fn.jScrollPaneRemove=function(){
$(this).each(function(){
$this=$(this);
var $c=$this.parent();
if($c.is(".jScrollPaneContainer")){
$this.css({"top":"","height":"","width":"","padding":"","overflow":"","position":""});
$this.attr("style",$this.data("originalStyleTag"));
$c.after($this).remove();
}
});
};
$.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};
$(window).bind("unload",function(){
var els=$.jScrollPane.active;
for(var i=0;i<els.length;i++){
els[i].scrollTo=els[i].scrollBy=null;
}
});
})(jQuery);


