var ScrollBar=new Class({Implements:[Events,Options],options:{maxThumbSize:10,wheel:8},initialize:function(d,a,b,c){this.setOptions(c);this.content=$(d);this.track=$(a);this.thumb=$(b);this.bound={start:this.start.bind(this),end:this.end.bind(this),drag:this.drag.bind(this),wheel:this.wheel.bind(this),page:this.page.bind(this)};this.position={};this.mouse={};this.update();this.attach()},update:function(){this.contentSize=this.content.offsetHeight;this.contentScrollSize=this.content.scrollHeight;this.trackSize=this.track.offsetHeight;this.contentRatio=this.contentSize/this.contentScrollSize;this.thumbSize=(this.trackSize*this.contentRatio).limit(this.options.maxThumbSize,this.trackSize);this.scrollRatio=this.contentScrollSize/this.trackSize;this.thumb.setStyle("height",this.thumbSize-6);this.updateThumbFromContentScroll();this.updateContentFromThumbPosition()},updateContentFromThumbPosition:function(){this.content.scrollTop=this.position.now*this.scrollRatio},updateThumbFromContentScroll:function(){this.position.now=(this.content.scrollTop/this.scrollRatio).limit(0,(this.trackSize-this.thumbSize));this.thumb.setStyle("top",this.position.now)},attach:function(){this.thumb.addEvent("mousedown",this.bound.start);if(this.options.wheel){this.content.addEvent("mousewheel",this.bound.wheel)}this.track.addEvent("mouseup",this.bound.page)},wheel:function(a){this.content.scrollTop-=a.wheel*this.options.wheel;this.updateThumbFromContentScroll();a.stop()},page:function(a){if(a.page.y>this.thumb.getPosition().y){this.content.scrollTop+=this.content.offsetHeight}else{this.content.scrollTop-=this.content.offsetHeight}this.updateThumbFromContentScroll();a.stop()},start:function(a){this.mouse.start=a.page.y;this.position.start=this.thumb.getStyle("top").toInt();document.addEvent("mousemove",this.bound.drag);document.addEvent("mouseup",this.bound.end);this.thumb.addEvent("mouseup",this.bound.end);a.stop()},end:function(a){document.removeEvent("mousemove",this.bound.drag);document.removeEvent("mouseup",this.bound.end);this.thumb.removeEvent("mouseup",this.bound.end);a.stop()},drag:function(a){this.mouse.now=a.page.y;this.position.now=(this.position.start+(this.mouse.now-this.mouse.start)).limit(0,(this.trackSize-this.thumbSize));this.updateContentFromThumbPosition();this.updateThumbFromContentScroll();a.stop()}});
