function bildlauf(ebene, optionen){
  var bewegungsintervall = false;
  var istwerte = {
    'oberkante': objekt(ebene).offsetTop || 0,
    'hoehe': objekt(ebene).offsetHeight || 0
  }
  
  
  
  //Bildlauf starten
  this.start = function(richtung){
    if (!optionen){
      optionen = { };
    }
    
    //Werte ermitteln
    optionen.schrittabstand = optionen.schrittabstand || 30;
    optionen.distanz = optionen.distanz || 3;
    optionen.oberkante = optionen.oberkante || 0;
    optionen.hoehe = optionen.hoehe || objekt(ebene).parentNode.offsetHeight;
    
    //Bewegung starten
    if (richtung)
      var distanz = optionen.distanz;
    else
      var distanz = -optionen.distanz;
    bewegungsintervall = setInterval(function(){ bewegen(distanz); }, optionen.schrittabstand);
  }  //Ende function start
  
  
  
  //Bildlauf anhalten
  this.stop = function(){
    if (bewegungsintervall){
      clearInterval(bewegungsintervall);
    }
  }  //Ende function stop
  
  
  
  //Ebene bewegen
  function bewegen(distanz){
    //Positionen ermitteln
    optionen.oberkante += distanz;
    optionen.hoehe += distanz;
    istwerte.oberkante -= distanz;
    
    //prüfen, ob Verschiebebereich eingehalten wird
    if (optionen.oberkante < 0 || optionen.hoehe > istwerte.hoehe){
      optionen.oberkante -= distanz;
      optionen.hoehe -= distanz;
      istwerte.oberkante += distanz;
      return;
    }
    
    //Ebene neu positionieren
    objekt(ebene).style.top = istwerte.oberkante + "px";
  }  //Ende function bewegen
  
  
  
  //Objekt ermitteln
  function objekt(bez){
    if (document.all)
      return eval("document.all."+bez);
    else
      return document.getElementById(bez);
  }  //Ende function objekt
  
}  //Ende class bildlauf

