var gameIsOver = true;
var loopTime;
var crashed;
var score;

function rand(a, b) {
	return Math.floor(Math.random() * (b - a + 1) + a);
}
function addEvent(el, ev, fn, capt) {
	if (el.addEventListener) {
		el.addEventListener(ev, fn, capt);
		return true;
	}
	else if (el.attachEvent) {
		var r = el.attachEvent('on' + ev, fn);
		return r;
	}
	else {
		el['on' + ev] = fn;
	}
}
function init(){
	img0.src = 'c0.gif';
	img1.src = 'c1.gif';
	img2.src = 'c2.gif';
	gameIsOver = true;
	for (var r = 0; r < rows; r++){
		for (var c = 0; c < cols; c++){
			var ob = document.getElementById('c_' + r + '_' + c);
			addEvent(ob, 'mousedown', cClick, false);
			setComp(ob, 0);
		}
	}
	score = 0;
	setScore();
	crashed = 0;
	loopTime = 1000;
	gameIsOver = false;
	document.getElementById('gameOver').style.display = 'none';
	setTimeout("loop()", loopTime);
}

function setComp(el, comp){
	el.comp = comp;
	el.style.background = "url('c" + comp + ".gif') no-repeat";
}

function highscoreentry() {
	if (score > 99) {
		url = "http://38i.biz/highscores?app=STM&score="+score;
	}
	else {
		url = "http://38i.biz/highscores?app=STM";
	}
	window.location = url;

}

function loop(){
	if (gameIsOver) return ;
	var cnt = 1;
	if (score > 50) cnt++;
	if (score > 100) cnt++;
	if (score > 250) cnt++;
	loopTime -= 3;
	do{
		var r = rand(0, rows-1);
		var c = rand(0, cols-1);
		var el = document.getElementById('c_' + r + '_' + c);
		if (el.comp == 0){
			setComp(el, el.comp + 1);
			cnt--;
		}
		else if (el.comp == 1){
			setComp(el, el.comp + 1);
			crashed++;
			if (crashed >= 3){
				gameOver();
				return ;
			}
			break;
		}
	} while (cnt);
	setTimeout("loop()", loopTime);
}

function cClick(e){
	if (gameIsOver) return ;
	if (col > cols) return ;
	if (window.event) e = window.event;
	if (e.target) var comp = e.target;
	else var comp = e.srcElement;
	var arr = comp.id.split('_');
	var row = arr[1];
	var col = arr[2];
	if (comp.comp == 1) {
		setComp(comp, comp.comp - 1);
		score++;
		setScore();
	}
	else if (comp.comp == 2){
		setComp(comp, comp.comp - 1);
		crashed--;
	}
}

function gameOver(){
	gameIsOver = true;
	document.getElementById('gameOver').style.display = 'block';
}

function setScore(){
	document.getElementById('score').innerHTML = score;
	if (score == 30) loopTime = 1100;
	if (score == 100) loopTime = 1200;
	if (score == 250) loopTime = 1500;
}