// JavaScript Document
(function(H){H.fn.drag=function(K,J,I){if(J){this.bind("dragstart",K)}if(I){this.bind("dragend",I)}return !K?this.trigger("drag"):this.bind("drag",J?J:K)};var D=H.event,B=D.special,F=B.drag={not:":input",distance:0,setup:function(I){I=H.extend({distance:F.distance,not:F.not},I||{});I.distance=G(I.distance);D.add(this,"mousedown",E,I)},teardown:function(){D.remove(this,"mousedown",E);if(this===F.dragging){F.dragging=F.proxy=null}C(this,true)}};function E(K){var J=this,I,L=K.data||{};if(J===document){K.dragTarget=J=L.elem;K.dragProxy=F.proxy||J;K.cursorOffsetX=L.pageX-L.left;K.cursorOffsetY=L.pageY-L.top;K.offsetX=K.pageX-K.cursorOffsetX;K.offsetY=K.pageY-K.cursorOffsetY}else{if(F.dragging||K.which!=1||H(K.target).is(L.not)){return }}switch(K.type){case"mousedown":H.extend(L,H(J).offset(),{elem:J,target:K.target,pageX:K.pageX,pageY:K.pageY});D.add(document,"mousemove mouseup",E,L);C(J,false);return false;case !F.dragging&&"mousemove":if(G(K.pageX-L.pageX)+G(K.pageY-L.pageY)<L.distance){break}K.target=L.target;I=A(K,"dragstart",J);if(I!==false){F.dragging=J;F.proxy=K.dragProxy=H(I)[0]||J}case"mousemove":if(F.dragging){I=A(K,"drag",J);if(B.drop){B.drop.allowed=(I!==false);B.drop.handler(K)}if(I!==false){break}K.type="mouseup"}case"mouseup":D.remove(document,"mousemove mouseup",E);if(F.dragging){if(B.drop){B.drop.handler(K)}A(K,"dragend",J)}C(J,true);F.dragging=F.proxy=null;break}}function A(K,I,J){K.type=I;return D.handle.call(J,K)}function G(I){return Math.pow(I,2)}function C(J,I){if(!J){return }J.unselectable=I?"off":"on";J.onselectstart=function(){return I};if(J.style){J.style.MozUserSelect=I?"":"none"}}})(jQuery);

(function($){$.event.special.mousewheel={setup:function(){var handler=$.event.special.mousewheel.handler;if($.browser.mozilla)$(this).bind('mousemove.mousewheel',function(event){$.data(this,'mwcursorposdata',{pageX:event.pageX,pageY:event.pageY,clientX:event.clientX,clientY:event.clientY});});if(this.addEventListener)this.addEventListener(($.browser.mozilla?'DOMMouseScroll':'mousewheel'),handler,false);else
this.onmousewheel=handler;},teardown:function(){var handler=$.event.special.mousewheel.handler;$(this).unbind('mousemove.mousewheel');if(this.removeEventListener)this.removeEventListener(($.browser.mozilla?'DOMMouseScroll':'mousewheel'),handler,false);else
this.onmousewheel=function(){};$.removeData(this,'mwcursorposdata');},handler:function(event){var args=Array.prototype.slice.call(arguments,1);event=$.event.fix(event||window.event);$.extend(event,$.data(this,'mwcursorposdata')||{});var delta=0,returnValue=true;if(event.wheelDelta)delta=event.wheelDelta/120;if(event.detail)delta=-event.detail/3;if($.browser.opera)delta=-event.wheelDelta;event.data=event.data||{};event.type="mousewheel";args.unshift(delta);args.unshift(event);return $.event.handle.apply(this,args);}};$.fn.extend({mousewheel:function(fn){return fn?this.bind("mousewheel",fn):this.trigger("mousewheel");},unmousewheel:function(fn){return this.unbind("mousewheel",fn);}});})(jQuery);



jQuery(function(){
	var jq=jQuery,
		auto=jq(".auto_scroll");
		auto.each(function(inx,oll){
			oll=jq(oll);
			var r=jq('<div class="roll_mouse"/>').appendTo(oll),
				r0=r[0];
			r.append(oll.find(">*:first"));
			var h=[oll[0].offsetHeight,r[0].scrollHeight];
			if(h[1]-h[0]<=0) return;
			r.css('padding-right',12+"px");
			var bar=jq('<div class=scroll><s></s><i><b><b><b></b></b></b></i></div>').appendTo(oll),
				btn=bar.find(">i"),
				s=bar.find(">s");
			bar.css('height',h[0]+"px");
			s.css('height',h[0]+"px");
			r.css('height',h[0]+"px");
			//btn.css('height',46+"px");
			jq(jq.dir(btn[0],"firstChild").pop()).css('height',(h[0]*h[0]/h[1]-8)+"px");
			var btnYA=[0,bar[0].offsetHeight-btn[0].offsetHeight],
				sRate=Math.min(1,btnYA[1]/(h[1]-h[0])),
				wheelPH=-25*sRate;
			var drag_posY=null,
				drag_top=null;
			btn.bind('dragstart',function(ev){
				drag_posY=ev.offsetY;
				drag_top=parseInt(btn.css('top'))||0;
			}).bind('drag',function(ev){
				var offsetY=ev.offsetY-drag_posY;
				var top=Math.max(btnYA[0],Math.min(btnYA[1],offsetY+drag_top));
				this.style.top=top+"px";
				r[0].scrollTop=top/sRate;
				
			});
			oll.mousewheel(function(ev,delta){
				var btnTop=parseInt(btn.css("top"))||0;
				if((btnTop==btnYA[0]&&delta > 0)||btnTop==btnYA[1]&&delta<0) return true;
				btnTop=Math.max(btnYA[0],Math.min(btnYA[1],btnTop+delta*wheelPH));
				btn[0].style.top=btnTop+"px";
				r[0].scrollTop=btnTop/sRate;
				return false;
			});
			
		});
		
	
});



