/*  Urheberrecht für dieses Skript: Maximilian Eberl, max@derdickemax.de    */

var auf=0;			    // Anzahl der offenen Karten
var ersteauf=0;			// Bildnummer der ersten aufgedeckten Karte
var zweiteauf=0;		// Bildnummer der zweiten aufgedeckten Karte
var versuche=0;
var treffer=0;
var firstImageIndex = 10;

leer = new Array(16);
for (w=0;w<=15;w++)
{
    leer[w]=false;		// d.h. alle Karten liegen zu Anfang och da
};

/*     Diese Funktion generiert bei jedem Aufruf eine Pseudozufallszahl zwischen 1 und 8      */
/*     Sie wird von den anderen Funktionen mehrfach aufgerufen.                               */
function zufall()
{
    x1=Math.random();
    x2=((x1*100)+1);
    x3=parseInt(x2);
    x4=x3 % 16;
    x5=x4+1;
    return(x5);
}

/*     Diese Funktion produziert eine Reihe aus 16 Zufallszahlen zwischen 1 und 16,           */
/*     in der keine Zahl zweimal vorkommt.                                                    */
function machreihe()
{
    reihe = new Array(16);        //  Die Reihe wird initialisiert, alle Werte auf null gesetzt;

    for ( s=0;s<=15;s++ )
	    {reihe[s]=0};

    y=zufall();               //  Die erste Zahl der Reihe wird 'gezogen'
    reihe[0]=y;

    for ( t=1;t<=15;t++ )
	    {
		    y=zufall();
		    vorkommen=0;
		    for ( u=0;u<=15;u++ )
			    {
			    if ( reihe[u]==y ) vorkommen++;
			    }
		    ;
		    if (vorkommen!=0)
		    {reihe[t]=0;t--}                // ein bisschen brutal, ich weiss - aber es funktioniert
		    else
		    reihe[t]=y;
	    };
    return(reihe);
}

/*     Jetzt wird die Funktion machreihe() aufgerufen                                         */

r = new Array(16);
r = machreihe();

/*     Jede Zahl der Reihe wird in eine einzelne Platzhaltervariable geschrieben              */

p0=r[0]-1;
p1=r[1]-1;
p2=r[2]-1;
p3=r[3]-1;
p4=r[4]-1;
p5=r[5]-1;
p6=r[6]-1;
p7=r[7]-1;
p8=r[8]-1;
p9=r[9]-1;
p10=r[10]-1;
p11=r[11]-1;
p12=r[12]-1;
p13=r[13]-1;
p14=r[14]-1;
p15=r[15]-1;

/*    d.h. die Platzhalter sind jetzt entsprechend der Zufallsreihe gemischt.                 */

bild=new Array(16);

/*    nun werden die Kartenbilder entsprechend der Zufallsreihe nacheinander eingelesen,      */
/*    jede genau zwei mal.                                                                    */

bild[p0]=new Image();
bild[p0].src='Image/a1.jpg';
bild[p1]=new Image();
bild[p1].src='Image/a1.jpg';
bild[p2]=new Image();
bild[p2].src='Image/a2.jpg';
bild[p3]=new Image();
bild[p3].src='Image/a2.jpg';
bild[p4]=new Image();
bild[p4].src='Image/a3.jpg';
bild[p5]=new Image();
bild[p5].src='Image/a3.jpg';
bild[p6]=new Image();
bild[p6].src='Image/a4.jpg';
bild[p7]=new Image();
bild[p7].src='Image/a4.jpg';
bild[p8]=new Image();
bild[p8].src='Image/a5.jpg';
bild[p9]=new Image();
bild[p9].src='Image/a5.jpg';
bild[p10]=new Image();
bild[p10].src='Image/a6.jpg';
bild[p11]=new Image();
bild[p11].src='Image/a6.jpg';
bild[p12]=new Image();
bild[p12].src='Image/a7.jpg';
bild[p13]=new Image();
bild[p13].src='Image/a7.jpg';
bild[p14]=new Image();
bild[p14].src='Image/a8.jpg';
bild[p15]=new Image();
bild[p15].src='Image/a8.jpg';

function aufdecken(nummer)
{
	switch(leer[nummer])
	{
	case false:				// d.h. da liegt eine Karte
		switch(auf)			// Beginn switch
				{
				case 0:         // d.h. es ist die erste aufgedeckte Karte
					ersteauf=nummer;
					window.document.images[nummer+firstImageIndex].src=bild[nummer].src;
					auf=auf+1;
					break;
				case 1:		// d.h. es ist die zweite aufgedeckte Karte
					zweiteauf=nummer;
						if ( zweiteauf==ersteauf )
							{
							alert("You already clicked on this card once before.");
							}
						else
							{
							window.document.images[nummer+firstImageIndex].src=bild[nummer].src;
							auf=auf+1;
							versuche=versuche+=1;
							window.document.body.style.cursor = "wait";
							setTimeout("pruefen()",1500);
							window.document.body.style.cursor = "default";
							};
					break;
				case 2:
					alert("Too many cards have been turned over.");
					break;
				default:
					alert("Sorry, error message!");
					break;
				}						//  Ende Switch-auf
		break;
	case true:
		alert("There's no card left here.");
		break;
	default:
		alert("Sorry, error message!");
		break;
	}  								// Ende switch-leer

} // Ende der Funktion 'aufdecken'


function pruefen()            // Haben beide Karten die gleiche Quelldatei ?
{
if ( window.document.images[ersteauf+firstImageIndex].src == window.document.images[zweiteauf+firstImageIndex].src )
	{
	treffer=treffer + 1;
	if ( treffer==8) 
		{
		alert("You have tried " + versuche + " times.");
		//window.document.open();
		//window.document.write("<center><br><br><br>");
		//window.document.write("<form><input type='button' value='Would you like to play again?' onClick='history.back()'></form><BR><BR>");
		//window.document.write("</center>")
		//window.document.close();
		}
	window.document.images[ersteauf+firstImageIndex].src="Image/leer.gif";
	window.document.images[zweiteauf+firstImageIndex].src="Image/leer.gif";
	leer[ersteauf]=true;
	leer[zweiteauf]=true;
	auf=0;
	}
else
	{
	window.document.images[ersteauf+firstImageIndex].src="Image/a0.jpg";
	window.document.images[zweiteauf+firstImageIndex].src="Image/a0.jpg";
	leer[ersteauf]=false;
	leer[zweiteauf]=false;
	auf=0;
	}
} // Ende der Funktion 'pruefen'
