// Made by Blinde Kuh - Die erste deutschspr. Suchmaschine nur fuer Kinder
// Online-Memo mit div. Optionen (c)2001 Stefan R. Mueller (www.blinde-kuh.de)
// Dieser Code unterliegt dem Urheberrecht. Das bedeutet in der einfachsten
// Auslegung, die Nutzung fuer private Zwecke ist frei, aber die Nutzung
// fuer komerzielle Zwecke eben nicht. Diese muss mit dem Urheber vereinbart
// werden, wobei eine angemessene Gegenleistung in Betracht zu ziehen ist.
// Geschrieben ist dieses Spiel fuer Netscape ab Version 3 und auch Microsoft
// Internet Explorer ab Version 3.


if (document.images)
{
  MeldeStatus("Das Spiel wird gerade neu aufgebaut ...");
  // Bilder muss der Browser schon laden koennen,
  // sonst ist es irgendwie langweilig
  // Voreinstellungen

 var Matrix = new Array (
  '------',
  '------',
  '------',
  '------',
  '------',
  '------'
  );

  var KartenModellTyp = 'C';

  var Spalten = 6;
  var Zeilen = 6;



  var Paare        = (Zeilen*Spalten) / 2;
  var MischFaktor  = 10;

  // Motive deklarieren
  // alle weiteren Parameter fuer die Motiv-Vorgabe
  // richten sich nach diesen Angaben
  var Seperator    = "_";
  var ErsteKarte   = "1";
  var ZweiteKarte  = "1";
  var Endung       = "gif";

 var KarteDir = '';


  var Universum = new Array(

"adriaen-van-utrecht-muschel",
"adriaen-van-utrecht-pokal",
"caravaggio-geige",
"caravaggio-weintrauben",
"david-bailly-statue",
"david-bailly-schaedel",
"diego-velazquez-amboss",
"el-greco-pavian",
"frans-hals-glas",
"frans-hals-laute",
"georg-flegel-blumenvase",
"georg-flegel-glas",
"georg-flegel-mahlzeit",
"georg-flegel-messer",
"georg-flegel-obst",
"georg-flegel-zuckerwerk",
"giuseppe-arcimboldo-blume",
"giuseppe-arcimboldo-pfau",
"hans-holbein-djue-kugel",
"hans-holbein-djue-zettel",
"hieronymus-bosch-kugel",
"hieronymus-bosch-spiel",
"hubert-van-ravesteyn-walnuesse",
"jan-bruegel-dae-windmuehle",
"jan-davidszoon-de-heem-mohnblume",
"jan-davidszoon-de-heem-schmetterling",
"jan-van-kessel-dae-falter",
"jan-van-kessel-dae-fisch",
"jan-van-kessel-dae-kaefer",
"jan-van-kessel-dae-raupe",
"jan-van-kessel-dae-schnecke",
"jan-van-kessel-dae-wanze",
"jan-van-kessel-dae-johannisbeeren",
"jan-vermeer-van-delft-bild",
"jan-vermeer-van-delft-offenes-fenster",
"jan-vermeer-van-delft-frau-am-bottich",
"jan-vermeer-van-delft-gitarre",
"jan-vermeer-van-delft-perlenohrring",
"judith-jansdr-leyster-krug",
"lubin-baugin-waffelroellchen",
"peter-paul-rubens-federhut",
"pieter-boel-globus",
"pieter-boel-mitra",
"pieter-bruegel-dae-bockspringen",
"pieter-bruegel-dae-kreisel",
"pieter-bruegel-dae-tanz",
"pieter-bruegel-dae-eierlaufen",
"pieter-bruegel-dae-taufe",
"pieter-bruegel-dae-blinde-kuh",
"pieter-bruegel-dae-fallen-lassen",
"pieter-bruegel-dae-reifen",
"pieter-bruegel-dae-steckenpferd",
"pieter-bruegel-dae-reiterkampfspiel",
"pieter-bruegel-dae-turmbau-zu-babel",
"pieter-bruegel-dae-hochzeit",
"pieter-bruegel-dae-plumpsack",
"pieter-claesz-taschenuhr",
"pieter-claesz-zitrone",
"quentin-massys-buch",
"quentin-massys-geld",
"quentin-massys-spiegel",
"raffael-engelfluegel",
"tizian-kaninchen"
  );

 var TitleText = new Array(
"Adriaen van Utrecht - Muschel",
"Adriaen van Utrecht - Pokal",
"Caravaggio - Geige",
"Caravaggio - Weintrauben",
"David Bailly - Statue",
"David Bailly - Schädel",
"Diego Velazquez - Amboss",
"El Greco - Pavian",
"Frans Hals - Glas",
"Frans Hals - Laute",
"Georg Flegel - Blumenvase",
"Georg Flegel - Glas",
"Georg Flegel - Mahlzeit",
"Georg Flegel - Messer",
"Georg Flegel - Obst",
"Georg Flegel - Zuckerwerk",
"Guiseppe Arcimboldo - Blume",
"Guiseppe Arcimboldo - Pfau",
"Hans Holbein d. J. - Kugel",
"Hans Holbein d. J. - Zettel",
"Hieronymus Bosch - Kugel",
"Hieronymus Bosch - Spiel",
"Hubert van Ravesteyn - Walnüsse",
"Jan Bruegel d. Ä. - Windmühle",
"Jan Davidszoon de Heem - Mohnblume",
"Jan Davidszoon de Heem - Schmetterling",
"Jan van Kessel d. Ä. - Falter",
"Jan van Kessel d. Ä. - Fisch",
"Jan van Kessel d. Ä. - Käfer",
"Jan van Kessel d. Ä. - Raupe",
"Jan van Kessel d. Ä. - Schnecke",
"Jan van Kessel d. Ä. - Wanze",
"Jan van Kessel d. Ä. - Johannisbeeren",
"Jan Vermeer van Delft - Bild",
"Jan Vermeer van Delft - offenes Fenster",
"Jan Vermeer van Delft - Frau am Bottich",
"Jan Vermeer van Delft - Gitarre",
"Jan Vermeer van Delft - Perlenohrring",
"Judith Jansdr Leyster - Krug",
"Lubin Baugin - Waffelröllchen",
"Peter Paul Rubens - Federhut",
"Pieter Boel - Globus",
"Pieter Boel - Mitra",
"Pieter Bruegel d. Ä. - Bockspringen",
"Pieter Bruegel d. Ä. - Kreisel",
"Pieter Bruegel d. Ä. - Tanz",
"Pieter Bruegel d. Ä. - Eierlaufen",
"Pieter Bruegel d. Ä. - Taufe",
"Pieter Bruegel d. Ä. - Blinde Kuh",
"Pieter Bruegel d. Ä. - Fallen lassen",
"Pieter Bruegel d. Ä. - Reifen",
"Pieter Bruegel d. Ä. - Steckenpferd",
"Pieter Bruegel d. Ä. - Reiterkampfspiel",
"Pieter Bruegel d. Ä. - Turmbau zu Babel",
"Pieter Bruegel d. Ä. - Hochzeit",
"Pieter Bruegel d. Ä. - Plumpsack",
"Pieter Claesz - Taschenuhr",
"Pieter Claesz - Zitrone",
"Quentin Massys - Buch",
"Quentin Massys - Geld",
"Quentin Massys - Spiegel",
"Raffael - Engelflügel",
"Tizian - Kaninchen"
);

 var KarteTextDir = 'texte/';


 var KarteTextLink = new Array(
"adriaen-van-utrecht-pokal-muschel.html",
"adriaen-van-utrecht-pokal-muschel.html",
"caravaggio-geige.html",
"caravaggio-weintrauben.html",
"david-bailly-statue-schaedel.html",
"david-bailly-statue-schaedel.html",
"diego-velazquez-amboss.html",
"el-greco-pavian.html",
"frans-hals-glas-laute.html",
"frans-hals-glas-laute.html",
"georg-flegel-blumenvase-messer.html",
"georg-flegel-glas-zuckerwerk.html",
"georg-flegel-mahlzeit-obst.html",
"georg-flegel-blumenvase-messer.html",
"georg-flegel-mahlzeit-obst.html",
"georg-flegel-glas-zuckerwerk.html",
"guiseppe-arcimboldo-blume.html",
"guiseppe-arcimboldo-pfau.html",
"hans-holbein-djue-kugel-zettel.html",
"hans-holbein-djue-kugel-zettel.html",
"hieronymus-bosch-kugel-spiel.html",
"hieronymus-bosch-kugel-spiel.html",
"hubert-van-ravesteyn-walnuesse.html",
"jan-bruegel-dae-windmuehle.html",
"jan-davidszoon-de-heem-mohnblume-schmetterling.html",
"jan-davidszoon-de-heem-mohnblume-schmetterling.html",
"jan-van-kessel-dae-insekten-frucht.html",
"jan-van-kessel-dae-fisch-schnecke.html",
"jan-van-kessel-dae-insekten-frucht.html",
"jan-van-kessel-dae-insekten-frucht.html",
"jan-van-kessel-dae-fisch-schnecke.html",
"jan-van-kessel-dae-insekten-frucht.html",
"jan-van-kessel-dae-insekten-frucht.html",
"jan-vermeer-van-delft-gitarre-bild.html",
"jan-vermeer-van-delft-offenes-fenster.html",
"jan-vermeer-van-delft-frau-am-bottich.html",
"jan-vermeer-van-delft-gitarre-bild.html",
"jan-vermeer-van-delft-perlenohrring.html",
"judith-jansdr-leyster-krug.html",
"lubin-baugin-waffelroellchen.html",
"peter-paul-rubens-federhut.html",
"pieter-boel-mitra-globus.html",
"pieter-boel-mitra-globus.html",
"pieter-bruegel-dae-kinderspiele.html",
"pieter-bruegel-dae-kinderspiele.html",
"pieter-bruegel-dae-kinderspiele.html",
"pieter-bruegel-dae-kinderspiele.html",
"pieter-bruegel-dae-kinderspiele.html",
"pieter-bruegel-dae-kinderspiele.html",
"pieter-bruegel-dae-kinderspiele.html",
"pieter-bruegel-dae-kinderspiele.html",
"pieter-bruegel-dae-kinderspiele.html",
"pieter-bruegel-dae-kinderspiele.html",
"pieter-bruegel-dae-turmbau-zu-babel.html",
"pieter-bruegel-dae-kinderspiele.html",
"pieter-bruegel-dae-kinderspiele.html",
"pieter-claesz-taschenuhr.html",
"pieter-claesz-zitrone.html",
"quentin-massys-geld-buch-spiegel.html",
"quentin-massys-geld-buch-spiegel.html",
"quentin-massys-geld-buch-spiegel.html",
"raffael-engelfluegel.html",
"tizian-kaninchen.html"
);



  var AnzahlMotive = Universum.length;
  // Bild-Daten deklarieren
  var AnzahlKarten = Paare * 2;
  var Rueckseite=new Image();         Rueckseite.src="inaktiv.jpg"
  var AktiveRueckseite=new Image() ;  AktiveRueckseite.src="aktiv.jpg"
  var LeerBild=new Image() ;          LeerBild.src="leer.jpg"
  var AnzahlRichtige = 0;
  // Parameter zuruecksetzen
  var Bilder=new Array(AnzahlKarten+1);
  var Weggeraeumt=new Array(AnzahlKarten+1);
  var Klicks=0;
  var LetzteKarte=0;
  var VorletzteKarte=0;
  var sum = 0;
  var SpielStand = 0;

  var arr=new Array(AnzahlKarten+1);
  var arrCount=0;

}
 else
{
  alert(   "Du benoetigst fuer dieses Memo\n"
         + "einen moderneren Browser, z.B.:\n"
         + "Netscape ab 3.0 oder MS Internet Explorer ab 4.0" )
  history.go(-1)
}
function Init()
{
  SpielStand = 0;
  MeldeStatus( "Einen Moment, bitte. Ich mische gerade ...");

  var j=0; var n=0; arrCount=AnzahlKarten;
  var i = 0;
  // Parameter Zurueckseten
  AnzahlRichtige = 0;
  Klicks         = 0;
  LetzteKarte    = 0;
  VorletzteKarte = 0;
  sum = 0;
  KartenVerdecken();
  SetzeModus();
  BilderAuswahlen();
  KartenMischen();
  KlicksAusgabe(0)
  // Test per View
  // BilderAufdecken();
  SpielStand = 1;
  // Startmeldung
  MeldeStatus("Das Spiel kann beginnen! Klicke auf die Karte, die du aufdecken moechtest.");
}
function SetzeBild(n,source)
{
  if ( document.images['bild'+n] )
  {
   if ( arr[n] == 1  )
   {
     KarteDeaktivieren(n);
   }
   else { document.images['bild'+n].src = source;  KarteAktivieren(n); }
 }
}

function KarteDeaktivieren(n) {
 if ( SpielStand == 0 ) {return;};
 if ( Weggeraeumt[n] > 0  )
 {
         KarteVerschwindet (n);
 }
 else
 {
 var Karte = document.getElementById('memomargin'+n);
 if ( Karte )
 {
  Karte.style.visibility='hidden';
  var Rahmen = document.getElementById('memocell'+n);
  if ( Rahmen )
  {
          Rahmen.style.visibility='hidden';
  }
  Weggeraeumt[n]=0;
 }
}
}

function KarteAktivieren(n) {
 Weggeraeumt[n]=100;
 var Karte = document.getElementById('memomargin'+n);
 if ( Karte )
 {
  Karte.style.visibility='visible';
  Karte.style.opacity = 1;
  Karte.style.filter ="alpha(opacity=100)";
  var Rahmen = document.getElementById('memocell'+n);
  if ( Rahmen )
  {
          Rahmen.style.visibility='visible';
  }

 }
}

function KarteVerschwindet (n) {
//document.game.counter.value = Weggeraeumt[n];
 var transp = Weggeraeumt[n];
 var step = 2;
 transp = transp - step;
 if ( transp < step ) { transp = 0};
 var transp2 = transp / 100;
 if ( transp > -1 )
 {

  var Karte = document.getElementById('memomargin'+n);
  if ( Karte )
  {
   Karte.style.visibility='visible';
   Karte.style.opacity = transp2;
   Karte.style.filter ="alpha(opacity="+transp+")";
  }
  Weggeraeumt[n] = transp;
  setTimeout( "KarteDeaktivieren("+n+")", 10);
 }
else
{
 KarteDeaktivieren(n);
}
}


function KartenVerdecken()
{
  // Je nachdem, was aus der Selectbox ausgewaehlt wird,
  // wird bei den Zweiten Karten die angegebene Endung
  // mit angehaengt.
  for (var i=1; i<=AnzahlKarten; i++)
  {
    arr[i]=0;
    // SetzeBild(i, Bilder[i].src);
    SetzeBild(i, Rueckseite.src);
  }
}
function SetzeModus()
{
  // Je nachdem, was aus der Selectbox ausgewaehlt wird,
  // wird bei den Zweiten Karten die angegebene Endung
  // mit angehaengt.
  if ( document.game.type )
  {
  var i = document.game.type.selectedIndex;
  if ( i > -1 )
  {
   var modus = document.game.type.options[i].value;
  if ( modus )
  {
    ZweiteKarte = modus;
  }
  }
  }
}
function HoleBild(n,source)
{
  var source = document.images['bild'+n].src;
  return source;
}
function Klick(n) // Wenn man auf die Karte klickt
{

         if (SpielStand == 0 ) { Init(0); return; }

   if (document.images)
   // if ((document.images) && (!arr[n]))
   {
    // if ( LeerBild.src == document.images['bild'+n].src ) return;
    if (arr[n] == 1 ) return;



     Klicks++
     if (Klicks % 2 == 0) // "zweiter" Klick
     {
       sum++
       KlicksAusgabe(sum);
       if (n != VorletzteKarte )
       {
         SetzeBild(n, Bilder[n].src);
         LetzteKarte=n;
         var source = HoleBild(LetzteKarte);
         var Name1 = HoleNamen( source );
         source = HoleBild(VorletzteKarte);
         var Name2 = HoleNamen( source );
         if (Name1 == Name2)
         {
            // Wegraeumen, wenn gewuenscht
            // SetzeBild(LetzteKarte, LeerBild.src)
            // SetzeBild(VorletzteKarte, LeerBild.src)
            KarteDeaktivieren(LetzteKarte);
            KarteDeaktivieren(VorletzteKarte);
            arr[LetzteKarte]=1
            arr[VorletzteKarte]=1
            AnzahlRichtige++
            if (AnzahlRichtige==Paare) { SpielGewonnen() }
         }
       }
       else
       { Klicks -- }
     }
     else // "erster" Klick
     {
        if ((LetzteKarte) && (!arr[LetzteKarte]))
        {
          SetzeBild(LetzteKarte, Rueckseite.src );
          SetzeBild(VorletzteKarte, Rueckseite.src);
        }
        SetzeBild(n, Bilder[n].src );
        VorletzteKarte=n;
     }
  }
}
function Out(n) // Ausserhalb des Spielfeldes
{
  if (document.images)
  {
  var source = HoleBild(n);
  if ( source == AktiveRueckseite.src )
  {
    SetzeBild(n, Rueckseite.src);
  }
  if ( SpielStand == 1 )
  {
   MeldeStatus("Bewege den Mauszeiger ueber das Spielfeld");
  }
  }
}
function Over(n)
{
  if (document.images)
  {
  if ( SpielStand != 1 )
  {
   MeldeStatus( 'Das Spiel ist beendet');
  }
  else
  {
  var source = HoleBild(n);
  // Wenn die Maus ueber die Rueckseite faehrt
  //if ( source == LeerBild.src )
  if ( arr[n] == 1 )
  {
    MeldeStatus( 'An diesem Platz ist die Karte bereits abgeraeumt!');
  }
  else
  {
  if ((source == AktiveRueckseite.src ) || (source == Rueckseite.src ) )
  {
    SetzeBild( n, AktiveRueckseite.src )
    MeldeStatus("Du musst die Karte anklicken, um sie aufzudecken");
  }
  // Maus faehrt ueber eine aufgedeckte Karte
  else
  {
    MeldeStatus('Motiv auf der Karte: ' + HoleNamen(source));
  }
  }
  }
  }
}

function Move(n)
{
  if (document.images)
  {
  if ( SpielStand != 1 )
  {
   MeldeStatus('Das Spiel ist beendet');
  }
  else
  {
  var source = HoleBild(n);
  // Wenn die Maus ueber die Rueckseite faehrt
  if ( arr[n] == 1  )
  {
    MeldeStatus( 'An diesem Platz ist die Karte bereits abgeraeumt!');
  }
  else
  {
  if ((source == AktiveRueckseite.src ) || (source == Rueckseite.src ) )
  {
    SetzeBild( n, AktiveRueckseite.src )
    MeldeStatus("Du musst die Karte anklicken, um sie aufzudecken");
  }
  // Maus faehrt ueber eine aufgedeckte Karte
  else
  {
    MeldeStatus('Motiv auf der Karte: ' + HoleNamen(source));
  }
  }
  }
  }
}


function HoleNamen(source)
{
  // Schneidet den String heraus, der im Feld Universum
  // angegeben wurde
  var p=source.lastIndexOf("/");
  var q=source.length;
  source = source.substring( p+1, q );
  p=source.indexOf(Seperator);
  source = source.substring( 0, p );
  return source;
}
function KlicksAusgabe(n)
{
  var x = '000';
  x = n;
  if ( x < 100 )
  {
   if (x >9 )
     x = '0' + x;
   else
     x = '00' + x;
  }
  document.game.counter.value = x;
}
function SpielGewonnen()
{
 SpielStand = 0;
 BilderAufdecken();
 var a = "Hurra. Geschafft!!!\n";
 a = a + "Du hattest insgesamt "+sum+ " Zuege.";
 MeldeStatus( a);
 a = a + "\n\nMoechtest du dieses Spiel noch einmal spielen?";
 // if ( confirm( a ) ) { Init();}
}

function BilderAufdecken()
{
  for ( var i=1; i<=AnzahlKarten; i++ )
  {
    arr[i]=0;
    SetzeBild(i, Bilder[i].src);
    KarteAktivieren(i);
  }
}
function BilderAuswahlen()
{
  // Aus dem Array Universum werden die ersten Motive
  // herauskopiert.
  MotiveMischen();
  for ( var i=0; i<Paare; i++ )
  {

    Bilder[i+1].src =
      Universum[i] + Seperator + ErsteKarte + "." + Endung;
    Bilder[i+1+Paare].src =
      Universum[i] + Seperator + ZweiteKarte + "." + Endung;
  }
}
function MotiveMischen()
{
  // Die im Array Universum angegebenen Motive werden
  // heftigst durcheinander gemischt, damit es ein wenig
  // Abwechslung bei jedem neuen Spiel gibt.
  var temporaer = "";
  var ziel = 0;
  for ( var i=0; i<MischFaktor; i++ )
  {
   for ( var j=0; j<AnzahlMotive; j++ )
   {
    ziel = random( AnzahlMotive );
    if ( ziel != j )
    {
     temporaer = Universum[ziel];
     Universum[ziel] = Universum[j];
     Universum[j] = temporaer;
    }
   }
  }
}

function HTMLKarte (Position){
 var HTML        = '';
 HTML = HTML + '<div';
 HTML = HTML + ' id="memomargin'+Position+'"';
 HTML = HTML + ' class="memomargin"';
 HTML = HTML + ' onClick="javascript:Klick('+Position+')"';
 HTML = HTML + ' onMouseMove="Move('+Position+')"';
 HTML = HTML + ' onMouseOver="Over('+Position+')"';
 HTML = HTML + ' onMouseOut="Out('+Position+')"';
 HTML = HTML + ' width="110"';
 HTML = HTML + ' height="110"';
 HTML = HTML + '>';
 HTML = HTML + '<img';
 HTML = HTML + ' id="memoimage'+Position+'"';
 HTML = HTML + ' class="memoimage"';
 HTML = HTML + ' name="bild'+Position+'"';
 HTML = HTML + ' width="100"';
 HTML = HTML + ' height="100"';
 HTML = HTML + ' alt=""';
 HTML = HTML + ' title=""';
 HTML = HTML + ' src="inaktiv.jpg"';
 HTML = HTML + ' />';
 HTML = HTML + '</div>';
 return( HTML);
}

// Alle Karten Auslegen auf das gesamte Feld
function KartenModellA () {
 Spalten = 6;
 Zeilen = 6;
 Paare        = (Zeilen*Spalten) / 2;
 AnzahlKarten = Paare * 2;
 var Position = 0;
 var HTML        = '';
  HTML = HTML + '<table border="0" cellpadding="0" cellspacing="2">\n';
  for ( var Zeile=0; Zeile<Zeilen; Zeile++ )
  {
   HTML = HTML + '<tr>\n';
   for ( var Spalte=0; Spalte<Spalten; Spalte++ )
   {
           Position = (Spalte+(Zeile*Spalten))+1;
           Weggeraeumt[Position]=100;
    HTML = HTML + '<td class="memocell" id="memocell'+Position+'" valign="middle" align="center">\n';
    HTML = HTML + HTMLKarte(Position);
    HTML = HTML + '</td>\n';
   }
   HTML = HTML + '</tr>\n';
  }
  HTML = HTML + '</table>\n';
 return( HTML);
}

function KartenModellB () {
 Spalten = 6;
 Zeilen = 5;
 Paare        = (Zeilen*Spalten) / 2;
 AnzahlKarten = Paare * 2;
 var Position = 0;
 var HTML        = '';
  HTML = HTML + '<table border="0" cellpadding="0" cellspacing="2">\n';
  for ( var Zeile=0; Zeile<Zeilen; Zeile++ )
  {
   HTML = HTML + '<tr>\n';
   for ( var Spalte=0; Spalte<Spalten; Spalte++ )
   {
           Position = (Spalte+(Zeile*Spalten))+1;
           Weggeraeumt[Position]=100;
    HTML = HTML + '<td class="memocell" id="memocell'+Position+'" valign="middle" align="center">\n';
    HTML = HTML + HTMLKarte(Position);
    HTML = HTML + '</td>\n';
   }
   HTML = HTML + '</tr>\n';
  }
  HTML = HTML + '</table>\n';
 return( HTML);
}

function setModell(type) {
MeldeStatus("Moment, ich ändere das Karten-Modell ...");
        KartenModellTyp = type;
        SpielStand = 0;
        KartenLegen();
        Init();
}

// Alle Karten Auslegen auf das gesamte Feld
function KartenModellC () {
 Spalten = 5;
 Zeilen = 4;
 Paare        = (Zeilen*Spalten) / 2;
 AnzahlKarten = Paare * 2;
 var Position = 0;
 var HTML        = '';
  HTML = HTML + '<table border="0" cellpadding="0" cellspacing="2">\n';
  for ( var Zeile=0; Zeile<Zeilen; Zeile++ )
  {
   HTML = HTML + '<tr>\n';
   for ( var Spalte=0; Spalte<Spalten; Spalte++ )
   {
           Position = (Spalte+(Zeile*Spalten))+1;
           Weggeraeumt[Position]=100;
    HTML = HTML + '<td class="memocell" id="memocell'+Position+'" valign="middle" align="center">\n';
    HTML = HTML + HTMLKarte(Position);
    HTML = HTML + '</td>\n';
   }
   HTML = HTML + '</tr>\n';
  }
  HTML = HTML + '</table>\n';
 return( HTML);
}


// Alle Karten Auslegen auf das gesamte Feld
function KartenModellierung () {
 Spalten = 6;
 Zeilen = 6;

 var Position = 0;
 var Position2 = 0;
 var MatrixZeile = '';
 var MatrixZeichen = '';
 var HTML        = '';
 var HTML2        = '';
  HTML = HTML + '<table border="0" cellpadding="0" cellspacing="2">\n';
  for ( var Zeile=0; Zeile<Zeilen; Zeile++ )
  {
   MatrixZeile = Matrix[Zeile];
   HTML = HTML + '<tr>\n';
   HTML2 = HTML2 + '<br>';
   for ( var Spalte=0; Spalte<Spalten; Spalte++ )
   {
           MatrixZeichen = MatrixZeile.charAt(Spalte);
           Position = (Spalte+(Zeile*Spalten))+1;
           if ( MatrixZeichen == '+' )
    {
            Position2 = Position2 +1;
           Weggeraeumt[Position2]=100;
    HTML = HTML + '<td class="memocell" id="memocell'+Position2+'" valign="middle" align="center">\n';
    HTML = HTML + HTMLKarte(Position2);
    HTML = HTML + '</td>\n';
    }
  else
    {
    HTML = HTML + '<td class="memonocell" valign="middle" align="center">\n';
    HTML = HTML + '&nbsp';
    HTML = HTML + '</td>\n';
  }
   }
   HTML = HTML + '</tr>\n';
  }
  HTML = HTML + '</table>\n';
 Paare        = Position2 / 2;
 AnzahlKarten = Position2;


 return( HTML);
}


function KartenLegen()
{


  var HTML = '';
  if ( KartenModellTyp == 'A' ) {
          Matrix = new Array (
   '++++++',
   '++++++',
   '++++++',
   '++++++',
   '++++++',
   '++++++'
   ); HTML = KartenModellierung();
  }
  if ( KartenModellTyp == 'B' ) {
          Matrix = new Array (
   '++++++',
   '++++++',
   '++++++',
   '++++++',
   '++++++',
   '------'
   ); HTML = KartenModellierung();
  }

  if ( KartenModellTyp == 'C' ) {HTML = KartenModellC();}

  if ( KartenModellTyp == 'D' ) {
          Matrix = new Array (
   '--++--',
   '-++++-',
   '++++++',
   '++++++',
   '-++++-',
   '--++--'
   ); HTML = KartenModellierung();
  }

  if ( KartenModellTyp == 'E' ) {
          Matrix = new Array (
   '--++--',
   '--++--',
   '++++++',
   '++++++',
   '--++--',
   '--++--'
   ); HTML = KartenModellierung();
  }

  if ( KartenModellTyp == 'F' ) {
          Matrix = new Array (
   '++--++',
   '++++++',
   '-++++-',
   '-++++-',
   '++++++',
   '++--++'
   ); HTML = KartenModellierung();
  }

  if ( KartenModellTyp == 'G' ) {
          Matrix = new Array (
   '++++++',
   '++++++',
   '++--++',
   '++--++',
   '++++++',
   '++++++'
   ); HTML = KartenModellierung();
  }

  var container = document.getElementById('memotable');
  if( container )
  {
          container.innerHTML = HTML;
  } else
  {
          document.write( HTML )
  }


}


function KartenMischen()
{
  // Das Array Bilder wird komplett durcheinander gemischt,
  // damit duerften die Paerchen etwas verstreut sein
  var temporaer = "";
  var ziel = 0;
  var zuletztaktiv = 0;
  for ( var i=0; i<MischFaktor; i++ )
  {
   for ( var j=0; j<AnzahlKarten; j++ )
   {
    ziel = random( AnzahlKarten );
    if ( ziel != j )
    {
     if ( zuletztaktiv > 0 )
     {
      SetzeBild(zuletztaktiv, Rueckseite.src);
     }
     SetzeBild(ziel+1, AktiveRueckseite.src);


     zuletztaktiv = ziel+1;
     temporaer = Bilder[ziel+1].src;
     Bilder[ziel+1].src = Bilder[j+1].src;
     Bilder[j+1].src = temporaer;
    }
   }
  }
  if ( zuletztaktiv > 0 )
  {
   SetzeBild(zuletztaktiv, Rueckseite.src);
  }
}

function BilderInitialisieren() {

 for (i=1; i<=AnzahlKarten; i++)
 {
   Bilder[i] = new Image();
 }
}

function MeldeStatus(text) {
  var container = document.getElementById('memostatus');
  if( container )
  {
  container.innerHTML = text;
  }


}

function BilderNavigation()
{
  var  x=0;
  var  bild='';
  var  link='';
  var  title='';
  for ( var i=0; i<AnzahlMotive; i++ )
  {
   bild= '../' + Universum[i] + '_1.gif' ;
   link= KarteTextLink[i] ;
   title= TitleText[i] ;



   document.write('<div class="navigation_image">');
   document.write('<a href="' + link + '" title="'+ title + '">');
   document.write('<img src="' + bild + '" border=0">');
   document.write('</a>');
   document.write('</div>');
  }
}


function BilderVorladen()
{
  var  x=0;
  var  title='';
  MeldeStatus("Ich muss erst einmal all die Bilder laden ...");


  for ( var i=0; i<AnzahlMotive; i++ )
  {
document.write( '<div class="card_preview">' );
  document.write( '<div class="card_preview_inner">' );


  x = i+1;
   title= Universum[i];
   if ( x <= TitleText.length  )
   {
    title = TitleText[i];
   }
   document.write( '<div class="card_title">' );
   document.write( '<a href="' +KarteTextDir+ KarteTextLink[i] +'">' );
   // document.write(  x + ') ' );
   document.write( title );
   document.write( '</a>' );
   document.write( '</div>' );
   document.write( '<div class="card_images">' );
   document.write( '<a href="' +KarteTextDir + KarteTextLink[i] +'">' );


   for ( var a=1; a<=2; a++ )
   {
        document.write( '<img src="'+ KarteDir + Universum[i] + Seperator );
    if ( a <= 2 ) document.write( a);
    if ( a == 3 ) document.write( 'text' );
    document.write( '.' + Endung +'"' );
    // document.write( ' width=100 height=100' );
    document.write( ' border=0' );
    document.write( '>'  );
   }
   document.write( '</a>' );
   document.write( '</div>');
   document.write( '</div>');
   document.write( '</div>');
  }
  document.write( '<div>&nbsp;</div>');

}
// Zufallsgenerator von
// Paul Houle
// Department of Physics,  Cornell University
today=new Date();
jran=today.getTime();
function rnd()
{
 ia=9301;
 ic=49297;
 im=233280;
 jran = (jran*ia+ic) % im;
 return jran/(im*1.0);
}
function random(number) {
 return Math.floor(rnd()*number);
}




BilderInitialisieren();
