// Parameter
var sense1 = 20; // Sensibilitaetszone 1 (in %)
var sense2 = 10; // Sensibilitaetszone 2 (in %)
var speed1 = 1;  // Scrollgeschwindigkeit in Zone 1
var speed2 = 5;  // Scrollgeschwindigkeit in Zone 2
var stime  = 10; // Timer zum Scrollen

// Interne Variablen
var scrolling = false;
var scrollfast;
var richtung;
var y_mem = -1;
var myWin;

// Scrolling anhalten
function stopp_scrolling()
{
  scrolling = false;
  y_mem     = -1;
}

// Scroll aktivieren und durchfuehren
function start_scrolling(initial)
{
  if(!scrolling)
    return;

  // Dokumentposition ermitteln
  var dy = (myWin.pageYOffset != null) ? myWin.pageYOffset : myWin.document.body.scrollTop;
  if((y_mem != dy) && !initial)
    return;
  var dx = (myWin.pageXOffset != null) ? myWin.pageXOffset : myWin.document.body.scrollLeft;
  dy += richtung * (scrollfast ? speed2 : speed1);

  // Scrollen
  myWin.scrollTo(dx, dy);
  y_mem = dy;

  // Funktion erneut aufrufen
  setTimeout("start_scrolling(false)", stime);
}

// Auswertung der Mausposition
function zeige(e)
{
  // Mausposition und Dokumentdaten
  var y = myWin.Event ? e.pageY : myWin.event.clientY;
  if(myWin.Event)
    y -= - (myWin.pageYOffset != null) ? myWin.pageYOffset : myWin.document.body.scrollTop;
  var wh = myWin.innerHeight ? myWin.innerHeight : myWin.document.body.clientHeight;
  var dh = myWin.document.height ? myWin.document.height : myWin.document.body.scrollHeight;

  // Zwischenvariablen
  var s1 = Math.round(wh * sense1 / 100);
  var s2 = Math.round(wh * sense2 / 100);
  var now_scroll;

  // Scrollnotwendigkeit ermitteln
  if((y < s1) || (y > (wh - s1)))
  {
    now_scroll = true;
    richtung   = (y < s1) ? -1 : 1;
    scrollfast = ((y < s2) || (y > (wh - s2))) ? true : false;
  }
  else
  {
    now_scroll = false;
    scrolling  = false;
  }

  // Scrollstatus geaendert?
  if(now_scroll != scrolling)
  {
    y_mem     = -1;
    scrolling = now_scroll;
    if(scrolling)
      start_scrolling(true);
  }
}

// Mauskontrolle initiieren
function initAutoscroll()
{
  myWin = window;

  if(myWin.Event)
    myWin.document.captureEvents(Event.MOUSEMOVE);

  myWin.document.onmousemove = zeige;
}
if(window.focus) window.focus();
document.onblur = stopp_scrolling();