// Das beruehmte 8-Damen-Problem.
// Wer es loest, gewinnt 1 Eimer Farbe
// und darf mir beim Tuerstreichen helfen.

white="Weiss";
black="Schwarz";

white_tmp=new Image;
black_tmp=new Image;
white_tmp.src="Weiss_schwindet.gif";
black_tmp.src="Schwarz_schwindet.gif";

function unload(picname)
{
	var pic = eval(picname);
	if (pic.complete == true) 
	{
		pic.src = null;
	}
	else
	{
		setTimeout("unload(\"" + picname + "\")", 500);
	}
}

unload("white_tmp");
unload("black_tmp");

function field_color(i,j)
{
	if(((i+j)%2)==0) { return(white) }
	else { return(black) }
}

function src(i,j,str)
{
	if (str) { return(field_color(i,j)+'_'+str+'.gif') }
	else { return(field_color(i,j)+'.gif') }
}

chessboard=[	[false, false, false, false, false, false, false, false],
		[false, false, false, false, false, false, false, false],
		[false, false, false, false, false, false, false, false],
		[false, false, false, false, false, false, false, false],
		[false, false, false, false, false, false, false, false],
		[false, false, false, false, false, false, false, false],
		[false, false, false, false, false, false, false, false],
		[false, false, false, false, false, false, false, false] ]

queensPool=new Array();


function setQueen(i,j)
{
	document.images['f'+i+j].src=field_color(i,j)+'_Rubbelgroschen.gif';
}

function removeQueen(i,j)
{
	document.images['f'+i+j].src=field_color(i,j)+'_schwindet.gif';
	setTimeout('noQueen('+i+','+j+')',800);
}

function noQueen(i,j)
{
	if (chessboard[i][j]==false) 
		document.images['f'+i+j].src=field_color(i,j)+'.gif';
}

function set(i,j)
{
	window.focus();
	set1(i,j);
}

function set1(i,j)
{
	chessboard[i][j] = !chessboard[i][j];
	if (chessboard[i][j]==false)
	{ 
		removeQueen (i,j);
		removeFromQueensPool(i,j);
	}
	else 
	{ 
		setQueen(i,j) ;
		var delstr='';
		for(var k=0;k<queensPool.length;k++)
		{
			delstr += queenKillsQueen(i,j,queensPool[k]);
		}
		addToQueensPool(i,j);
		eval (delstr);
	};
}

function addToQueensPool(i,j)
{
	queensPool[queensPool.length]='f'+i+j;
}

function removeFromQueensPool(i,j)
{
	var f='f'+i+j;
	var d=0;
	for (var i=0;i<queensPool.length;i++)
	{
		if(f==queensPool[i]){ d=i; }
	}
	for (var i=d;i<queensPool.length-1;i++)
	{
		queensPool[i]=queensPool[i+1];
	}
	queensPool.length--;
}

function queenKillsQueen(x1, y1, f2)
{
	var x2=f2.substr(1,1);
	var y2=f2.substr(2,1);
	if (x1==x2 || y1==y2 || Math.abs(x1-x2)==Math.abs(y1-y2))
	{ 
		return('set1('+x2+','+y2+');') 
	}
	else
	{ 
		return('') 
	}
}
