  var timeoutID;
  function move_up(e) {
  if (timeoutID) {
    clearTimeout(timeoutID);
  }
  	if (e == true){
    document.getElementById("text_scroll").scrollTop = document.getElementById("text_scroll").scrollTop -10;

		timeoutID = setTimeout("move_up(true)", 100);
	}
  }
  function move_down(e) {
  if (timeoutID) {
    clearTimeout(timeoutID);
  }
  	if (e == true){
    document.getElementById("text_scroll").scrollTop = document.getElementById("text_scroll").scrollTop +10;

		timeoutID = setTimeout("move_down(true)", 100);
	}
  }
  var drag = false;
  var container_div;
  var obj_bar = 'scroll_bar';
  var scroll_div = 'text_scroll';
  var scroll_slider_bar = 'scroll_slider_bar';
  
  function stopDrag() {
  if (drag){
  drag = false;
  document.onmousemove=null;
  document.onselectstart = null;
  document.getElementById(scroll_div).style.overflow="auto";
  }
  }
  
  function startDrag(a, b, c, d) {
  drag = true;
  obj_bar = a;
  container_div= b;
  scroll_div=c;
  scroll_slider_bar=d;
     document.getElementById(scroll_div).style.overflow="hidden";
	document.onselectstart = function () { return false; };

   document.onmousemove = mouseMove;
   
  }
  function dragDiv(ev){
 if(!drag){return};
 	// move div element
	var mousePos = mouseCoords(ev);
	barH=document.getElementById(obj_bar).clientHeight;
   containerY=findPos(document.getElementById(container_div)).y;
   containerH=document.getElementById(scroll_slider_bar).clientHeight;
   scrollH=document.getElementById(scroll_div).scrollHeight - document.getElementById(scroll_div).clientHeight;
     
   if (mousePos.y > (containerY+21) & mousePos.y < (containerY + containerH)){
	document.getElementById(scroll_div).scrollTop = Math.round(((mousePos.y - containerY-21)*scrollH)/(containerH-barH))  ;
   	document.getElementById(obj_bar).style.top=mousePos.y - containerY  + 'px';
   }
   return false;
}
function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return {x:curleft,y:curtop};
}
function scroll_ev(){
	if (!drag){
		barH=document.getElementById(obj_bar).clientHeight;
		scrollH=document.getElementById(scroll_div).scrollHeight - document.getElementById(scroll_div).clientHeight;
		containerH=document.getElementById(scroll_slider_bar).clientHeight-barH;
		document.getElementById(obj_bar).style.top = Math.round((document.getElementById(scroll_div).scrollTop * containerH) / scrollH)+barH + "px";
	}
}   
 document.onmouseup=stopDrag;

 
function scroll_init (){
	document.getElementById(scroll_div).onscroll=scroll_ev;
}
function mouseMove(ev){
	ev           = ev || window.event;
	dragDiv(ev);
}

function mouseCoords(ev){
	if(ev.pageX || ev.pageY){
		return {x:ev.pageX, y:ev.pageY};
	}
	if(document.documentElement){
	return {
		x:ev.clientX + document.documentElement.scrollLeft - document.documentElement.clientLeft,
		y:ev.clientY + document.documentElement.scrollTop  - document.documentElement.clientTop
	};
	}
	return {
		x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
		y:ev.clientY + document.body.scrollTop  - document.body.clientTop
	};
	

}
 //window.onload = scroll_init;
 addonload(scroll_init);