var scrollBarHeight = 340;
var iconHeight = 30;
var speed = 15;
var minPos = 20;
var doScroll = false;
var goUp = false;

var scrollboxSelected = false;
var scroll_yShift = 0;

function scrollUp() {
    doScroll = true;
    moveScroll(-speed);
    goUp = true;
    setTimeout("startScroll()",300);
}

function scrollDown() {
    doScroll = true;
    moveScroll(speed);
    goUp = false;
    setTimeout("startScroll()",300);
}

function stopScroll() {
    doScroll = false;
    scrollboxSelected = false;
}

function scrollToTop() {
    var scrollIcon = document.getElementById("scrollIcon");
    var curPos = Math.round(scrollIcon.style.top.replace("px",""));
    moveScroll(-curPos);
}

function startScroll() {
    if (doScroll) {
        if (goUp)
            moveScroll(-speed/2);
        else
            moveScroll(speed/2);
        setTimeout("startScroll()",50);
    }
}

function moveScroll(pos) {
    var scrollIcon = document.getElementById("scrollIcon");
    var maxPos = (scrollBarHeight - iconHeight);
    var curPos = Math.round(scrollIcon.style.top.replace("px",""));
    
    curPos+= pos;
    
    if (curPos < minPos)
        curPos = minPos;
    if (curPos > maxPos)
        curPos = maxPos;
        
    var percentMax = (curPos-minPos) / (maxPos - minPos);
    var scrollBox = document.getElementById("scrollBox");
    var scrollHeight = scrollBox.scrollHeight;

    var newPos
    if (scrollHeight > 345)
        newPos = percentMax * (scrollHeight-345); //subtract the height of the scrollArea
    else
        newPos = 0;
        
    if (scrollHeight - scrollBarHeight > 0) {
        scrollBox.style.top = -newPos + "px";            
        scrollIcon.style.top = curPos + "px";
    } else {
        scrollBox.style.top = "0px";            
        scrollIcon.style.top = minPos + "px";    
    }
}

function moveScrollbox(e) {
    if (scrollboxSelected) {
        var item = document.getElementById("scrollIcon");
    } else {
        return true;
    }
     
    if (e && e.pageY) {
        var y = e.pageY - scroll_yShift;
    } else {
        var y = event.clientY - scroll_yShift;
    }
    
    if (y < minPos)
        y = minPos;
    if (y > scrollBarHeight - iconHeight)
        y = scrollBarHeight - iconHeight;

    item.style.top = y + "px";  
    
    moveScroll(0);         
    
    return false;
}   

function getScrollboxPosition(e) {
  if (e && e.pageY) {
    mouseY = e.pageY;
  } else {
    mouseY = event.clientY;
  }
  
  if (scrollboxSelected) {
      var item = document.getElementById("scrollIcon");
  } else {
      return;
  }
  boxY = item.style.top.replace("px","");
 
  scroll_yShift = mouseY - boxY;
}

function selectScrollbox() {
   scrollboxSelected = true;
}

function doMouseWheel(e) {
    var delta = 0;
    if (e != null) {
        if (e.wheelDelta)
            delta = -e.wheelDelta;
        else if (e.detail)
            delta = e.detail;
    }
    
    if (delta < 0) {
        moveScroll(-speed);
    } else if (delta > 0) {
        moveScroll(speed);
    } 
	
    if (e && e.preventDefault)
    	e.preventDefault();
	if (e)
		e.returnValue = false;
}

function initScroll() {
	var scrollArea = document.getElementById("scroll1");
    if (scrollArea)
        if (scrollArea.addEventListener)
            scrollArea.addEventListener('DOMMouseScroll', doMouseWheel, false);
        
    var scrollBox = document.getElementById("scrollBox");
    if (scrollBox)
        scrollBox.style.top = "0px"; 
    
    var scrollIcon = document.getElementById("scrollIcon");
    if (scrollIcon)
        scrollIcon.style.top = minPos + "px";
}
