/***
Gestion de la grille
***/



// mémorise la position de la popup boucle blanche
var current_position_blanche=-1;

// flag jeu terminé
var jeu_termine=0;




/***
Fonction qui retourne le code html de la case
***/
function affiche_boule(lettre) {

	switch(lettre.c) {
		case 'r' : var rep="rouge";break
		case 'j' : var rep="jaune";break
		case 'v' : var rep="bleue";break
		default : var rep="blanche";break
	}

	if(lettre.v.length == 0) 
		var code="&nbsp;";
	else
		var code='<img src="/img/'+rep+'/'+lettre.v+'.gif">';
	return code;
}

/***
remplit la grille en fonction du contenu de la variable magrille
***/
function remplit() {

	var id_case="";
	var lettre;
	for(var y=0 ; y < 12 ; y++) {
		for(var x=0 ; x<12 ; x++) {
			//if(magrille[y][x].v.length>0) nb_lettres_grille++;
			id_case="case_"+y+"_"+x;
			lettre=magrille[y][x];
			if($(id_case)) {
				$(id_case).innerHTML=affiche_boule(lettre);
			}
		}
	}


	maj_picker();

}


/***
remplit une colonne seulement en fonction du contenu de la variable magrille
***/
function remplit_colonne(colonne) {

	var id_case="";
	var lettre;
	var x=colonne;
	for(var y=0 ; y < 12 ; y++) {
			//if(magrille[y][x].v.length>0) nb_lettres_grille++;
			id_case="case_"+y+"_"+x;
			lettre=magrille[y][x];
			if($(id_case)) {
				$(id_case).innerHTML=affiche_boule(lettre);
			}
	}

	maj_picker();

}

/***
Déplacement d'une ligne vers la gauche
***/
function move_left(ligne,force) {

	if(!force && jeu_enpause) {
		alert(txt_attente_tour)
		return;
	}

	var x=0;
	var y=ligne;
	tampon=magrille[y][x];
	for(var i=0 ; i< 12 ;i++) {
		magrille[y][i]=magrille[y][i+1];
	}
	var x=11;
	magrille[y][x]=tampon;
	verif_gravite();
	remplit();

	maj_score(penalite_deplacement,txt_deplacement);

	// mise a jout du score
	if(duel && !jeu_enpause) {
		sauve_histo("move_left("+ligne+",1)");
	}

}

/***
Déplacement d'une ligne vers la gauche
***/
function move_right(ligne,force) {

	if(!force && jeu_enpause) {
		alert(txt_attente_tour)
		return;
	}

	var x=11;
	var y=ligne;
	tampon=magrille[y][x];
	for(var i=11 ; i>-1;i--) {
		magrille[y][i]=magrille[y][i-1];
	}
	var x=0;
	magrille[y][x]=tampon;

	verif_gravite();
	remplit();
	maj_score(penalite_deplacement,txt_deplacement);

	// mise a jout du score
	if(duel && !jeu_enpause) {
		sauve_histo("move_right("+ligne+",1)");
	}
}


/***
Déplacement d'une colonne vers le haut
***/
function move_up(colonne,force) {

	if(!force && jeu_enpause) {
		alert(txt_attente_tour)
		return;
	}

	var x=colonne;
	var y=11;

	// recherche du nb de boules dans la colonne
	var nb_boules=11;
	for(var i=0 ; i <12 ; i++) {
		if(magrille[i][x].v.length == 0) {
			var nb_boules=i-1;
			break;
		}
	}

	if	(nb_boules < 0) return;

	var tampon=magrille[nb_boules][x];

	for(var i=nb_boules ; i>0;i--) {
		magrille[i][x]=magrille[i-1][x];
	}
	var y=0;
	magrille[y][x]=tampon;

	//remplit();
	remplit_colonne(colonne);

	maj_score(penalite_deplacement,txt_deplacement);

	// mise a jout du score
	if(duel && !jeu_enpause) {
		sauve_histo("move_up("+colonne+",1)");
	}
}


/***
Déplacement d'une colonne vers le bas
***/
function move_down(colonne,force) {

	if(!force && jeu_enpause) {
		alert(txt_attente_tour)
		return;
	}

	var x=colonne;
	var y=0;

	// recherche du nb de boules dans la colonne
	var nb_boules=11;
	for(var i=0 ; i <12 ; i++) {
		if(magrille[i][x].v.length == 0) {
			var nb_boules=i-1;
			break;
		}
	}
	if	(nb_boules < 0) return;

	var tampon=magrille[y][x];
	for(var i=0 ; i< nb_boules ;i++) {
		magrille[i][x]=magrille[i+1][x];
	}

	magrille[nb_boules][x]=tampon;
	//remplit();
	remplit_colonne(colonne);

	maj_score(penalite_deplacement,txt_deplacement);

	// mise a jout du score
	if(duel && !jeu_enpause) {
		sauve_histo("move_down("+colonne+",1)");
	}

}


/***
descend une lettre du tableau
***/
function pick_letter(colonne,force) {

	if(!force && jeu_enpause) {
		alert(txt_attente_tour)
		return;
	}

	var x=colonne;
	var y=0;
	var id_case="case_"+y+"_"+x;

	// verification si la case est bien dispo
	var ordre=String(Sortable.sequence("chevalet"));
	var tab_boule=ordre.split(",");

	/*
	if(monmot[tab_boule[colonne]].v.length > 0) {
		alert("Cette case est déjà occupée par une lettre");
		return;
	}
	*/

	if(monmot[colonne].v.length > 0) {
		alert("Cette case est déjà occupée par une lettre");
		return;
	}

	// il faut remplir la case qui se trouve sous le picker car il y a pu avoir des déplacements.
	//var index=tab_boule[colonne];
	//monmot[index]=magrille[0][x]

	monmot[x]=magrille[0][x]
	remplit_mot();


	// descente des autres boules de la colonne
	for(var i=0 ; i< 11 ;i++) {
		magrille[i][x]=magrille[i+1][x];
	}
	magrille[i][x]={c:"",v:""};
	//remplit();
	remplit_colonne(colonne);


	// affichage si besoin du bouton OK
	maj_btnok();

	// maj btn selection lettre boule blanche
	maj_selection_lettre();

	// mise a jout du score
	if(duel && !jeu_enpause) {
		sauve_histo("pick_letter("+colonne+",1)");
	}

}

/***
met en surbrillance la boule qui va être sélectionnée
***/
function focus_boule(colonne,etat) {

	if(jeu_enpause) {
		return;
	}

	if(etat == 1) {
		//document.getElementById("case_0_"+colonne).style.background="#FFC410";
		$("case_0_"+colonne).style.backgroundImage="url(/img/fleches/bg_selection.gif)"; 
	}
	else {
		$("case_0_"+colonne).style.backgroundImage=""; 
		//document.getElementById("case_0_"+colonne).style.background="";
		//document.getElementById("case_0_"+colonne).style.removeProperty('background');
	}
}


/***
remplit le mot en fonction des valeurs
***/
function remplit_mot() {
	for(var x=0 ; x<12 ; x++) {
		var sel_case="lettre_"+x;
		lettre=monmot[x];
		if($(sel_case)) {
			if(lettre.v.length==1) {

			switch(lettre.c) {
				case 'r' : var rep="rouge";break
				case 'j' : var rep="jaune";break
				case 'v' : var rep="bleue";break
				default : var rep="blanche";break
			}


				$(sel_case).src='/img/'+rep+'/'+lettre.v+'.gif';
			} else {
				$(sel_case).src='/img/design/vide.gif';

			}
		}
	}
}

/***
vérifie si une colonne a une case vide à combler (par gravité)
***/
function verif_gravite() {

	
	for(var colonne = 0 ; colonne < 12 ; colonne ++) {

		// function de tri à bulles
		for(var i=0 ; i< 11 ; i++) {
			for(var j=i ; j < 12 ; j++ ){
				if(magrille[i][colonne].v.length == 0 && magrille[j][colonne].v.length > 0) {
						magrille[i][colonne]=magrille[j][colonne];
						magrille[j][colonne]={c:"",v:""};
				}
			}
		}
	}

}


/***
Met à jour la variable tableau du chevalet en fonction du déplacement
***/
function maj_chevalet() {
	//$("debug").innerHTML=Sortable.serialize("chevalet");
	var ordre=String(Sortable.sequence("chevalet"));
	var tab_boule=ordre.split(",");
	content="";
	maj_picker();
	maj_selection_lettre();
}



/***
Affiche/Masque les boutons de descente
***/
function maj_picker() {


	for(var i=0 ; i< 12 ; i++) {
		//index=tab_boule[i];
		index=i;
		if(jeu_enpause || monmot[index].v.length > 0 ) {
			// case déjà prise, on masque
			$("selection_"+i).style.display='none';
		}
		else if( magrille[0][i].v.length == 0) {
			// Plus de boules dans la colonne de la grille
			$("selection_"+i).style.display='none';
		}
		else {
			// case vide, on affiche le picker
			$("selection_"+i).style.display='inline';
		}
	}
}




/***
Vérifie qu'au moins 3 lettres ont été sélectionnée pour afficher le bouton OK
et au moins une lettre pour le bouton recharger
***/
function maj_btnok() {
	var nb_lettres=0;
	var nb_lettres_valides=0;
	var existe_blanche=0;
	var existe_boules=0;

	for(var i=0 ; i<12 ; i++) {
		if(monmot[i].v.length > 0 ) {
			nb_lettres++;
			if(monmot[i].v != '@')
				nb_lettres_valides++;
			else
				existe_blanche=1;
		}
	}


	if(!duel)  {
		if(nb_lettres < 3) {
			$("instructions_fleches").style.display='inline';
			$("instructions_deplacements").style.display='none';
		} else {
			$("instructions_fleches").style.display='none';
			$("instructions_deplacements").style.display='inline';
		}
	}

	// recherche si il reste des boules
	var existe_boules=0;
	for(var x=0 ; x<12 ; x++) {
			if(magrille[0][x].v.length>0) {
				existe_boules++;
				break;
			}
	}

	// bouton rechargement
	if(nb_lettres >=1 && !jeu_enpause) {
		$("btn_reload_off").style.display="none";
		$("btn_reload").style.display="inline";
	} else {
		$("btn_reload_off").style.display="inline";
		$("btn_reload").style.display="none";
	}

	// bouton OK
	if( !jeu_enpause && (nb_lettres_valides >=3 || (existe_boules == 0 && nb_lettres_valides>0)) && !existe_blanche ) {
		$("btn_ok_off").style.display="none";
		$("btn_ok_wait").style.display="none";
		$("btn_ok").style.display="inline";

	} else  {
		$("btn_ok_off").style.display="inline";
		$("btn_ok").style.display="none";
		$("btn_ok_wait").style.display="none";
	}

	if(jeu_enpause) {
		$("btn_stop").style.display='none';
	}
	else {
		$("btn_stop").style.display='inline';
	}

}


/***
Supprime les lettres du chevalet
***/
function raz_chevalet() {

	for(var i=0 ; i<12 ; i++) {
		monmot[i]={c:"",v:""};
	}

	maj_picker();
	maj_btnok();
	masque_popup_selection();
	remplit_mot();
	Sortable.destroy("chevalet");
	init_sortable();

}


/***
initialise la liste d'images
***/
function init_sortable() {


   $("chevalet").innerHTML=chevalet_code_initial;


   Sortable.create("chevalet",
     {tag:'img',overlap:'horizontal',constraint: "horizontal",
      onUpdate:maj_chevalet })

}

/***
initialise le plateau de jeu lors du premier chargement
***/
function init_plateau() {
	// initialise la liste
	init_sortable();

	// remplit le plateau 
	remplit();

	// demarre le chrono
	init_chrono();

	
	// l'adversaire doit attendre son sout
	if(jeu_enpause) {
		pause();
	}

	maj_btn_info_tour();


	// infos instructions
	if(!duel) {
		$("instructions_fleches").style.display='inline';
		$("instructions_deplacements").style.display='none';
	}

}


/***
Met à jour le score
***/
function maj_score(point,action) {


	var couleur='';
	if(point < 0) couleur='rouge';
	if(point >0) couleur='vert';

	// histo action
	contenu='<span class="action '+couleur+'">'+action+' : </span>';
	contenu+='<span class="points '+couleur+'">'+point+'</span>';
	contenu+='<br>';

	// maj score courant
	score+=point;
	$("score").innerHTML=score;
	contenu+=$("histo_action").innerHTML;
	$("histo_action").innerHTML=contenu;
	$("histo_action").scrollTop=0;

}

/***
Met à jour le score de l'adversaire
***/
function maj_score_adversaire(score_adversaire) {
	$("score_adversaire").innerHTML=score_adversaire;
}

/***
Met à jour l'historique de l'adversaire
***/
function maj_histo_adversaire(histo_adversaire) {
	$("histo_action_adversaire").innerHTML=unescape(histo_adversaire);
}


/***
Met à jour le score de l'adversaire avec un histo
***/
function action_score_adversaire(point,action) {

	var score_adversaire=parseInt($("score_adversaire").innerHTML);

	var couleur='';
	if(point < 0) couleur='rouge';
	if(point >0) couleur='vert';

	// histo action
	contenu='<span class="action '+couleur+'">'+action+' : </span>';
	contenu+='<span class="points '+couleur+'">'+point+'</span>';
	contenu+='<br>';

	// maj score courant
	score_adversaire+=point;
	$("score_adversaire").innerHTML=score_adversaire;
	contenu+=$("histo_action_adversaire").innerHTML;
	$("histo_action_adversaire").innerHTML=contenu;
	$("histo_action_adversaire").scrollTop=0;

}

/***
Proposition d'un mot
***/
function submit_word() {

	if(jeu_enpause) {
		alert(txt_attente_tour)
		return;
	}


	// bouton progression
	$("btn_ok").style.display="none";
	$("btn_ok_wait").style.display="inline";

	var url = '/trt_jeu.php';
	var params = 'opt=verif_mot';
	if(duel) {
		params += '&duel='+duel;
		params += '&partie_id='+partie_id;
		params += '&duree_courante='+$("duree").innerHTML;
		params += '&score='+score;
		params += '&histo='+$("histo_action").innerHTML;

	}

	// sérialisation de l'ordre des lettres
	params+='&'+Sortable.serialize("chevalet");

	// liste des lettres et de leurs couleurs
	for(var i=0 ; i< 12 ; i++) {
		if(monmot[i].v.length > 0) {
			params+='&valeur['+i+']='+monmot[i].v;
			params+='&couleur['+i+']='+monmot[i].c;
			params+='&joker['+i+']='+monmot[i].j;
		}
	}

	for(var i=0 ; i< 12 ; i++) {
		for(var j=0 ; j< 12 ; j++) {
			params+='&mg['+i+']['+j+'][v]='+magrille[i][j].v;
			params+='&mg['+i+']['+j+'][c]='+magrille[i][j].c;
			params+='&mg['+i+']['+j+'][j]='+magrille[i][j].j;
		}
	}

	// liste des boules de la grille

	var myAjax = new Ajax.Request(
				  url, {
						method: 'post', 
						postBody: params, 
						onComplete: traite_retour_mot
					  }
				);
}


/***
Gestion du retour
***/
function traite_retour_mot(xhr)  {

	if(xhr.status == 200) {
		//$("debug").innerHTML=xhr.responseText;
		eval(String(xhr.responseText));

	} 


	raz_chevalet();
	maj_selection_lettre();

	// ds les duels, l'arret de la partie se faire par retour HTTPRequest
	if(!duel) {
		verif_fin_jeu();
	}

}


/***
rechargement des lettres dans la grille
***/
function reload_chevalet(txt,force) {

	if(!force && jeu_enpause) {
		alert(txt_attente_tour)
		return;
	}


	// on replace les boules dans leurs colonnes d'origine
	for( var i=0 ; i< 12 ; i++) {
		if(monmot[i].v.length > 0) {
			magrille[11][i]=monmot[i];
		}
	}

	maj_score(-1,txt);
	raz_chevalet();
	maj_selection_lettre();
	verif_gravite();
	remplit();

	// Maj table partie
	if(duel && !jeu_enpause) {
		
		var url = '/trt_jeu.php';
		var params = 'opt=rechargement';
		params += '&duel='+duel;
		params += '&partie_id='+partie_id;
		params += '&duree_courante='+$("duree").innerHTML;
		params += '&score='+score;
		params += '&histo='+$("histo_action").innerHTML;

		// sérialisation de l'ordre des lettres
		params+='&'+Sortable.serialize("chevalet");

		// contenu de la grille
		for(var i=0 ; i< 12 ; i++) {
			for(var j=0 ; j< 12 ; j++) {
				params+='&mg['+i+']['+j+'][v]='+magrille[i][j].v;
				params+='&mg['+i+']['+j+'][c]='+magrille[i][j].c;
				params+='&mg['+i+']['+j+'][j]='+magrille[i][j].j;
			}
		}

		var myAjax = new Ajax.Request(
					  url, {
							method: 'post', 
							postBody: params, 
							onComplete: traite_retour_chargement
						  }
					);
	}
}


/***
Gestion du retour rechargement
***/
function traite_retour_chargement(xhr)  {

	if(xhr.status == 200) {
		//$("debug").innerHTML=xhr.responseText;
		eval(String(xhr.responseText));

	} 
}


/***
Affiche de la box de sélection d'une lettre
***/

function maj_selection_lettre() {

	if(jeu_enpause) {
		return;
	}


	//alert($('lettre_'+position).onclick);
	//$('lettre_'+position).onmouseover=alert("over");
	//$('lettre_'+position).onmouseout=document.title="out";
	//$('lettre_'+position).onclick=alert("ok");

	var ordre=String(Sortable.sequence("chevalet"));
	var tab_boule=ordre.split(",");

	for(var i=0 ; i<12 ; i++) {
		if(monmot[tab_boule[i]].j == 1) {
			$('selection_lettre_'+i).style.display="inline";
		} else {
			$('selection_lettre_'+i).style.display="none";
		}
	}

}


/***
met à jour une boule blanche
***/
function maj_lettre_blanche(valeur) {
	var ordre=String(Sortable.sequence("chevalet"));
	var tab_boule=ordre.split(",");
	if(current_position_blanche<0 || monmot[tab_boule[current_position_blanche]].j != 1) {
		masque_popup_selection();
		return;
	}

	monmot[tab_boule[current_position_blanche]].v=valeur;
	switch(monmot[tab_boule[current_position_blanche]].c) {
		case 'r' : var rep="rouge";break
		case 'j' : var rep="jaune";break
		case 'v' : var rep="bleue";break
		default : var rep="blanche";break
	}

	$('lettre_'+tab_boule[current_position_blanche]).src='/img/'+rep+'/'+valeur+'.gif';
	masque_popup_selection();
	maj_btnok();
}

/*** 
affiche la popup de sélection d'une lettre
***/
function affiche_popup_selection(position,e) {

	if(jeu_enpause) {
		return;
	}


	posx = (navigator.appName.substring(0,3) == "Net") ? e.pageX : event.x+document.body.scrollLeft;
	posy = (navigator.appName.substring(0,3) == "Net") ? e.pageY : event.y+document.body.scrollTop;


	if (current_position_blanche == position) return;
	current_position_blanche=position;
	$("table_selection_lettre").style.position='absolute';
	$("table_selection_lettre").style.top=posy-7;
	$("table_selection_lettre").style.left=posx-30;
	$("table_selection_lettre").style.display='inline';
	//document.title=posx+' : '+posy;
	window.setTimeout("masque_popup_selection()",3000);
}

/*** 
masque la popup de sélection d'une lettre
***/
function masque_popup_selection() {
	current_position_blanche=-1;
	$("table_selection_lettre").style.display='none';
}



/***
Chronometre
***/
var s=00;
var m='0'+0;
var debut;

var duree_courante=0;
var duree_adversaire=0;
var time_debut=0;
/***
Incrément
***/
function Chrono() {
	if(jeu_termine) return;
	
	var duree_actuelle=Math.round((new Date().getTime()-time_debut)/1000);
	var tps=Math.round((new Date().getTime())/1000);

	if(jeu_enpause) {
		if(tps % 3 == 0  ) verif_tour();
	} else {

		var duree=duree_actuelle-duree_adversaire;

		var s=duree%60;
		if(s<10)s='0'+s;
		var m=Math.floor(duree/60);
		duree_courante=duree;
		$("duree").innerHTML = m + ':' + s ;
	}

	chrono=window.setTimeout("Chrono();",1000);
}

/***
initialisation du chronometre
***/
function init_chrono() {

	time_debut=new Date().getTime();

	// récupération partie en cours
	if(duel && recup_duree > 0) {
		// temps courant
		time_debut-=(recup_duree*1000);
		var duree=Math.round(recup_duree/1000);

		var s=duree%60;
		if(s<10)s='0'+s;
		var m=Math.floor(duree/60);
		duree_courante=duree;
		$("duree").innerHTML = m + ':' + s ;

		// temps adversaire
		var sa_duree=Math.round(recup_saduree/1000);
		var s=sa_duree%60;
		if(s<10)s='0'+s;
		var m=Math.floor(sa_duree/60);
		
		duree_adversaire=duree;
		$("duree_adversaire").innerHTML = m + ':' + s ;

	}

	Chrono();
}

/***
corrige le chronometre pour avoir les temps identiques des deux cotés
***/
function maj_chrono(duree) {

	// calcul de la bonne durée initiale
	time_debut=new Date().getTime()-duree-(duree_courante*1000);

	// maj compteur adversaire
	var duree_actuelle=Math.round((new Date().getTime()-time_debut)/1000);
	var duree=duree_actuelle-duree_courante;

	var s=duree%60;
	if(s<10)s='0'+s;
	var m=Math.floor(duree/60);
	
	duree_adversaire=duree;
	$("duree_adversaire").innerHTML = m + ':' + s ;

}


/***
vide la grille partiellement pour les tests
***/
function vide_grille(nb_sup) {
	var cpt=0;
	for(var y=0 ; y < 12 ; y++) {
		for(var x=0 ; x<12 ; x++) {
			cpt++;
			if(cpt >= nb_sup) break;

			magrille[y][x]={c:"",v:""};
		}
		if(cpt >= nb_sup) break;
	}
	verif_gravite();
	remplit();
}


/***
Vérifie si le jeu est terminé
***/

function verif_fin_jeu() {

	if(jeu_termine) return; // pour empecher plusieurs appels si jeu terminé


	// recherche si il reste des boules
	var existe_boules=0;
	for(var x=0 ; x<12 ; x++) {
			if(magrille[0][x].v.length>0) {
				existe_boules++;
				break;
			}
	}


	if(existe_boules == 0) {
		termine_partie();
	}
}


/***
termine la partie
***/
function termine_partie() {


	jeu_termine=1;
	// calcul penalite temps
	if(forfait == 0) {
		var minutes=$("duree").innerHTML.split(":");
		var penalite_tps=minutes[0]*(-1);
		maj_score(penalite_tps,txt_penalite_tps);
	}

	// calcul penalite adversaire
	if(duel) {

		if(forfait == -1) {
				$("vainqueur_login").innerHTML=user_login;
		} else if(forfait == 1) {
				$("vainqueur_login").innerHTML=adversaire_login;
		} else {

			// calcul penalite temps
			var minutes_adversaire=$("duree_adversaire").innerHTML.split(":");
			var penalite_tps_adversaire=minutes_adversaire[0]*(-1);
			action_score_adversaire(penalite_tps_adversaire,txt_penalite_tps);

			// determination du vainqueur
			if( parseInt($("score").innerHTML) > parseInt($("score_adversaire").innerHTML) ) {
				$("vainqueur_login").innerHTML=user_login;
			} else if(parseInt($("score").innerHTML) < parseInt($("score_adversaire").innerHTML)) {
				$("vainqueur_login").innerHTML=adversaire_login;
			} else {
				// math null
				$("vainqueur_login").innerHTML=txt_matchnull;
			}
		}
		$("plateau_score_duel").style.display="inline";
	}


	// enregistrement du score en ajax si partie seule
	if(!duel) {
		var url = '/trt_jeu.php';
		var params = 'opt=sauve_score';
		params+='&grille='+current_grille;
		params+='&score='+$("score").innerHTML;
		params+='&temps='+$("duree").innerHTML;
		params+='&security_code='+security_code;
		if(defi_code.length > 0) 
			params+='&defi_code='+defi_code;

		//alert(params);
		var myAjax = new Ajax.Request(
					  url, {
							method: 'post', 
							postBody: params, 
							onComplete: traite_sauve_score
						  }
					);

		$("score_final").innerHTML=$("score").innerHTML;
		$("duree_final").innerHTML=$("duree").innerHTML;

		$("plateau_score").style.display="inline";
	} 

	$("plateau_boules").style.display="none";

	document.body.scrollTop=0
}

/***
Fin prématurée de partie
***/
function stop_partie() {

	if(jeu_enpause) {
		alert(txt_attente_tour)
		return;
	}

	
	// calcul du nb de lettres restantes pour les pénalités
	var penalite=0;
	for(var y=0 ; y < 12 ; y++) {
		for(var x=0 ; x<12 ; x++) {
			if(magrille[y][x].v.length>0 )
				penalite--;

			magrille[y][x]={c:"",v:""};
		}
	}

	for(var i=0 ; i<12 ; i++) {
			if(monmot[i].v.length>0 )
				penalite--;

			monmot[i]={c:"",v:"",j:0};
	}


	maj_score(penalite,txt_penalite_lettre);
	termine_partie();


}


/***
traite le retour de l'enregistrement du score
***/
function traite_sauve_score(xhr) {
	if(xhr.status == 200) {
		//$("debug").innerHTML=xhr.responseText;
		eval(String(xhr.responseText));

	} else {
		alert("erreur");
	}
}




/***
insère l'action du joueur dans la base
***/
function sauve_histo(action) {

	return;

	var url = '/trt_jeu.php';
	var params = 'opt=maj_histo';

	// sérialisation de l'ordre des lettres
	params+='&action='+action;
	params+='&partie='+partie_id;

	var myAjax = new Ajax.Request(
				  url, {
						method: 'post', 
						postBody: params, 
						onComplete: traite_sauve_score
					  }
				);


}


/***
vérifie si c'est le tour du joueur en cours
***/
function verif_tour() {


	var url = '/trt_jeu.php';
	var params = 'opt=verif_tour';

	// sérialisation de l'ordre des lettres
	params+='&partie_id='+partie_id;

	majveriftour_encours=1;

	var myAjax = new Ajax.Request(
				  url, {
						method: 'post', 
						postBody: params, 
						onComplete: traite_maj_tour
					  }
				);

}

/***
traite le retour des maj histo
***/
function traite_maj_tour(xhr) {
	if(!majveriftour_encours) return;

	if(xhr.status == 200) {
		//$("debug").innerHTML=xhr.responseText;
		eval(String(xhr.responseText));

	} else {
		//alert("erreur");
	}
	majveriftour_encours=0;
}



/***
mets à jour les boutons d'info pour les tour
***/
function maj_btn_info_tour() {
	
	if(!duel) return;

	if(jeu_enpause) {
		$("info_patientez").style.display="inline";
		$("info_jouez").style.display="none";
	} else {
		$("info_patientez").style.display="none";
		$("info_jouez").style.display="inline";
	}

}

/***
met le jeu en pause
***/
function pause() {
	raz_chevalet();
	maj_selection_lettre();
	jeu_enpause=1;
	maj_picker();
	maj_btnok();
	maj_btn_info_tour();
	verif_fin_jeu();
}


/***
reprend le jeu
***/
function reprend() {

	jeu_enpause=0;
	raz_chevalet();
	maj_selection_lettre();
	maj_btnok();
	maj_btn_info_tour();
	chrono();
	verif_fin_jeu();
}

/***
forfait : l'adversaire n'a pas joué depuis n minutes
***/
var forfait=0;

function victoire_par_forfait() {
	$("score_adversaire").innerHTML=0;
	forfait=-1;

	termine_partie();
}

/***
forfait : le joueur n'a pas joué depuis n minutes
***/
function defaite_par_forfait() {
	$("score").innerHTML=0;
	forfait=1;

	termine_partie();
}