function init(){
	var taille = 20;
	var grille;
	var nbrTotalBomb;
	
	function Kase(){
		this.nbBombVoisines = 0;
		this.bomb = false;
		this.cache = true;
		this.marque = false;
		this.boum = false;
	}
	function initGrille(){
		var i, j;
		grille = new Array();
		for(i=0;i<taille;i++){
			grille[i] = new Array();
			for(j=0;j<taille;j++){
				grille[i][j] = new Kase();
				grille[i][j].bomb = (Math.random()<0.1); //place ou pas une bombe eb fonction de true ou false
			}
		}
		setNbrTotalBomb();
		compteBombes();
	}
	function setNbrTotalBomb(){
		var i,j;
		nbrTotalBomb = 0;
		for(i=0; i<taille;i++){
			for(j=0;j<taille;j++){
				if(grille[i][j].bomb){
					nbrTotalBomb++;
				}
			}	
		}
	}
	
	function testFin(){
		var i,j;
		compteur = 0;
		for(i=0; i<taille;i++){
			for(j=0;j<taille;j++){
				if(grille[i][j].cache){
					compteur++;
				}
			}	
		}
		if(compteur==nbrTotalBomb){
			alert("Braaaaaaaaaaaaaavvvooooooooooooo!!!");
		}
	}
	
	function compteBombes(){
		var i,j,compteur;
		for(i=0; i<taille;i++){
			for(j=0;j<taille;j++){
				compteur = 0;
				if((i>0)&&(j>0)&&(grille[i-1][j-1].bomb))
					compteur++;
				if((i>0)&&(grille[i-1][j].bomb))
					compteur++;
				if((i>0)&&(j<taille-1)&&(grille[i-1][j+1].bomb))
					compteur++;
				if((j<taille-1)&&(grille[i][j+1].bomb))
					compteur++;
				if((i<taille-1)&&(j<taille-1)&&(grille[i+1][j+1].bomb))
					compteur++;
				if((i<taille-1)&&(grille[i+1][j].bomb))
					compteur++;
				if((i<taille-1)&&(j>0)&&(grille[i+1][j-1].bomb))
					compteur++;
				if((j>0)&&(grille[i][j-1].bomb))
					compteur++;
				grille[i][j].nbBombVoisines = compteur;
			}
		}
	}
	
	
	function initAffichage(){
		
		var i,j;
		var table = document.createElement("table");
		var bouton = document.createElement("div");
		var textBouton = document.createTextNode("Recommencer");
		bouton.appendChild(textBouton);
		for(i=0;i<taille;i++){
			var ligne = document.createElement("tr");
			for(j=0;j<taille;j++){
				var cellule = document.createElement("td");
				ligne.appendChild(cellule);
			}
			table.appendChild(ligne);
		}
		document.body.appendChild(table);
		document.body.appendChild(bouton);
		bouton.addEventListener("click", recommencer, false);
	}
	function recommencer(){
		initGrille();
		affichage();
	}
	function affichage(){
		var i;
		var cases = document.getElementsByTagName("td"); //recupère toutes les cellules du tableau
		for(i=0;i<taille;i++){//cases.lenght
			for(j=0;j<taille;j++){
				if(grille[i][j].cache){
					if(grille[i][j].marque){
						cases[i*taille+j].setAttribute("class", "marque");
					}else{
						cases[i*taille+j].setAttribute("class", "cache");
					}
					//cases[i*taille+j].setAttribute("class", "bombe");
				}else{
					//cases[i*taille+j].setAttribute("class", "cache");
					switch(grille[i][j].nbBombVoisines){
						case 0:
							cases[i*taille+j].setAttribute("class", "vide");//[i*taille+j] permet de rcuperer les valeurs du tab car java script recuprer le tab en une dimension
							break;
						case 1:
							cases[i*taille+j].setAttribute("class", "un");
							break;
						case 2:
							cases[i*taille+j].setAttribute("class", "deux");
							break;
						case 3:
							cases[i*taille+j].setAttribute("class", "trois");
							break;
						case 4:
							cases[i*taille+j].setAttribute("class", "quatre");
							break;
						case 5:
							cases[i*taille+j].setAttribute("class", "cinq");
							break;
					}
				}
			}
			//cases[i].setAttribute("class","cache");
		}
		testFin();
	}
	
	function detection(event){
		var i,j,k;
		var cases = document.getElementsByTagName("td");
		for(k=0;k<cases.length;k++){
			if(cases[k]==event.target){
				i = parseInt(k/taille);
				j = k%taille;
				switch(event.button){
					case 0: //bouton gauche
						decouvrir(i, j);
						break;
					case 2: //bouton droite
						marquer(i, j);
						break;
				}
			}
		}
	}
	function marquer(i, j){
		grille[i][j].marque = !grille[i][j].marque;
		affichage();
	}
	function decouvrir(i, j){
		if(grille[i][j].bomb){
			alert("BOOOOOOOOMMMMMMMMMMMMMB!!!!!!!!!!!!!!!!!");
			initGrille();
			affichage();
		}else if(grille[i][j].cache){
			grille[i][j].cache = false;
			if(grille[i][j].nbBombVoisines == 0){
				if ((i>0)&&(j>0)&&(grille[i-1][j-1].cache))
					decouvrir(i-1,j-1);
				if((i>0)&&(grille[i-1][j].cache))
					decouvrir(i-1,j);
				if((i>0)&&(j<taille-1)&&(grille[i-1][j+1].cache))
					decouvrir(i-1,j+1);
				if((j<taille-1)&&(grille[i][j+1].cache))
					decouvrir(i,j+1);
				if((i<taille-1)&&(j<taille-1)&&(grille[i+1][j+1].cache))
					decouvrir(i+1,j+1);
				if((i<taille-1)&&(grille[i+1][j].cache))
					decouvrir(i+1,j);
				if((i<taille-1)&&(j>0)&&(grille[i+1][j-1].cache))
					decouvrir(i+1,j-1);
				if((j>0)&&(grille[i][j-1].cache))
					decouvrir(i,j-1);
				/*grille[i-1][j-1].cache = false;
				grille[i-1][j].cache = false;
				grille[i-1][j+1].cache = false;
				grille[i][j-1].cache = false;
				grille[i][j].cache = false;
				grille[i][j+1].cache = false;
				grille[i+1][j-1].cache = false;
				grille[i+1][j].cache = false;
				grille[i+1][j+1].cache = false;*/
			}
			affichage();
		}
	}
	function rien(event){
		event.preventDefault();
	}
	initGrille();
	initAffichage();
	affichage();
	window.addEventListener("click", detection, false);
	window.addEventListener("contextmenu", rien, false);
}
window.addEventListener("load", init, false);