   var timeoutElement = 0;
   var geloest = new Array;
   var gewaehlt = new Array;

   var positionen = new Array;
   var abstand = 0;
   for( var index = 0; index < 9; index++ ){
     if( index % 3 == 0 ) abstand = abstand + 9;
     positionen[ index ] = index * 55 + abstand;
   }

   var geloestfarbe = "#cccccc";
   var ungeloestfarbe  = "#999999";
   var nichtbelegbarfarbe = "#666666";

   var motive = new Array;
   for( var motiv = 0; motiv < 9; motiv++ ){
     motive[ motiv ] = new Object;
     motive[ motiv ].src = "spiele/sudoku/bilder/gif_4/" + motiv + ".gif";
     motive[ motiv ].inaktivSrc = "spiele/sudoku/bilder/transparent.gif";
     switch( motiv % 3 ){
       case 0: motive[ motiv ].alt = "gelb"; break;
       case 1: motive[ motiv ].alt = "rot"; break;
       case 2: motive[ motiv ].alt = "blau"; break;
     }
     switch( parseInt( motiv / 3 ) ){
       case 0: motive[ motiv ].alt += "er Kreis"; break;
       case 1: motive[ motiv ].alt += "es Quadrat"; break;
       case 2: motive[ motiv ].alt += "es Dreieck"; break;           
     }
     motive[ motiv ].motiv = 9;
     motive[ motiv ].anzahl = 0;
   }

   function start(){
     var divEl;
     var imgEl;
     var spanEl;
     document.getElementById( "BOTE" ).style.width = "550px";
     document.getElementById( "SUDOKUH" ).style.width = "550px";
     document.getElementById( "SPIELFELD" ).style.position = "absolute";
     document.getElementById( "SPIELFELD" ).style.width = "550px";
     document.getElementById( "NACHSPIELFELD" ).style.position = "absolute";
     document.getElementById( "NACHSPIELFELD" ).style.top = "1200px";
     for( var zeile = 0; zeile < 9; zeile++ ){
       for( var spalte = 0; spalte < 9; spalte++ ){
         divEl = document.createElement( "DIV" );
         divEl.style.top = positionen[ zeile ] + "px";
         divEl.style.left = positionen[ spalte ] + "px";
         divEl.style.width = "53px";
         divEl.style.height = "53px";
         divEl.style.backgroundColor = ungeloestfarbe;
         divEl.style.position = "absolute";
         divEl.zeile = zeile;
         divEl.spalte = spalte;
         divEl.loesung = boteMotive[ zeile ][ spalte ].wert;
         imgEl = document.createElement( "IMG" );
         imgEl.style.position = "absolute";
         imgEl.style.top = "7px";
         imgEl.style.left = "7px";
         imgEl.style.width = "39px";
         imgEl.style.height = "39px";
         divEl.bild = imgEl;
         divEl.motive = new Array;
         divEl.TOMBANSUP = new Array;
         for( var motiv = 0; motiv < 9; motiv++ ){
           imgEl = document.createElement( "IMG" );
           imgEl.motiv = motiv;
           imgEl.src = motive[ motiv ].src;
           imgEl.alt = motive[ motiv ].alt;
           imgEl.style.position = "absolute";
           imgEl.style.top = parseInt( motiv / 3 ) * 15 + 4 + "px"; 
           imgEl.style.left = ( motiv % 3 ) * 15 + 4 +  "px";
           imgEl.style.width = "14px"; 
           imgEl.style.height = "14px";
           imgEl.style.cursor = "pointer";
           imgEl.style.visibility = "hidden";
           imgEl.onclick = motivVerstecken;
           imgEl.ondblclick = motivWaehlen;
           divEl.appendChild( imgEl );
           divEl.motive[ divEl.motive.length ] = imgEl;
           spanEl = document.createElement( "SPAN" );
           spanEl.innerHTML = "TOMBANSUP".charAt( motiv );
           spanEl.style.position = "absolute";
           spanEl.style.top = parseInt( motiv / 3 ) * 17 + 1 + "px";
           spanEl.style.left = ( motiv % 3 ) * 17 + 1 +  "px";
           spanEl.style.cursor = "pointer";
           spanEl.style.visibility = "hidden";
           spanEl.onclick = verstecken;
           spanEl.ondblclick = buchstabeWaehlen;
           divEl.appendChild( spanEl );
           divEl.TOMBANSUP[ spanEl.innerHTML ] = spanEl;
         }
         if( boteMotive[ zeile ][ spalte ].sichtbar ){
           divEl.geloest = true;
           geloest[ geloest.length ] = divEl;
           divEl.motiv = divEl.loesung;
           divEl.style.backgroundColor = geloestfarbe;
           divEl.bild.src = motive[ divEl.loesung ].src;
           divEl.bild.alt = motive[ divEl.loesung ].alt;
         } else {
           divEl.geloest = false;
           divEl.motiv = 9;
           divEl.onclick = motiveZeigen;
           divEl.style.cursor = "pointer";
           divEl.bild.style.visibility = "hidden";
           divEl.bild.style.cursor = "pointer";
           divEl.bild.onclick = motivAbwaehlen;
         }         
         divEl.appendChild( divEl.bild );
         document.getElementById( "SPIELFELD" ).appendChild( divEl );
         boteMotive[ zeile ][ spalte ].zelle = divEl;
       }
     }
   }

///TIPPS MOTIVESUDOKU////////////////////////////////////////////////////////

   function motiveLoesen(){
     pruefen();
     if( geloest.length == 81 ) return;
     if( einMotiv( boteMotive[ 0 ][ 0 ].zelle ) ) return;
     if( einMotiv( boteMotive[ 8 ][ 8 ].zelle ) ) return;
     if( kreuzLinien( boteMotive[ 3 ][ 5 ].zelle ) ) return;
     if( kreuzLinien( boteMotive[ 5 ][ 3 ].zelle ) ) return;
     if( mitteLoesen() ) return;
     if( zeilenSolitair( boteMotive[ 3 ][ 0 ].zelle ) ) return;
     if( spaltenSolitair( boteMotive[ 8 ][ 5 ].zelle ) ) return;
     if( zeilenSolitair( boteMotive[ 3 ][ 4 ].zelle ) ) return;
     if( quadratSolitair( boteMotive[ 4 ][ 1 ].zelle ) ) return;
     if( spaltenSolitair( boteMotive[ 4 ][ 5 ].zelle ) ) return;
     if( quadratSolitair( boteMotive[ 7 ][ 4 ].zelle ) ) return;
     if( spaltenSolitair( boteMotive[ 0 ][ 3 ].zelle ) ) return;
     if( spaltenSolitair( boteMotive[ 5 ][ 4 ].zelle ) ) return;
     if( spaltenSolitair( boteMotive[ 0 ][ 1 ].zelle ) ) return;
     if( zelleLoesen( boteMotive[ 4 ][ 2 ].zelle ) ){
       document.getElementById( "ANWEISUNG" ).innerHTML = "Sowohl in der Zeile, als auch in der Spalte, wie auch in dem 3&times;3-Quadrat kann ein " + motive[ 6 ].alt + " nur an dieser Stelle platziert werden.";
       return;
     }
     if( spaltenSolitair( boteMotive[ 4 ][ 3 ].zelle ) ) return;
     if( einMotiv( boteMotive[ 4 ][ 6 ].zelle ) ) return;

     if( zelleLoesen( boteMotive[ 5 ][ 3 ].zelle ) ){
       document.getElementById( "ANWEISUNG" ).innerHTML = "Im mittleren 3&times;3-Quadrat bleibt nur noch ein " + motive[ 2 ].alt + ", und f&uuml;r dieses Motiv bleibt dort nur noch eine Zelle.";
       return;
     }
     if( zeilenSolitair( boteMotive[ 5 ][ 8 ].zelle ) ) return;
     if( einMotiv( boteMotive[ 2 ][ 4 ].zelle ) ) return;
     if( spaltenSolitair( boteMotive[ 6 ][ 4 ].zelle ) ) return;
     if( einMotiv( boteMotive[ 7 ][ 1 ].zelle ) ) return;
     if( zeilenSolitair( boteMotive[ 7 ][ 8 ].zelle ) ) return;
     if( zelleLoesen( boteMotive[ 1 ][ 4 ].zelle ) ){
       document.getElementById( "ANWEISUNG" ).innerHTML = "In der Linie bleibt nur noch ein " + motive[ 8 ].alt + ", und f&uuml;r dieses Motiv bleibt dort nur noch eine Zelle.";
       return;
     }
     if( einMotiv( boteMotive[ 0 ][ 2 ].zelle ) ) return;
     if( zelleLoesen( boteMotive[ 1 ][ 7 ].zelle ) ){
       document.getElementById( "ANWEISUNG" ).innerHTML = "Zeile, Spalte und 3&times;3-Quadrat verweisen ein " + motive[ 6 ].alt + " an diese Stelle.";
       return;
     }
     if( zelleLoesen( boteMotive[ 6 ][ 1 ].zelle ) ){
       document.getElementById( "ANWEISUNG" ).innerHTML = "In der Zeile, in der Spalte und im 3&times;3-Quadrat bleibt f&uuml;r ein " + motive[ 3 ].alt + " nur diese Zelle.";
       return;
     }
     if( zelleLoesen( boteMotive[ 4 ][ 7 ].zelle ) ){
       document.getElementById( "ANWEISUNG" ).innerHTML = "In der Linie bleiben nur noch eine Zelle und ein Motiv: " + motive[ 0 ].alt + ".";
       return;
     }
     if( einMotiv( boteMotive[ 8 ][ 6 ].zelle ) ) return;
     if( einMotiv( boteMotive[ 8 ][ 7 ].zelle ) ) return;
     if( zelleLoesen( boteMotive[ 1 ][ 0 ].zelle ) ){
       document.getElementById( "ANWEISUNG" ).innerHTML = "Zeile, Spalte und 3&times;3-Quadrat lassen dem Motiv " + motive[ 2 ].alt + " keinen Spielraum mehr.";
       return;
     }
     if( zelleLoesen( boteMotive[ 2 ][ 0 ].zelle ) ){
       document.getElementById( "ANWEISUNG" ).innerHTML = "In dem 3&times;3-Quadrat bleiben nur noch eine Zelle und ein Motiv: " + motive[ 1 ].alt + ".";
       return;
     }
     if( zelleLoesen( boteMotive[ 6 ][ 8 ].zelle ) ){
       document.getElementById( "ANWEISUNG" ).innerHTML = "In dem 3&times;3-Quadrat bleibt nur noch eine Zelle und damit auch nur noch ein Motiv: " + motive[ 7 ].alt + ".";
       return;
     }
     if( zelleLoesen( boteMotive[ 7 ][ 2 ].zelle ) ){
       document.getElementById( "ANWEISUNG" ).innerHTML = "Zeile, Spalte und 3&times;3-Quadrat engen den Spielraum ein f&uuml;r das Motiv " + motive[ 7 ].alt + ".";
       return;
     }
     if( einMotiv( boteMotive[ 0 ][ 7 ].zelle ) ) return;
     if( zeilenSolitair( boteMotive[ 6 ][ 0 ].zelle ) ) return;
     if( zelleLoesen( boteMotive[ 2 ][ 7 ].zelle ) ){
       document.getElementById( "ANWEISUNG" ).innerHTML = "Weder in der Zeile, noch in der Spalte kann ein " + motive[ 5 ].alt + " ausweichen.";
       return;
     }
     zelleLoesen( boteMotive[ 1 ][ 6 ].zelle );
     document.getElementById( "ANWEISUNG" ).innerHTML = "Das war der letzte Tipp.";
     document.getElementById( "TIPP" ).style.visibility = "hidden";
     return;
   }     

   function zelleLoesen( zelle ){
     if( zelle.geloest ) return false;
     zelle.bild.style.border = "none";
     zelle.motive[ zelle.loesung ].ondblclick();
     return true;
   }

   var timeoutZelle = null;
   var tipptext = "Entfernen Sie die L&ouml;sung mit einem Klick, um sich den letzten Tipp noch einmal zeigen zu lassen.";

   function einMotiv( zelle ){
     if( zelle.geloest ) return false;
     zelle.style.backgroundColor = "white";
     if( zelle.motiv < 9 ){
       zelle.bild.onclick();
       zelle.onclick();
     }
     if( zelle.onclick ) zelle.onclick();
     document.getElementById( "PRUEFEN" ).style.visibility = "hidden";
     document.getElementById( "TIPP" ).style.visibility = "hidden";
     document.getElementById( "ANWEISUNG" ).innerHTML = "Entferne alle Motive, die in der Zeile, in der Spalte oder in dem 3&times;3-Quadrat bereits verwendet wurden.";
     var zeit = 2000;
     timeoutZelle = zelle;
     if( zelle.loesung != 0 ){
       zeit = zeit + 500;
       setTimeout( "timeoutZelle.motive[ 0 ].style.visibility = 'hidden'", zeit );
     }
     if( zelle.loesung != 1 ){
       zeit = zeit + 500;
       setTimeout( "timeoutZelle.motive[ 1 ].style.visibility = 'hidden'", zeit );
     }
     if( zelle.loesung != 2 ){
       zeit = zeit + 500;
       setTimeout( "timeoutZelle.motive[ 2 ].style.visibility = 'hidden'", zeit );
     }
     if( zelle.loesung != 3 ){
       zeit = zeit + 500;
       setTimeout( "timeoutZelle.motive[ 3 ].style.visibility = 'hidden'", zeit );
     }
     if( zelle.loesung != 4 ){
       zeit = zeit + 500;
       setTimeout( "timeoutZelle.motive[ 4 ].style.visibility = 'hidden'", zeit );
     }
     if( zelle.loesung != 5 ){
       zeit = zeit + 500;
       setTimeout( "timeoutZelle.motive[ 5 ].style.visibility = 'hidden'", zeit );
     }
     if( zelle.loesung != 6 ){
       zeit = zeit + 500;
       setTimeout( "timeoutZelle.motive[ 6 ].style.visibility = 'hidden'", zeit );
     }
     if( zelle.loesung != 7 ){
       zeit = zeit + 500;
       setTimeout( "timeoutZelle.motive[ 7 ].style.visibility = 'hidden'", zeit );
     }
     if( zelle.loesung != 8 ){
       zeit = zeit + 500;
       setTimeout( "timeoutZelle.motive[ 8 ].style.visibility = 'hidden'", zeit );
     }
     zeit = zeit + 500;
     setTimeout( "document.getElementById( 'ANWEISUNG' ).innerHTML = 'Es bleibt nur ein Motiv.'", zeit );
     zeit = zeit + 2000;
     setTimeout( "timeoutZelle.motive[ timeoutZelle.loesung ].ondblclick()", zeit );
     setTimeout( "document.getElementById( 'PRUEFEN' ).style.visibility = 'visible'", zeit );
     setTimeout( "document.getElementById( 'TIPP' ).style.visibility = 'visible'", zeit );
     setTimeout( "document.getElementById( 'ANWEISUNG' ).innerHTML = tipptext", zeit );
     setTimeout( "timeoutZelle.style.backgroundColor = '#999999'", zeit );
     return true;
   }

   function mitteLoesen(){
     if( boteMotive[ 4 ][ 4 ].zelle.geloest ) return false;
     timeoutZelle = boteMotive[ 4 ][ 4 ].zelle;
     timeoutZelle.style.backgroundColor = "white";
     if( timeoutZelle.motiv < 9 ){
       timeoutZelle.bild.onclick();
       timeoutZelle.onclick();
     }
     if( timeoutZelle.onclick ) timeoutZelle.onclick();
     document.getElementById( "PRUEFEN" ).style.visibility = "hidden";
     document.getElementById( "TIPP" ).style.visibility = "hidden";
     document.getElementById( "ANWEISUNG" ).innerHTML = "Mittelzelle: Entferne belegte Motive der Zeile, der Spalte und des 3&times;3-Quadrats.";
     var zeit = 500;
     zeit = zeit + 500;
     setTimeout( "timeoutZelle.motive[ boteMotive[ 4 ][ 0 ].zelle.loesung ].style.visibility = 'hidden'", zeit );
     zeit = zeit + 500;
     setTimeout( "timeoutZelle.motive[ boteMotive[ 4 ][ 8 ].zelle.loesung ].style.visibility = 'hidden'", zeit );
     zeit = zeit + 500;
     setTimeout( "timeoutZelle.motive[ boteMotive[ 0 ][ 4 ].zelle.loesung ].style.visibility = 'hidden'", zeit );
     zeit = zeit + 500;
     setTimeout( "timeoutZelle.motive[ boteMotive[ 8 ][ 4 ].zelle.loesung ].style.visibility = 'hidden'", zeit );
     zeit = zeit + 500;
     setTimeout( "timeoutZelle.motive[ boteMotive[ 3 ][ 3 ].zelle.loesung ].style.visibility = 'hidden'", zeit );
     zeit = zeit + 500;
     setTimeout( "timeoutZelle.motive[ boteMotive[ 5 ][ 5 ].zelle.loesung ].style.visibility = 'hidden'", zeit );
     zeit = zeit + 500;
     setTimeout( "document.getElementById( 'ANWEISUNG' ).innerHTML = 'Es bleiben nur bis zu drei Motive.'", zeit );
     zeit = zeit + 5000;
     setTimeout( "document.getElementById( 'ANWEISUNG' ).innerHTML = 'Das Motiv ' + motive[ 2 ].alt + ' kann im benachbarten 3&times;3-Quadrat nur in zwei Zellen gesetzt werden, die auf einer Linie mit der Mittelzelle liegen.'", zeit );
     zeit = zeit + 5000;
     setTimeout( "boteMotive[ 0 ][ 8 ].zelle.style.backgroundColor = 'white'", zeit );
     zeit = zeit + 100;
     setTimeout( "boteMotive[ 0 ][ 7 ].zelle.style.backgroundColor = nichtbelegbarfarbe", zeit );
     zeit = zeit + 100;
     setTimeout( "boteMotive[ 0 ][ 6 ].zelle.style.backgroundColor = nichtbelegbarfarbe", zeit );
     zeit = zeit + 100;
     setTimeout( "boteMotive[ 0 ][ 5 ].zelle.style.backgroundColor = nichtbelegbarfarbe", zeit );
     zeit = zeit + 100;
     setTimeout( "boteMotive[ 0 ][ 4 ].zelle.style.backgroundColor = nichtbelegbarfarbe", zeit );
     zeit = zeit + 100;
     setTimeout( "boteMotive[ 0 ][ 3 ].zelle.style.backgroundColor = nichtbelegbarfarbe", zeit );
     zeit = zeit + 100;
     setTimeout( "boteMotive[ 0 ][ 2 ].zelle.style.backgroundColor = nichtbelegbarfarbe", zeit );
     zeit = zeit + 100;
     setTimeout( "boteMotive[ 0 ][ 1 ].zelle.style.backgroundColor = nichtbelegbarfarbe", zeit );
     zeit = zeit + 100;
     setTimeout( "boteMotive[ 0 ][ 0 ].zelle.style.backgroundColor = nichtbelegbarfarbe", zeit );
     zeit = zeit + 100;
     setTimeout( "boteMotive[ 6 ][ 5 ].zelle.style.backgroundColor = 'white'", zeit );
     zeit = zeit + 100;
     setTimeout( "boteMotive[ 7 ][ 5 ].zelle.style.backgroundColor = nichtbelegbarfarbe", zeit );
     setTimeout( "boteMotive[ 5 ][ 5 ].zelle.style.backgroundColor = nichtbelegbarfarbe", zeit );
     zeit = zeit + 100;
     setTimeout( "boteMotive[ 8 ][ 5 ].zelle.style.backgroundColor = nichtbelegbarfarbe", zeit );
     setTimeout( "boteMotive[ 4 ][ 5 ].zelle.style.backgroundColor = nichtbelegbarfarbe", zeit );
     zeit = zeit + 100;
     setTimeout( "boteMotive[ 3 ][ 5 ].zelle.style.backgroundColor = nichtbelegbarfarbe", zeit );
     zeit = zeit + 100;
     setTimeout( "boteMotive[ 2 ][ 5 ].zelle.style.backgroundColor = nichtbelegbarfarbe", zeit );
     zeit = zeit + 100;
     setTimeout( "boteMotive[ 1 ][ 5 ].zelle.style.backgroundColor = nichtbelegbarfarbe", zeit );
     zeit = zeit + 100;
     setTimeout( "boteMotive[ 0 ][ 5 ].zelle.style.backgroundColor = nichtbelegbarfarbe", zeit );
     zeit = zeit + 500;
     setTimeout( "boteMotive[ 1 ][ 4 ].zelle.style.backgroundColor = 'white'", zeit );
     setTimeout( "boteMotive[ 2 ][ 4 ].zelle.style.backgroundColor = 'white'", zeit );
     zeit = zeit + 500;
     setTimeout( "boteMotive[ 3 ][ 4 ].zelle.style.backgroundColor = nichtbelegbarfarbe", zeit );
     zeit = zeit + 500;
     setTimeout( "boteMotive[ 4 ][ 4 ].zelle.style.backgroundColor = nichtbelegbarfarbe", zeit );
     zeit = zeit + 5000;
     setTimeout( "document.getElementById( 'ANWEISUNG' ).innerHTML = 'Eine Belegung der Mittelzelle mit dem Motiv " + motive[ 2 ].alt + " w&uuml;rde es unm&ouml;glich machen, das benachbarte 3&times;3-Quadrat zu vervollst&auml;ndigen. Deshalb kann in der Mittelzelle kein ' + motive[ 2 ].alt + ' liegen.'", zeit );
     zeit = zeit + 5000;
     setTimeout( "timeoutZelle.motive[ 2 ].style.visibility = 'hidden'", zeit );
     zeit = zeit + 5000;
     setTimeout( "timeoutZelle = boteMotive[ 0 ][ 8 ].zelle", zeit );
     zeit = zeit + 10;
     setTimeout( "zeileZuruecksetzen()", zeit );
     zeit = zeit + 100;
     setTimeout( "timeoutZelle = boteMotive[ 6 ][ 5 ].zelle", zeit );
     zeit = zeit + 10;
     setTimeout( "spalteZuruecksetzen()", zeit );
     zeit = zeit + 1000;
     setTimeout( "document.getElementById( 'ANWEISUNG' ).innerHTML += ' Dasselbe gilt f&uuml;r das Motiv ' + motive[ 6 ].alt + ' in einem anderen benachbarten 3&times;3-Quadrat.'", zeit );
     zeit = zeit + 5000;
     setTimeout( "boteMotive[ 8 ][ 0 ].zelle.style.backgroundColor = 'white'", zeit );
     zeit = zeit + 100;
     setTimeout( "boteMotive[ 7 ][ 0 ].zelle.style.backgroundColor = nichtbelegbarfarbe", zeit );
     zeit = zeit + 100;
     setTimeout( "boteMotive[ 6 ][ 0 ].zelle.style.backgroundColor = nichtbelegbarfarbe", zeit );
     zeit = zeit + 100;
     setTimeout( "boteMotive[ 5 ][ 0 ].zelle.style.backgroundColor = nichtbelegbarfarbe", zeit );
     zeit = zeit + 100;
     setTimeout( "boteMotive[ 4 ][ 0 ].zelle.style.backgroundColor = nichtbelegbarfarbe", zeit );
     zeit = zeit + 100;
     setTimeout( "boteMotive[ 3 ][ 0 ].zelle.style.backgroundColor = nichtbelegbarfarbe", zeit );
     zeit = zeit + 100;
     setTimeout( "boteMotive[ 2 ][ 0 ].zelle.style.backgroundColor = nichtbelegbarfarbe", zeit );
     zeit = zeit + 100;
     setTimeout( "boteMotive[ 1 ][ 0 ].zelle.style.backgroundColor = nichtbelegbarfarbe", zeit );
     zeit = zeit + 100;
     setTimeout( "boteMotive[ 0 ][ 0 ].zelle.style.backgroundColor = nichtbelegbarfarbe", zeit );
     zeit = zeit + 100;
     setTimeout( "boteMotive[ 5 ][ 6 ].zelle.style.backgroundColor = 'white'", zeit );
     zeit = zeit + 100;
     setTimeout( "boteMotive[ 5 ][ 7 ].zelle.style.backgroundColor = nichtbelegbarfarbe", zeit );
     setTimeout( "boteMotive[ 5 ][ 5 ].zelle.style.backgroundColor = nichtbelegbarfarbe", zeit );
     zeit = zeit + 100;
     setTimeout( "boteMotive[ 5 ][ 8 ].zelle.style.backgroundColor = nichtbelegbarfarbe", zeit );
     setTimeout( "boteMotive[ 5 ][ 4 ].zelle.style.backgroundColor = nichtbelegbarfarbe", zeit );
     zeit = zeit + 100;
     setTimeout( "boteMotive[ 5 ][ 3 ].zelle.style.backgroundColor = nichtbelegbarfarbe", zeit );
     zeit = zeit + 100;
     setTimeout( "boteMotive[ 5 ][ 2 ].zelle.style.backgroundColor = nichtbelegbarfarbe", zeit );
     zeit = zeit + 100;
     setTimeout( "boteMotive[ 5 ][ 1 ].zelle.style.backgroundColor = nichtbelegbarfarbe", zeit );
     zeit = zeit + 100;
     setTimeout( "boteMotive[ 5 ][ 0 ].zelle.style.backgroundColor = nichtbelegbarfarbe", zeit );
     zeit = zeit + 100;
     setTimeout( "boteMotive[ 4 ][ 1 ].zelle.style.backgroundColor = 'white'", zeit );
     zeit = zeit + 100;
     setTimeout( "boteMotive[ 4 ][ 2 ].zelle.style.backgroundColor = 'white'", zeit );
     zeit = zeit + 100;
     setTimeout( "boteMotive[ 4 ][ 3 ].zelle.style.backgroundColor = nichtbelegbarfarbe", zeit );
     zeit = zeit + 5000;
     setTimeout( "timeoutZelle = boteMotive[ 4 ][ 4 ].zelle", zeit );
     zeit = zeit + 10;
     setTimeout( "timeoutZelle.motive[ 6 ].style.visibility = 'hidden'", zeit );
     zeit = zeit + 5000;
     setTimeout( "document.getElementById( 'ANWEISUNG' ).innerHTML = 'Es bleibt nur das Motiv ' + motive[ 4 ].alt + '.'", zeit );
     zeit = zeit + 10;
     setTimeout( "timeoutZelle = boteMotive[ 8 ][ 0 ].zelle", zeit );
     setTimeout( "spalteZuruecksetzen()", zeit );
     zeit = zeit + 100;
     setTimeout( "timeoutZelle = boteMotive[ 5 ][ 6 ].zelle", zeit );
     zeit = zeit + 10;
     setTimeout( "zeileZuruecksetzen()", zeit );
     zeit = zeit + 5000;
     setTimeout( "timeoutZelle = boteMotive[ 4 ][ 4 ].zelle", zeit );
     setTimeout( "spalteZuruecksetzen()", zeit );
     setTimeout( "zeileZuruecksetzen()", zeit );
     setTimeout( "timeoutZelle.motive[ timeoutZelle.loesung ].ondblclick()", zeit );
     setTimeout( "document.getElementById( 'PRUEFEN' ).style.visibility = 'visible'", zeit );
     setTimeout( "document.getElementById( 'TIPP' ).style.visibility = 'visible'", zeit );
     setTimeout( "document.getElementById( 'ANWEISUNG' ).innerHTML = tipptext", zeit );
     setTimeout( "timeoutZelle.style.backgroundColor = '#999999'", zeit );
     return true;
   }

   function kreuzLinien( zelle ){
     if( zelle.geloest ) return false;
     if( zelle.motiv < 9 ){
       zelle.bild.onclick();
     }
     document.getElementById( "PRUEFEN" ).style.visibility = "hidden";
     document.getElementById( "TIPP" ).style.visibility = "hidden";
     document.getElementById( "ANWEISUNG" ).innerHTML = motive[ zelle.loesung ].alt + " in einem 3&times;3-Quadrat: ";
     var zeit = 1000;
     timeoutZelle = zelle;
     setTimeout( "kreuzFarbe( 'white' )", zeit );
     var zeit = 3000;
     setTimeout( "document.getElementById( 'ANWEISUNG' ).innerHTML = 'Es gibt eine Zeile und eine Spalte, in denen das Motiv ' + motive[ timeoutZelle.loesung ].alt + ' nur innerhalb des 3&times;3-Quadrats vorkommen kann.'", zeit );
     zeit = zeit + 5000;
     if( zelle.zeile > 2 ){
       zeit = zeit + 100;
       setTimeout( "boteMotive[ 0 ][ timeoutZelle.spalte ].zelle.style.backgroundColor = nichtbelegbarfarbe;", zeit );
       zeit = zeit + 100;
       setTimeout( "boteMotive[ 1 ][ timeoutZelle.spalte ].zelle.style.backgroundColor = nichtbelegbarfarbe;", zeit );
       zeit = zeit + 100;
       setTimeout( "boteMotive[ 2 ][ timeoutZelle.spalte ].zelle.style.backgroundColor = nichtbelegbarfarbe;", zeit );
     }
     if( zelle.zeile < 3 || zelle.zeile > 5 ){
       zeit = zeit + 100;
       setTimeout( "boteMotive[ 3 ][ timeoutZelle.spalte ].zelle.style.backgroundColor = nichtbelegbarfarbe;", zeit );
       zeit = zeit + 100;
       setTimeout( "boteMotive[ 4 ][ timeoutZelle.spalte ].zelle.style.backgroundColor = nichtbelegbarfarbe;", zeit );
       zeit = zeit + 100;
       setTimeout( "boteMotive[ 5 ][ timeoutZelle.spalte ].zelle.style.backgroundColor = nichtbelegbarfarbe;", zeit );
     }
     if( zelle.zeile < 6 ){
       zeit = zeit + 100;
       setTimeout( "boteMotive[ 6 ][ timeoutZelle.spalte ].zelle.style.backgroundColor = nichtbelegbarfarbe;", zeit );
       zeit = zeit + 100;
       setTimeout( "boteMotive[ 7 ][ timeoutZelle.spalte ].zelle.style.backgroundColor = nichtbelegbarfarbe;", zeit );
       zeit = zeit + 100;
       setTimeout( "boteMotive[ 8 ][ timeoutZelle.spalte ].zelle.style.backgroundColor = nichtbelegbarfarbe;", zeit );
     }
     if( zelle.spalte > 2 ){
       zeit = zeit + 100;
       setTimeout( "boteMotive[ timeoutZelle.zeile ][ 0 ].zelle.style.backgroundColor = nichtbelegbarfarbe;", zeit );
       zeit = zeit + 100;
       setTimeout( "boteMotive[ timeoutZelle.zeile ][ 1 ].zelle.style.backgroundColor = nichtbelegbarfarbe;", zeit );
       zeit = zeit + 100;
       setTimeout( "boteMotive[ timeoutZelle.zeile ][ 2 ].zelle.style.backgroundColor = nichtbelegbarfarbe;", zeit );
     }
     if( zelle.spalte < 3 || zelle.spalte > 5 ){
       zeit = zeit + 100;
       setTimeout( "boteMotive[ timeoutZelle.zeile ][ 3 ].zelle.style.backgroundColor = nichtbelegbarfarbe;", zeit );
       zeit = zeit + 100;
       setTimeout( "boteMotive[ timeoutZelle.zeile ][ 4 ].zelle.style.backgroundColor = nichtbelegbarfarbe;", zeit );
       zeit = zeit + 100;
       setTimeout( "boteMotive[ timeoutZelle.zeile ][ 5 ].zelle.style.backgroundColor = nichtbelegbarfarbe;", zeit );
     }
     if( zelle.spalte < 6 ){
       zeit = zeit + 100;
       setTimeout( "boteMotive[ timeoutZelle.zeile ][ 6 ].zelle.style.backgroundColor = nichtbelegbarfarbe;", zeit );
       zeit = zeit + 100;
       setTimeout( "boteMotive[ timeoutZelle.zeile ][ 7 ].zelle.style.backgroundColor = nichtbelegbarfarbe;", zeit );
       zeit = zeit + 100;
       setTimeout( "boteMotive[ timeoutZelle.zeile ][ 8 ].zelle.style.backgroundColor = nichtbelegbarfarbe;", zeit );
     }
     zeit = zeit + 10000;
     setTimeout( "document.getElementById( 'ANWEISUNG' ).innerHTML = 'Da es in dem 3&times;3-Quadrat von jedem Motiv nur eines geben darf, muss dieses in der gemeinsamen Zelle der Spalte und der Zeile liegen.'", zeit );
     zeit = zeit + 5000;
     setTimeout( "timeoutZelle.motive[ timeoutZelle.loesung ].ondblclick()", zeit );
     zeit = zeit + 10000;
     setTimeout( "zeileZuruecksetzen()", zeit );
     setTimeout( "spalteZuruecksetzen()", zeit );
     setTimeout( "document.getElementById( 'PRUEFEN' ).style.visibility = 'visible'", zeit );
     setTimeout( "document.getElementById( 'TIPP' ).style.visibility = 'visible'", zeit );
     setTimeout( "document.getElementById( 'ANWEISUNG' ).innerHTML = tipptext", zeit );
     return true;
   }

   function kreuzFarbe( farbe ){
     for( var index = 0; index < 9; index++ ){
       boteMotive[ timeoutZelle.zeile ][ index ].zelle.style.backgroundColor = farbe;
       boteMotive[ index ][ timeoutZelle.spalte ].zelle.style.backgroundColor = farbe;
     }     
   }

   function zeilenSolitair( zelle ){
     if( zelle.geloest ) return false;
     if( zelle.motiv < 9 ){
       zelle.bild.onclick();
     }
     zelle.motive[ zelle.loesung ].ondblclick();
     for( var spalte = 0; spalte < 9; spalte++ ){
       boteMotive[ zelle.zeile ][ spalte ].zelle.style.backgroundColor = nichtbelegbarfarbe;
     }
     zelle.style.backgroundColor = "white";
     document.getElementById( "PRUEFEN" ).style.visibility = "hidden";
     document.getElementById( "TIPP" ).style.visibility = "hidden";
     document.getElementById( "ANWEISUNG" ).innerHTML = "In einer Linie findet das Motiv " + motive[ zelle.loesung ].alt + " nur noch eine Zelle, die es deshalb f&uuml;r sich alleine beansprucht.";
     timeoutZelle = zelle;
     var zeit = 10000;
     setTimeout( "zeileZuruecksetzen()", zeit );
     setTimeout( "document.getElementById( 'PRUEFEN' ).style.visibility = 'visible'", zeit );
     setTimeout( "document.getElementById( 'TIPP' ).style.visibility = 'visible'", zeit );
     setTimeout( "document.getElementById( 'ANWEISUNG' ).innerHTML = tipptext", zeit );
     return true;
   }

   function spaltenSolitair( zelle ){
     if( zelle.geloest ) return false;
     if( zelle.motiv < 9 ){
       zelle.bild.onclick();
     }
     zelle.motive[ zelle.loesung ].ondblclick();
     for( var zeile = 0; zeile < 9; zeile++ ){
       boteMotive[ zeile ][ zelle.spalte ].zelle.style.backgroundColor = nichtbelegbarfarbe;
     }
     zelle.style.backgroundColor = "white";
     document.getElementById( "PRUEFEN" ).style.visibility = "hidden";
     document.getElementById( "TIPP" ).style.visibility = "hidden";
     document.getElementById( "ANWEISUNG" ).innerHTML = "In einer Linie findet das Motiv " + motive[ zelle.loesung ].alt + " nur noch eine Zelle, die es deshalb f&uuml;r sich alleine beansprucht.";
     timeoutZelle = zelle;
     var zeit = 10000;
     setTimeout( "spalteZuruecksetzen()", zeit );
     setTimeout( "document.getElementById( 'PRUEFEN' ).style.visibility = 'visible'", zeit );
     setTimeout( "document.getElementById( 'TIPP' ).style.visibility = 'visible'", zeit );
     setTimeout( "document.getElementById( 'ANWEISUNG' ).innerHTML = tipptext", zeit );
     return true;
   }

   function quadratSolitair( zelle ){
     if( zelle.geloest ) return false;
     var startzeile = parseInt( zelle.zeile / 3 ) * 3;
     var startspalte = parseInt( zelle.spalte / 3 ) * 3;
     for( var zeile = startzeile; zeile < startzeile + 3; zeile++ ){
       for( var spalte = startspalte; spalte < startspalte + 3; spalte++ ){
         boteMotive[ zeile ][ spalte ].zelle.style.backgroundColor = nichtbelegbarfarbe;
       }
     }
     zelle.style.backgroundColor = "white";
     if( zelle.motiv < 9 ){
       zelle.bild.onclick();
     }
     zelle.motive[ zelle.loesung ].ondblclick();
     document.getElementById( "PRUEFEN" ).style.visibility = "hidden";
     document.getElementById( "TIPP" ).style.visibility = "hidden";
     document.getElementById( "ANWEISUNG" ).innerHTML = "In einem 3&times;3-Quadrat findet das Motiv " + motive[ zelle.loesung ].alt + " nur noch eine Zelle, die es deshalb f&uuml;r sich alleine beansprucht.";
     timeoutZelle = zelle;
     var zeit = 10000;
     setTimeout( "zeileZuruecksetzen()", zeit );
     zeit = zeit + 100;
     if( zelle.zeile % 3 == 0 ){
       setTimeout( "timeoutZelle = boteMotive[ timeoutZelle.zeile + 1 ][ 0 ].zelle", zeit );
       zeit = zeit + 10;
       setTimeout( "zeileZuruecksetzen()", zeit );
       zeit = zeit + 100;
       setTimeout( "timeoutZelle = boteMotive[ timeoutZelle.zeile + 1 ][ 0 ].zelle", zeit );
       zeit = zeit + 10;
       setTimeout( "zeileZuruecksetzen()", zeit );
     }
     if( zelle.zeile % 3 == 1 ){
       setTimeout( "timeoutZelle = boteMotive[ timeoutZelle.zeile - 1 ][ 0 ].zelle", zeit );
       zeit = zeit + 10;
       setTimeout( "zeileZuruecksetzen()", zeit );
       zeit = zeit + 100;
       setTimeout( "timeoutZelle = boteMotive[ timeoutZelle.zeile + 2 ][ 0 ].zelle", zeit );
       zeit = zeit + 10;
       setTimeout( "zeileZuruecksetzen()", zeit );
     }
     if( zelle.zeile % 3 == 2 ){
       setTimeout( "timeoutZelle = boteMotive[ timeoutZelle.zeile - 1 ][ 0 ].zelle", zeit );
       zeit = zeit + 10;
       setTimeout( "zeileZuruecksetzen()", zeit );
       zeit = zeit + 100;
       setTimeout( "timeoutZelle = boteMotive[ timeoutZelle.zeile - 1 ][ 0 ].zelle", zeit );
       zeit = zeit + 10;
       setTimeout( "zeileZuruecksetzen()", zeit );
     }
     zeit = zeit + 100;
     setTimeout( "timeoutZelle.style.backgroundColor = '#999999'", zeit );
     setTimeout( "document.getElementById( 'PRUEFEN' ).style.visibility = 'visible'", zeit );
     setTimeout( "document.getElementById( 'TIPP' ).style.visibility = 'visible'", zeit );
     setTimeout( "document.getElementById( 'ANWEISUNG' ).innerHTML = tipptext", zeit );
     return true;
   }

   function zeileZuruecksetzen(){
     for( var spalte = 0; spalte < 9; spalte++ ){
       if( boteMotive[ timeoutZelle.zeile ][ spalte ].zelle.geloest ){
         boteMotive[ timeoutZelle.zeile ][ spalte ].zelle.style.backgroundColor = geloestfarbe;
       } else {
         boteMotive[ timeoutZelle.zeile ][ spalte ].zelle.style.backgroundColor = ungeloestfarbe;
       }
     }
   }

   function spalteZuruecksetzen(){
     for( var zeile = 0; zeile < 9; zeile++ ){
       if( boteMotive[ zeile ][ timeoutZelle.spalte ].zelle.geloest ){
         boteMotive[ zeile ][ timeoutZelle.spalte ].zelle.style.backgroundColor = geloestfarbe;
       } else {
         boteMotive[ zeile ][ timeoutZelle.spalte ].zelle.style.backgroundColor = ungeloestfarbe;
       }
     }
   }


///EVENTH. MOTIVESUDOKU////////////////////////////////////////////////////////

   var wahlAufgehoben = false;

   function motiveZeigen(){
     if( wahlAufgehoben ){
       wahlAufgehoben = false;
       return false;
     }
     if( !document.all ){
       document.getElementById( "ZUMFOCUSSIEREN" ).focus();
     }
     for( var motiv in this.motive ){
       this.motive[ motiv ].style.visibility = "visible";
     }
     this.onclick = "";
     document.getElementById( "ANWEISUNG" ).innerHTML = "Motiv mit Doppelklick setzen.";
     return false;
   }

   function motivVerstecken(){
     if( !document.all ){
       document.getElementById( "ZUMFOCUSSIEREN" ).focus();
     }
     this.src = motive[ this.motiv ].inaktivSrc;
     this.onclick = motivZeigen;
     return false;
   }

   function motivZeigen(){
     if( !document.all ){
       document.getElementById( "ZUMFOCUSSIEREN" ).focus();
     }
     this.src = motive[ this.motiv ].src;
     this.onclick = motivVerstecken;
     return false;
   }

   function motivWaehlen(){
     if( !document.all ){
       document.getElementById( "ZUMFOCUSSIEREN" ).focus();
     }
     this.parentNode.motiv = this.motiv;
     this.parentNode.bild.style.visibility = "visible";
     this.parentNode.bild.src = motive[ this.motiv ].src;
     this.parentNode.bild.alt = this.alt;
 
     for( var motiv in this.parentNode.motive ){
       this.parentNode.motive[ motiv ].style.visibility = "hidden";
     }
     gewaehlt[ gewaehlt.length ] = this.parentNode;
     return false;
   }

   function motivAbwaehlen(){
     if( !document.all ){
       document.getElementById( "ZUMFOCUSSIEREN" ).focus();
     }
     this.style.visibility = "hidden";
     this.style.border = "none";
     this.parentNode.motiv = 9;
     wahlAufgehoben = true;
     this.parentNode.onclick = motiveZeigen;
     return false;
   }

   var zeit = 0;

   function pruefen(){
     if( geloest.length == 81 ) return;
     var zelle;
     for( var zelle in gewaehlt ){
       if( gewaehlt[ zelle ].geloest ) continue;
       if( gewaehlt[ zelle ].motiv < 9 ){
         if( gewaehlt[ zelle ].motiv == gewaehlt[ zelle ].loesung ){
           gewaehlt[ zelle ].geloest = true;
           geloest[ geloest.length ] = gewaehlt[ zelle ];
           gewaehlt[ zelle ].style.backgroundColor = geloestfarbe;
           gewaehlt[ zelle ].onclick = "";
           gewaehlt[ zelle ].bild.onclick = "";
           gewaehlt[ zelle ].style.cursor = "default";
           gewaehlt[ zelle ].bild.style.cursor = "default";
         } else {
           gewaehlt[ zelle ].bild.style.borderStyle = "solid";
         }
       }
     }
     gewaehlt = new Array;
     if( geloest.length == 81 ){
       document.getElementById( "SUDOKUH" ).innerHTML += " GEL&Ouml;ST!"
       document.getElementById( "TIPP" ).style.visibility = "hidden";
       document.getElementById( "ANWEISUNG" ).innerHTML = "";
       document.getElementById( "PRUEFEN" ).style.visibility = "hidden";
       timeoutElement = 0;
       globaleZeit = 0;
       animation();
     }
   }


///ANIMATION MOTIVESUDOKU////////////////////////////////////////////////////////

   var timeoutMotiv = 0;
   var TOMBANSUPgeloest = 0;

   function animation(){
     zelle = geloest[ timeoutElement ];
     zelle.style.backgroundColor = "transparent";
     if( !boteMotive[ zelle.zeile ][ zelle.spalte ].sichtbar ){
       zelle.bild.style.visibility = "hidden";
       zelle.motive[ zelle.motiv ].style.visibility = "visible";
       zelle.motive[ zelle.motiv ].src = motive[ zelle.motiv ].src;
       zelle.motive[ zelle.motiv ].onclick = "";
       zelle.motive[ zelle.motiv ].ondblclick = "";
     }
     globaleZeit = globaleZeit + 10;
     if( timeoutElement < 80 ){
       timeoutElement++;
       setTimeout( "animation()", globaleZeit );
     } else {
       timeoutMotiv = 0;
       TOMBANSUPgeloest = 0;
       setTimeout( "entfernen()", globaleZeit );
     }
   }

   function entfernen(){
     var motiv;
     if( motive[ timeoutMotiv ].motiv == 9 ){
       while( motive[ boteMotive[ geloest[ timeoutElement ].zeile ][ geloest[ timeoutElement ].spalte ].wert ].anzahl > 0 ) timeoutElement--;
       motiv = boteMotive[ geloest[ timeoutElement ].zeile ][ geloest[ timeoutElement ].spalte ].wert;
       motive[ timeoutMotiv ].motiv = motiv;
     } else {
       while( boteMotive[ geloest[ timeoutElement ].zeile ][ geloest[ timeoutElement ].spalte ].wert != motive[ timeoutMotiv ].motiv ) timeoutElement--;
       motiv = boteMotive[ geloest[ timeoutElement ].zeile ][ geloest[ timeoutElement ].spalte ].wert;
     }
     if( boteMotive[ geloest[ timeoutElement ].zeile ][ geloest[ timeoutElement ].spalte ].sichtbar ){
       geloest[ timeoutElement ].bild.style.visibility = "hidden";
     } else {
       geloest[ timeoutElement ].motive[ geloest[ timeoutElement ].motiv ].style.visibility = "hidden";
     }
     geloest[ timeoutElement ].loesung = TOMBANSUP[ geloest[ timeoutElement ].zeile ][ geloest[ timeoutElement ].spalte ].wert;
     geloest[ timeoutElement ].style.cursor = "pointer";
     if( TOMBANSUP[ geloest[ timeoutElement ].zeile ][ geloest[ timeoutElement ].spalte ].sichtbar ){
       TOMBANSUPgeloest++;
       geloest[ timeoutElement ].geloest = true;
       geloest[ timeoutElement ].motiv = geloest[ timeoutElement ].loesung;
       geloest[ timeoutElement ].TOMBANSUP[ geloest[ timeoutElement ].loesung ].style.visibility = "visible";
       geloest[ timeoutElement ].TOMBANSUP[ geloest[ timeoutElement ].loesung ].style.cursor = "default";
       geloest[ timeoutElement ].TOMBANSUP[ geloest[ timeoutElement ].loesung ].onclick = "";
       geloest[ timeoutElement ].TOMBANSUP[ geloest[ timeoutElement ].loesung ].ondblclick = "";
       geloest[ timeoutElement ].onmouseover = faerben;
     } else {
       geloest[ timeoutElement ].geloest = false;
       geloest[ timeoutElement ].motiv = 9;
       geloest[ timeoutElement ].onmouseover = vorschlagen;
       geloest[ timeoutElement ].onmouseout = verwerfen;
       geloest[ timeoutElement ].onclick = setzen;
  
     }
     motive[ motiv ].anzahl++;
     timeoutElement--;
     globaleZeit = globaleZeit + 10;
     if( motive[ motiv ].anzahl < 9 ){
       setTimeout( "entfernen()", globaleZeit );
     } else {
       if( timeoutMotiv < 8 ){
         timeoutMotiv++;
         timeoutElement = 80;
         setTimeout( "entfernen()", globaleZeit );
       } else {
         document.getElementById( "SUDOKUH" ).innerHTML = "TOMBANSUP-Sudoku";
         document.getElementById( "ANWEISUNG" ).innerHTML = "Farbe mit einfachem Klick aufnehmen und mit einfachem Klick setzen.";
         document.getElementById( "TIPP" ).href = "javascript:TOMBANSUPloesen()";
         document.getElementById( "TIPP" ).style.visibility = "visible";
         document.getElementById( "PRUEFEN" ).href = "javascript:TOMBANSUPpruefen()";
         document.getElementById( "PRUEFEN" ).style.visibility = "visible";
       }
     }
   }

///TIPPS TOMBANSUP////////////////////////////////////////////////////////

   function TOMBANSUPloesen(){
     TOMBANSUPpruefen();
     if( zelleTOMBANSUPloesen( boteMotive[ 4 ][ 2 ].zelle ) ) return;
     if( zelleTOMBANSUPloesen( boteMotive[ 6 ][ 4 ].zelle ) ) return;
     if( zelleTOMBANSUPloesen( boteMotive[ 2 ][ 0 ].zelle ) ) return;
     if( zelleTOMBANSUPloesen( boteMotive[ 5 ][ 0 ].zelle ) ) return;
     if( zelleTOMBANSUPloesen( boteMotive[ 3 ][ 0 ].zelle ) ) return;
     if( zelleTOMBANSUPloesen( boteMotive[ 5 ][ 2 ].zelle ) ) return;
     if( zelleTOMBANSUPloesen( boteMotive[ 4 ][ 1 ].zelle ) ) return;
     if( zelleTOMBANSUPloesen( boteMotive[ 2 ][ 2 ].zelle ) ) return;
     if( zelleTOMBANSUPloesen( boteMotive[ 1 ][ 1 ].zelle ) ) return;
     if( zelleTOMBANSUPloesen( boteMotive[ 1 ][ 2 ].zelle ) ) return;
     if( zelleTOMBANSUPloesen( boteMotive[ 3 ][ 7 ].zelle ) ) return;
     if( zelleTOMBANSUPloesen( boteMotive[ 5 ][ 8 ].zelle ) ) return;
     if( zelleTOMBANSUPloesen( boteMotive[ 5 ][ 7 ].zelle ) ) return;
     if( zelleTOMBANSUPloesen( boteMotive[ 4 ][ 3 ].zelle ) ) return;
     if( zelleTOMBANSUPloesen( boteMotive[ 5 ][ 3 ].zelle ) ) return;
     if( zelleTOMBANSUPloesen( boteMotive[ 0 ][ 6 ].zelle ) ) return;
     if( zelleTOMBANSUPloesen( boteMotive[ 0 ][ 7 ].zelle ) ) return;
     if( zelleTOMBANSUPloesen( boteMotive[ 0 ][ 4 ].zelle ) ) return;
     if( zelleTOMBANSUPloesen( boteMotive[ 0 ][ 5 ].zelle ) ) return;
     if( zelleTOMBANSUPloesen( boteMotive[ 0 ][ 8 ].zelle ) ) return;
     if( zelleTOMBANSUPloesen( boteMotive[ 1 ][ 8 ].zelle ) ) return;
     if( zelleTOMBANSUPloesen( boteMotive[ 7 ][ 6 ].zelle ) ) return;
     if( zelleTOMBANSUPloesen( boteMotive[ 1 ][ 3 ].zelle ) ) return;
     if( zelleTOMBANSUPloesen( boteMotive[ 1 ][ 7 ].zelle ) ) return;
     if( zelleTOMBANSUPloesen( boteMotive[ 6 ][ 5 ].zelle ) ) return;
     if( zelleTOMBANSUPloesen( boteMotive[ 2 ][ 4 ].zelle ) ) return;
     if( zelleTOMBANSUPloesen( boteMotive[ 8 ][ 8 ].zelle ) ) return;
     if( zelleTOMBANSUPloesen( boteMotive[ 6 ][ 6 ].zelle ) ) return;
     if( zelleTOMBANSUPloesen( boteMotive[ 7 ][ 7 ].zelle ) ) return;
     if( zelleTOMBANSUPloesen( boteMotive[ 6 ][ 8 ].zelle ) ) return;
     if( zelleTOMBANSUPloesen( boteMotive[ 6 ][ 1 ].zelle ) ) return;
     if( zelleTOMBANSUPloesen( boteMotive[ 2 ][ 8 ].zelle ) ) return;
     if( zelleTOMBANSUPloesen( boteMotive[ 2 ][ 6 ].zelle ) ) return;
     if( zelleTOMBANSUPloesen( boteMotive[ 4 ][ 6 ].zelle ) ) return;
     if( zelleTOMBANSUPloesen( boteMotive[ 4 ][ 7 ].zelle ) ) return;
     if( zelleTOMBANSUPloesen( boteMotive[ 8 ][ 2 ].zelle ) ) return;
     if( zelleTOMBANSUPloesen( boteMotive[ 7 ][ 2 ].zelle ) ) return;
     if( zelleTOMBANSUPloesen( boteMotive[ 8 ][ 3 ].zelle ) ) return;
     if( zelleTOMBANSUPloesen( boteMotive[ 2 ][ 3 ].zelle ) ) return;
     if( zelleTOMBANSUPloesen( boteMotive[ 2 ][ 5 ].zelle ) ) return;
     if( zelleTOMBANSUPloesen( boteMotive[ 7 ][ 3 ].zelle ) ) return;
     if( zelleTOMBANSUPloesen( boteMotive[ 7 ][ 4 ].zelle ) ) return;
     if( zelleTOMBANSUPloesen( boteMotive[ 8 ][ 4 ].zelle ) ) return;
     if( zelleTOMBANSUPloesen( boteMotive[ 3 ][ 4 ].zelle ) ) return;
     if( zelleTOMBANSUPloesen( boteMotive[ 3 ][ 5 ].zelle ) ) return;
     if( zelleTOMBANSUPloesen( boteMotive[ 7 ][ 1 ].zelle ) ) return;
     if( zelleTOMBANSUPloesen( boteMotive[ 8 ][ 1 ].zelle ) ) return;
     if( zelleTOMBANSUPloesen( boteMotive[ 7 ][ 5 ].zelle ) ) return;
     if( zelleTOMBANSUPloesen( boteMotive[ 8 ][ 5 ].zelle ) ) return;
   }

   function zelleTOMBANSUPloesen( zelle ){
     if( zelle.geloest ) return false;
     zelle.motiv = 9;
     zelle.TOMBANSUP[ zelle.loesung ].ondblclick();
     return true;
   }

///EVENTH. TOMBANSUP////////////////////////////////////////////////////////

   function faerben(){
     this.style.backgroundColor = TOMBANSUPbgColor( TOMBANSUP[ this.zeile ][ this.spalte ].wert );
     this.onmouseover = "";
     this.onclick = aufnehmen;
   }

   var buchstabe = "";

   function aufnehmen(){
     buchstabe = this.loesung;
     return false;
   }

   function vorschlagen(){
     this.style.backgroundColor = TOMBANSUPbgColor( buchstabe );
     return false;
   }

   function verwerfen(){
     this.style.backgroundColor = TOMBANSUPbgColor( "" );
     return false;
   }

   function verstecken(){
     if( !document.all ){
       document.getElementById( "ZUMFOCUSSIEREN" ).focus();
     }
     this.style.color = ungeloestfarbe;
     this.onclick = zeigen;
     return false;
   }

   function zeigen(){
     if( !document.all ){
       document.getElementById( "ZUMFOCUSSIEREN" ).focus();
     }
     this.style.color = "black";
     this.onclick = verstecken;
     return false;
   }

   function buchstabeWaehlen(){
     if( this.parentNode.motiv != 9 ) return;
     if( !document.all ){
       document.getElementById( "ZUMFOCUSSIEREN" ).focus();
     }
     this.parentNode.style.cursor = "pointer";
     gewaehlt[ gewaehlt.length ] = this.parentNode;
     this.parentNode.motiv = this.innerHTML;
     this.parentNode.style.backgroundColor = TOMBANSUPbgColor( this.innerHTML );
     this.parentNode.onmouseover = "";
     this.parentNode.onmouseout = "";
     for( var index in this.parentNode.TOMBANSUP ){
       this.parentNode.TOMBANSUP[ index ].style.visibility = "hidden";
     }
     this.style.color = "grey";
     this.style.visibility = "visible";
     this.style.cursor = "default";
     return false;
   }

   function setzen(){
     if( !document.all ){
       document.getElementById( "ZUMFOCUSSIEREN" ).focus();
     }
     this.style.cursor = "pointer";
     if( this.motiv == 9 ){
       if( buchstabe ){
         gewaehlt[ gewaehlt.length ] = this;
         this.motiv = buchstabe;
         this.onmouseover = "";
         this.onmouseout = "";
         for( var index in this.TOMBANSUP ){
           this.TOMBANSUP[ index ].style.visibility = "hidden";
         }
         this.TOMBANSUP[ this.motiv ].style.color = "grey";
         this.TOMBANSUP[ this.motiv ].style.visibility = "visible";
         this.TOMBANSUP[ this.motiv ].style.cursor = "default";
       } else {
         this.style.cursor = "default";
         for( var index in this.TOMBANSUP ){
           this.TOMBANSUP[ index ].style.visibility = "visible";
           this.TOMBANSUP[ index ].style.cursor = "pointer";
         }
       }
     } else {
       this.TOMBANSUP[ this.motiv ].style.visibility = "hidden";
       this.motiv = 9;
       this.style.backgroundColor = TOMBANSUPbgColor( "" );
       this.onmouseover = vorschlagen;
       this.onmouseout = verwerfen;
     }
     buchstabe = "";
     return false;
   }

   function TOMBANSUPpruefen(){
     for( index in gewaehlt ){
       if( gewaehlt[ index ].motiv == 9 ) continue;
       if( gewaehlt[ index ].motiv == gewaehlt[ index ].loesung ){
         if( !gewaehlt[ index ].geloest ){
           TOMBANSUPgeloest++;
           gewaehlt[ index ].geloest = true;
           gewaehlt[ index ].TOMBANSUP[ gewaehlt[ index ].motiv ].style.color = "black";
           gewaehlt[ index ].TOMBANSUP[ gewaehlt[ index ].motiv ].onclick = "";
           gewaehlt[ index ].TOMBANSUP[ gewaehlt[ index ].motiv ].ondblclick = "";
           gewaehlt[ index ].onclick = aufnehmen;
         }
       } else {
         gewaehlt[ index ].style.backgroundColor = "white";
       }
     }
     gewaehlt = new Array;
     if( TOMBANSUPgeloest == 81 ){
       document.getElementById( "SUDOKUH" ).innerHTML += " GEL&Ouml;ST!";
       document.getElementById( "ANWEISUNG" ).innerHTML = "";
       document.getElementById( "TIPP" ).style.visibility = "hidden";
       document.getElementById( "PRUEFEN" ).style.visibility = "hidden";
       spieldrei = false;
       for( var zeile = 0; zeile < 9; zeile++ ){
         for( var spalte = 0; spalte < 9; spalte++ ){
           var zelle = boteMotive[ zeile ][ spalte ].zelle;
           zelle.onclick = "";
           zelle.onmouseover = TOMBANSUPentfernen;
           zelle.style.cursor = "default";
           if( TOMBANSUP[ zeile ][ spalte ].sichtbar ){
             if( zelle.loesung == "O" ){
               zelle.style.backgroundColor = "transparent";
               zelle.TOMBANSUP[ "O" ].style.visibility = "hidden";
               zelle.motive[ 1 ].style.visibility = "visible";
               zelle.motive[ 1 ].style.cursor = "default";
               zelle.motive[ 1 ].onclick = "";
               zelle.motive[ 1 ].ondblclick = "";
             }
             if( zelle.loesung == "P" ){
               zelle.TOMBANSUP[ "P" ].style.visibility = "hidden";
               zelle.motive[ 8 ].style.visibility = "visible";
               zelle.motive[ 8 ].style.cursor = "default";
               zelle.motive[ 8 ].onclick = "";
               zelle.motive[ 8 ].ondblclick = "";
             }
           } else {
             zelle.TOMBANSUP[ zelle.loesung ].style.visibility = "hidden";
           }
         }
       }   
     }
   }

   function TOMBANSUPentfernen(){
     this.style.backgroundColor = "transparent";
     this.onmouseover = "";
     if( TOMBANSUP[ this.zeile ][ this.spalte ].sichtbar ){
       this.motive[ "BOSNMUATP".indexOf( this.loesung ) ].style.visibility = "visible";
       this.motive[ "BOSNMUATP".indexOf( this.loesung ) ].style.cursor = "pointer";
       this.motive[ "BOSNMUATP".indexOf( this.loesung ) ].onclick = sudoku3;
       this.motive[ "BOSNMUATP".indexOf( this.loesung ) ].ondblclick = "";
     }
     return false;
   }

///MOTIVESUDOKU WIEDERHOLEN////////////////////////////////////////////////////////

   var spieldrei = false;
   function sudoku3(){
     if( spieldrei ) return;
     spieldrei = true;
     document.getElementById( "SUDOKUH" ).innerHTML = "Erkennen Sie mich noch?";
     document.getElementById( "REGEL" ).innerHTML = "<a href='javascript:beweisen()'>ja</a> | <a href='javascript:loesungZeigen()'>nein</a>";
     var alteMotive = new Array;
     for( var index = 0; index < 9; index++ ){
       alteMotive[ index ] = new Object();
       alteMotive[ index ].src = motive[ index ].src;
       alteMotive[ index ].alt = motive[ index ].alt;
       motive[ index ].motiv = "TOMBANSUP".indexOf( "BOSNMUATP".charAt( index ) );
       motive[ index ].anzahl = 0;
       if( motive[ index ].motiv < index ){
         motive[ index ].src = alteMotive[ motive[ index ].motiv ].src;
         motive[ index ].alt = alteMotive[ motive[ index ].motiv ].alt;
       }
       if( motive[ index ].motiv > index ){
         motive[ index ].src = motive[ motive[ index ].motiv ].src;
         motive[ index ].alt = motive[ motive[ index ].motiv ].alt;
       }
       motive[ index ].motiv = 9;
     }
     for( var zeile = 0; zeile < 9; zeile++ ){
       for( var spalte = 0; spalte < 9; spalte++ ){
         var zelle = boteMotive[ zeile ][ spalte ].zelle;
         zelle.loesung = boteMotive[ zeile ][ spalte ].wert;
         zelle.onmouseover = "";
         for( var motiv = 0; motiv < 9; motiv++ ){
           zelle.TOMBANSUP[ "TOMBANSUP".charAt( motiv ) ].style.visibility = "hidden";
           zelle.TOMBANSUP[ "TOMBANSUP".charAt( motiv ) ].onclick = verstecken;
           zelle.TOMBANSUP[ "TOMBANSUP".charAt( motiv ) ].ondblclick = buchstabeWaehlen;
           zelle.motive[ motiv ].style.visibility = "hidden";
           zelle.motive[ motiv ].src = motive[ motiv ].src;
           zelle.motive[ motiv ].alt = motive[ motiv ].alt;
           zelle.motive[ motiv ].onclick = motivVerstecken;
           zelle.motive[ motiv ].ondblclick = motivWaehlen;
         }
         if( boteMotive[ zeile ][ spalte ].sichtbar ){
           zelle.style.backgroundColor = geloestfarbe;
           zelle.geloest = true;
           zelle.motiv = zelle.loesung;
           zelle.bild.src = motive[ zelle.loesung ].src;
           zelle.bild.alt = motive[ zelle.loesung ].alt;
           zelle.bild.style.visibility = "visible";
         } else {
           zelle.style.backgroundColor = ungeloestfarbe;
           zelle.geloest = false;
           zelle.motiv = 9;
           zelle.onclick = loesenLoeschen;
           zelle.style.cursor = "pointer";
           zelle.bild.style.visibility = "hidden";
           zelle.bild.onclick = motivAbwaehlen;
         }
       }
     }
     for( var zeile = 0; zeile < 4; zeile++ ){
       for( var spalte = zeile; spalte < 8 - zeile; spalte++ ){
         var top = boteMotive[ zeile ][ spalte ].zelle.style.top;
         var left = boteMotive[ zeile ][ spalte ].zelle.style.left;
         boteMotive[ zeile ][ spalte ].zelle.style.top = boteMotive[ spalte ][ 8 - zeile ].zelle.style.top;
         boteMotive[ zeile ][ spalte ].zelle.style.left = boteMotive[ spalte ][ 8 - zeile ].zelle.style.left;
         boteMotive[ spalte ][ 8 - zeile ].zelle.style.top = boteMotive[ 8 - zeile ][ 8 - spalte ].zelle.style.top;
         boteMotive[ spalte ][ 8 - zeile ].zelle.style.left = boteMotive[ 8 - zeile ][ 8 - spalte ].zelle.style.left;
         boteMotive[ 8 - zeile ][ 8 - spalte ].zelle.style.top = boteMotive[ 8 - spalte ][ zeile ].zelle.style.top;
         boteMotive[ 8 - zeile ][ 8 - spalte ].zelle.style.left = boteMotive[ 8 - spalte ][ zeile ].zelle.style.left;
         boteMotive[ 8 - spalte ][ zeile ].zelle.style.top = top;
         boteMotive[ 8 - spalte ][ zeile ].zelle.style.left = left;
       }
     }
   }

   function loesenLoeschen(){
     if( spieldrei ){
       spieldrei = false;
       return;
     }
     document.getElementById( "REGEL" ).innerHTML = "";
     for( var zeile = 0; zeile < 9; zeile++ ){
       for( var spalte = 0; spalte < 9; spalte++ ){
         if( !boteMotive[ zeile ][ spalte ].sichtbar ){
           boteMotive[ zeile ][ spalte ].zelle.onclick = motiveZeigen;
         }
       }
     }
     var index = 0;
     while( geloest[ index ].geloest ){
       geloest[ index ].geloest = false;
       gewaehlt[ gewaehlt.length ] = geloest[ index ];
       index++;
     }
     geloest = new Array;
     document.getElementById( "TIPP" ).href = "javascript:motiveLoesen()";
     document.getElementById( "TIPP" ).style.visibility = "visible";
     document.getElementById( "PRUEFEN" ).href = "javascript:pruefen()";
     document.getElementById( "PRUEFEN" ).style.visibility = "visible";
     this.onclick();
   }

   function beweisen(){
     spieldrei = false;
     document.getElementById( "SUDOKUH" ).innerHTML = "Beweisen Sie es!";
     document.getElementById( "REGEL" ).innerHTML = "<a href='javascript:loesungZeigen()'>nein</a>";
   }

   function loesungZeigen(){
     document.getElementById( "SUDOKUH" ).innerHTML = "Neue Variante mit Ihrer alten L&ouml;sung";
     document.getElementById( "REGEL" ).innerHTML = "";
     for( var zeile = 0; zeile < 9; zeile++ ){
       for( var spalte = 0; spalte < 9; spalte++ ){
         if( !boteMotive[ zeile ][ spalte ].sichtbar ){
           boteMotive[ zeile ][ spalte ].zelle.onclick = "";
           boteMotive[ zeile ][ spalte ].zelle.bild.onclick = "";
           boteMotive[ zeile ][ spalte ].zelle.style.cursor = "default";
         }
       }
     }
     timeoutElement = 0;
     loesungZeigenTimeout();
   }

   function loesungZeigenTimeout(){
     if( timeoutElement < geloest.length ){
       while( geloest[ timeoutElement ].geloest ){
         geloest[ timeoutElement ].geloest = false;
         gewaehlt[ gewaehlt.length ] = geloest[ timeoutElement ];
         timeoutElement++;
       }
       zelleLoesen( geloest[ timeoutElement ] );
       timeoutElement++;
       globaleZeit = globaleZeit - 10;
       setTimeout( "loesungZeigenTimeout()", globaleZeit );
     } else {
       geloest = new Array;
       pruefen();
     }
   }


