/*************************************************
puzzle 15, ©Copyright 2006 - bezumie.com, All Rights Reserved
ïúçåë 15, ©Copyright 2006 - bezumie.com, Âñè÷êè ïðàâà çàïàçåíè
**************************************************/
function xy2el(x, y){
	var p = board[x][y];
	return document.getElementById('p' + p);
}

var slideEl = new Array();
var deltaX;
var deltaY;
var isGameOver = false;

function clickme(el){
	if (isGameOver) return;
	if (slideEl.length > 0) return;
	var n = parseInt(el.id.substr(1, 2));
	for (var i = 0; i < boardh; i++){
		for (var j = 0; j < boardw; j++){
			if (board[i][j] == n) {
				var x = i;
				var y = j;
				break;
			}
		}
	}
	var dx=0;
	var dy=0;
	if ((emptyX == x) && (emptyY < y)){
		dx = -tilesize;
		for (var i = emptyY + 1; i <= y; i++){
			var obj = xy2el(x, i);
			slideEl.push(obj);
			board[x][i-1] = board[x][i];
		}
	}
	else if ((emptyX == x) && (emptyY > y)){
		dx = tilesize;
		for (var i = emptyY - 1; i >= y; i--){
			var obj = xy2el(x, i);
			slideEl.push(obj);
			board[x][i + 1] = board[x][i];
		}
	}
	else if ((emptyY == y) && (emptyX < x)){
		dy = -tilesize;
		for (var i = emptyX + 1; i <= x; i++){
			var obj = xy2el(i, y);
			slideEl.push(obj);
			board[i - 1][y] = board[i][y];
		}
	}
	else if ((emptyY == y) && (emptyX > x)){
		dy = tilesize;
		for (var i = emptyX - 1; i >= x; i--){
			var obj = xy2el(i, y);
			slideEl.push(obj);
			board[i + 1][y] = board[i][y];
		}
	}
	else return ;
	emptyX = x;
	emptyY = y;
	board[x][y] = 0;
	deltaX = dx / 5;
	deltaY = dy / 5;
	moveit(5);
}

function moveit(step){
	for (var i = 0; i < slideEl.length; i++){
		slideEl[i].style.left = parseFloat(slideEl[i].style.left) + deltaX + 'px';
		slideEl[i].style.top = parseFloat(slideEl[i].style.top) + deltaY + 'px';
	}
	step--;
	if (step > 0) setTimeout('moveit(' + step +')', 20);
	else {
		slideEl = new Array();
		if (checkIt()) gameOver();
	}
}

function checkIt(){
	var p = 1;
	for (var i = 0; i < boardh; i++){
		for (var j = 0; j < boardw; j++){
			if (board[i][j] != p) return false;
			p++;
			if (p==boardw*boardh) p = 0;
		}
	}
	return true;
}

function gameOver(){
	isGameOver = true;
	document.getElementById('gameOver').style.display = 'block';
}