var arakTopofs=0;
var ofs=0;
var divid="";
var containerH=500;
var scrollArany=0;
var scrollDist=0;
var newY=0;
var scrollValue=0;
var scr=0;
var scrollerH=0;
var scrolldTop=0;
var kattY=0;
var updownH=20;
var kattDiff=0;

function scrollDown(){
scrollValue=-5;
}

function scrollUp(){
scrollValue=5;
}


function txtScroller(){

var ar=findPos(document.getElementById(divid));
var dLeft=ar[0];
var dTop=ar[1];
var rX=mouseX-dLeft;
var rY=mouseY-dTop;
var newtop=0;
ofs=0;

//scrollDist=parseInt(scr.offsetHeight) - containerH; //2 arrows = 70px
//scrollArany=(containerH - 40) / scrollDist;
scrollArany=parseInt(scr.offsetHeight) / (containerH - 2*updownH);
scrollArany=Math.ceil(scrollArany*10)/10;
var newscrolltop=rY-kattDiff;
var newscrollbot;

if (newY == 1 && mouseDown == 0) newY=0;

if (newY == 1 && mouseDown == 1 && newscrolltop>0) {
	newtop=newscrolltop;
	newscrollbot=newscrolltop+scrollerH;

	if (newscrolltop < updownH) newtop=updownH;
	if (newscrollbot > (containerH-updownH)) newtop=newscrolltop-(newscrollbot-(containerH-updownH));
	
	scrolld.style.top=newtop+"px";
	arakTopofs = parseInt(-(newtop-updownH));
	scr.style.top = arakTopofs*scrollArany+'px';

} 

if (scrollValue != 0) {

	var newofs=(parseInt(arakTopofs)+scrollValue)*scrollArany;

	if (newofs < 5 && newofs>=(containerH-parseInt(scr.offsetHeight))) {
		arakTopofs += parseInt(scrollValue);
		scr.style.top = arakTopofs*scrollArany+'px';

		newscrolltop=updownH-arakTopofs;
		newscrollbot=newscrolltop+scrollerH;
		newtop=newscrolltop;
		if (newscrolltop < updownH) newtop=updownH;
		if (newscrollbot > (containerH-updownH)) newtop=newscrolltop-(newscrollbot-(containerH-updownH));

		scrolld.style.top=newtop+"px";
		//scrollValue=0;
	}
} 
/*else if (rX>0 && rX<410 && rY>0 && rY<containerH ) {
auto scroll disabled
	if (rY>0 && rY<100 && parseInt(arakTopofs) <= 0) {
		ofs=1;
	}

	if (rY>400 && rY<containerH && parseInt(arakTopofs)>(containerH-parseInt(scr.offsetHeight))) {
		ofs=-1;
	}
	arakTopofs += parseInt(ofs);
	scr.style.top = arakTopofs+'px';
	scrolld.style.top=20-1*arakTopofs*scrollArany+"px";
} 
*/

var tr=setTimeout('txtScroller()', 50);
}


function scrollClick (e){
newY=1; //capture move start
var e = getEvent(e);
var ar=findPos(document.getElementById(divid));
var dTop=ar[1];
var kY=mouseY-dTop;
scrolldTop=parseInt(scrolld.style.top);
if (scrolldTop) kattDiff=Math.abs(scrolldTop-kY)
else kattDiff=0;
kattY=mouseY;

}

function scrollNoclick(e){
newY=0; //capture move end
var e = getEvent(e);
kattY=0;

}

function scrollMUp(){
scrollValue=0;
}

function getEvent(e)
{
  if(!e)
    return window.event
  return e;
}

function hookEvent(element, eventName, callback)
{
  if(typeof(element) == "string")
    element = document.getElementById(element);
  if(element == null)
    return;
  if(element.addEventListener)
    element.addEventListener(eventName, callback, false);
  else if(element.attachEvent)
    element.attachEvent("on" + eventName, callback);
}

function unhookEvent(element, eventName, callback)
{
  if(typeof(element) == "string")
    element = document.getElementById(element);
  if(element == null)
    return;
  if(element.removeEventListener)
    element.removeEventListener(eventName, callback, false);
  else if(element.detachEvent)
    element.detachEvent("on" + eventName, callback);
}




