/* ****************************************************************************************** *
 * Das Script kann frei verwendet werden, dieser Kommentar sowie die Nennung des Nicks
 * muss jedoch erhalten bleiben.
 *
 *                                                                           (c) Quaese, 2006
 * ****************************************************************************************** */

var intScrollGap = 5;     // Anzahl der Pixel, um die das Scrollfenster pro Einheit verschoben wird
var intScrollDelay = 50;  // Millisekunden (1000 entspricht 1 Sekunde)

var blnScroll = false;    // true, wenn gerade gescrollt wird
var objScroll;            // Objekt des Scrollfensters
var intScrHeight;         // Höhe des Scrollfensters
var objHolder;            // Objekt des Holderfensters
var intScrHeight;         // Höhe des Scrollfensters
var hTimer                // Handle für Timeout

// Abstand zum unteren Rand des Holderfensters (Reihenfolge der Werte: IE, Opera, sonst)
var intBottom = (document.all && !window.opera) ? 15 : (window.opera) ? 10 : 5;

// Initialisiert die Scrollerelemente
function startScroller(strScrollID, strHolderID, strUp){
	// Scroller aktivieren
	blnScroll = true;
  // Objekt des Scrollfensters
  objScroll = document.getElementById(strScrollID);
  // Höhe des Scrollfensters
  intScrHeight = parseInt(objScroll.offsetHeight);
  // Objekt des HolderFensters
  objHolder = document.getElementById(strHolderID);

  // Scroller starten
  (strUp == "up") ? scrollUp() : scrollDown();
}

// Gibt die Scrollerelemente wieder frei
function stopScroller(strScrollID, strHolderID){
	// Scroller deaktivieren
	blnScroll = false;
  // Objekt des Scrollfensters zurücksetzen
  objScroll = null;
  // Objekt des HolderFensters zurücksetzen
  objHolder = null;
  // Timerhandle zurücksetzen
  window.clearTimeout(hTimer);
}

// Nach oben scrollen
function scrollUp(){
	// Ermittelt die höchste y-Koordinate der Scrollbox
  var intOuterTop = parseInt(objScroll.style.top);

  // Falls noch gescrollt werden soll
	if(blnScroll && (Math.abs(intOuterTop-parseInt(objHolder.offsetTop))+parseInt(objHolder.offsetHeight)<=(parseInt(objScroll.offsetHeight)+intBottom))){
  	objScroll.style.top = (intOuterTop - intScrollGap) + "px";
    hTimer = window.setTimeout("scrollUp()", intScrollDelay);
  }
}

// Nach unten scrollen
function scrollDown(){
	// Ermittelt die höchste y-Koordinate der Scrollbox
	var intOuterTop = parseInt(objScroll.style.top);

  // Falls noch nach unten gescrollt werden soll
	if(blnScroll && (intOuterTop<0)){
  	objScroll.style.top = (intOuterTop + intScrollGap) + "px";
    hTimer = window.setTimeout("scrollDown()", intScrollDelay);
  }
}

