/* globals */
var canvas;
var ctx;
var playerShip;
var background;
var gameCounter;
var gameover;

function mainLoop() {
	background.update();
	playerUpdate();
	if (gameover) {
		initGameOver();
		return false;
	}
	enemyUpdate();
	shotUpdate();
	updateUpgrade();
	gameCounter++;
	setTimeout("mainLoop()", 16);
}

$(document).ready(function() {
	if (!isBrowerCompatible()) {
		alert("Your browser doesn't support HTML 5 Canvas. We recommanded:\n" +
			"- Google Chrome\n- Firefox\n- Safari");
	}
	canvas = document.getElementById("game");
	/* now we can use isInsideObj on canvas element */
	canvas.y = 0;
	canvas.x = 0;
	canvas.x2 = canvas.width;
	canvas.y2 = canvas.height;
	ctx = canvas.getContext('2d');
	ctx.font = "14pt Arial";
	ctx.fillStyle = "white";
	background = new Background();
	preLoad();
	newGame();
});

function initGameOver() {
	var img = new Image();
	img.src = "data/graphics/gameover.png";
	imgx = canvas.width/2-img.width/2;
	imgy = canvas.height/2-img.height/2;
	ctx.drawImage(img, imgx, imgy);

	$(document).keypress(function(event) {
		var keyCode = event.charCode ? event.charCode : event.keyCode;
		if (keyCode == 89 || keyCode == 121) { /* new game */
			newGame();
		}
		if (keyCode == 81 || keyCode == 113) { /* quit */
			alert("Not yet implemented");
		}
	});
}

/* preloading images to browser cache*/
function preLoad() {
	var img = new Image();
	img.src = "data/graphics/gameover.png";
}

function newGame() {
	$(document).unbind('keypress');
	gameover = false;
	gameCounter = 1;
	playerNewGame();
	enemyNewGame();
	shotNewGame();
	mainLoop();
}

function isBrowerCompatible() {
	if (jQuery.browser.mozilla || jQuery.browser.chrome || jQuery.browser.safari) {
		return true;
	}
	return false;
}





