      var field = new Array();
      var empty ; // Position des leeren Feldes
      var fill  = true ;
      var imgname ;
      var finishsc = false ;
      var whstring = "" ;
      // Function start() initialisiert das Spielfeld durch
      // zufaelliges Verteilen der 15 Objekte auf die Felder.
      function start(imgfile , imgw , imgh , finishscript) {
        imgname  = imgfile ;
        if (arguments.length > 2 && imgw > 0)
             whstring = ' width="' + imgw + '" heigth="' + imgh + '"' ;
        if (arguments.length > 3) finishsc = finishscript ;
        // Liste aller Namen der Tabellenzellen:
        var felder = new Array();
        for (var i = 0; i <= 15; i++) {
          felder[i] = "cell" + i;
          field [i] = i ;
        }
        for (var i = 0; i <= 14; i++) {
          document.getElementById(felder[i]).innerHTML =
                                '<img src="'+imgname+i+'.jpg"' + whstring + '>' ;
        }
        // Die letzte verbliebene Position ist das leere Feld:
        empty = 15 ;
        document.getElementById("cell" + empty).innerHTML = "";
        field [15] = -1 ;

        //Zufallsspielerei:
        fill = true ;
        dir  = new Array (-4 , -1 , 1 , 4) ;
        var newpos ;
        for (var i = 0; i < 500 ; i++) {
           newpos = empty + dir[Math.floor(Math.random() * 4)] ;
           Move(newpos) ;
        }
        fill = false ;
      }

      function complpic (imgfile) {
        for (var i = 0; i <= 15; i++) {
          document.getElementById("cell" + i).innerHTML =
                           '<img src="'+imgfile+i+'.jpg"' + '>' ;
        }
      }

      // Felder benachbart?
      function neighbor (n , m) {
        var diff = Math.abs(m-n);
        if (n > 15 || n < 0) return false ;   // Feld ausserhalb des Schemas
        if (diff == 4) return true ;          // Felder uebereinander
        if (diff != 1) return false ;
        else {                                // Felder eventuell nebeneinander
           if ((n + m == 7)  ||
               (n + m == 15) || (n + m == 23)) return false ;
           else return true ;
        }
      }

      function complete () {
        for (var i = 0; i <= 14; i++) {
           if (field[i] != i) return false ;
        }
        return true ;
      }

      // Function Move verschiebt den Inhalt des
      // Feldes mit der Position pos in das leere Feld.
      function Move(pos) {
        // ... nur schieben, wenn Felder benachbart sind:
        if (neighbor (pos , empty)) {
          // Inhalt des angeklickten Feldes in das leere Feld
          // verschieben:
          var source = document.getElementById("cell" + pos)   ;
          var destin = document.getElementById("cell" + empty) ;
          Sarissa.moveChildNodes(source , destin , false) ;
          // Es gibt ein neues leeres Feld:
          field[empty] = field[pos] ;
          field[pos]   = -1 ;
          empty = pos ;
          if (empty == 15 && !fill) {
            if (complete()) {
              document.getElementById("cell" + empty).innerHTML =
                                 '<img src="'+imgname+'Fin.jpg"' + whstring + '>' ;
              if (finishsc) finish() ;
            }
          }
        }
      }
