$.fn.extend({scrollbarPaper:function(){this.each(function(h){var o=$(this);var d=o.data("paper");if(d==null){var r=function(){var t=$('<div style="width:50px;height:50px;overflow:hidden;position:absolute;top:-200px;left:-200px;"><div style="height:100px;"></div></div>');$("body").append(t);var s=$("div",t).innerWidth();t.css("overflow-y","scroll");var i=$("div",t).innerWidth();t.remove();return Math.max(s-i,17)}.call();o.before('<div class="scrollbarpaper-container" style="width:'+r+'px"><div class="scrollbarpaper-track"><div class="scrollbarpaper-drag"><div class="scrollbarpaper-drag-top"></div><div class="scrollbarpaper-drag-bottom"></div></div></div></div>');d=o.prev();o.append('<div style="clear:both;"></div>');var m=$("> :first",o);m.css("overflow","hidden");o.data("barWidth",r);o.data("paper",d);o.data("track",$(".scrollbarpaper-track",d));o.data("drag",$(".scrollbarpaper-drag",d));o.data("dragTop",$(".scrollbarpaper-drag-top",d));o.data("dragBottom",$(".scrollbarpaper-drag-bottom",d));o.data("content",m);o.data("clearer",$("> :last",o));d.hide()}var r=o.data("barWidth");var c=o.data("track");var k=o.data("drag");var l=o.data("dragTop");var b=o.data("dragBottom");var m=o.data("content");var j=o.data("clearer");var p=j.position().top-m.position().top;o.data("height",o.height());o.data("contentHeight",p);o.data("offset",o.offset());o.unbind();var n=o.height()/p;if(n<1){d.show();m.addClass("scrollbarpaper-visible");d.height(o.height());var f=o.offset();var q=Math.max(Math.round(o.height()*n),l.height()+b.height());k.height(q);var a=function(){k.css("top",Math.min(Math.round(o.scrollTop()*n),o.height()-q)+"px")};a();o.scroll(function(i){a()});var g=function(){$("html").unbind("mousemove.scrollbarpaper")};k.mousedown(function(s){g();var i=s.pageY-k.offset().top;$("html").bind("mousemove.scrollbarpaper",function(t){o.scrollTop((t.pageY-o.offset().top-i)/n);return false}).mouseup(g);return false})}else{o.unbind();d.hide();m.removeClass("scrollbarpaper-visible")}var e=function(){window.setTimeout(function(){var s=o.offset();var i=o.data("offset");if((o.height()!=o.data("height"))||(j.position().top-m.position().top!=o.data("contentHeight"))||(s.top!=i.top)||(s.left!=i.left)){o.scrollbarPaper()}else{e()}},200)};e()})}});
