//---------------------------------------------------------------------------
// variablen fuer das spielbrett
//---------------------------------------------------------------------------

var started = false;

var MAXCARDS = 28; // maximale anzahl der karten

var deck    = new Array(); // die 8 aus MAXCARDS im spiel
var hidden  = new Array(); // array der img-objekte fuer deck[]
var spiel   = new Array(); // das spielbrett von oben links nach rechts unten
var auf     = new Array(); // aufgedeckte karten

var rueck   = new Image();
rueck.src   = "memory/coatofarms.jpg";
var richtig = new Image();
richtig.src = "memory/found.gif";

// variablen fuer den spielablauf

var shown     = new Array(); // die beiden aufgedeckten karten

    shown[0]  = -1;          // -1 wenn keine karte aufgedeckt
var shown_cnt = -1;          // zaehler wieviel karten aufgedeckt sind
var gefunden  = 8;	         // anzahl der gefundenen paare
var	last_idx = -1;           // letzte umgedrehte karte

// array mit namen der karten erstellen
var name    = new Array();
name = [ "torsten",
         "katja", "yvonne",
         "christine","marion", "karin_s", "stefanie", "lisa", "verena", "thomas_g", "felix",
         "franziska", "daniela", "karin_b", "inge",
         "thomas_r", "simone", "gerhard", "bernd_b",
         "uwe", "gerd",
         "bernd_l", "dieter", "michael", "karlheinz",
         "otfried",
         "timo", "sebastian" ]; // (29 Musiker)

//---------------------------------------------------------------------------
// Mischeln
//---------------------------------------------------------------------------
function memory_mix()
{
    // variablen zuruecksetzen
    for(i=0;i<8;i++)
    {
      deck[i] = 0;
    };

    for(i=0;i<8;i++)
    {
	    okay = false;
	    while(!okay)
	    {
		    okay = true;
		    idx = 1+cxg_rnd(MAXCARDS);
		    for(j=0;j<i;j++)
			    if(deck[j]==idx) okay = false;
		    if(okay)
		    {
			    deck[i] = idx;
    			
			    idx_array = idx - 1;
    			
			    hidden[i] = new Image();
			    hidden[i].src = "memory/cards/"+name[idx_array]+".jpg";
		    };
	    };
    }; 	
};

//---------------------------------------------------------------------------
// BROWSERPRÜFUNG
//---------------------------------------------------------------------------
function cxg_msie()
{
	code = navigator.appName;

	return( code.indexOf("Microsoft") != -1 );
};

//---------------------------------------------------------------------------
// ZUFALLSZAHL
//---------------------------------------------------------------------------
// Gibt eine Zufallszahl zwischen 0 und max-1 zurück.
//---------------------------------------------------------------------------
function cxg_rnd( max )
{
	return( Math.floor(Math.random() * max) );
};

//---------------------------------------------------------------------------
// BILD AUSTAUSCHEN
//---------------------------------------------------------------------------
// Setzt die src eines Images-Objektes gleich eines anderen
//---------------------------------------------------------------------------
function cxg_image( welches,womit )
{
	if( document.images[welches] )
		tausch = document.images[welches];
	else
	{
		if( cxg_msie() )
		{
		}
		else
		{
			for( lala = 0; lala < document.layers.length; lala++ )
			{
				if( document.layers[lala].document.images[welches] )
					tausch = document.layers[lala].document.images[welches];
			};
		};
	};

	if( tausch != null )
		tausch.src = eval(womit).src;
};


//---------------------------------------------------------------------------
// builddeck
//---------------------------------------------------------------------------
// 8 karten heraussuchen aus gesamtbestand
//---------------------------------------------------------------------------
function builddeck()
{
};


//---------------------------------------------------------------------------
// playgame
//---------------------------------------------------------------------------
// neues spiel starten
//---------------------------------------------------------------------------
function playgame()
{
	memory_mix();
	
	// variablen zuruecksetzen
	gefunden = 0;
	shown[0]  = -1;          // -1 wenn keine karte aufgedeckt
	shown_cnt = -1;          // zaehler wieviel karten aufgedeckt sind
	last_idx = -1;

	for(i=0;i<16;i++)
	{
	  auf[i] = 0;
	  cxg_image("card"+i,"rueck");
	};

	builddeck();

	// spielbrett zuruecksetzen
	// (16 Karten) das spielbrett von oben links nach rechts unten
 	spiel = [0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7];

	// mischen
	for(i=0;i<256;i++)
	{
		a = cxg_rnd(16);
		b = cxg_rnd(16);
		
		if(a!=b && spiel[a]!=spiel[b])
		{
			tmp = spiel[a];
			spiel[a] = spiel[b];
			spiel[b] = tmp;
		};
	};
};

//---------------------------------------------------------------------------
// turn
//---------------------------------------------------------------------------
// karte umdrehen
//---------------------------------------------------------------------------
function turn( idx )
{
	if( !started )
	{
	  playgame();
	  
	  started = true;
	}
	
	if((gefunden!=8 && idx!=last_idx && auf[idx]==0) || (shown_cnt==1 && gefunden==7))
	{
    shown_cnt++;
	  shown[shown_cnt] = idx;
	  auf[idx] = -1;

	  if(shown_cnt==2 || (shown_cnt==1 && gefunden==7)) // 2 karten umgedreht
 	  {
  		if(spiel[shown[0]]!=spiel[shown[1]]) // kein paar
 			{
 				auf[shown[0]] = 0;
 				auf[shown[1]] = 0;
   			cxg_image("card"+shown[0],"rueck");
   			cxg_image("card"+shown[1],"rueck");
			}
			else // paar
			{
	 			cxg_image("card"+shown[0],"richtig");
				cxg_image("card"+shown[1],"richtig");
				spiel[shown[0]]=-1;
				spiel[shown[1]]=-1;
				gefunden++;
			} 	
 			
			shown_cnt = 0-(idx==last_idx);
   		shown[0]  = -1;
   		shown[1]  = -1;
   		shown[2]  = -1;
		};
	
		if(spiel[idx]>=0)
			cxg_image("card"+idx,"hidden["+spiel[idx]+"]");
			
		shown[shown_cnt] = idx;
	};
  
  last_idx = idx;

	if( gefunden == 8 )
	{  
		// fertig
		//open( "Default.aspx", "_self" );
		playgame();
	}
};

