/*VARDEKLARATION*/
var punkte = 0, akt = 1, itime = 0, status = 0, ztimeID, g_locked = 0, statbld = 0;
var highscorekontakt = 4000;

var F_BLD = new Array('ei_grau','ei_rot','ei_gruen','ei_blau','ei_gelb','ei_cyan','ei_vio');
var F_WRT_BLD = new Array('wert0','ffffff','000000','cccccc','ei_verdeckt','999999');
var LOES = new Array(Math.floor(Math.random() * 6) +1,Math.floor(Math.random() * 6) +1,Math.floor(Math.random() * 6) +1,Math.floor(Math.random() * 6) +1);

var ANZEI = new Array();
var F_WRT = new Array(); //Bilddateien der Farbflaechen
var FARB = new Array(); //Bilddateien der Felder der Versuche
var ANZ_STAT = new Array(); //Status der Versuchsanzeige

statbld = bldload();

function bldload(){
if(!document.images) return 0;
ANZEI[0] = new Image();
ANZEI[0].src = "/d";
ANZEI[1] = new Image();
ANZEI[1].src = "/_images/g_vor.gif";
ANZEI[2] = new Image();
ANZEI[2].src = "/osterei/_images/hinweis.gif";

for(i = 0; i <= (F_WRT_BLD.length - 1); i++){
	F_WRT[i] = new Image();
	F_WRT[i].src = "/osterei/_images/" + F_WRT_BLD[i] + ".gif";
	}

for(i = 0; i <= (F_BLD.length - 1); i++){
	FARB[i] = new Image();
	FARB[i].src = "/osterei/_images/" + F_BLD[i] + ".gif";
	}
return 1;
}


/*FUNKTIONEN*/
//function init()
function init(){
if(!statbld) {alert("Tut uns leid, aber ihr Browser ist\nfür dieses Spiel leider nicht geeignet.\n");return 0;}
var i;
if (++g_locked != 1) return;

if(ztimeID) clearTimeout(ztimeID); //Zeitschleife stoppen
anzeige("Moment - Spiel wird initialisiert");
for(i = 0; i <= 6; i++){ ANZ_STAT[i] = new Array(0,0,0,0);} //clean Array alte Versuche
for(i = 1; i <= 4; i++){ LOES[i] = Math.floor(Math.random() * 6) +1;} //Array der neuen Loesungswerte

status = 1; //Spielstatus
akt = 1; //aktueller Versuch
anz_loest(0); //clean alte Loesungsanzeige
for(i = 1; i <= 6; i++){ init_v(i,0);} //clean Bildanzeige
for(i = 2; i <= 7; i++){ bldname = "z" + i;	chbld(bldname, ANZEI[0].src);} //clean Pfeile

init_v(akt,1); //ersten Versuch kennzeichnen
itime = 0; //Startzeit nullen
ztime(); //Zeitschleife starten
anzeige("Das Spiel kann beginnen");
g_locked = 0;
}

//function bewerten()
function bewerten(fp_v,ifdemo){
if(!status && !ifdemo) return;
if(akt != fp_v){anzeige("Der " + fp_v + ". ist nicht der AKTUELLE Versuch.", 1);return true;}
if(i_setinv(akt) < 4){anzeige("Versuch: " + akt + " erst " + i_setinv(akt) + " von 4 Farbeiern ausgefüllt.", 1);return true;}

erfolg = f_wert(fp_v); //Bewertungsroutine

if(erfolg == 4){
	anz_loest(1);
	chbld("z7", ANZEI[1].src);
	status = 0;
	punkte = p_end(itime,fp_v);
	anzeige("Sie haben mit " + punkte + " Punkten gewonnen!");
	if(punkte >= highscorekontakt && confirm("Sie sind schon sehr gut!\nWir könnten eine Highscoreliste einführen?\nNachricht zur Highscoreliste?")) 
		location.href = "/kontakt/highscore_wanted";
	return true;
	}
	
if(akt > 5){
	anz_loest(1);
	status = 0;
	anzeige("Schade. Das war Ihr letzter Versuch");
	return true;
	}
akt++;
init_v(akt,1);
return false;
}

//funktion f_weiter()
function f_weiter(fp_p1,fp_p2,ifdemo){
if(!status && !ifdemo) return true;
if(fp_p1 > akt && i_setinv(akt) == 4){ bewerten(akt)}
if(fp_p1 != akt){ anzeige("Der " + fp_p1 + ". ist nicht der AKTUELLE Versuch.", 1);return true}
else{
	anzeige(akt + ". Versuch");
	bldname = "f" + fp_p1 + fp_p2;
	if(ANZ_STAT[fp_p1][fp_p2] < 6) ANZ_STAT[fp_p1][fp_p2]++;
	else ANZ_STAT[fp_p1][fp_p2] = 1;
	chbld(bldname, FARB[ANZ_STAT[fp_p1][fp_p2]].src);
	}
return false;
}



/*HILFSFUNCTIONEN*/
function ztime(){
if(!status) return;
document.anz.zeit.value = itime;
itime++;
ztimeID = setTimeout('ztime()',1000);}

function init_v(v,v_stat){
bldname = "z" + v;
(v_stat) ? chbld(bldname, ANZEI[1].src) : chbld(bldname, ANZEI[0].src);
for(var i = 1; i <= 4; i++){
	bldname = "f" + v + i;
	(v_stat) ? chbld(bldname, FARB[0].src) : chbld(bldname, F_WRT[1].src);
	bldname = "b" + v + i;
	chbld(bldname, F_WRT[5].src);}
}

//funktion anz_loest()
function anz_loest(fp_w){
var i;
for(i=1;i<=4;i++){
	bldname = "f0" + i;
	(fp_w) ? chbld(bldname, FARB[LOES[i]].src) : chbld(bldname, F_WRT[4].src);}
}

function p_end(etime,ev){
return (etime > 0) ? Math.round(Math.pow(7 - ev,2) * (1 / etime) * 10000) : 0; 
}

function chbld(docbldname, objsrc){
if(document.images[docbldname] && document.images[docbldname].src != objsrc) document.images[docbldname].src = objsrc;
}

function anzeige(txt, main){
ret = document.anz.anzeige.value; 
chbld("input", ANZEI[0].src);
document.anz.anzeige.value = txt;
if (main == 1) chbld("input", ANZEI[2].src);
return ret;
}

function i_setinv(v){
var bldname,i;
var c = 0;
for(i = 1; i <= 4; i++){
	bldname = "f" + v + i;
	if (document.images[bldname].src != FARB[0].src) c++;
	}
return c;
}

function f_wert(v){
var c_full = 0;
var ISWERTED = new Array();
ISWERTED[0] = new Array(0,0,0,0);
ISWERTED[1] = new Array(0,0,0,0);

for(i = 1; i <= 4; i++){
	if(ANZ_STAT[v][i] == LOES[i]){
		ISWERTED[1][i-1] = 2;
		ISWERTED[0][i-1] = 2;
		c_full++;}}

for(i = 1; i <= 4; i++){
	for(j = 1; j <= 4; j++){
		if(i != j && ISWERTED[1][i-1] == 0 && ISWERTED[0][j-1] == 0 && ISWERTED[1][i-1] == 0 && ANZ_STAT[v][i] == LOES[j]){
			ISWERTED[0][j-1] = 1;
			ISWERTED[1][i-1] = 1;
			break;}}}
ISWERTED[1].sort();
for(i = 1; i <= 4; i++){
	bldname = "b" + v + i;
	chbld(bldname, F_WRT[ISWERTED[1][(4-i)]].src);
	}
return c_full;
}
