ScrollBar
function ScrollBar (target, area) {
	alert(ScrollBar( + [target, area] + ));
	
	$('#foot').append($(spanspan));
	
	this.target_height = $(target).height();
	this.area_height = $(area).height();
	this.overflow = this.target_height  this.area_height;
	
	if (this.overflow) {
		
		var p = this;
		this.target = target;
		this.area = area;
		this.scrollbar = #scrollbar;
		this.bar = #scrollbar .bar;
		this.bg = #scrollbar .bg;
		this.target_top_margin = parseInt($(target).css(margin-top));
		this.area_top = $(area).position().top - 9;
		
		$(area).css({overflowhidden});
		$(area).append('div id=scrollbardiv class=bardivdiv class=bgdivdiv');
		$(target).width($(target).width() - $(this.scrollbar).width());
		
		$(target).css({floatleft, positionstatic});
		$(this.scrollbar).css({floatright});
		this.target_height = $(target).height() + this.target_top_margin;
		
		var bar_height = Math.floor(this.area_height  this.target_height  $(this.scrollbar).height());
		bar_height = Math.max(bar_height, 10);
		
		$(this.bar).height(bar_height);
		$(this.bar).css(top, 0);
		
		$(this.bar).mousedown(function (event) {
			p.startDrag(event);
			return false;
		});
		
		$(body).mouseup(function () {
			p.stopDrag();
			return false;
		});
		
		$(area).wheel(function(event, delta) {
			p.scrollTo(p.bar_y - (delta  8));
			if (event.preventDefault) event.preventDefault();
			event.returnValue = false;
		});
		
		$(this.bg).mousedown(function (event) {
			var y = event.pageY - p.area_top  p.bar_y  bar_height  -bar_height;
			p.scrollTo(p.bar_y + y);
			return false;
		});
		
		this.start_y;
		this.max_y = Math.floor($(this.scrollbar).height() - bar_height);
		this.min_y = 0;
		this.bar_y = 0;
	}
	
	return this;
}

ScrollBar.prototype.startDrag = function (event) {
	alert(ScrollBar.startDrag());
	
	var p = this;
	this.start_y = event.pageY - $(p.bar).position().top - p.area_top;
	
	$(body).mousemove(function (event) {
		p.scrollTo(event.pageY - p.area_top - p.start_y);
		return false;
	});
}

ScrollBar.prototype.scrollTo = function (value) {
	alert(ScrollBar.scrollTo( + value + ));
	
	this.bar_y = Math.min(Math.max(Math.round(value), this.min_y), this.max_y);
	$(this.bar).css(top, this.bar_y);
	
	var target_y = Math.round(this.bar_y  this.max_y  (this.area_height - this.target_height)) + this.target_top_margin;
	$(this.target).css(margin-top, target_y);
}

ScrollBar.prototype.stopDrag = function () {
	alert(ScrollBar.stopDrag());
	
	$(body).unbind(mousemove);
}



