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

