var button_fw = null;
var button_fwd = null;
var button_bk = null;
var button=0;
var scroll_mouse_down=false;
var scrollbox = null;
var scrolltimer = null;
var scroll_pos = 0;
var scroll_max = 0;
var scroll_interval = 20;

function ng_containsDOM(container, containee) 
{
  var isParent = false;
  do {
    if ((isParent = container == containee))
      break;
    containee = containee.parentNode;
  }
  while (containee != null);
  return isParent;
}

function ng_CheckMouseEnter(element, evt) 
{
  if (element.contains && evt.fromElement) {
    return !element.contains(evt.fromElement);
  }
  else if (evt.relatedTarget) {
    return !ng_containsDOM(element, evt.relatedTarget);
  }
}

function ng_CheckMouseLeave(element, evt) 
{
  if (element.contains && evt.toElement) {
    return !element.contains(evt.toElement);
  }
  else if (evt.relatedTarget) {
    return !ng_containsDOM(element, evt.relatedTarget);
  }
}

function DoScroll()
{
  if(scrolltimer) clearTimeout(scrolltimer);
  if((!button)||(!scrollbox))
  {
    scrolltimer = null;
    return;
  }
  var step=2;
  if(scroll_mouse_down) step=5;
  if(button==1) scroll_pos-=step;
  else scroll_pos+=step;
  if(scroll_pos>0) scroll_pos=0;
  if((scroll_max)&&(scroll_pos<scroll_max)) scroll_pos=scroll_max;    
  button_bk.style.visibility=(scroll_pos ? 'visible' : 'hidden');
  if((scroll_max)&&(button_fwd))
  {
    button_fwd.style.visibility=(scroll_pos==scroll_max ? 'visible' : 'hidden');    
    button_fw.style.visibility=(scroll_pos==scroll_max ? 'hidden' : 'visible');
  }
  
  scrollbox.style.top=scroll_pos+'px';
  if((scroll_pos)&&(scroll_pos!=scroll_max)) scrolltimer = setTimeout('DoScroll();', scroll_interval);
}

function OnMouseDown(e)
{
  scroll_mouse_down=true;
}

function OnMouseUp(e)
{
  scroll_mouse_down=false;
}

function OnForwardEnter(e)
{
  if(!e) e=window.event;
  if(!ng_CheckMouseEnter(this, e)) return;
  button=1;
  if(!scrolltimer) scrolltimer = setTimeout('DoScroll();', scroll_interval);
}

function OnBackEnter(e)
{
  if(!e) e=window.event;
  if(!ng_CheckMouseEnter(this, e)) return;
  button=2;
  if(!scrolltimer) scrolltimer = setTimeout('DoScroll();', scroll_interval);
}

function OnLeave(e)
{
  if(!e) e=window.event;
  if(!ng_CheckMouseLeave(this, e)) return;
  button=0;
  if(scrolltimer) 
  {
    clearTimeout(scrolltimer);
    scrolltimer = null;
  }
}

function Init()
{
  scrollbox=document.getElementById('newsscroll');
  if(scrollbox)
  {
    scroll_max=scrollbox.clientHeight;
    button_fwd=document.getElementById('fwd');
    button_fw=document.getElementById('fw');
    if(button_fw)
    {
      button_fw.onmouseover=OnForwardEnter;
      button_fw.onmouseout=OnLeave;
    } 
    button_bk=document.getElementById('bk');
    if(button_bk)
    {
      button_bk.onmouseover=OnBackEnter;
      button_bk.onmouseout=OnLeave;
    }
    if(scroll_max)
    {
      scroll_max=175-scroll_max;
      if(scroll_max>0) button_fw.style.visibility='hidden'; 
    } 
    document.onmouseup   = OnMouseUp;
    button_bk.onmousedown = OnMouseDown; 
    button_fw.onmousedown = OnMouseDown; 
  } 
}

window.onload=Init;
