function openChessboard(form, field, fieldNull) {
	window.open("/chessboard/chessboard.php", "chessboard", "width=535,height=460,status=yes","FENout");
	dataField = eval("document." + form + "." + field);
	if (fieldNull != '') {
 		dataFieldNull = eval("document." + form + "." + fieldNull);
	}
}	

function closeChessboard() {
	if (typeof(window.opener) != 'undefined') {
		window.opener.dataField.value = createFEN();
		if (typeof(window.opener.dataFieldNull) != 'undefined') {
			window.opener.dataFieldNull.checked = false;
		}
	}
	window.returnValue = createFEN();
	window.close();
}


var chessPieces;
var chessBoard;

function initChessboard() {
	chessPieces=new Array(); 
	chessPieces[0] = new Array("None", "","Empty");
	chessPieces[1] = new Array("K", "/chessset/white_king.gif","White");
	chessPieces[2] = new Array("Q", "/chessset/white_queen.gif","White");
	chessPieces[3] = new Array("R", "/chessset/white_rook.gif","White");
	chessPieces[4] = new Array("B", "/chessset/white_bishop.gif","White");
	chessPieces[5] = new Array("N", "/chessset/white_knight.gif","White");
	chessPieces[6] = new Array("P", "/chessset/white_pawn.gif","White");
	chessPieces[7] = new Array("k", "/chessset/black_king.gif","Black");
	chessPieces[8] = new Array("q", "/chessset/black_queen.gif","Black");
	chessPieces[9] = new Array("r", "/chessset/black_rook.gif","Black");
	chessPieces[10] = new Array("b", "/chessset/black_bishop.gif","Black");
	chessPieces[11] = new Array("n", "/chessset/black_knight.gif","Black");
	chessPieces[12] = new Array("p", "/chessset/black_pawn.gif","Black");
	BrikValgt = chessPieces[0][0];
	
	cnt = document.getElementById("chessboard_data");
	cnt.innerHTML = createChessboard();

	chessBoard=new Array(); 
	emptyChessboard();
	
	cnt = document.getElementById("chessboard_data");
	cnt.innerHTML = createChessboard();
	
	cnt = document.getElementById("chessset_data");
	cnt.innerHTML = createChessSet();
}

function emptyChessboard() {
	for (row = 1; row <= 8; row++) {
		chessBoard[row]=new Array(); 
		for (column = 1; column <= 8; column++) {
			chessBoard[row][column] = chessPieces[0][0]; 

			cnt = document.getElementById("field_" + koordinatTilNotationKoordinat(row, column));
			cnt.innerHTML = '';
		}
	}
	
	cnt = document.getElementById("chessset_FEN");
	cnt.value = createFEN();
}	

function createChessboard() {
	str = '<table border="0" cellspacing="0" cellpadding="0">';
	for (row = 8; row > 0; row--) {
		str += '<tr height="45">';
		str += '<td>' + row + '&nbsp;</td>';
		for (column = 1; column < 9; column++) {
			str += '<td width="45" id="field_' + koordinatTilNotationKoordinat(row, column) + '" onclick="placerBrik(';
			str += "'" + koordinatTilNotationKoordinat(row, column) + "'";
			str += ');return false" ';
			if ( ((row + column) % 2) == 1) {
				str += 'background="/chessset/whiteField.gif"></td>';
			} else {
				str += 'background="/chessset/blackField.gif"></td>';
			}
		}
	}
	str += '</tr> <tr><td>&nbsp;</td>';
	for (column = 1; column < 9; column++) {
		str += '<td width="45"><div align="center">' + String.fromCharCode(64 + column) + '</div></td>';
	}
	str += '</tr>';
	str += '</table>';
	return str;
}	

function createChessSet() {
	str = '<table border="0" cellspacing="1" cellpadding="0">';
	for (row = 1; row < 7; row++) {
		str += '<tr height="45">';
		for (column = 1; column < 3; column++) {
			idx = row + 6 * column - 6;
			piece = chessPieces[idx];
			str += '<td width="45" id="' + createPieceId(idx) + '" class="IkkeValgtBrik"> ';
			str += '<img src="' + chessPieces[idx][1] + '" height="45" width="45" border="0" onclick="valgBrik(';
			str += "'" + chessPieces[idx][0] + "'";
			str += ');return false">';
			str += '</td> ';
		}
	}
	str += '</tr><tr height="45">';
	str += '<td width="45" id="' + createPieceId(0) + '" class="ValgtBrik" onclick="valgBrik(';
	str += "'" + chessPieces[0][0] + "'";
	str += ');return false"> &nbsp; ';
	str += '</td> ';
	
	str += '<td width="45"> ';
	str += '</td> ';
	str += '</tr>';
	str += '</table>';
	return str;
}	

function createPieceId(idx) {
	return 'piece_' + chessPieces[idx][2] + '_' + chessPieces[idx][0];
}

function notationTilKoordinat(Felt) {
	var koordinat = new Object();
	koordinat.row = Felt.charAt(1);
	koordinat.column = Felt.charCodeAt(0) - 64;
	return koordinat;
}

function koordinatTilNotationKoordinat(row, column) {
	return String.fromCharCode(64 + column) + row;
}

function createFEN() {
	function FENlinie(Linie) {
		LStr = '';
		Blanks = 0;
		for (idx = 1; idx <= 8; idx++) {
			if (Linie[idx] == 'None') {
				Blanks += 1;
			} else {
				if (Blanks > 0) {
					LStr += Blanks;
					Blanks = 0;
				}
				LStr += Linie[idx];
			}
		}
		if (Blanks > 0) {
			LStr += Blanks;
			Blanks = 0;
		}
		return LStr;
	}
	str = '';
	for (row = 8; row >=1; row--) {
		str += FENlinie(chessBoard[row]) 
		if (row > 1) {
			str += '/';
		}
	}
	LinkJPGtxt = '/chessset/diagram.php?FEN=' + str;
	return str;
}	

function valgBrik(Brik) {
	BrikValgt = Brik;
	
	for (idx = 0; idx < 13; idx++) {
		pieceId = createPieceId(idx);
		cnt = document.getElementById(pieceId);
		if (chessPieces[idx][0] == Brik) {
			cnt.className = "ValgtBrik";
		} else {
			cnt.className = "IkkeValgtBrik";
		}
	}
	
	return true;
}	

function placerBrik(Felt) {
	var koordinat = notationTilKoordinat(Felt);
	chessBoard[koordinat.row][koordinat.column] = BrikValgt; 
	
	if (BrikValgt == 'None') {
		cnt = document.getElementById("field_" + Felt);
		cnt.innerHTML = '';
	} else {
		for (i = 1; i <= 12; i++) {
			if (chessPieces[i][0] == BrikValgt) {
				img = '<IMG id="field_' + Felt + '" onclick="placerBrik(';
				img += "'" + Felt + "'";
				img += ');return false" border=0 src="' + chessPieces[i][1] + '" width=45 height=45>';
				i = 13;
			}
		}
		cnt = document.getElementById("field_" + Felt);
		cnt.innerHTML = img;
	}

	cnt = document.getElementById("chessset_F");

	cnt = document.getElementById("chessset_FEN");
	cnt.value = createFEN();

	return true;
}
