var Spielfeld = new Array();
var i,j;
var O,L;
var blah,Funktion;
var Zaehler;
var fertig = 1;
var Feld = [3,3];
var gewonnen;
var Bilder = new Array();

for (i = 0; i < 5; i++)
{
	Bilder[i] = new Array();
	for (Zaehler = 0; Zaehler < 17; Zaehler++)
	{
		Bilder[i][Zaehler] = new Image;
		Bilder[i][Zaehler].src = './schiebepuzzle/' + i + '/' + (Zaehler + 1) + '.JPG';
	}
}

function mischen()
{
	for (i = 0; i < 4; i++)
	{
		for (j = 0; j < 4; j++)
		{
			if (Spielfeld[i][j] == 'T33')
			{
				Feld[0] = i;
				Feld[1] = j;
			}
		}
	}
	var dasselbe;
	for (Zaehler = 0; Zaehler < 100; Zaehler++)
	{
		blah = Math.random();
		if ((dasselbe != 1) && (blah < 1/4) && (Feld[0] < 3))
		{
			Spielfeld[(Feld[0])][(Feld[1])] = Spielfeld[(Feld[0] + 1)][(Feld[1])];
			Spielfeld[(Feld[0] + 1)][(Feld[1])] = 'T33';
			Feld[0]++;
			dasselbe = 0;
		}
		else if ((dasselbe != 0) && (blah < 1/2) && (Feld[0] > 0))
		{
			Spielfeld[(Feld[0])][(Feld[1])] = Spielfeld[(Feld[0] - 1)][(Feld[1])];
			Spielfeld[(Feld[0] - 1)][(Feld[1])] = 'T33';
			Feld[0]--;
			dasselbe = 1;
		}
		else if ((dasselbe != 3) && (blah < 3/4) && (Feld[1] < 3))
		{
			Spielfeld[(Feld[0])][(Feld[1])] = Spielfeld[(Feld[0])][(Feld[1] + 1)];
			Spielfeld[(Feld[0])][(Feld[1] + 1)] = 'T33';
			Feld[1]++;
			dasselbe = 2;
		}
		else if ((dasselbe != 2) && (Feld[1] > 0))
		{
			Spielfeld[(Feld[0])][(Feld[1])] = Spielfeld[(Feld[0])][(Feld[1] - 1)];
			Spielfeld[(Feld[0])][(Feld[1] - 1)] = 'T33';
			Feld[1]--;
			dasselbe = 3;
		}
		else continue;
	}
	for (i = 0; i < 4; i++)
	{
		for (j = 0; j < 4; j++)
		{
			window.document.getElementById(Spielfeld[i][j]).style.top = eval(i * 100) + 'px';
			window.document.getElementById(Spielfeld[i][j]).style.left = eval(j * 100) + 'px';
		}
	}
	document.getElementById('T33').style.visibility = 'hidden';
}

function ChangeTheme(Theme)
{
	for (Zaehler = 0; Zaehler < 17; Zaehler++)
		window.document.images[('T'+Zaehler)].src = Bilder[Theme][Zaehler].src;
}

function init()
{
	for (i = 0; i < 4; i++)
	{
		Spielfeld[i] = new Array();
		for (j = 0; j < 4; j++)
		{
			Spielfeld[i][j] = 'T' + i.toString() + j.toString();
		}
	}
	mischen();
}

function horizontal(ID,Richtung)
{
	if (Zaehler < 10)
	{
		if (Richtung == 'l')
			document.getElementById(ID).style.left = parseInt(document.getElementById(ID).style.left) - 10 + 'px';
		else document.getElementById(ID).style.left = parseInt(document.getElementById(ID).style.left) + 10 + 'px'
		Zaehler++;
		Funktion = "horizontal('" + ID + "','" + Richtung +"')";
		blah = setTimeout(Funktion,40);
	}
	else fertig = 1;
}
function vertikal(ID,Richtung)
{
	if (Zaehler < 10)
	{
		if (Richtung == 'u')
			document.getElementById(ID).style.top = parseInt(document.getElementById(ID).style.top) - 10 + 'px';
		else document.getElementById(ID).style.top = parseInt(document.getElementById(ID).style.top) + 10 + 'px';
		Zaehler++;
		Funktion = "vertikal('" + ID + "','" + Richtung +"')";
		blah = setTimeout(Funktion,40);
	}
	else fertig = 1;
}

function move(ID)
{
	test();
	O = parseInt(document.getElementById(ID).style.top) / 100;
	L = parseInt(document.getElementById(ID).style.left) / 100;
	Zaehler = 0;
	if ((O < 3) && (Spielfeld[O+1][L] == 'T33'))
	{
		vertikal(ID,'d');
		Spielfeld[O+1][L] = Spielfeld[O][L];
	}
	else if ((O > 0) && (Spielfeld[O-1][L] == 'T33'))
	{
		vertikal(ID,'u');
		Spielfeld[O-1][L] = Spielfeld[O][L];
	}
	else if ((L < 3) && (Spielfeld[O][L+1] == 'T33'))
	{
		horizontal(ID,'r');
		Spielfeld[O][L+1] = Spielfeld[O][L];
	}
	else if ((L > 0) && (Spielfeld[O][L-1] == 'T33'))
	{
		horizontal(ID,'l');
		Spielfeld[O][L-1] = Spielfeld[O][L];
	}
	else
	{
		fertig = 1;
		return true;
	}
	
	gewonnen = 0;
	for (i = 0; i < 4; i++)
		for (j = 0; j < 4; j++)
			if (Spielfeld[i][j] == ('T' + i + j)) gewonnen++;

	if (gewonnen == 15)
	{
		document.getElementById('T33').style.top = 300;
		document.getElementById('T33').style.left = 300;
		document.getElementById('T33').style.visibility = 'visible';
		gewonnen++;
	}

	Spielfeld[O][L] = 'T33';
	return true;
}


function test()
{
	if (gewonnen == 16)
	{		
		alert ("Herzlichen Glückwunsch! Sie haben es geschafft!", "Schiebepuzzle");
		location.reload();
	}
}
