var zz = 0;
var l3;
var c3;

function Convert(l,c) {
		return l+"-"+c;
	}
	
	function CreateFileName(num) {
		var name = _repert+num+".png";
		return name;
	}
		
	function PlaceBitmap(ligne,colonne,name) {
		var nbimage;
		//alert(ligne+"-"+colonne);
		nbimage = Convert(ligne,colonne);
		document.getElementById(nbimage).src = name;
	}
	function InverseCarte(ligne,colonne) {
		if(start){
			if (zz == 1) {
				Swap(ligne,colonne,l3,c3);
				zz = 0;
				NbDeplacements++;
				setClass(document.getElementById(l3+"-"+c3),'piece_puzzle');
			}else{
				l3 = ligne;
				c3 = colonne;
				zz = 1;
				setClass(document.getElementById(ligne+"-"+colonne),"piece_puzzle_select");
			}
			if (CheckGame()){
				Victory();
			}
		}
	}
	
	function MelangeBitmap() {
		var compt = 0;
		for (i = 1; i <= _ligne; i++) {
			for (j = 1; j <= _col; j++) {
				bitmaps[compt] = i+""+j;
				compt++;
			}
		}
	
		for (i = 1; i < 100; i++) {
			bmp1 = Math.floor((_size) * Math.random() );
			bmp2 = Math.floor((_size) * Math.random() );
	
			if (bmp1 != bmp2) {
				temp = bitmaps[bmp1];
				bitmaps[bmp1] = bitmaps[bmp2];
				bitmaps[bmp2] = temp;
			}
		}
		var k=0;
		for (i = 1; i <= _ligne; i++) {
			for (j = 1; j <= _col; j++) {
				PlaceBitmap(i,j,CreateFileName(bitmaps[k++]));
			}
		}
				
	}
	
		
	function Swap(l1,c1,l2,c2) {
	
		Carte1 = Convert(l1,c1);
		Carte2 = Convert(l2,c2);
		var temp = document.getElementById(l1+"-"+c1).src;
		document.getElementById(l1+"-"+c1).src = document.getElementById(l2+"-"+c2).src;
		document.getElementById(l2+"-"+c2).src = temp;
	}
	
	function CheckGame() {
	
		win = true;
		for (i = 1; i <= _ligne; i++) {
			for (j = 1; j <= _col; j++) {
				if(document.getElementById(i+"-"+j).src != _repert+i+""+j+".png"){
					win = false;
					break;
				}
			}
			if(win == false){
				break;
			}
		}
		return win;
	}
	
	function Victory() {
		start = false;
		document.getElementById("boutton_start").src = "../public/img/puzzle/demarrer.png";
		for (i = 1; i <= _ligne; i++) {
			for (j = 1; j <= _col; j++) {
				setClass(document.getElementById(i+"-"+j),'piece_puzzle');
			}
		}
		clearTimeout(timeout);
		sauvegardeScore();
	}
	
	function sauvegardeScore(){
		jPrompt('Bravo, vous avez reconstituez entièrement le puzzle !<br>Entrez votre pseudo :', '', 'Félicitations !', function(r) {
			if(r != null){
				if(r != ""){
					var pseudo = r;
					var temps = document.getElementById("chrono").value;
					var id = document.getElementById("id_current").value;
					if(window.ActiveXObject){
						xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); 
					}else{
						if(window.XMLHttpRequest){
							xhr_object = new XMLHttpRequest();
						}
					}
					var data = "pseudo="+pseudo+"&temps="+temps+"&id="+id;
					xhr_object.open("POST","../script/scorePuzzleInsert.php",false);
					xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
					xhr_object.send(data);
					var tmp = xhr_object.responseText;
					eval(tmp);
					document.getElementById("top_score").innerHTML = html;
					jAlert("Votre score a bien été pris en compte !","Score");
				}else{
					jAlert("Vous devez entrer un pseudo !","Erreur");
					sauvegardeScore();
				}
			}
		});
	}
	
	function augmentetime_puzzle(){
		document.getElementById("chrono").value = time_puzzle;
		time_puzzle++;
		timeout = setTimeout("augmentetime_puzzle()",1000);
	}
	
	function mouseOverBouttonStart(){
		if(!start){
			document.getElementById("boutton_start").src = "../public/img/puzzle/demarrer_over.png";
		}else{
			document.getElementById("boutton_start").src = "../public/img/puzzle/reset_over.png";
		}
	}
	
	function mouseOutBouttonStart(){
		if(!start){
			document.getElementById("boutton_start").src = "../public/img/puzzle/demarrer.png";
		}else{
			document.getElementById("boutton_start").src = "../public/img/puzzle/reset.png";
		}
	}
	
	function mouseOverSolution(){
		document.getElementById("soluce").src = "../public/img/puzzle/solution_over.png";
	}
	
	function mouseOutSolution(){
		document.getElementById("soluce").src = "../public/img/puzzle/solution.png";
	}
	
	function piecePuzzleOver(i,j){
		if(document.getElementById(i+"-"+j).className != "piece_puzzle_select" && start){
			setClass(document.getElementById(i+"-"+j),'piece_puzzle_over');
		}
	}
	
	function piecePuzzleOut(i,j){
		if(document.getElementById(i+"-"+j).className != "piece_puzzle_select" && start){
			setClass(document.getElementById(i+"-"+j),'piece_puzzle');
		}
	}
	function setClass(objet,dmcNom){
		objet.className=dmcNom;
	} 
	
	var time_puzzle;
	var timeout;
	var start = false;
	var _ligne;
	var _col;
	function InitGame(pligne,pcol,prepert) {
		var i,j;
		clearTimeout(timeout);
		_size = pligne*pcol;
		_ligne = pligne;
		_col = pcol;
		_repert = prepert;
		_files = "";
		bitmaps = new Array(_size);
		start = true;
		NbDeplacements = 0;
		time_puzzle = 0;
		augmentetime_puzzle();
		document.getElementById("boutton_start").src = "../public/img/puzzle/reset.png";
		MelangeBitmap();
	}

	function changePuzzle(){
		var id_new = document.getElementById("select_puzzle").value;
		window.location.replace("puzzle-"+id_new+".html");
	}
	
	
	//###############################ANGLAIS#######################################
	
	
	function mouseOverBouttonStartEn(){
		if(!start){
			document.getElementById("boutton_start").src = "../public/img/puzzle/demarrer_over_en.png";
		}else{
			document.getElementById("boutton_start").src = "../public/img/puzzle/reset_over_en.png";
		}
	}
	
	function mouseOutBouttonStartEn(){
		if(!start){
			document.getElementById("boutton_start").src = "../public/img/puzzle/demarrer_en.png";
		}else{
			document.getElementById("boutton_start").src = "../public/img/puzzle/reset_en.png";
		}
	}
	
	
	
	function mouseOverSolutionEn(){
		document.getElementById("soluce").src = "../public/img/puzzle/solution_over_en.png";
	}
	
	function mouseOutSolutionEn(){
		document.getElementById("soluce").src = "../public/img/puzzle/solution_en.png";
	}
	
	
	function InitGameEn(pligne,pcol,prepert) {
		var i,j;
		clearTimeout(timeout);
		_size = pligne*pcol;
		_ligne = pligne;
		_col = pcol;
		_repert = prepert;
		_files = "";
		bitmaps = new Array(_size);
		start = true;
		NbDeplacements = 0;
		time_puzzle = 0;
		augmentetime_puzzle();
		document.getElementById("boutton_start").src = "../public/img/puzzle/reset_en.png";
		MelangeBitmap();
	}
	
	
	
	function VictoryEn() {
		start = false;
		document.getElementById("boutton_start").src = "../public/img/puzzle/demarrer_en.png";
		for (i = 1; i <= _ligne; i++) {
			for (j = 1; j <= _col; j++) {
				setClass(document.getElementById(i+"-"+j),'piece_puzzle');
			}
		}
		clearTimeout(timeout);
		sauvegardeScoreEn();
	}
	
	
	function InverseCarteEn(ligne,colonne) {
		if(start){
			if (zz == 1) {
				Swap(ligne,colonne,l3,c3);
				zz = 0;
				NbDeplacements++;
				setClass(document.getElementById(l3+"-"+c3),'piece_puzzle');
			}else{
				l3 = ligne;
				c3 = colonne;
				zz = 1;
				setClass(document.getElementById(ligne+"-"+colonne),"piece_puzzle_select");
			}
			if (CheckGame()){
				VictoryEn();
			}
		}
	}
	
	
	function sauvegardeScoreEn(){
		jPrompt('Congratulations, you have completed the puzzle!<br>Enter your user name: :', '', 'Félicitations !', function(r) {
			if(r != null){
				if(r != ""){
					var pseudo = r;
					var temps = document.getElementById("chrono").value;
					var id = document.getElementById("id_current").value;
					if(window.ActiveXObject){
						xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); 
					}else{
						if(window.XMLHttpRequest){
							xhr_object = new XMLHttpRequest();
						}
					}
					var data = "pseudo="+pseudo+"&temps="+temps+"&id="+id;
					xhr_object.open("POST","../script/scorePuzzleInsert.php",false);
					xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
					xhr_object.send(data);
					var tmp = xhr_object.responseText;
					eval(tmp);
					document.getElementById("top_score").innerHTML = html;
					jAlert("Your score has been recorded!","Score");
				}else{
					jAlert("You must enter a username!","Error");
					sauvegardeScore();
				}
			}
		});
	}
