var agent = navigator.userAgent;
agent = agent.toLowerCase();
var size = 20;
var speed = 2000;

function createlLifetable(rand) {
	var life = $e("life");
	if (/msie/.test(agent)) {
		size = 20;
		speed = 1000;
		life.style.width = "242px";
		life.style.height = "242px";
	}
	if (/firefox/.test(agent)) {
		size = 30;
		speed = 500;
		life.style.width = "362px";
		life.style.height = "362px";		
	}	
	life.style.backgroundColor = "black";
	var m;
	var text = "<table border=\"1\" cellborder=\"1\">\n";
	for (var i = 0; i < size; i++) {
		text += "<tr>";
		for (var j = 0; j < size; j++) {
			if (rand) {
				m = Math.floor(Math.random()*100+1);
				if (m < 80) {
					text += "<td cellpadding=\"0\" id=\"l" + i + "l" + j + "\" style=\"background-color: white;\" ></td>\n";
				} else {
					text += "<td cellpadding=\"0\" id=\"l" + i + "l" + j + "\" style=\"background-color: black;\" ></td>\n";
				}
			} else {
				text += "<td cellpadding=\"0\" id=\"l" + i + "l" + j + "\" onclick=\"toggle(this)\"  style=\"background-color: white;\" ></td>\n";
			}
		}
		text += "</tr>\n";
	}
	life.innerHTML = text;
}

var intervalId;
function startLife() {
	$e("start").disabled = true;
	$e("stop").disabled = false;
	$e("select").disabled = true;
	$e("random").disabled = true;	
	intervalId = setInterval("life()", 500);
	return;	
}

function stopGame() {
	$e("stop").disabled = true;
	$e("start").disabled = false;
	$e("random").disabled = false;
	$e("select").disabled = false;	
	clearInterval(intervalId);
	return;
}

function life() {
	var id;
	var n = 0;
	var life = new Array();
	for (var i = size-1; i > -1; i--) {
		life[i] = new Array();
		for (var j = size-1; j > -1; j--) {
			id = $e("l" + i + "l" + j);
			n = findNeighbours(i,j);
			if (id.style.backgroundColor=="black") {
				life[i][j] = true;
				if (n < 2) {
					life[i][j] = false;
				}
				if (n > 3) {
					life[i][j] = false;
				}
			} else {
				life[i][j] = false;
				if (n==3) {
					life[i][j] = true;
				}
			}
		}
	}
	for (var i = size-1; i > -1; i--) {
		for (var j = size-1; j > -1; j--) {
			id = $e("l" + i + "l" + j);
			if (life[i][j]) {
				id.style.backgroundColor = "black";
			} else {
				id.style.backgroundColor = "white";
			}
		}
	}	
	return;
}

function findNeighbours(i,j) {
	var k = new Array();
	k[0] = "l" + (i+size-1)%size + "l" + (j+size-1)%size;
	k[1] = "l" + (i+size)%size + "l" + (j+size-1)%size;
	k[2] = "l" + (i+size+1)%size + "l" + (j+size-1)%size;
	k[3] = "l" + (i+size-1)%size + "l" + (j+size)%size;
	k[4] = "l" + (i+size+1)%size + "l" + (j+size)%size;
	k[5] = "l" + (i+size-1)%size + "l" + (j+size+1)%size;
	k[6] = "l" + (i+size)%size + "l" + (j+size+1)%size;
	k[7] = "l" + (i+size+1)%size + "l" + (j+size+1)%size;	
	var m = getNeighbours(k);
	return m;
}

function getNeighbours(k) {
	var a = 0;
	for (var b = 7; b > -1; b--) {
		if ($e(k[b]).style.backgroundColor=="black") {
			a++;
		}
	}
	return a;
}

function toggle (el) {
	if (el.style.backgroundColor == "black") {
		el.style.backgroundColor = "white";
	} else {
		el.style.backgroundColor = "black";
	}
	return;
}
	
function $e(el) {
	return document.getElementById(el);
}

