var nbrOfImages=50;
var allImgs=new Array(nbrOfImages);
for (var i=0;i<nbrOfImages;i++)
	allImgs[i]='image'+(i+1)+'.gif';
var imgs=new Array();
var differentImgs;
var cols,rows;
var updateTimerID;
var hits=0;
var canClick=true;
function shuffleArray(arr){
var k;
for (i=0; i<arr.length; i++){
	k = Math.round(Math.random() * (arr.length - i - 1)) + i;
	temp = arr[i];arr[i]=arr[k];arr[k]=temp;
}
return arr;
}
function newGame(){
	if (!canClick){return;}
	hits=0;
	clearTimeout(updateTimerID);
	var highScore = GetCookie(rows+"x"+cols);
	changeDimension();
	buildPlayground();
	displayHighScore();
	allImgs=shuffleArray(allImgs);
	imgs.length=(rows*cols)/2;
	for (var i=0; i<imgs.length; i++){
		imgs[i]=allImgs[i];
	}
	differentImgs = imgs.length;
	for (var i=0; i<differentImgs; i++){
	imgs.push(imgs[i]);
	}
	imgs=shuffleArray(imgs);
	var table=document.getElementById("playground").getElementsByTagName("TBODY")[0];
	canClick=true;
	lastSrc="";
	prevImage=null;
	
	lastImgInArray=0;
	for (var i=0; i<table.childNodes.length; i++){
		var oneRow = table.childNodes[i];
		for (var j=0; j<oneRow.childNodes.length; j++){
		if (oneRow.childNodes[j].nodeType != 1)
			continue;
			var oneCell = oneRow.childNodes[j];
			while (oneCell.hasChildNodes()){
				oneCell.removeChild(oneCell.lastChild);
			}
			var img = document.createElement("IMG");
			img.style.visibility = 'hidden';
			img.src = imgs[lastImgInArray++];
			if (oneCell.addEventListener)
				oneCell.addEventListener("click",function(e){handleClick(e)},false)
			else if (oneCell.attachEvent)
				oneCell.attachEvent("onclick", function(e){handleClick(e)});
			oneCell.appendChild(img)
		}//j<oneRow.childNodes
	}//table.childNodes.length
	resetTimer();
}//function
function handleClick(e){
e = e || window.event;
var obj = e.target || e.srcElement;
	if (canClick && obj.firstChild && obj.firstChild.style.visibility=='hidden'){
		canClick=false;
		obj.firstChild.style.visibility='visible';
		if (lastSrc == ""){
			lastSrc=obj.firstChild.src;
			prevImage = obj.firstChild;
			canClick=true;
		}//
		else{
			if ((obj.firstChild.src == lastSrc) && (prevImage != obj.firstChild)){
				alert("Bingo!");
				hits++;
				window.status = "Pogodaka: "+hits+" od "+differentImgs;
				if (hits == differentImgs){
					gameOver();
					alert("Čestitam. Proteklo vrijeme: "+document.getElementById('time').value+"!");
					return;
				}
				lastSrc="";
				canClick=true;
			}//obj.firstChild.src
			else{
				var objImage = obj.firstChild;
				hidepicTimerID = setTimeout(function(){
					prevImage.style.visibility = 'hidden';
					objImage.style.visibility = 'hidden'; 
					canClick=true;
				},1000);
				lastSrc="";
			}//else
		}//else
	}//if canClick
}
function buildPlayground(){
var playgroundDiv=document.getElementById("playgroundDiv");
var innHTML="";
innHTML="<table id='playground' cellpadding='2' cellspacing='2' border='1'>";
for (var i=1;i<=rows;i++){
	innHTML += "<tr>";
	for (var j=1; j<=cols; j++)
		innHTML+="<td>"
	innHTML+="<\/tr>";
}
innHTML+="<\/table>";
playgroundDiv.innerHTML=innHTML;
}
function changeDimension(){
var dim=document.getElementById("dim").value;
rows=dim.split("x")[0];
cols=dim.split("x")[1];
}

function getTimeString(ref){
	if (!ref)
		return "0:0:0";
	var timeUsed = 0;
	var t;
 	t = Math.floor(ref / 3600) + ":";
 	timeUsed += Math.floor(ref / 3600) * 3600;
 	t += Math.floor((ref - timeUsed) / 60) + ":";
 	timeUsed += Math.floor((ref - timeUsed) / 60) * 60;
 	t += Math.floor(ref - timeUsed);
	return t;
}

function updateTime(){
  timeElapsed++;
  var timeBoxValue=getTimeString(timeElapsed);
  document.getElementById("time").value=timeBoxValue;
  updateTimerID = setTimeout("updateTime()", 1000);
}

function gameOver(){
	clearTimeout(updateTimerID);
	var highScore = GetCookie(rows+"x"+cols);
	canClick=true;
	if ((hits>0) && (hits==differentImgs)&&(!highScore || (timeElapsed < +(highScore)))){
		alert("Rekord!");
		var myDate = new Date();
		myDate.setYear(myDate.getYear()+1);
		SetCookie (rows+"x"+cols,timeElapsed,myDate,"/",null,false);
		displayHighScore();
	}
}
function resetTimer(){
	timeElapsed = -1;
	updateTime();
}

function displayHighScore(){
	document.getElementById("besttime").value = getTimeString(parseInt(GetCookie(rows+"x"+cols)));
}
