var blang = true;

piece_images = new Array (17);
for (var i=0; i < 17; i++)
	piece_images [i] = new Image ();
piece_images [0].src = "images/empty.gif";

piece_images [1].src = "images/white_pawn.gif";
piece_images [2].src = "images/white_knight.gif";
piece_images [3].src = "images/white_bishop.gif";
piece_images [4].src = "images/white_rook.gif";
piece_images [5].src = "images/white_queen.gif";
piece_images [6].src = "images/white_king.gif";

piece_images [10].src = "images/gen_rarrow.gif";

piece_images [11].src = "images/black_pawn.gif";
piece_images [12].src = "images/black_knight.gif";
piece_images [13].src = "images/black_bishop.gif";
piece_images [14].src = "images/black_rook.gif";
piece_images [15].src = "images/black_queen.gif";
piece_images [16].src = "images/black_king.gif";

spezimages = new Array (8);
for (var i = 0; i < 8; i++)
	spezimages [i] = new Image ();
spezimages [1].src = "images/enpassanton.gif"; 
spezimages [2].src = "images/enpassantoff.gif"; 
spezimages [4].src = "images/rochadeon.gif"; 
spezimages [5].src = "images/rochadeoff.gif";
spezimages [6].src = "images/rochadeon.gif";
spezimages [7].src = "images/rochadeoff.gif";

var piecestat = new Array (1,1,1,1,1,1,1);
var spezstat = new Array (0,-1,-1,-1,1,-1,1);
var pieceindex = new Array (1,65,68,71,74,77,80,83);
var actpiece = 1;

var brettstat = new Array (64);
for (var i = 0; i < 64; i++)
	brettstat [i] = 0;

function setlang (par)
{
	blang = par;
}

function showhelp ()
{
	var win = openwin (3, 'help');
	win.location = blang? "../helpsys/generator_put_help_ge.html":"../helpsys/generator_put_help_en.html";	
}

function eraseall ()
{
	for (var i = 0; i < 64; i++)
	{	
		brettstat [i] = 0;
		document.images [i+1].src = piece_images [0].src;
	}
}

function bc (code)
{
	if (actpiece == 7)
	{
		brettstat [code] = 0;  
		document.images [code + 1].src = piece_images [0].src;
		return;
	}
	 
	brettstat [code] = piecestat [ actpiece ] < 0? 20 : 10;
	brettstat [code] += actpiece;
	document.images [code + 1].src = piece_images [brettstat [code] - 10].src;
	brettstat [code] += spezstat [actpiece] < 0 ? 0:100; 
}

function change_Piecestat ()
{	
	for (var i = 1; i < 7; i++)
	{
		piecestat [i] *= -1;
		document.images [pieceindex [i] + 1].src = piece_images [ 5 + i - piecestat [i] * 5].src;
	}
}

function change_piecefocus (cc)
{
	document.images [pieceindex [actpiece]].src = piece_images [0].src;
	document.images [pieceindex [cc]].src = piece_images [10].src;
	actpiece = cc;
}

function change_spez (cc)
{
	spezstat [cc] *= -1;	
	document.images [pieceindex [cc] + 2].src = spezimages [ (cc + 0.5) + spezstat [cc] * (-0.5)].src;
	if ((cc == 1) && (spezstat [1] == -1))
		status = blang? "En passant aus":"En passant off";
	if ((cc == 1) && (spezstat [1] == 1))
		status = blang? "En passant an":"En passant on";
	if ((cc == 4) && (spezstat [4] == -1))
		status = blang? "Rochade für Turm aus":"Casteling for rook off"; 
	if ((cc == 4) && (spezstat [4] == 1))
		status = blang? "Rochade für Turm an":"Casteling for rook on";
	if ((cc == 6) && (spezstat [6] == -1))
		status = blang? "Rochade für König aus":"Casteling for king off";
	if ((cc == 6) && (spezstat [6] == 1))
		status = blang? "Rochade für König an":"Casteling for king on";
	change_piecefocus (cc);
	setTimeout ("status = ''", 3000);
}

function addvariant () {
	document.setzen.position.value = "";
	//Position abspeichern
	for (var i = 0; i < 64; i++) {
		document.setzen.position.value += brettstat [i];
		if (i != 63)
			document.setzen.position.value += ";";
	}

	if (blang)
		open ("probmove_ge.html", "bewegen", "width=600,height=500,status=yes");	
	else
		open ("probmove_en.html", "bewegen", "width=600,height=500,status=yes");
}

function sub () {
	alert (blang? "Ihre Varianten werden jetzt auf ihre Gültigkeit überprüft ...":
		"Your variants will be tested if they're valid ...");
	var erg = true;
	
	document.setzen.position.value = "";
	//Position abspeichern
	for (var i = 0; i < 64; i++) {
		document.setzen.position.value += brettstat [i];
		if (i != 63)
			document.setzen.position.value += ";";
	}

	//andere Variablen
	var de = parseInt (document.setzen.deep.options [document.setzen.deep.selectedIndex].value);
	var col;

	if (document.setzen.color.options [document.setzen.color.selectedIndex].value == "Weiss")
		col = 1;
	else
		col = 2;

	var parsedvariant = document.setzen.variants.value.split ("\n");

	for (var it = 0; it < (parsedvariant.length - 1); it++) {
		parsedvariant [it] = parsedvariant [it].substr (0, parsedvariant [it].length - 1);

		if (!document.applets [0].solve (de, col, document.setzen.position.value, parsedvariant [it]))
		{
			erg = false;
			alert ((blang? "Variante ":"Variant ") + (it + 1) + (blang? " ist fehlerhaft":" contains mistakes"));
		} else {
			alert ((blang? "Variante ":"Variant ") + (it + 1) + (blang? " ist korrekt":" is correct"));
		}
	}

	if (erg == false) {
		alert (blang? "Ihre Varianten sind fehlerhaft. Überprüfen Sie bitte, ob \n - Alle Varianten in der Angegebenen Tiefe mit Matt enden \n - Alle ihre Züge den Schachregeln entsprechen (kein en passant und Rochade erlaubt)":
			"Your variant's contains errors. Please check if \n - all variants ends in the right deep\n - All moves are valid (En passant and casteling are not avaiable)");
		return;
	}

	alert (blang? "Alle Varianten sind korrekt. Ihr Problem wird jetzt eingeschickt":
		"All variants are correct. Your problem will be posted now");
		
	if (document.setzen.author.value == "") {
		alert (blang? "Bitte geben Sie einen Namen in das Feld 'Eingesand durch' ein":"Please enter a name into the field 'send by'");
		return;
	}
	document.setzen.hid_deep.value = de;
	document.setzen.hid_color.value = col;

	var newvariants = parsedvariant.join ("||");
	if (newvariants.substr (newvariants.length - 3, 2) == "||")
		newvariants = newvariants.substr (0, newvariants.lenght - 2);

	document.setzen.variants.value = newvariants;
	document.setzen.submit ();
}

