function setze(x,y) {
         gtogglexy(x,y);
         setzeImplizit(x,y);
}

function gMatrixFuellen() {
     var x,y,ctr;
     ctr=0;
     for( i=0; i<document.images.length;i++ ) {
         if( document.images[i].src.indexOf(leerimg) != -1 ||
              document.images[i].src.indexOf(plusimg) != -1 ||
              document.images[i].src.indexOf(plusiimg) != -1 ||
              document.images[i].src.indexOf(minusiimg) != -1 ||
              document.images[i].src.indexOf(spaceimg) != -1 ||
              document.images[i].src.indexOf(minusimg) != -1 ) {
                    x=ctr%(AnzA*(AnzM-1));
                    y=Math.floor(ctr/(AnzA*(AnzM-1)));
                    gMatrix[x][y]=document.images[i];
                 ctr++;
              }
     }
    gMatrixGefuellt=true;
}

function getimgobj(x,y) {
        if(!gMatrixGefuellt) gMatrixFuellen();
        return gMatrix[x][y];
}

function gtogglexy(x,y) {
         if( impliziere ) return; // Solange er rechnet, darf nichts gesetzt werden!
         impliziere = true;
         img = getimgobj(x,y);
         if( img.src.indexOf(plusiimg) != -1 || img.src.indexOf(minusiimg) != -1  ) {
             return; // wenn es ein implizit gesetztes Feld ist, darf man nichts ändern!!!
         } else if( img.src.indexOf(leerimg) != -1 ) {
             img.src = plus.src;
             matrix[x][y] = 2;
         } else if ( img.src.indexOf(minusimg) != -1 ) {
             img.src = leer.src;
             matrix[x][y] = 0;
         } else if ( img.src.indexOf(plusimg) != -1 ) {
             img.src = minus.src;
             matrix[x][y] = 1;
         }
}

function gsetxy(x,y,image) {
         if( image.src.indexOf(plusiimg) != -1 ) {
              if( matrix[x][y] == 1 || matrix[x][y] == 3 ) {
                   alert("Inkonsistenz an Stelle: " + x + ", " + y );
              } else if ( matrix[x][y] == 0) {
                 matrix[x][y] = 4;
                 getimgobj(x,y).src = image.src;
                 return 1;
             }
         } else if( image.src.indexOf(minusiimg) != -1 ) {
              if( matrix[x][y] == 2 || matrix[x][y] == 4 ) {
                   alert("Inkonsistenz an Stelle: " + x + ", " + y );
              } else if ( matrix[x][y] == 0) {
                 matrix[x][y] = 3;
                 getimgobj(x,y).src = image.src;
                 return 1;
             }
         } else if( image.src.indexOf(plusimg) != -1 ) {
              if( matrix[x][y] == 1 || matrix[x][y] == 3 ) {
                   alert("Inkonsistenz an Stelle: " + x + ", " + y );
              } else if ( matrix[x][y] == 0) {
                 matrix[x][y] = 2;
                 getimgobj(x,y).src = image.src;
                 return 1;
             }
         } else if( image.src.indexOf(minusimg) != -1 ) {
              if( matrix[x][y] == 2 || matrix[x][y] == 4 ) {
                   alert("Inkonsistenz an Stelle: " + x + ", " + y );
              } else if ( matrix[x][y] == 0) {
                 matrix[x][y] = 1;
                 getimgobj(x,y).src = image.src;
                 return 1;
             }
         } else if( image.src.indexOf(leerimg) != -1 ) {
             matrix[x][y] = 0;
             getimgobj(x,y).src = image.src;
             return 1;
         }
         return 0;
}

// Setze die Felder anhand des geänderten Feldes x,y
function setzeImplizit(x,y) {

    ////////
    // Alle Impliziten Löschen und neu berechnen!!!
    for(y=0; y<(AnzA*(AnzM-1)); y++) {
        for(x=0; x<(AnzA*(AnzM-1)); x++) {
            if( matrix[x][y] == 3 || matrix[x][y] == 4 ) {
                gsetxy(x,y,leer);
            }
        }
    }

// Solange implizit setzen, bis anzAenderungen == 0!!!
do {

    var anzAenderungen = 0;

    ////////
    // Handelt es sich um ein Plus?
    // Dann sternförmig um das Pluss Minuszeichen setzen
    for(y=0; y<(AnzA*(AnzM-1)); y++) {
        for(x=0; x<(AnzA*(AnzM-1)); x++) {
            if( matrix[x][y] == 2 || matrix[x][y] == 4 ) {
                anzAenderungen += impliziereMinus(x,y);
            }
        }
    }

    // Es wird hier immer von 4 Merkmalen ausgegangen!!!!!!!! Auch wenn die Variable AnzM anders lautet!!!!!
    // Nun die Felderübergreifenden Verbindungen betrachten
    // Z.B: Beim Spielfeld:     A  B  C
    //                       D ad bd cd
    //                       C ac bc
    //                       B ab
    // Ist im Feld ad ein Plus und auf gleicher höhe in Feld bd ein Minus, so muss im Feld ab auch ein Minus sein!
    // Auf diese Weise sind folgende Felder verküpft:
    // ad-bd-ab
    // ad-cd-ac
    // bd-cd-bc
    // ac-bc-ab
    // Nun gibt es noch die Vierteilige Verknüpfung:
    // Ist z.B. im Feld ad und im Feld bd ein Plus auch gleicher Höhe, und im Feld ac ein Minus, dann steht im Feld
    // bc auch ein Minus! Auf diese Weise sind die folgenden Felder verküpft:
    // ad-bd-ac-bc
    //
    // Nun Pluszeichen im Feld ad suchen
    for(y=0; y<AnzA; y++) {
        for(x=0; x<AnzA; x++) {
            if( matrix[x][y] == 2 || matrix[x][y] == 4 ) {
                // Suche nach Zeichen auf gleicher Höhe im Feld bd
                for(xx=AnzA; xx<2*AnzA; xx++) {
                    if( matrix[xx][y] == 2 || matrix[xx][y] == 4 ) {
                        // Setze Pluszeichen im Feld ab (x und y sind spiegelverkehrt!)
                           anzAenderungen += gsetxy(x,AnzA+xx,plusi);
                    }
                    if( matrix[xx][y] == 1 || matrix[xx][y] == 3 ) {
                        // Setze Minuszeichen im Feld ab (x und y sind spiegelverkehrt!)
                           anzAenderungen += gsetxy(x,AnzA+xx,minusi);
                    }
                }
                // Suche nach Zeichen auf gleicher Höhe im Feld cd
                for(xx=2*AnzA; xx<3*AnzA; xx++) {
                    if( matrix[xx][y] == 2 || matrix[xx][y] == 4 ) {
                        // Setze Pluszeichen im Feld ac (x und y sind spiegelverkehrt!)
                           anzAenderungen += gsetxy(x,xx-AnzA,plusi);
                    }
                    if( matrix[xx][y] == 1 || matrix[xx][y] == 3 ) {
                        // Setze Minuszeichen im Feld ac (x und y sind spiegelverkehrt!)
                           anzAenderungen += gsetxy(x,xx-AnzA,minusi);
                    }
                }
                // Suche nach Zeichen in gleicher Spalte im Feld ac
                for(yy=AnzA; yy<2*AnzA; yy++) {
                    if( matrix[x][yy] == 2 || matrix[x][yy] == 4 ) {
                        // Setze Pluszeichen im Feld cd (x und y sind spiegelverkehrt!)
                           anzAenderungen += gsetxy(yy+AnzA,y,plusi);
                    }
                    if( matrix[x][yy] == 1 || matrix[x][yy] == 3 ) {
                        // Setze Minuszeichen im Feld cd (x und y sind spiegelverkehrt!)
                           anzAenderungen += gsetxy(yy+AnzA,y,minusi);
                    }
                }
                // Suche nach Zeichen in gleicher Spalte im Feld ab
                for(yy=2*AnzA; yy<3*AnzA; yy++) {
                    if( matrix[x][yy] == 2 || matrix[x][yy] == 4 ) {
                        // Setze Pluszeichen im Feld bd (x und y sind spiegelverkehrt!)
                           anzAenderungen += gsetxy(yy-AnzA,y,plusi);
                    }
                    if( matrix[x][yy] == 1 || matrix[x][yy] == 3 ) {
                        // Setze Minuszeichen im Feld bd (x und y sind spiegelverkehrt!)
                           anzAenderungen += gsetxy(yy-AnzA,y,minusi);
                    }
                }
            }
        }
    }
    // Nun Pluszeichen im Feld cd suchen
    for(y=0; y<AnzA; y++) {
        for(x=2*AnzA; x<3*AnzA; x++) {
            if( matrix[x][y] == 2 || matrix[x][y] == 4 ) {
                // Suche nach Zeichen in korrespondierender zeile im Feld ac
                for(xx=0; xx<AnzA; xx++) {
                    if( matrix[xx][x-AnzA] == 2 || matrix[xx][x-AnzA] == 4 ) {
                        // Setze Pluszeichen im Schnittpunkt ad
                           anzAenderungen += gsetxy(xx,y,plusi);
                    }
                    if( matrix[xx][x-AnzA] == 1 || matrix[xx][x-AnzA] == 3 ) {
                        // Setze Minuszeichen im Schnittpunkt ad
                           anzAenderungen += gsetxy(xx,y,minusi);
                    }
                }
            }
            // Suche nach Minuszeichen im Feld cd
            if( matrix[x][y] == 1 || matrix[x][y] == 3 ) {
                for(xx=0; xx<AnzA; xx++) {
                    if( matrix[xx][x-AnzA] == 2 || matrix[xx][x-AnzA] == 4 ) {
                        // Setze Pluszeichen im Schnittpunkt ad
                        anzAenderungen += gsetxy(xx,y,minusi);
                    }
                }
            }
        }
    }
    // Nun Pluszeichen im Feld bc suchen
    for(y=AnzA; y<2*AnzA; y++) {
        for(x=AnzA; x<2*AnzA; x++) {
            if( matrix[x][y] == 2 || matrix[x][y] == 4 ) {
                // Suche nach Zeichen in korrespondierender zeile im Feld ab
                for(xx=0; xx<AnzA; xx++) {
                    if( matrix[xx][x+AnzA] == 2 || matrix[xx][x+AnzA] == 4 ) {
                        // Setze Pluszeichen im Schnittpunkt ac
                           anzAenderungen += gsetxy(xx,y,plusi);
                    }
                    if( matrix[xx][x+AnzA] == 1 || matrix[xx][x+AnzA] == 3 ) {
                        // Setze Minuszeichen im Schnittpunkt ac
                           anzAenderungen += gsetxy(xx,y,minusi);
                    }
                }
            }
            // Suche nach Minuszeichen im Feld cd
            if( matrix[x][y] == 1 || matrix[x][y] == 3 ) {
                for(xx=0; xx<AnzA; xx++) {
                    if( matrix[xx][x+AnzA] == 2 || matrix[xx][x+AnzA] == 4 ) {
                        // Setze Pluszeichen im Schnittpunkt ac
                        anzAenderungen += gsetxy(xx,y,minusi);
                    }
                }
            }
        }
    }
    // Nun Pluszeichen im Feld bd suchen
    for(y=0; y<AnzA; y++) {
        for(x=AnzA; x<2*AnzA; x++) {
            if( matrix[x][y] == 2 || matrix[x][y] == 4 ) {
                // Suche nach Zeichen auf gleicher Höhe im Feld cd
                for(xx=2*AnzA; xx<3*AnzA; xx++) {
                    if( matrix[xx][y] == 2 || matrix[xx][y] == 4 ) {
                        // Setze Pluszeichen im Feld bc (x und y sind spiegelverkehrt!)
                           anzAenderungen += gsetxy(x,xx-AnzA,plusi);
                    }
                    if( matrix[xx][y] == 1 || matrix[xx][y] == 3 ) {
                        // Setze Minuszeichen im Feld bc (x und y sind spiegelverkehrt!)
                           anzAenderungen += gsetxy(x,xx-AnzA,minusi);
                    }
                }
                // Suche nach Zeichen in gleicher Spalte im Feld bc
                for(yy=AnzA; yy<2*AnzA; yy++) {
                    if( matrix[x][yy] == 2 || matrix[x][yy] == 4 ) {
                        // Setze Pluszeichen im Feld cd (x und y sind spiegelverkehrt!)
                           anzAenderungen += gsetxy(yy+AnzA,y,plusi);
                    }
                    if( matrix[x][yy] == 1 || matrix[x][yy] == 3 ) {
                        // Setze Minuszeichen im Feld cd (x und y sind spiegelverkehrt!)
                           anzAenderungen += gsetxy(yy+AnzA,y,minusi);
                    }
                }
            }
            if( matrix[x][y] == 2 || matrix[x][y] == 4 ) {
                // Suche nach Zeichen in korrespondierender zeile im Feld ab
                for(xx=0; xx<AnzA; xx++) {
                    if( matrix[xx][AnzA+x] == 2 || matrix[xx][AnzA+x] == 4 ) {
                        // Setze Pluszeichen im Schnittpunkt ad
                           anzAenderungen += gsetxy(xx,y,plusi);
                    }
                    if( matrix[xx][AnzA+x] == 1 || matrix[xx][AnzA+x] == 3 ) {
                        // Setze Minuszeichen im Schnittpunkt ad
                           anzAenderungen += gsetxy(xx,y,minusi);
                    }
                }
            }
            // Suche nach Minuszeichen im Feld bd
            if( matrix[x][y] == 1 || matrix[x][y] == 3 ) {
                for(xx=0; xx<AnzA; xx++) {
                    if( matrix[xx][AnzA+x] == 2 || matrix[xx][AnzA+x] == 4 ) {
                        // Setze Pluszeichen im Schnittpunkt ad
                        anzAenderungen += gsetxy(xx,y,minusi);
                    }
                }
            }
        }
    }
    // Nun Pluszeichen im Feld ac suchen
    for(y=AnzA; y<2*AnzA; y++) {
        for(x=0; x<AnzA; x++) {
            if( matrix[x][y] == 2 || matrix[x][y] == 4 ) {
                // Suche nach Zeichen auf gleicher Höhe im Feld bc
                for(xx=AnzA; xx<2*AnzA; xx++) {
                    if( matrix[xx][y] == 2 || matrix[xx][y] == 4 ) {
                        // Setze Pluszeichen im Feld ab (x und y sind spiegelverkehrt!)
                           anzAenderungen += gsetxy(x,xx+AnzA,plusi);
                    }
                    if( matrix[xx][y] == 1 || matrix[xx][y] == 3 ) {
                        // Setze Minuszeichen im Feld ab (x und y sind spiegelverkehrt!)
                           anzAenderungen += gsetxy(x,xx+AnzA,minusi);
                    }
                }
                // Suche nach Zeichen in gleicher Spalte im Feld ab
                for(yy=2*AnzA; yy<3*AnzA; yy++) {
                    if( matrix[x][yy] == 2 || matrix[x][yy] == 4 ) {
                        // Setze Pluszeichen im Feld bc (x und y sind spiegelverkehrt!)
                           anzAenderungen += gsetxy(yy-AnzA,y,plusi);
                    }
                    if( matrix[x][yy] == 1 || matrix[x][yy] == 3 ) {
                        // Setze Minuszeichen im Feld bc (x und y sind spiegelverkehrt!)
                           anzAenderungen += gsetxy(yy-AnzA,y,minusi);
                    }
                }
            }
        }
    }

    // 4-er Verknüpfungen
    // Nun Pluszeichen im Feld bc suchen
    for(y=AnzA; y<2*AnzA; y++) {
        for(x=AnzA; x<2*AnzA; x++) {
            if( matrix[x][y] == 2 || matrix[x][y] == 4 ) {
                // Suche nach Plus Zeichen auf gleicher Höhe im Feld ac
                for(xx=0; xx<AnzA; xx++) {
                    if( matrix[xx][y] == 2 || matrix[xx][y] == 4 ) {
                        for(yy=0; yy<AnzA; yy++) {
                            // Suche nach Zeichen in gleicher Spalte im Feld bd
                            if( matrix[x][yy] == 2 || matrix[x][yy] == 4 ) {
                                // Setze Pluszeichen im Feld bc (x und y sind spiegelverkehrt!)
                                anzAenderungen += gsetxy(xx,yy,plusi);
                            }
                            if( matrix[x][yy] == 1 || matrix[x][yy] == 3 ) {
                                // Setze Minuszeichen im Feld bc (x und y sind spiegelverkehrt!)
                                anzAenderungen += gsetxy(xx,yy,minusi);
                            }
                            // Suche nach Zeichen in gleicher Spalte im Feld ad
                            if( matrix[xx][yy] == 2 || matrix[xx][yy] == 4 ) {
                                // Setze Pluszeichen im Feld bc (x und y sind spiegelverkehrt!)
                                anzAenderungen += gsetxy(x,yy,plusi);
                            }
                            if( matrix[xx][yy] == 1 || matrix[xx][yy] == 3 ) {
                                // Setze Minuszeichen im Feld bc (x und y sind spiegelverkehrt!)
                                anzAenderungen += gsetxy(x,yy,minusi);
                            }
                        }
                    }
                }
                // Suche nach Plus Zeichen auf gleicher Spalte im Feld bd
                for(yy=0; yy<AnzA; yy++) {
                    if( matrix[x][yy] == 2 || matrix[x][yy] == 4 ) {
                        for(xx=0; xx<AnzA; xx++) {
                            // Suche nach Zeichen in gleicher Höhe im Feld ac
                            if( matrix[xx][y] == 2 || matrix[xx][y] == 4 ) {
                                // Setze Pluszeichen im Feld bc (x und y sind spiegelverkehrt!)
                                anzAenderungen += gsetxy(xx,yy,plusi);
                            }
                            if( matrix[xx][y] == 1 || matrix[xx][y] == 3 ) {
                                // Setze Minuszeichen im Feld bc (x und y sind spiegelverkehrt!)
                                anzAenderungen += gsetxy(xx,yy,minusi);
                            }
                            // Suche nach Zeichen in gleicher Höhe im Feld ad
                            if( matrix[xx][yy] == 2 || matrix[xx][yy] == 4 ) {
                                // Setze Pluszeichen im Feld bc (x und y sind spiegelverkehrt!)
                                anzAenderungen += gsetxy(xx,y,plusi);
                            }
                            if( matrix[xx][yy] == 1 || matrix[xx][yy] == 3 ) {
                                // Setze Minuszeichen im Feld bc (x und y sind spiegelverkehrt!)
                                anzAenderungen += gsetxy(xx,y,minusi);
                            }
                        }
                    }
                }
                // Suche nach Plus Zeichen im Feld ad
                for(yy=0; yy<AnzA; yy++) {
                    for(xx=0; xx<AnzA; xx++) {
                        if( matrix[xx][yy] == 2 || matrix[xx][yy] == 4 ) {
                            // Was steht an Stelle xx,y im Feld bd?
                            if( matrix[xx][y] == 2 || matrix[xx][y] == 4 ) {
                                // Setze Pluszeichen im Feld bc (x und y sind spiegelverkehrt!)
                                anzAenderungen += gsetxy(x,yy,plusi);
                            }
                            if( matrix[xx][y] == 1 || matrix[xx][y] == 3 ) {
                                // Setze Minuszeichen im Feld bc (x und y sind spiegelverkehrt!)
                                anzAenderungen += gsetxy(x,yy,minusi);
                            }
                            // Suche nach Zeichen in gleicher Spalte im Feld ac
                            if( matrix[x][yy] == 2 || matrix[x][yy] == 4 ) {
                                // Setze Pluszeichen im Feld bc (x und y sind spiegelverkehrt!)
                                anzAenderungen += gsetxy(xx,y,plusi);
                            }
                            if( matrix[x][yy] == 1 || matrix[x][yy] == 3 ) {
                                // Setze Minuszeichen im Feld bc (x und y sind spiegelverkehrt!)
                                anzAenderungen += gsetxy(xx,y,minusi);
                            }
                        }
                    }
                }
            }
        }
    }

    ////////
    // Handelt es sich um Minus in einer Reihe, so dass man ein Plus setzen kann?
    // waagerecht
    for(y=0; y<(AnzA*(AnzM-1)); y++) {
        for(xM = 0; xM < AnzM-1; xM++) {
            var anzMinus=0;
            var leeresX=-1;
            for(xA=xM*AnzA; xA<xM*AnzA+AnzA; xA++) {
                // Ist Feld leer?
                if( matrix[xA][y] == 0 ) {
                    leeresX=xA;
                // Anzahl der Minuszeichen!
                } else if( matrix[xA][y] == 1 || matrix[xA][y] == 3 ) {
                    anzMinus++;
                }
            }
            // Wenn AnzA-1 Minuszeichen vorhanden, dann kann Plus gesetzt werden!
            if(anzMinus == AnzA-1 && leeresX != -1) {
                   anzAenderungen += gsetxy(leeresX,y,plusi);
                   anzAenderungen += impliziereMinus(leeresX,y); // gleich implizite Minus setzen!
            }
            if(anzMinus == AnzA) {
                   alert("5 Minuszeichen in einer Reihe geht nicht");
            }
        }
    }
    // senkrecht
    for(x=0; x<(AnzA*(AnzM-1)); x++) {
        for(yM = 0; yM < AnzM-1; yM++) {
            var anzMinus=0;
            var leeresY=-1;
            for(yA=yM*AnzA; yA<yM*AnzA+AnzA; yA++) {
                // Ist Feld leer?
                if( matrix[x][yA] == 0 ) {
                    leeresY=yA;
                // Anzahl der Minuszeichen!
                } else if( matrix[x][yA] == 1 || matrix[x][yA] == 3 ) {
                    anzMinus++;
                }
            }
            // Wenn AnzA-1 Minuszeichen vorhanden, dann kann Plus gesetzt werden!
            if(anzMinus == AnzA-1 && leeresY != -1) {
                   anzAenderungen += gsetxy(x,leeresY,plusi);
                   anzAenderungen += impliziereMinus(x,leeresY); // gleich implizite Minus setzen!
            }
            if(anzMinus == AnzA) {
                   alert("5 Minuszeichen in einer Reihe geht nicht");
            }
        }
    }

    // Berechnung ist zu Ende, es kann wieder gesetzt werden!
    impliziere = false;

// Erst wenn ein Durchlauf keine Änderungen mehr verursacht, dann aufhören
} while (anzAenderungen > 0);

}

// Impliziert Minuszeichen um ein Plus herum
// Übergabewerte:
//    x = x-Position des Plus
//    y = y-Position des Plus
// Rückgabewerte:
//    Anzahl der Änderungen
function impliziereMinus(x,y) {
    var anz=0;
    // Minus senkrecht setzen
    var yStart = Math.floor(y/AnzA)*AnzA;
    for(var yy=yStart; yy<yStart+AnzA; yy++) {
        inhalt=matrix[x][yy];
        if( yy != y ) { // nicht aktuelles Feld überschreiben!
           anz += gsetxy(x,yy,minusi);
        }
    }
    // Minus waagerecht setzen
    var xStart = Math.floor(x/AnzA)*AnzA;
    for(var xx=xStart; xx<xStart+AnzA; xx++) {
        inhalt=matrix[xx][y];
        if( xx != x ) { // aktuelles Feld nicht kontrolieren!
           anz += gsetxy(xx,y,minusi);
        }
    }
    return anz;
}

/* Konstanten */
var AnzM=4;
var AnzA=5;

/* Semaphore */
var impliziere=false;
var gMatrixGefuellt=false;

/* Matrix für Variablen */
var matrix = new Array(AnzA * (AnzM-1));
for (var i=0; i < AnzA * (AnzM-1); ++i) {
 matrix[i] = new Array(AnzA * (AnzM-1));
}
var gMatrix = new Array(AnzA * (AnzM-1));
for (var i=0; i < AnzA * (AnzM-1); ++i) {
 gMatrix[i] = new Array(AnzA * (AnzM-1));
}

/* Graphik */
var plusimg="plus.gif", minusimg="minus.gif", leerimg="leer.gif", spaceimg="space.gif", freiimg="frei.gif";
var plusiimg="plusi.gif", minusiimg="minusi.gif";
var picpath="../bilder/logik/"
plus=new Image();
plus.src = picpath + plusimg;
minus=new Image();
minus.src = picpath + minusimg;
plusi=new Image();
plusi.src = picpath + plusiimg;
minusi=new Image();
minusi.src = picpath + minusiimg;
leer=new Image();
leer.src = picpath + leerimg;


//Erzeugen der Tabelle
function zeigeTabelle() {
    document.write('<nobr>');
    for(i=0;i<AnzM-1;i++){ // Zeilen Merkmale
        for(k=0;k<AnzA;k++){ // Zeilen Ausprägung
    //        if(i==0 && k==0) {
    //            document.write('<img src="../bilder/reiterpixel.gif" width=105 height=1>');
    //            for(m=0;m<AnzM-1;m++){ // Spalten Ausprägung
    //                document.write('<textarea style="overflow:hidden; overflow-x:hidden; overflow-y:hidden; border:1px solid gray; font-size:7pt; width:99px;  background-color:#DDDDDD; height:15px" name="MerkX' + m + '" cols="1" rows="1"  wrap="virtual"></textarea>');
    //                document.write('<img src="../bilder/reiterpixel.gif">');
    //                document.write("<img src='" + picpath + freiimg + "'>");
    //            }
    //            document.write("<br>");
    //            document.write('<textarea style="overflow:hidden; overflow-x:hidden; overflow-y:hidden; border:1px solid gray; font-size:7pt; width:100px; height:15px; background-color:#DDDDDD;" name="MerkX' + m + '" cols="1" rows="1"  wrap="virtual"></textarea>');
    //            document.write("<img src='" + picpath + freiimg + "'>");
    //            for(m=0;m<AnzM-1;m++){ // Spalten Ausprägung
    //                for(n=0;n<AnzA;n++){ // Spalten Ausprägung
    //                    document.write('<textarea style="overflow:hidden; overflow-x:hidden; overflow-y:hidden; border:1px solid gray; font-size:7pt; width:19px" name="AusX' + m + n + '" cols="1" rows="5"  wrap="virtual"></textarea>');
    //                    document.write('<img src="../bilder/reiterpixel.gif">');
    //                }
    //                document.write("<img src='" + picpath + freiimg + "'>");
    //            }
    //            document.write("<br><img src='" + picpath + freiimg + "'><br>");
    //        }
    //        document.write('<textarea style="overflow:hidden; overflow-x:hidden; overflow-y:hidden; border:1px solid gray; font-size:7pt; width:100px; height:18px; vertical-align:top" name="AusY' + i + k + '" cols="10" rows="1"  wrap="virtual"></textarea>');
    //        document.write("<img style='vertical-align:top' src='" + picpath + freiimg + "'>");
            for(j=0;j<AnzM-1;j++){ // Spalten Merkmale
                for(l=0;l<AnzA;l++){ // Spalten Ausprägung
                    // Es darf nur folgendes Muster entstehen:
                    // XXX
                    // XX
                    // X
                    if( i + j > 2 ) {
                        document.write("<img style='vertical-align:top' src='" + picpath + spaceimg + "'>");
                    } else {
                        document.write("<img style='vertical-align:top' onmouseup='setze(" +
                                        (j*AnzA+l) + "," +
                                        (i*AnzA+k) + ")' border=0 src='" + picpath + leerimg + "'>");
                    }
                    // Matrix initialisieren
                    matrix[j*AnzA+l][i*AnzA+k] = 0;
                }
                document.write("<img src='" + picpath + freiimg + "'>");
            }
            document.write("<br>");
        }
        document.write("<img src='" + picpath + freiimg + "'><br>");
    }
    document.write('</nobr>');
}
