var ie = document.all;
if(!ie)
  var ns6 = document.getElementById && !document.all;
var y,newy,bar,tmp_top,autoFactor;
var doscroll = false;
var maxscroll;
var factor;
var keyscrollfactor;
var content_height;
var scrollbar_topoffset;
var scrollbar1_size=0;
var updownscrollheight;
var scrollinterval;
var autoScrollDown,autoScrollUp,fixedScroll;
var tempOffset;

function setBarFocus(){
  alert("focus");
}

function moveBy(newy){
  newy += tmp_top;
  if(newy < 0)
    newy = 0;
  bar.style.top = newy<maxscroll ? newy : maxscroll;
  parent.scroller_content.scrollTo(0,newy * factor);
}	

function move(e){
  if(doscroll){
    addy = ns6? e.clientY - y : event.clientY - y;
    moveBy(addy);
  }
}

function autoMove(addy){
  tmp_top += addy;
  moveBy(addy);
}

function noscroll(e){
  clearInterval(scrollinterval);
  doscroll = false;
  autoScrollDown = false;
  autoScrollUp = false;
  fixedScroll = false;
  document.onmousemove = scroll;
  if(ns6)
    document.getElementById('scroller_content').contentDocument.body.onmousemove = '';
}

function scroll(e){
  if((autoScrollDown || autoScrollUp) && doscroll)
    autoScroll();
  else if(doscroll){
    bar = document.getElementById('scrollbar1');
    tmp_top = parseInt(bar.style.top + 0);
    y = ns6 ? e.clientY : event.clientY;
    document.onmousemove = move;
    if(ns6)
      document.getElementById('scroller_content').contentDocument.body.onmousemove = move;
  }
  else if(fixedScroll){
    bar = document.getElementById('scrollbar1');
    y = ns6 ? e.clientY : event.clientY;
    tmp_top = parseInt(bar.style.top + 0);
    if(y-scrollbar_topoffset>tmp_top)
      addY = scrollbar1_size;
    else
      addY = -1 * scrollbar1_size;
    
    moveBy(addY);
    fixedScroll = false;
  }
}

function autoScroll(){
  if(doscroll){
    // 0 = up, 1 = down
    bar = document.getElementById('scrollbar1');
    tmp_top = parseInt(bar.style.top + 0);
    autoFactor = autoScrollDown ? 10 : -10;
    moveBy(autoFactor);
    window.clearInterval(scrollinterval);
    scrollinterval = setInterval("autoMove("+parseInt(autoFactor + 0)+")",100);
  }
}

function keyscroll(keycode){
  bar = document.getElementById('scrollbar1');
  tmp_top = parseInt(bar.style.top + 0);
  //alert(parent.scroller.offsetHeight);
  switch(keycode){
  case 38 : /* Up    */;
    parent.scroller_content.scrollBy(0,-1*keyscrollfactor);
    //bar
      bar.style.top = tmp_top;
    break;
  case 40 : /* Down    */;
    parent.scroller_content.scrollBy(0,keyscrollfactor);
    break;
    //default: alert(keycode);
  }
  return false;
}

function go(e){
  window.status += e.target;
  return true;
}

function keyMove(e){
  var keycode;
  keycode = document.all ? event.keyCode : e.which;
  if(keycode == 38 || keycode == 40)
    keyscroll(keycode);
}

function setBar(test){
  if(!tempOffset && test)
    tempOffset= document.all ? document.frames("scroller_content").document.body.scrollTop : parent.scroller_content.pageYOffset;
  if(tempOffset || !test){
    bar.style.top = parseInt((tempOffset/factor)+0);
    bar.style.visibility = 'visible';
  }
}

function initscroller(scrollernum){
  if(ns6){
    if(document.getElementById('scroller_content').contentDocument.body){
      content_height = 1000;
      content_height = document.getElementById('scroller_content').contentDocument.body.scrollHeight;
    }
    else
      return 0;
  }
  else{
    if(document.frames("scroller_content").document.body){
      content_height = document.frames("scroller_content").document.body.scrollHeight;
    }
    else
      return 0;
  }
  scroller1_height = parseInt(document.getElementById("scroller1_main").style.height+0); // borderheight
  scroller1_height -= parseInt(document.getElementById("scroller1_up").style.height+0);
  if(content_height > scroller1_height+10){
    scrollbar1_size = parseInt((scroller1_height / (content_height/scroller1_height)));
    scrollbar1_size = scrollbar1_size < 10 ? 10 : scrollbar1_size;
    maxscroll = (scroller1_height - (scrollbar1_size)) - 3;
    document.getElementById("bar1").style.height = scrollbar1_size;
    document.getElementById("bartop1").style.height = (scrollbar1_size/2)-scrollbar1_mid;
    bar = document.getElementById('scrollbar1');
    bar.style.height = scrollbar1_size;
    tmp_top = parseInt(bar.style.top + 0);
    document.getElementById("bar1").style.visibility = 'visible';

    var scrollerfactor = scroller1_height-2;
    factor = (content_height / scrollerfactor);
    var tmp_height;
    tempOffset=(document.all)? document.frames("scroller_content").document.body.scrollTop : parent.scroller_content.pageYOffset;
    //window.pageYOffset ? window.pageYOffset : document[(document.compatMode == 'CSS1Compat') ? 'documentElement' : 'body'].scrollTop;
    //alert(tempOffset);
    if(!tempOffset){
      setTimeout('setBar(false);',500);
    }
    else
      setBar(true);
    // Lineheight (up/down scroll factor)
      keyscrollfactor = 20; //(pixels)
  }
  else{
    document.getElementById("bar1").style.visibility = 'hidden';
  }
}

document.onselectstart = document.ondragstart = function() { return false; };
if(typeof document.body.style.MozUserSelect == "string")
     document.body.style.MozUserSelect = "none";
     
document.onmousedown = scroll;
document.onmouseup = noscroll;
document.onkeypress=keyMove;
     
