//Script by Unas for Ace Attorney Online (http://aceattorney.sparklin.org)
//Contact me through the forums or at unas.zole@gmail.com for any question

function l(c)
{
	if(typeof lang[c] != 'undefined')
	{
		return lang[c];
	}
	else
	{
		if(typeof console != 'undefined')
		{
			console.log('missing language line : '+c);
		}
		return '{'+c+'}';
	}
}

var mess_lie_au_precedent = 0;
var num_action_a_gerer = 0;

var vg_aff = new Object();

var etat_chargement = new Object();
etat_chargement['sm2'] = 0;
etat_chargement['img'] = 0;
etat_chargement['mp3'] = 0;
etat_chargement['jeu_lance'] = 0;

function confirmerChargement(obj)
{
	var e_c = etat_chargement;
	e_c[obj] = 1;
	if(e_c['mp3'] && !e_c['jeu_lance'])
	{
		e_c['jeu_lance'] = 1;
		window.setTimeout('initialiser(); actualiser();', 1);
	}
	else if(e_c['sm2'] && e_c['img'])
	{
		window.setTimeout('genererListesSons();', 1);
	}
}

function initialiser()
{
	vg_aff['check'] = document.getElementById('check');
	vg_aff['checkwindow'] = document.getElementById('checkwindow');
	vg_aff['check_back'] = document.getElementById('check_back');
	vg_aff['check_prec'] = document.getElementById('check_prec');
	vg_aff['check_suiv'] = document.getElementById('check_suiv');
	vg_aff['affichage_img'] = document.getElementById('affichage_img');
	vg_aff['affichage_texte'] = document.getElementById('affichage_texte');
	vg_aff['affichage_son'] = document.getElementById('affichage_son');
	vg_aff['affichage_video'] = document.getElementById('affichage_video');
	
	vg_aff['aff_son_tps_total'] = document.getElementById('aff_son_tps_total');
	vg_aff['aff_son_tps_actuel'] = document.getElementById('aff_son_tps_actuel');
	vg_aff['aff_son_barre_pleine'] = document.getElementById('aff_son_barre_pleine');
	vg_aff['aff_son_barre'] = document.getElementById('aff_son_barre');
	
	typewriter.div_texte = document.getElementById('texte');
	typewriter.defilement_rapide = document.getElementById('defilement_rapide');
	
	controleAnimation.elt_img = document.getElementById('img');
	
	controleSon.liste_objets_mp3 = liste_objets_mp3;
	controleSon.liste_sons_texte = liste_sons_texte;
	
	barreDeVie.barre_verte = document.getElementById('barre_verte');
	barreDeVie.barre_rouge = document.getElementById('barre_rouge');
	barreDeVie.barre_flash = document.getElementById('barre_flash');
	
	verrousPsyches.aff_chaines_fond = document.getElementById('verrous_chaines_fond');
	verrousPsyches.aff_chaines_pp = document.getElementById('verrous_chaines_pp');
	verrousPsyches.aff_verrous = document.getElementById('verrous_verrous');
	
	if(erreur_sm == 1)
	{
		var ligne_av = document.getElementById('ligne_avertissements');
		ligne_av.parentNode.innerHTML += '<br />'+l('erreur_sm');
		ligne_av.style.display = '';
	}
	
	//chargement de l'etat enregistre
	//fond
	document.getElementById('fond').style.background = etat_jeu.fond_en_cours;
	document.getElementById('banc').style.backgroundImage = etat_jeu.banc_en_cours;
	
	//animations
	controleAnimation.perso_qui_parle = etat_jeu.perso_qui_parle;
	controleAnimation.perso_affiche = etat_jeu.perso_affiche;
	controleAnimation.image_fixe_en_cours = etat_jeu.image_fixe_en_cours;
	controleAnimation.image_anim_en_cours = etat_jeu.image_anim_en_cours;
	controleAnimation.pause();
	
	//musique
	controleSon.jouerMP3(1, etat_jeu.musique_en_cours);
	
	//etat CI
	if(etat_jeu['user_input']['etat_actuel'] == 'CI')
	{
		document.getElementById('suivant').style.display = 'none';
		document.getElementById('CI_barre_1').style.display = '';
		document.getElementById('CI_barre_2').style.display = '';
	}
	else
	{
		document.getElementById('suivant').style.display = '';
		document.getElementById('CI_barre_1').style.display = 'none';
		document.getElementById('CI_barre_2').style.display = 'none';
	}
	
}

var message_en_cours_cache = 0;

function actualiser()
{
	incrementation_delai_auto = 0;
	var num = etat_jeu['id_courant'];
	if(! donnees_messages[num])
	{
		document.getElementById('fond').style.background = 'black';
		document.getElementById('img').style.background = '';
		document.getElementById('banc').style.background = "";
		document.getElementById('auteur').style.visibility = 'hidden';
		document.getElementById('texte').style.visibility = 'visible';
		document.getElementById('texte').innerHTML = l('fin');
		document.getElementById('texte').style.color = "white";
	}
	else
	{
	if(!mess_lie_au_precedent && donnees_messages[num].cache == 1)
	{
		message_en_cours_cache = 1;
		var lien_suivant = donnees_messages[num].lie_au_suivant;
		if(lien_suivant == 1)
		{
			mess_lie_au_precedent = 1;
		}
		else
		{
			mess_lie_au_precedent = 0;
		}
		incrementer(2);
	}
	else if(mess_lie_au_precedent && message_en_cours_cache == 1)
	{
		var lien_suivant = donnees_messages[num].lie_au_suivant;
		if(lien_suivant == 1)
		{
			mess_lie_au_precedent = 1;
		}
		else
		{
			mess_lie_au_precedent = 0;
		}
		incrementer(2);
	}
	else
	{
		controleAnimation.pause();
		message_en_cours_cache = 0;
		
		var contenu_texte = donnees_messages[num].texte;
		var couleur_texte = donnees_messages[num].couleur;
		var lien_suivant = donnees_messages[num].lie_au_suivant;
		var son_texte = donnees_messages[num].son_texte;
		var vitesse_texte = donnees_messages[num].vitesse_texte;
		
		contenu_texte = contenu_texte.replace(/\[#var:(.+?)\]/g, testerValeurVar);

		
		if(!mess_lie_au_precedent)
		{
			num_action_a_gerer = num;
			
			//gestion des delais
			var defil_auto = donnees_messages[num].defil_auto;
			if(defil_auto != '0' && defil_auto != 'NaN')
			{
				document.getElementById('suivant').style.display = 'none';
				incrementation_delai_auto = 1;
				window.setTimeout("incrementer(1);", defil_auto*10);
			}
			else
			{
				if(etat_jeu['user_input']['etat_actuel'] != 'CI' )
				{
					document.getElementById('suivant').style.display = '';
				}
			}
			//fin gestion des delais
		}
		
		if(lien_suivant == 1)
		{
			var action_suiv = -1;
		}
		else
		{
			var action_suiv = num_action_a_gerer;
		}
		
		//affichage boite de texte
		var texte_vide = !contenu_texte.replace(/(\[#(.*?)\])/g, '').match(/[^\s]+/);
		//fin affichage boite de texte
		
		var id_auteur = parseInt(donnees_messages[num].id_auteur);
		
		var cellule_auteur = document.getElementById('auteur');
		
		if(!mess_lie_au_precedent)
		{
			var auteur = donnees_messages[num].auteur;
			
			cellule_auteur.style.visibility = 'hidden';
			controleAnimation.perso_qui_parle = id_auteur;
			//affichage de l'auteur
			switch(id_auteur)
			{
				case -2 : case -3 : case -4 :
					cellule_auteur.innerHTML = '';
					break;
				case 0 :
					cellule_auteur.innerHTML = l('juge');
					break;
				default :
					cellule_auteur.innerHTML = auteur;
					break;
			}
			//fin affichage de l'auteur
		}
		
		if(!texte_vide && cellule_auteur.innerHTML != '')
		{
			cellule_auteur.style.visibility = 'visible';
		}
		
		//affichage des images
		if(!mess_lie_au_precedent)
		{
			document.getElementById('quatrieme_plan').style.background = "";
		}
		
		var adresse_image = donnees_messages[num].image_perso;
		var adresse_fond = donnees_messages[num].fond;
		
		//gestion du perso
		if(adresse_image != '' && adresse_image != 'no' && id_auteur != -2)
		{
			if(id_auteur == -4)
			{
				controleAnimation.redemarreur_d_anim.src = adresse_image;
				document.getElementById('quatrieme_plan').style.background = "url('"+adresse_image+"') no-repeat center";
			}
			else
			{
				if((document.getElementById('defilement_rapide').checked != 1) && (!adresse_fond.match(/\/salle_d_audience\//)) && (document.getElementById('img').className != id_auteur))
				{
					document.getElementById('img').style.opacity = '0';
					apparitionPersoFondu();
				}
				controleAnimation.redemarreur_d_anim.src = adresse_image;
				document.getElementById('img').style.background = "url('"+adresse_image+"') no-repeat center bottom";
				document.getElementById('img').className = id_auteur;
				
				controleAnimation.perso_affiche = id_auteur;
				controleAnimation.image_anim_en_cours = adresse_image;
				controleAnimation.image_fixe_en_cours = donnees_messages[num].image_fixe_perso;
				
				var duree_anim_spec = parseInt(donnees_messages[num].duree_anim_perso);
				if(!isNaN(duree_anim_spec) && duree_anim_spec != 0)
				{
					controleAnimation.jouerAnimDebut(donnees_messages[num].image_anim_perso, duree_anim_spec);
				}
			}
		}
		else if(adresse_image == 'no' || id_auteur == -2)
		{
			document.getElementById('img').style.backgroundImage = '';
			document.getElementById('quatrieme_plan').style.background = "";
			controleAnimation.image_anim_en_cours = '';
			controleAnimation.image_fixe_en_cours = '';
			controleAnimation.perso_affiche = -3;
		}
		
		//gestion du fond
		if(adresse_fond != '' && adresse_fond != 'no')
		{
			controleAnimation.redemarreur_d_anim.src = adresse_fond;
			document.getElementById('fond').style.background = "url('"+adresse_fond+"')";
		}
		else if(adresse_fond == 'no')
		{
			document.getElementById('fond').style.background = 'black';
			document.getElementById('banc').style.backgroundImage = '';
		}
		
		if((adresse_fond.indexOf(config['dossier_images']) == 0) && (adresse_fond.match(/banc_accusation/) || adresse_fond.match(/banc_defense/) || adresse_fond.match(/banc_temoin/) || adresse_fond.match(/ParloirDerriere/)))
		{
			document.getElementById('banc').style.background = "url('"+adresse_fond.replace(/\.jpg$/, '.gif')+"')";
		}
		else if(adresse_fond != '')
		{
			document.getElementById('banc').style.background = "";
		}
		
		if(adresse_fond.indexOf('salle_d_audience/fond_defilant_defense.gif') != -1)
		{
			document.getElementById('img').style.backgroundPosition = "0% 100%";
		}
		else if(adresse_fond.indexOf('salle_d_audience/fond_defilant_accusation.gif') != -1)
		{
			document.getElementById('img').style.backgroundPosition = "100% 100%";
		}
		else
		{
			document.getElementById('img').style.backgroundPosition = "50% 100%";
		}
		//fin affichage des images
		
		//affichage du texte
		if(!mess_lie_au_precedent)
		{
			document.getElementById('texte').innerHTML = '';
			if(texte_vide)
			{
				document.getElementById('texte').style.visibility = 'hidden';
			}
			else
			{
				document.getElementById('texte').style.visibility = 'visible';
			}
			typewriter.appendText(contenu_texte, couleur_texte, num, son_texte, vitesse_texte, action_suiv);
		}
		else
		{
			if(!texte_vide)
			{
				document.getElementById('texte').style.visibility = 'visible';
			}
			typewriter.appendText(contenu_texte, couleur_texte, num, son_texte, vitesse_texte, action_suiv);
		}
		//fin affichage du texte
		
		//lecture des sons
		var musique_du_message = donnees_messages[num].son;
		var type_son = donnees_messages[num].type_son;
		
		if(musique_du_message !== '')
		{
			if(musique_du_message != 'STOP')
			{		
				controleSon.jouerMP3(type_son, musique_du_message);
			}
			else
			{
				controleSon.jouerMP3(1, -1);
			}
		}
		//fin lecture des sons
		
		if(!mess_lie_au_precedent)
		{
			//gestion de certaines actions qui nécessitent d'être activées dès la lecture du texte :
			var action = donnees_messages[num].operation;
			if(action[0] == 'AfficherElement')
			{
				var type = ldParam(action[1], 0, 0);
				var id_elt = ldParam(action[2], 0, 0);
				afficherEltJeu(type, id_elt);
			}
			else
			{
				document.getElementById('quatrieme_plan').style.backgroundPosition = "center";
			}
			
			if(action[0] == 'DevoilerElement')
			{
				var type = ldParam(action[1], 0, 0);
				var id_elt = ldParam(action[2], 0, 0);
				devoilerElt(type, id_elt);
			}
			else if(action[0] == 'MasquerElement')
			{
				var type = ldParam(action[1], 0, 0);
				var id_elt = ldParam(action[2], 0, 0);
				masquerElt(type, id_elt);
			}
			
			if(action[0] == 'DevoilerElements')
			{
				var type = ldParam(action[1], 1, 0);
				var id_elt = ldParam(action[2], 1, 0);
				for(var i=0; i < type.length; i++)
				{
					devoilerElt(type[i], id_elt[i]);
				}
			}
			else if(action[0] == 'MasquerElements')
			{
				var type = ldParam(action[1], 1, 0);
				var id_elt = ldParam(action[2], 1, 0);
				for(var i=0; i < type.length; i++)
				{
					masquerElt(type[i], id_elt[i]);
				}
			}
			
			if(action[0] == 'AllerCI')
			{
				var id_message_cible = ldParam(action[1], 0, 0);
				document.getElementById('texte_pression').value = id_message_cible;
				document.getElementById('insister_ci').style.display = '';
			}
			else
			{
				document.getElementById('insister_ci').style.display = 'none';
			}
			
			
			//fin gestion de ces actions
		
		}
		
		if(lien_suivant == '1')
		{
			mess_lie_au_precedent = 1;
		}
		else
		{
			mess_lie_au_precedent = 0;
		}
	}
	}
}

var controleAnimation = new Object({
	elt_img:'',
	image_anim_en_cours:'',
	image_fixe_en_cours:'',
	perso_qui_parle:-3,
	perso_affiche:-3,
	anim_debut_en_cours:0,
	perso_en_train_de_parler:0,
	redemarreur_d_anim:new Image(),
	
	play:function()
		{
			this.perso_en_train_de_parler = 1;
			if(this.perso_affiche != this.perso_qui_parle)
			{
				this.pause();
			}
			else if(this.anim_debut_en_cours == 0 && this.image_anim_en_cours != '')
			{
				this.redemarreur_d_anim.src = this.image_anim_en_cours;
				this.elt_img.style.background = "url('"+this.image_anim_en_cours+"') no-repeat center bottom";
			}
		},
		
	pause:function()
		{
			this.perso_en_train_de_parler = 0;
			if(this.anim_debut_en_cours == 0 && this.image_fixe_en_cours != '')
			{
				this.redemarreur_d_anim.src = this.image_fixe_en_cours;
				this.elt_img.style.background = "url('"+this.image_fixe_en_cours+"') no-repeat center bottom";
			}
		},
		
	jouerAnimDebut:function(anim, duree)
		{
			this.redemarreur_d_anim.src = anim;
			this.anim_debut_en_cours = 1;
			this.elt_img.style.background = "url('"+anim+"') no-repeat center bottom";
			window.setTimeout('controleAnimation.reprendreAnimNormale();', duree * 10);
		},
		
	reprendreAnimNormale:function()
		{
			this.anim_debut_en_cours = 0;
			if(this.perso_en_train_de_parler == 1)
			{
				this.play();
			}
			else
			{
				this.pause();
			}
		}
});

var controleSon = new Object({
	son_texte_en_cours:-1,
	liste_objets_mp3:'',
	liste_sons_texte:'',
	musique_en_cours:-1,
	
	jouerMP3:function(type, id_son)
		{
			if(type == 0 && id_son !== '')
			{
				this.liste_objets_mp3[id_son].play();
			}
			else if(type == 1 && id_son !== '')
			{
				if(id_son == -1)
				{
					if(controleSon.musique_en_cours != -1)
					{
						this.liste_objets_mp3[controleSon.musique_en_cours].stop();
						controleSon.musique_en_cours = -1;
					}
				}
				else if(controleSon.musique_en_cours == -1 || controleSon.musique_en_cours != id_son)
				{
					if(controleSon.musique_en_cours != -1)
					{
						this.liste_objets_mp3[controleSon.musique_en_cours].stop();
					}
					this.liste_objets_mp3[id_son].play({
						onfinish: function() 
						{
							this.play();
						}
					});
					controleSon.musique_en_cours = id_son;
				}
			}
			else if(type == 2)
			{
				if(this.son_texte_en_cours != id_son)
				{
					for(var i=1; i<this.liste_sons_texte.length; i++)
					{
						this.liste_sons_texte[i].stop();
					}
					this.son_texte_en_cours = -1;
					
					if(id_son != -1)
					{
						liste_sons_texte[id_son].play({
							volume:30,
							onfinish: function() 
								{
									this.play();
								}
						});
						this.son_texte_en_cours = id_son;
					}
				}
			}
		}
});

/*
var musique_en_cours = -1;
var son_texte_en_cours = -1;

function jouerMP3(type, id_son)
{	
	if(type == 0 && id_son != '')
	{
		liste_objets_mp3[id_son].play();
	}
	else if(type == 1 && id_son != '')
	{
		if(id_son == -1)
		{
			liste_objets_mp3[musique_en_cours].stop();
			musique_en_cours = -1;
		}
		else if(musique_en_cours == -1 || musique_en_cours != id_son)
		{
			if(musique_en_cours != -1)
			{
				liste_objets_mp3[musique_en_cours].stop();
			}
			liste_objets_mp3[id_son].play({
			onfinish: function() {
				this.play();
				}
			});
			musique_en_cours = id_son;
		}
	}
	else if(type == 2)
	{
		if(son_texte_en_cours == -1 || son_texte_en_cours != id_son)
		{
			if(son_texte_en_cours != -1)
			{
				liste_sons_texte[son_texte_en_cours].stop();
			}
			liste_sons_texte[id_son].play({volume:30,
			onfinish: function() {
				this.play();
				}});
			son_texte_en_cours = id_son;
		}
	}
}

function pauserSonTexte()
{
	for(var i = 1; i < liste_sons_texte.length; i++)
	{
		liste_sons_texte[i].pause();
	}
	son_texte_en_cours = -1;
}
*/

function get_html_translation_table(table, quote_style) 
{
	// http://kevin.vanzonneveld.net
	
	var entities = {}, histogram = {}, decimal = 0, symbol = '';
	var constMappingTable = {}, constMappingQuoteStyle = {};
	var useTable = {}, useQuoteStyle = {};
	
	useTable      = (table ? table.toUpperCase() : 'HTML_SPECIALCHARS');
	useQuoteStyle = (quote_style ? quote_style.toUpperCase() : 'ENT_COMPAT');
	
	// Translate arguments
	constMappingTable[0]      = 'HTML_SPECIALCHARS';
	constMappingTable[1]      = 'HTML_ENTITIES';
	constMappingQuoteStyle[0] = 'ENT_NOQUOTES';
	constMappingQuoteStyle[2] = 'ENT_COMPAT';
	constMappingQuoteStyle[3] = 'ENT_QUOTES';
	
	// Map numbers to strings for compatibilty with PHP constants
	if (!isNaN(useTable)) 
	{
		useTable = constMappingTable[useTable];
	}
	if (!isNaN(useQuoteStyle)) 
	{
		useQuoteStyle = constMappingQuoteStyle[useQuoteStyle];
	}
	
	if (useTable == 'HTML_SPECIALCHARS') 
	{
		// ascii decimals for better compatibility
		entities['38'] = '&amp;';
		if (useQuoteStyle != 'ENT_NOQUOTES') 
		{
			entities['34'] = '&quot;';
		}
		if (useQuoteStyle == 'ENT_QUOTES') 
		{
			entities['39'] = '&#039;';
		}
		entities['60'] = '&lt;';
		entities['62'] = '&gt;';
	} 
	else if (useTable == 'HTML_ENTITIES') 
	{
		// ascii decimals for better compatibility
		entities['38']  = '&amp;';
		if (useQuoteStyle != 'ENT_NOQUOTES') 
		{
			entities['34'] = '&quot;';
		}
		if (useQuoteStyle == 'ENT_QUOTES') 
		{
			entities['39'] = '&#039;';
		}
		entities['60']  = '&lt;';
		entities['62']  = '&gt;';
		entities['160'] = '&nbsp;';
		entities['161'] = '&iexcl;';
		entities['162'] = '&cent;';
		entities['163'] = '&pound;';
		entities['164'] = '&curren;';
		entities['165'] = '&yen;';
		entities['166'] = '&brvbar;';
		entities['167'] = '&sect;';
		entities['168'] = '&uml;';
		entities['169'] = '&copy;';
		entities['170'] = '&ordf;';
		entities['171'] = '&laquo;';
		entities['172'] = '&not;';
		entities['173'] = '&shy;';
		entities['174'] = '&reg;';
		entities['175'] = '&macr;';
		entities['176'] = '&deg;';
		entities['177'] = '&plusmn;';
		entities['178'] = '&sup2;';
		entities['179'] = '&sup3;';
		entities['180'] = '&acute;';
		entities['181'] = '&micro;';
		entities['182'] = '&para;';
		entities['183'] = '&middot;';
		entities['184'] = '&cedil;';
		entities['185'] = '&sup1;';
		entities['186'] = '&ordm;';
		entities['187'] = '&raquo;';
		entities['188'] = '&frac14;';
		entities['189'] = '&frac12;';
		entities['190'] = '&frac34;';
		entities['191'] = '&iquest;';
		entities['192'] = '&Agrave;';
		entities['193'] = '&Aacute;';
		entities['194'] = '&Acirc;';
		entities['195'] = '&Atilde;';
		entities['196'] = '&Auml;';
		entities['197'] = '&Aring;';
		entities['198'] = '&AElig;';
		entities['199'] = '&Ccedil;';
		entities['200'] = '&Egrave;';
		entities['201'] = '&Eacute;';
		entities['202'] = '&Ecirc;';
		entities['203'] = '&Euml;';
		entities['204'] = '&Igrave;';
		entities['205'] = '&Iacute;';
		entities['206'] = '&Icirc;';
		entities['207'] = '&Iuml;';
		entities['208'] = '&ETH;';
		entities['209'] = '&Ntilde;';
		entities['210'] = '&Ograve;';
		entities['211'] = '&Oacute;';
		entities['212'] = '&Ocirc;';
		entities['213'] = '&Otilde;';
		entities['214'] = '&Ouml;';
		entities['215'] = '&times;';
		entities['216'] = '&Oslash;';
		entities['217'] = '&Ugrave;';
		entities['218'] = '&Uacute;';
		entities['219'] = '&Ucirc;';
		entities['220'] = '&Uuml;';
		entities['221'] = '&Yacute;';
		entities['222'] = '&THORN;';
		entities['223'] = '&szlig;';
		entities['224'] = '&agrave;';
		entities['225'] = '&aacute;';
		entities['226'] = '&acirc;';
		entities['227'] = '&atilde;';
		entities['228'] = '&auml;';
		entities['229'] = '&aring;';
		entities['230'] = '&aelig;';
		entities['231'] = '&ccedil;';
		entities['232'] = '&egrave;';
		entities['233'] = '&eacute;';
		entities['234'] = '&ecirc;';
		entities['235'] = '&euml;';
		entities['236'] = '&igrave;';
		entities['237'] = '&iacute;';
		entities['238'] = '&icirc;';
		entities['239'] = '&iuml;';
		entities['240'] = '&eth;';
		entities['241'] = '&ntilde;';
		entities['242'] = '&ograve;';
		entities['243'] = '&oacute;';
		entities['244'] = '&ocirc;';
		entities['245'] = '&otilde;';
		entities['246'] = '&ouml;';
		entities['247'] = '&divide;';
		entities['248'] = '&oslash;';
		entities['249'] = '&ugrave;';
		entities['250'] = '&uacute;';
		entities['251'] = '&ucirc;';
		entities['252'] = '&uuml;';
		entities['253'] = '&yacute;';
		entities['254'] = '&thorn;';
		entities['255'] = '&yuml;';
	} 
	else 
	{
		throw Error("Table: "+useTable+' not supported');
		return false;
	}
	
	// ascii decimals to real symbols
	for (decimal in entities) 
	{
		symbol = String.fromCharCode(decimal);
		histogram[symbol] = entities[decimal];
	}
	return histogram;
}

/*
function html_entity_decode( string, quote_style ) 
{
	// http://kevin.vanzonneveld.net
	
	var histogram = {}, symbol = '', tmp_str = '', entity = '';
	tmp_str = string.toString();
	
	if (false === (histogram = get_html_translation_table('HTML_ENTITIES', quote_style))) 
	{
		return false;
	}
	
	// &amp; must be the last character when decoding!
	delete(histogram['&']);
	histogram['&'] = '&amp;';
	
	for (symbol in histogram) 
	{
		entity = histogram[symbol];
		tmp_str = tmp_str.split(entity).join(symbol);
	}
	
	return tmp_str;
}*/

function html_entity_decode(str)
{
	//jd-tech.net
	var tarea=document.createElement('textarea');
	tarea.innerHTML = str; return tarea.value;
	tarea.parentNode.removeChild(tarea);
}

function htmlentities (string, quote_style) 
{
	// http://kevin.vanzonneveld.net
	
	var hash_map = {}, symbol = '', tmp_str = '', entity = '';
	tmp_str = string.toString();
	
	if (false === (hash_map = this.get_html_translation_table('HTML_ENTITIES', quote_style))) 
	{
		return false;
	}
	hash_map["'"] = '&#039;';
	for (symbol in hash_map) 
	{
		entity = hash_map[symbol];
		tmp_str = tmp_str.split(symbol).join(entity);
	}
	
	return tmp_str;
}

function ldParam(elt, mult, force_eval)
{
	//li_elt : l'élément li contenant le parametre
	//mult : dit si c'est un parametre multiple
	//force_eval : 	0 = eval ssi commence par xpr=
	//			1 = eval_var sinon
	//			2 = eval toujours
	if(mult)
	{
		var tab2 = new Array();
		for(var i=0; i < elt.length; i++)
		{
			tab2.push(html_entity_decode(elt[i]));
			if(tab2[i].indexOf('xpr=') == 0)
			{
				tab2[i] = c_f.eval(tab2[i].substr(4));
			}
			else if(force_eval == 1)
			{
				tab2[i] = c_f.eval_var(tab2[i]);
			}
			else if(force_eval == 2)
			{
				tab2[i] = c_f.eval(tab2[i]);
			}
			
			if(tab2[i] !== false && tab2[i] !== true && isNaN(tab2[i]))
			{
				tab2[i] = htmlentities(tab2[i]);
			}
		}
		return tab2;
	}
	else
	{
		var val = html_entity_decode(elt);
		if(val.indexOf('xpr=') == 0)
		{
			val = c_f.eval(val.substr(4));
		}
		else if(force_eval == 1)
		{
			val = c_f.eval_var(val);
		}
		else if(force_eval == 2)
		{
			val = c_f.eval(val);
		}
		
		if(val !== false && val !== true && isNaN(val))
		{
			val = htmlentities(val);
		}
		
		return val;
	}
}

function gererAction(num)
{
		var action = donnees_messages[num].operation;
		if(action[0] == 'RepondreQuestion')
		{
			var choix1 = ldParam(action[1], 0, 0);
			var choix2 = ldParam(action[2], 0, 0);
			var choix3 = ldParam(action[3], 0, 0);
			var message1 = parseInt(ldParam(action[4], 0, 0));
			var message2 = parseInt(ldParam(action[5], 0, 0));
			var message3 = parseInt(ldParam(action[6], 0, 0));
			document.getElementById('suivant').style.display = 'none';
			document.getElementById('choixQuestion').style.display = '';
			etat_jeu['user_input']['etat_actuel'] = '';
			document.getElementById('choix1').innerHTML = choix1;
			document.getElementById('choix1').href = 'javascript:etat_jeu[\'id_courant\'] = '+message1+'; document.getElementById(\'choixQuestion\').style.display = \'none\'; actualiser();';
			document.getElementById('choix2').style.display = '';
			document.getElementById('choix2').innerHTML = choix2;
			document.getElementById('choix2').href = 'javascript:etat_jeu[\'id_courant\'] = '+message2+'; document.getElementById(\'choixQuestion\').style.display = \'none\'; actualiser();';
			document.getElementById('choix3').innerHTML = choix3;
			document.getElementById('choix3').href = 'javascript:etat_jeu[\'id_courant\'] = '+message3+'; document.getElementById(\'choixQuestion\').style.display = \'none\'; actualiser();';
			document.getElementById('choix4').style.display = 'none';
		}
		if(action[0] == 'ChoixEntre2')
		{
			var choix1 = ldParam(action[1], 0, 0);
			var choix2 = ldParam(action[2], 0, 0);
			var message1 = parseInt(ldParam(action[3], 0, 0));
			var message2 = parseInt(ldParam(action[4], 0, 0));
			document.getElementById('suivant').style.display = 'none';
			document.getElementById('choixQuestion').style.display = '';
			etat_jeu['user_input']['etat_actuel'] = '';
			document.getElementById('choix1').innerHTML = choix1;
			document.getElementById('choix1').href = 'javascript:etat_jeu[\'id_courant\'] = '+message1+'; document.getElementById(\'choixQuestion\').style.display = \'none\'; actualiser();';
			document.getElementById('choix2').style.display = 'none';
			document.getElementById('choix4').style.display = 'none';
			document.getElementById('choix3').innerHTML = choix2;
			document.getElementById('choix3').href = 'javascript:etat_jeu[\'id_courant\'] = '+message2+'; document.getElementById(\'choixQuestion\').style.display = \'none\'; actualiser();';
		}
		if(action[0] == 'ChoixEntre4')
		{
			var choix1 = ldParam(action[1], 0, 0);
			var choix2 = ldParam(action[2], 0, 0);
			var choix3 = ldParam(action[3], 0, 0);
			var choix4 = ldParam(action[4], 0, 0);
			var message1 = parseInt(ldParam(action[5], 0, 0));
			var message2 = parseInt(ldParam(action[6], 0, 0));
			var message3 = parseInt(ldParam(action[7], 0, 0));
			var message4 = parseInt(ldParam(action[8], 0, 0));
			document.getElementById('suivant').style.display = 'none';
			document.getElementById('choixQuestion').style.display = '';
			etat_jeu['user_input']['etat_actuel'] = '';
			document.getElementById('choix1').innerHTML = choix1;
			document.getElementById('choix1').href = 'javascript:etat_jeu[\'id_courant\'] = '+message1+'; document.getElementById(\'choixQuestion\').style.display = \'none\'; actualiser();';
			document.getElementById('choix2').style.display = '';
			document.getElementById('choix2').innerHTML = choix2;
			document.getElementById('choix2').href = 'javascript:etat_jeu[\'id_courant\'] = '+message2+'; document.getElementById(\'choixQuestion\').style.display = \'none\'; actualiser();';
			document.getElementById('choix3').innerHTML = choix3;
			document.getElementById('choix3').href = 'javascript:etat_jeu[\'id_courant\'] = '+message3+'; document.getElementById(\'choixQuestion\').style.display = \'none\'; actualiser();';
			document.getElementById('choix4').style.display = '';
			document.getElementById('choix4').innerHTML = choix4;
			document.getElementById('choix4').href = 'javascript:etat_jeu[\'id_courant\'] = '+message4+'; document.getElementById(\'choixQuestion\').style.display = \'none\'; actualiser();';
		}
		if(action[0] == 'AllerMessage')
		{
			var message = ldParam(action[1], 0, 0) - 1;
			etat_jeu['id_courant'] = message;
		}
		if(action[0] == 'DemanderPreuve')
		{
			document.getElementById('suivant').style.display = 'none';
			document.getElementById('presenter').style.display = '';
			
			etat_jeu['user_input']['type_elt_sol'] = ldParam(action[1], 1, 0);
			etat_jeu['user_input']['id_elt_sol'] = ldParam(action[2], 1, 0);
			etat_jeu['user_input']['message_echec'] = ldParam(action[3], 0, 0);
			etat_jeu['user_input']['message_succes'] = ldParam(action[4], 1, 0);
			
			var type_aff;
			
			if(action[5] && (type_aff = ldParam(action[5], 0, 0)) && (type_aff == 'profils' || type_aff == 'preuves'))
			{
				afficher(type_aff);
				document.getElementById('bandeau_'+type_aff).style.visibility = 'hidden';
			}
		}
		if(action[0] == 'LancerCI')
		{
			etat_jeu['user_input']['message_sol_CI'] = ldParam(action[1], 0, 0);
			etat_jeu['user_input']['type_elt_sol_CI'] = ldParam(action[2], 0, 0);
			etat_jeu['user_input']['id_elt_sol_CI'] = ldParam(action[3], 0, 0);
			etat_jeu['user_input']['message_succes_CI'] = ldParam(action[4], 0, 0);
			if(ldParam(action[5], 0, 0) != '')
			{
				etat_jeu['user_input']['message_echec_CI'] = ldParam(action[5], 0, 0);
			}
			else
			{
				etat_jeu['user_input']['message_echec_CI'] = 0;
			}
			document.getElementById('suivant').style.display = 'none';
			document.getElementById('CI_barre_1').style.display = '';
			document.getElementById('CI_barre_2').style.display = '';
			etat_jeu['user_input']['etat_actuel'] = 'CI';
			etat_jeu['user_input']['message_debut_CI'] = num;
		}
		if(action[0] == 'pauseCI')
		{
			document.getElementById('suivant').style.display = '';
			document.getElementById('CI_barre_1').style.display = 'none';
			document.getElementById('CI_barre_2').style.display = 'none';
			etat_jeu['user_input']['etat_actuel'] = 'CI_pause';
		}
		if(action[0] == 'RetourCI')
		{
			var id_message_cible = ldParam(action[1], 0, 0);
			document.getElementById('suivant').style.display = 'none';
			if(id_message_cible != 'objr')
			{
				etat_jeu['id_courant'] = id_message_cible;
				window.setTimeout("document.getElementById('suivant').style.display = 'none'; document.getElementById('CI_barre_1').style.display = ''; document.getElementById('CI_barre_2').style.display = ''; etat_jeu['user_input']['etat_actuel'] = 'CI'; actualiser();", 600);
			}
			else
			{
				etat_jeu['id_courant'] = etat_jeu['user_input']['message_debut_CI'];
				barreDeVie.perteVie(24);
				incrementation_delai_auto = 1;
				window.setTimeout("actualiser();",600);
			}
		/*document.getElementById('suivant').style.display = 'none';
		document.getElementById('CI_barre_1').style.display = '';
		document.getElementById('CI_barre_2').style.display = '';
		etat_jeu['user_input']['etat_actuel'] = 'CI';*/
		}
		if(action[0] == 'AjouterCI')
		{
			var id_message_cible = ldParam(action[1], 0, 0);
			var numero_message_cible = id_message_cible;
			donnees_messages[numero_message_cible].cache = 0;
			etat_jeu['caches'][etat_jeu.id_proces]['mess'][numero_message_cible] = 0;
		}
		if(action[0] == 'MasquerMessage')
		{
			var id_message_cible = ldParam(action[1], 0, 0);
			var numero_message_cible = id_message_cible;
			donnees_messages[numero_message_cible].cache = 1;
			etat_jeu['caches'][etat_jeu.id_proces]['mess'][numero_message_cible] = 1;
		}
		if(action[0] == 'PointerImage')
		{
			var image = ldParam(action[1], 0, 0);
			var x1 = ldParam(action[2], 1, 0);
			var y1 = ldParam(action[3], 1, 0);
			var x2 = ldParam(action[4], 1, 0);
			var y2 = ldParam(action[5], 1, 0);
			
			var longueur = Math.min(x1.length, Math.min(x2.length, Math.min(y1.length, y2.length)));
			
			if(action[6] && ldParam(action[6], 0, 0) != '')
			{
				var action_echec = 'javascript:etat_jeu[\'id_courant\'] = '+parseInt(ldParam(action[6], 0, 0))+'; fermerAffichage(); actualiser();';
			}
			else
			{
				var action_echec = "javascript:barreDeVie.perteVie(12);";
			}
			
			var actions_cibles = new Array(longueur);
			if(action[7] && ldParam(action[7], 0, 0) != '')
			{
				var messages_cibles = ldParam(action[7], 1, 0);
				for(i=0; i < longueur; i++)
				{
					actions_cibles[i] = 'javascript:etat_jeu[\'id_courant\'] = '+parseInt(messages_cibles[i])+'; fermerAffichage(); actualiser();';
				}
			}
			else
			{
				for(i=0; i < longueur; i++)
				{
					actions_cibles[i] = 'javascript:etat_jeu[\'id_courant\']++; fermerAffichage(); actualiser();';
				}
			}
			
			document.getElementById('suivant').style.display = 'none';
			
			var map_pointage = '';
			for(i = 0; i < longueur; i++)
			{
				map_pointage += '<area shape="rect" coords="'+parseInt(x1[i])+','+parseInt(y1[i])+','+parseInt(x2[i])+','+parseInt(y2[i])+'" href="'+actions_cibles[i]+'" />';
			}
			map_pointage += '<area shape="default" href="'+action_echec+'" />';
			
			
			document.getElementById('map_image_a_pointer').innerHTML = map_pointage;
			afficherDetails('img', image, 1);
		}
		if(action[0] == 'InputVar')
		{
			document.getElementById('suivant').style.display = 'none';
			var formulaire = document.getElementById('formulaire_saisie');
			formulaire.nom_variable.value = ldParam(action[1], 0, 0);
			formulaire.champ_de_saisie.value = '';
			if(ldParam(action[2], 0, 0) == 'mot')
			{
				formulaire.champ_de_saisie.setAttribute('onkeyup', 'this.value = this.value.replace(/ /g, "");');
			}
			else if(ldParam(action[2], 0, 0) == 'nb')
			{
				formulaire.champ_de_saisie.setAttribute('onkeyup', 'nombre(this);');
			}
			else
			{
				formulaire.champ_de_saisie.setAttribute('onkeyup', '');
			}
			
			if(action[3] && ldParam(action[3], 0, 0) == '1')
			{
				formulaire.champ_de_saisie.type = 'password';
				formulaire.setAttribute('autocomplete','off');
			}
			else
			{
				formulaire.champ_de_saisie.type = 'text';
			}
			
			document.getElementById('champSaisie').style.display = '';
		}
		if(action[0] == 'PerteVie')
		{
			barreDeVie.perteVie(ldParam(action[1], 0, 0));
		}
		if(action[0] == 'ReglerVie')
		{
			barreDeVie.perteVie(-120);
			barreDeVie.perteVie(120 - ldParam(action[1], 0, 0));
		}
		if(action[0] == 'ReglerGameOver')
		{
			var redir = parseInt(ldParam(action[1], 0, 0));
			if(isNaN(redir))
			{
				etat_jeu['user_input']['redirection_game_over'] = '';
			}
			else
			{
				etat_jeu['user_input']['redirection_game_over'] = redir;
			}
		}
		if(action[0] == 'FaireClignoterVie')
		{
			var nbPts = parseInt(ldParam(action[1], 0, 0));
			if(!isNaN(nbPts))
			{
				barreDeVie.clignoter(nbPts);
			}
		}
		if(action[0] == 'FinDuJeu')
		{
			if(action[1])
			{
				var type_destination = parseInt(ldParam(action[1], 0, 0));
				if(type_destination == 0)
				{
					finDuJeu(l('fin'));
				}
				else
				{
					if(type_destination == 1)
					{
						var nouv_url = 'jeu.php?id_proces='+serie_proces['suiv'];
					}
					else
					{
						var nouv_url = 'jeu.php?id_proces='+serie_proces[ldParam(action[2], 0, 0)]+'&avancement='+parseInt(ldParam(action[3], 0, 0));
					}
					
					var mode_transfert = parseInt(ldParam(action[4], 0, 0));
					
					if(mode_transfert == 1) //transferer les variables
					{
						nouv_url += '&vars='+base64_encode(serialize(etat_jeu['vars']));
					}
					else if(mode_transfert == 2) //transferer l'etat du jeu
					{
						etat_jeu['mode_transf'] = 1;
						nouv_url += '&etat='+base64_encode(serialize(etat_jeu));
					}
					
					window.location.href = nouv_url;
				}
			}
			else
			{
				finDuJeu(l('fin'));
			}
		}
		if(action[0] == 'CreerLieu')
		{
			//rien a faire
		}
		if(action[0] == 'DiscussionEnquete')
		{
			document.getElementById('suivant').style.display = 'none';
			document.getElementById('choixDiscuter').style.display = '';
			etat_jeu['user_input']['etat_actuel'] = '';
			
			for(var id_lieu in lieux)
			{
				if(lieux[id_lieu].mess_disc == num)
				{
					break;
				}
			}
			
			var contenu = '';
			var disc = '';
			for(var i = 1; i < action.length; i++)
			{
				var param = ldParam(action[i], 0, 0);
				if(param != '')
				{
					disc = param.split('_');
					if(lieux[id_lieu].disc[i-1].cache == 0)
					{
						contenu += '<tr><td><a href="javascript:document.getElementById(\'bouton_retour\').style.display = \'none\'; etat_jeu[\'id_courant\'] = '+lieux[id_lieu].disc[i-1].debut+'; document.getElementById(\'choixDiscuter\').style.display = \'none\'; actualiser();">'+lieux[id_lieu].disc[i-1].titre+'</a></td></tr>';
					}
				}
			}
			
			var bouton_retour = document.getElementById('bouton_retour');
			bouton_retour.href = 'javascript:etat_jeu[\'id_courant\'] = '+lieux[id_lieu].mess_central+'; document.getElementById(\'choixDiscuter\').style.display = \'none\'; document.getElementById(\'bouton_retour\').style.display = \'none\'; actualiser();';
			bouton_retour.style.display = '';
			
			document.getElementById('listeDiscuter').innerHTML = contenu;
		}
		if(action[0] == 'DiscussionEnqueteV2')
		{
			document.getElementById('suivant').style.display = 'none';
			document.getElementById('choixDiscuter').style.display = '';
			etat_jeu['user_input']['etat_actuel'] = '';
			
			for(var id_lieu in lieux)
			{
				if(lieux[id_lieu].mess_disc == num)
				{
					break;
				}
			}
			
			var debuts = ldParam(action[1], 1, 0);
			
			var contenu = '';
			for(var i = 0; i < debuts.length; i++)
			{
				if(lieux[id_lieu].disc[i].cache == 0)
				{
					contenu += '<tr><td><a href="javascript:document.getElementById(\'bouton_retour\').style.display = \'none\'; document.getElementById(\'barreVerrousPsy\').style.display = \'none\'; etat_jeu[\'id_courant\'] = '+lieux[id_lieu].disc[i].debut+'; document.getElementById(\'choixDiscuter\').style.display = \'none\'; actualiser();">'+lieux[id_lieu].disc[i].titre+'</a></td></tr>';
				}
			}
			
			var bouton_retour = document.getElementById('bouton_retour');
			bouton_retour.href = 'javascript:document.getElementById(\'barreVerrousPsy\').style.display = \'none\'; etat_jeu[\'id_courant\'] = '+lieux[id_lieu].mess_central+'; document.getElementById(\'choixDiscuter\').style.display = \'none\'; document.getElementById(\'bouton_retour\').style.display = \'none\'; actualiser();';
			bouton_retour.style.display = '';
			
			var verrousPsy = ldParam(action[4], 0, 0);
			
			
			if(verrousPsy != 0 && lieux[id_lieu].verrous_caches != 1)
			{
				verrousPsyches.message_debut = lieux[id_lieu].debut_verrous;
				document.getElementById('barreVerrousPsy').style.display = '';
			}
			
			document.getElementById('listeDiscuter').innerHTML = contenu;
		}
		if(action[0] == 'SeDeplacer')
		{
			document.getElementById('suivant').style.display = 'none';
			document.getElementById('choixDiscuter').style.display = '';
			etat_jeu['user_input']['etat_actuel'] = '';
			
			for(var id_lieu in lieux)
			{
				if(lieux[id_lieu].mess_depl == num)
				{
					break;
				}
			}
			
			var contenu = '';
			var lieu = '';
			for(var i = 0; i < lieux[id_lieu].depl.length; i++)
			{
				if(lieux[lieux[id_lieu].depl[i].id].cache == 0)
				{
					contenu += '<tr><td><a href="javascript:document.getElementById(\'bouton_retour\').style.display = \'none\'; etat_jeu[\'id_courant\'] = '+lieux[lieux[id_lieu].depl[i].id].debut+'; document.getElementById(\'choixDiscuter\').style.display = \'none\'; actualiser();">'+lieux[lieux[id_lieu].depl[i].id].nom+'</a></td></tr>';
				}
			}
			
			var bouton_retour = document.getElementById('bouton_retour');
			bouton_retour.href = 'javascript:etat_jeu[\'id_courant\'] = '+lieux[id_lieu].mess_central+'; document.getElementById(\'choixDiscuter\').style.display = \'none\'; document.getElementById(\'bouton_retour\').style.display = \'none\'; actualiser();';
			bouton_retour.style.display = '';
			
			document.getElementById('listeDiscuter').innerHTML = contenu;
		}
		if(action[0] == 'DevoilerConversation')
		{
			var lieu = ldParam(action[1], 0, 0);
			var conv = ldParam(action[2], 0, 0);
			if(parseInt(conv) != conv)
			{
				var conv = conv.split('_')[0];
			}
			lieux[lieu].disc[conv-1].cache = 0;
			etat_jeu['caches'][etat_jeu.id_proces]['disc'][lieu+'_'+conv] = 0;
		}
		if(action[0] == 'MasquerConversation')
		{
			var lieu = ldParam(action[1], 0, 0);
			var conv = ldParam(action[2], 0, 0);
			if(parseInt(conv) != conv)
			{
				var conv = conv.split('_')[0];
			}
			lieux[lieu].disc[conv-1].cache = 1;
			etat_jeu['caches'][etat_jeu.id_proces]['disc'][lieu+'_'+conv] = 1;
		}
		if(action[0] == 'DevoilerLieu')
		{
			var lieu = ldParam(action[1], 0, 0);
			lieux[lieu].cache = 0;
			etat_jeu['caches'][etat_jeu.id_proces]['lieux'][lieu] = 0;
		}
		if(action[0] == 'MasquerLieu')
		{
			var lieu = ldParam(action[1], 0, 0);
			lieux[lieu].cache = 1;
			etat_jeu['caches'][etat_jeu.id_proces]['lieux'][lieu] = 1;
		}
		if(action[0] == 'DevoilerIntroLieu')
		{
			var message_redir = lieux[ldParam(action[1], 0, 0)].debut - (- 1);
			donnees_messages[message_redir].cache = 1;
			etat_jeu['caches'][etat_jeu.id_proces]['mess'][message_redir] = 1;
		}
		if(action[0] == 'MasquerIntroLieu')
		{
			var message_redir = lieux[ldParam(action[1], 0, 0)].debut - (- 1);
			donnees_messages[message_redir].cache = 0;
			etat_jeu['caches'][etat_jeu.id_proces]['mess'][message_redir] = 0;
		}
		if(action[0] == 'DevoilerVerrousLieu')
		{
			var lieu = ldParam(action[1], 0, 0);
			if(parseInt(lieu) != lieu)
			{
				var lieu = lieu.split('_')[0];
			}
			lieux[lieu].verrous_caches = 0;
			etat_jeu['caches'][etat_jeu.id_proces]['verrous'][lieu] = 0;
		}
		if(action[0] == 'MasquerVerrousLieu')
		{
			var lieu = ldParam(action[1], 0, 0);
			if(parseInt(lieu) != lieu)
			{
				var lieu = lieu.split('_')[0];
			}
			lieux[lieu].verrous_caches = 1;
			etat_jeu['caches'][etat_jeu.id_proces]['verrous'][lieu] = 1;
		}
		if(action[0] == 'DefinirVar')
		{
			etat_jeu['vars'][ldParam(action[1], 0, 0)] = ldParam(action[2], 0, 0);
		}
		if(action[0] == 'TesterVar')
		{
			function rechercher_var(elt, tab)
			{
				for(var i = 0; i < tab.length; i++)
				{
					if(tab[i] == elt)
					{
						return i;
					}
				}
				return -1;
			}
			
			var var_test = ldParam(action[1], 0, 1);
			
			var valeurs_possibles = ldParam(action[2], 1, 0);
			var destinations_succes = ldParam(action[3], 1, 0);
			var destination_echec = ldParam(action[4], 0, 0);
			
			var nouv_mess = rechercher_var(var_test, valeurs_possibles);
			if(nouv_mess == -1)
			{
				nouv_mess = destination_echec;
			}
			else
			{
				nouv_mess = destinations_succes[nouv_mess];
			}
			etat_jeu['id_courant'] = nouv_mess - 1;
		}
		if(action[0] == 'EvaluerCondition')
		{
			var cond = ldParam(action[1], 0, 2);
			var dest_echec = ldParam(action[3], 0, 0);
			var dest_succes = ldParam(action[2], 0, 0);
			
			if(cond == 0 || cond == 'false')
			{
				nouv_mess = dest_echec;
			}
			else
			{
				nouv_mess = dest_succes;
			}
			etat_jeu['id_courant'] = nouv_mess - 1;
		}
		
		if(action[0] == 'LancerVerrous')
		{
			verrousPsyches.lieu = ldParam(action[1], 0, 0);
			verrousPsyches.nombre_total = ldParam(action[2], 0, 0);
			verrousPsyches.nombre_intacts = ldParam(action[2], 0, 0);
			verrousPsyches.dernierVerrouVu = 0;
			verrousPsyches.affiches = 0;
		}
		if(action[0] == 'DemanderEltVerrous')
		{
			if(verrousPsyches.dernierVerrouVu == 0)
			{
				verrousPsyches.premierVerrou = num;
				if(verrousPsyches.affiches == 0)
				{
					verrousPsyches.afficher();
				}
				verrousPsyches.dernierVerrouVu = num;
			}
			
			if(verrousPsyches.dernierVerrouVu != num && verrousPsyches.dernier_verrou_brise == 0)
			{
				verrousPsyches.briser();
			}
			
			verrousPsyches.dernierVerrouVu = num;
			verrousPsyches.dernier_verrou_brise = 0;
			
			document.getElementById('suivant').style.display = 'none';
			document.getElementById('presenter').style.display = '';
			etat_jeu['user_input']['type_elt_sol'] = ldParam(action[1], 1, 0);
			etat_jeu['user_input']['id_elt_sol'] = ldParam(action[2], 1, 0);
			etat_jeu['user_input']['message_echec'] = ldParam(action[3], 0, 0);
			etat_jeu['user_input']['message_succes'] = new Array();
			for(var i = 0; i < etat_jeu['user_input']['id_elt_sol'].length; i++)
			{
				etat_jeu['user_input']['message_succes'].push(ldParam(action[4], 0, 0));
			}
			
			verrousPsyches.message_sortie = ldParam(action[5], 0, 0);
			document.getElementById('sortirVerrous').style.display = '';
		}
		if(action[0] == 'FinVerrous')
		{
			if(verrousPsyches.dernier_verrou_brise == 0)
			{
				verrousPsyches.briser();
			}
			
			document.getElementById('suivant').style.display = 'none';
			etat_jeu['id_courant'] = ldParam(action[2], 0, 0);
			window.setTimeout('verrousPsyches.finVerrous();', 900);
			window.setTimeout('actualiser();', 3300);
		}
		
		if(action[0] == 'afficherVerrous')
		{
			if(verrousPsyches.affiches == 0)
			{
				verrousPsyches.afficher();
			}
		}
		if(action[0] == 'briserVerrou')
		{
			if(verrousPsyches.dernier_verrou_brise == 0)
			{
				verrousPsyches.briser();
			}
		}
}

function finDuJeu(texte)
{
	document.getElementById('screen-bottom').style.display = 'none';
	document.getElementById('fond').style.background = 'black';
	document.getElementById('img').style.background = '';
	document.getElementById('banc').style.background = "";
	document.getElementById('auteur').style.visibility = 'hidden';
	document.getElementById('texte').style.visibility = 'visible';
	document.getElementById('texte').innerHTML = texte;
	document.getElementById('texte').style.color = "white";
	etat_jeu['id_courant'] = -100;
}

var verrousPsyches = new Object({
	lieu:0,
	message_debut:0,
	nombre_total:0,
	nombre_intacts:0,
	premierVerrou:0,
	dernierVerrouVu:0,
	message_sortie:0,
	affiches:0,
	nb_verrous_image:0,
	dernier_verrou_brise:0,
	
	aff_chaines_fond:'',
	aff_chaines_pp:'',
	aff_verrous:'',
	
	liste_divs_verrous:'',
	
	positionVerrous:function(nb_verrous)
		{
			var verrous = new Array();
			var position_centree = new Array(-128,-96);
			var liste_verrous = new Array(5);
			liste_verrous[0] = new Array(position_centree[0], position_centree[1]+32);
			liste_verrous[1] = new Array(position_centree[0]+96, position_centree[1]-32);
			liste_verrous[2] = new Array(position_centree[0]-96, position_centree[1]-32);
			liste_verrous[3] = new Array(position_centree[0]+48, position_centree[1]+64);
			liste_verrous[4] = new Array(position_centree[0]-48, position_centree[1]+64);
			
			var depart = 0;
			
			if(nb_verrous % 2 == 0)
			{
				var depart = 1;
			}
			
			for(var i = depart; i < nb_verrous + depart; i++)
			{
				verrous.push(liste_verrous[i]);
			}
			
			return verrous;
		},
	
	afficher:function()
	{
		this.nb_verrous_image = Math.min(this.nombre_total, 5);
		var positions = this.positionVerrous(this.nb_verrous_image);
		
		var url_image_fond = config['dossier_images']+'verrousPsyches/apparition_chaines_fond.gif';
		var url_image_pp = config['dossier_images']+'verrousPsyches/apparition_chaines_pp.gif';
		
		var contenu_div_chaines_fond = '';
		var contenu_div_chaines_pp = '';
		var contenu_div_verrous = '';
		
		for(var i = this.nb_verrous_image - 1; i >= 0 ; i--)
		{
			contenu_div_chaines_fond += '<div style="background-image: url(\''+url_image_fond+'\'); background-position:'+positions[i][0]+'px '+positions[i][1]+'px; background-repeat:no-repeat;"></div>';
			contenu_div_chaines_pp += '<div style="background-image: url(\''+url_image_pp+'\'); background-position:'+positions[i][0]+'px '+positions[i][1]+'px; background-repeat:no-repeat;"></div>';
			contenu_div_verrous += '<div style="background-position:'+positions[i][0]+'px '+positions[i][1]+'px; background-repeat:no-repeat;"></div>';
			
		}
		
		controleAnimation.redemarreur_d_anim.src = url_image_fond;
		window.setTimeout(function(){controleAnimation.redemarreur_d_anim.src = url_image_pp;},1);
		
		this.aff_chaines_fond.innerHTML = contenu_div_chaines_fond;
		this.aff_chaines_pp.innerHTML = contenu_div_chaines_pp;
		this.aff_verrous.innerHTML = contenu_div_verrous;
		
		this.liste_divs_verrous = this.aff_verrous.getElementsByTagName('div');
		
		this.affiches = 1;
		
		window.setTimeout('verrousPsyches.apparitionVerrou('+(this.liste_divs_verrous.length - 1)+');', 1000);
	},
	
	apparitionVerrou:function(index)
	{
		var url_image = config['dossier_images']+'verrousPsyches/apparition_verrou.gif?v='+index;
		controleAnimation.redemarreur_d_anim.src = url_image;
		this.liste_divs_verrous[index].style.backgroundImage = "url('"+url_image+"')";
		
		if(index != 0)
		{
			window.setTimeout('verrousPsyches.apparitionVerrou('+(index - 1)+');', 100);
		}
	},
	
	briser:function()
	{
		this.nombre_intacts -= 1;
		if(this.nombre_intacts < this.nb_verrous_image)
		{
			var index = this.nb_verrous_image - this.nombre_intacts - 1;
			
			var url_image = config['dossier_images']+"verrousPsyches/explosion_verrou.gif?v="+index;
			
			controleAnimation.redemarreur_d_anim.src = url_image;
			this.liste_divs_verrous[index].style.backgroundImage = 'url("'+url_image+'")';
		}
		this.dernier_verrou_brise = 1;
	},
	
	lancer:function()
	{
		document.getElementById('barreVerrousPsy').style.display = 'none';
		document.getElementById('choixDiscuter').style.display = 'none';
		etat_jeu['id_courant'] = this.message_debut;
		window.setTimeout('actualiser();', 1);
	},
		
	sortirVerrous:function()
	{
		this.aff_chaines_fond.innerHTML = '';
		this.aff_chaines_pp.innerHTML = '';
		this.aff_verrous.innerHTML = '';
		this.nombre_total = 0;
		this.nombre_intacts = 0;
		this.lieu = 0;
		
		document.getElementById('sortirVerrous').style.display = 'none';
		document.getElementById('presenter').style.display = 'none';
		document.getElementById('aff_preuve_pres').style.display = 'none';
		document.getElementById('bouton_verifier_pres').style.display = 'none';
		
		etat_jeu['id_courant'] = this.message_sortie;
		window.setTimeout('actualiser();', 1);
	},
		
	finVerrous:function()
	{
		this.aff_verrous.innerHTML = '';
		var liste_chaines_pp = this.aff_chaines_pp.getElementsByTagName('div');
		var liste_chaines_fond = this.aff_chaines_fond.getElementsByTagName('div');
		
		var url_image_pp = config['dossier_images']+'verrousPsyches/disparition_chaines_pp.gif';
		var url_image_fond = config['dossier_images']+'verrousPsyches/disparition_chaines_fond.gif';
		
		controleAnimation.redemarreur_d_anim.src = url_image_fond;
		window.setTimeout(function(){controleAnimation.redemarreur_d_anim.src = url_image_pp;},1);
		
		for(var i = 0; i < liste_chaines_pp.length; i++)
		{
			liste_chaines_pp[i].style.backgroundImage = "url('"+url_image_pp+"')";
			liste_chaines_fond[i].style.backgroundImage = "url('"+url_image_fond+"')";
		}
		
		window.setTimeout(function(){
			var ver = verrousPsyches;
			ver.aff_chaines_fond.innerHTML = '';
			ver.aff_chaines_pp.innerHTML = '';
			ver.aff_verrous.innerHTML = '';
			ver.nombre_total = 0;
			ver.nombre_intacts = 0;
			ver.lieu = 0;
		},2300);
	}
	
	/* En utilisant une seule image a la fois
	afficher:function()
		{
			this.nb_verrous_image = Math.min(this.nombre_total, 3);
			var url_image = config['dossier_images']+"verrousPsyches/"+this.nb_verrous_image+" apparition.gif";
			controleAnimation.redemarreur_d_anim.src = url_image;
			this.aff_verrous.style.background = 'url("'+url_image+'")';
			this.affiches = 1;
		},
	briser:function()
		{
			this.nombre_intacts -= 1;
			if(this.nombre_intacts < this.nb_verrous_image)
			{
				var url_image = config['dossier_images']+"verrousPsyches/"+this.nb_verrous_image+" explosion "+(this.nb_verrous_image - this.nombre_intacts)+".gif";
				controleAnimation.redemarreur_d_anim.src = url_image;
				this.aff_verrous.style.background = 'url("'+url_image+'")';
			}
			this.dernier_verrou_brise = 1;
		},
	*/
});

function nombre(elt)
{
	var value = elt.value; 
	if(isNaN(parseFloat(value)))
	{
		elt.value = ""; // la valeur devient nulle
	}
	else if (value != parseInt(value) + ".") // Cas ou ce n'est pas un nombre avec juste un point derrière (pour la virgule)
	{
		elt.value = parseFloat(value); // La valeur devient la partie nombre
	}
}

function testerValeurVar(s0, s1, index, input)
{
	if(etat_jeu['vars'][s1])
	{
		return etat_jeu['vars'][s1];
	}
	else
	{
		return '';
	}
}

//Algo de levenshtein pour difference entre deux chaines
function levenshtein (a, b)
{
	// Calculate Levenshtein distance between two strings  
	// discuss at: http://phpjs.org/functions/levenshtein
	
	var min=Math.min, len1=0, len2=0, I=0, i=0, d=[], c='', j=0, J=0;
    
	if (a == b) 
	{
		return 0;
	}
	if (!a.length || !b.length) 
	{
		return b.length || a.length;
	}
	
	len1 = a.length + 1;
	len2 = b.length + 1;
	d = [[0]];
	while (++i < len2)
	{
		d[0][i] = i;
	}
	i = 0;
	while (++i < len1) 
	{
		J = j = 0;
		c = a[I];
		d[i] = [i];
		while (++j < len2) 
		{
			d[i][j] = min(d[I][j] + 1, d[i][J] + 1, d[I][J] + (c != b[J]));
			++J;
		}
		++I;
	}
    
    return d[len1 - 1][len2 - 1];
}


//module de "calcul formel" pour l'évaluation des formules
function calcul_formel()
{
	/* type lexeme
		[0,int] pour un nombre
		[1,str] pour un op 1
		[2,str] pour un op 2
		[3, ''] pour une parg
		[4, ''] pour une pard
		[5, str, 0] pour une var en cours, [5, str, 1] si finie ou simple
		[6, str, 0] pour une str en cours, [6, str, 1] si finie
		[7, str, 0] pour une fct en cours, [7, str, 0] si finie
		[8, ''] pour une virgule
		
		
		[1000, ''] pour rien du tout
	*/
	
	this.decompose = function(s)
	{
		var l = new Array();
		for(var i = 0; i < s.length; i++)
		{
			if(l.length > 0)
			{
				var l_e = l[l.length - 1];
			}
			else
			{
				var l_e = [1000, ''];
			}
			
			if(l_e[0] == 6 && l_e[2] == 0) //si on est en train de déf une str
			{
				if(l_e[1][l_e[1].length - 1] == "\\") //si caractère échappé
				{
					l_e[1][l_e[1].length - 1] = s[i]; 
					l_e[1] = l_e[1].substr(0, l_e[1].length - 1);
					l_e[1] = l_e[1]+s[i];
				}
				else if(s[i] == "'") //apos non échapée
				{
					l_e[2] = 1;
				}
				else //caractère normal
				{
					l_e[1] = l_e[1]+s[i];
				}
			}
			else if(l_e[0] == 5 && l_e[2] == 0) //en train de déf une var
			{
				if(l_e[1][l_e[1].length - 1] == "\\") //si caractère échappé
				{
					l_e[1][l_e[1].length - 1] = s[i]; 
					l_e[1] = l_e[1].substr(0, l_e[1].length - 1);
					l_e[1] = l_e[1]+s[i];
				}
				else if(s[i] == '"') //dbl quote non échapée
				{
					l_e[2] = 1;
				}
				else //caractère normal
				{
					l_e[1] = l_e[1]+s[i];
				}
			}
			else if(l_e[0] == 7 && l_e[2] == 0) //en train de définir une fct
			{
				if(s[i] == '(')
				{
					l_e[2] = 1;
					l.push([3, '']);
				}
				else
				{
					l_e[1] = l_e[1] + s[i];
				}
			}
			else
			{
				switch(s[i])
				{
					case ' ' : break;
					case '-' : case '!' :
						switch(l_e[0])
						{
							case 0 : case 4 : case 5 :
								l.push([2, s[i]]);
								break;
							default : l.push([1, s[i]]);
						}
						break;
					case "'" : l.push([6, '', 0]); break;
					case '"' : l.push([5, '', 0]); break;
					case '+' : case '*' : case '/' : case '^' : case '.' :
					case '&' : case '|' : case '=' : case '>' : case '<' : case '%' :
						l.push([2, s[i]]);
						break;
					case '(' : l.push([3, '']); break;
					case ')' : l.push([4, '']); break;
					case ',' : l.push([8, '']); break;
					case ':' : //objet de type spécial
						if(l_e[1] == 'f') //si c'est de type fonction
						{
							l.pop();
							l.push([7, '', 0]);
						}
						break;
					case '0' : case '1' : case '2' : case '3' : case '4' : 
					case '5' : case '6' : case '7' : case '8' : case '9' : 
						if(i == 0 || s[i-1] == ' ') //si précédé d'un espace : nouveau nombre
						{
							l.push([0, parseInt(s[i])]);
						}
						else if(l_e[0] == 0) //si précédé d'un nombre
						{
							l_e[1] = parseInt(s[i]) + l_e[1] * 10;
						}
						else if(l_e[0] == 5) //si précédé d'un nom de var
						{
							l_e[1] = l_e[1]+s[i];
						}
						else //sinon, c'est bien un nouveau nombre
						{
							l.push([0, parseInt(s[i])]);
						}
						break;
					default:
						if((i > 0 && s[i-1] != ' ') && l_e[0] == 5) //suite du nom de la variable précédente
						{
							l_e[1] = l_e[1]+s[i];
						}
						else
						{
							l.push([5, s[i], 1]);
						}
				}
			}
		}
		return l;
	};
	
	this.op1 = function(s, a)
	{
		switch(s)
		{
			case '-' : return -a; break;
			case '!' : return !a; break;
		}
	}
	
	this.op2 = function(s, a, b)
	{
		switch(s)
		{
			case '+' : return parseInt(a) + parseInt(b); break;
			case '-' : return a - b; break;
			case '*' : return a * b; break;
			case '/' : return Math.floor(a / b); break;
			case '%' : return a % b; break;
			case '^' : return Math.pow(a, b); break;
			case '.' : return a.toString() + b.toString(); break;
			case '&' : return a && b; break;
			case '|' : return a || b; break;
			case '=' : return a == b; break;
			case '!' : return a != b; break;
			case '>' : return a > b; break;
			case '<' : return a < b; break;
		}
	}
	
	this.prio = function(op)
	{
		switch(op)
		{
			case '&' : case '|' : return 1; break;
			case '>' : case '<' : case '=' : case '.' : return 2; break;
			case '+' : case '-' : return 3; break;
			case '*' : case '/' : case '%' : return 4; break;
			case '^' : return 5; break;
		}
	}
	
	/* type arbre
		[100, int] pour un nombre
		[101,str,arbre] pour un op unaire
		[102,str,arbre,arbre] pour un op binaire
		[105,str] pour une var
		[106,str] pour une str
		[107, str, arbre] pour une fct
		[108,array] pour un arbre d'arguments
	*/
	
	this.empile_syn = function(x, pile)
	{
		function est_a(a) //si ça existe et est un arbre
		{
			return (a && a[0] >= 100);
		}
		function est_l_op1(a) //si ça existe et est un op unaire
		{
			return (a && a[0] == 1);
		}
		function est_l_op2(a) //si ça existe et est un op binaire
		{
			return (a && a[0] == 2);
		}
		
		
		if(x[0] == 0) //si x est un nombre
		{
			return this.empile_syn([100, x[1]], pile);
		}
		else if(x[0] == 5) //si x est une var
		{
			return this.empile_syn([105, x[1]], pile);
		}
		else if(x[0] == 6) //si x est un texte
		{
			return this.empile_syn([106, x[1]], pile);
		}
		else if(est_a(x) && est_l_op1(pile[0])) // op1 x
		{
			var elt = pile.shift();
			return this.empile_syn([101, elt[1], x], pile);
		}
		else if(est_l_op2(x) && (est_a(pile[0]) && est_l_op2(pile[1]) && est_a(pile[2])) && (this.prio(x[1]) <= this.prio(pile[1][1]))) //a op2 b op2x
		{
			var b = pile.shift();
			var op = pile.shift();
			var a = pile.shift();
			pile.unshift([102, op[1], a, b]);
			return this.empile_syn(x, pile);
		}
		else if(x[0] == 4 && (est_a(pile[0]) && est_l_op2(pile[1]) && est_a(pile[2]))) //a op2 b )
		{
			var b = pile.shift();
			var op = pile.shift();
			var a = pile.shift();
			pile.unshift([102, op[1], a, b]);
			return this.empile_syn(x, pile);
		}
		else if(x[0] == 4 && (est_a(pile[0]) && pile[1] && pile[1][0] == 8 && est_a(pile[2]))) //arg_prec , a )
		{
			var a = pile.shift();
			pile.shift();
			var arg_prec = pile.shift();
			if(a[0] == 108) //si l'arbre en tête de pile est déjà une liste d'arguments
			{
				a[1].unshift(arg_prec);
				var elt = [108, a[1]];
			}
			else //sinon, on crée une nouvelle liste d'arguments
			{
				var elt = [108, [arg_prec, a]];
			}
			pile.unshift(elt);
			return this.empile_syn(x, pile);
		}
		else if(x[0] == 4 && (est_a(pile[0]) && pile[1] && pile[1][0] == 3 && pile[2] && pile[2][0] == 7)) //fct ( a )
		{
			var a = pile.shift();
			pile.shift();
			var f = pile.shift();
			var elt = [107, f[1], a];
			return this.empile_syn(elt, pile);
		}
		else if(x[0] == 4 && (pile[0] && pile[0][0] == 3 && pile[1] && pile[1][0] == 7)) //fct ( )
		{
			pile.shift();
			var f = pile.shift();
			var elt = [107, f[1], [108, []]];
			return this.empile_syn(elt, pile);
		}
		else if(x[0] == 4 && (est_a(pile[0]) && pile[1] && pile[1][0] == 3)) //( elt )
		{
			var elt = pile.shift();
			pile.shift();
			return this.empile_syn(elt, pile);
		}
		else
		{
			pile.unshift(x);
			return pile;
		}
	}
	
	this.parse_inf = function(pile, f)
	{
		if(f.length == 0)
		{
			return pile;
		}
		else
		{
			var x = f.shift();
			return this.parse_inf(this.empile_syn(x, pile), f);
		}
	}
	
	this.parse = function(ch)
	{
		function est_a(a) //si ça existe et est un arbre
		{
			return (a && a[0] >= 100);
		}
		var l = this.decompose(ch);
		if(l[0]) //s'il y a au moins un lexeme
		{
			l.push([4, '']);
			l.unshift([3, '']);
			var p = this.parse_inf(new Array(), l);
			if(est_a(p[0]))
			{
				return p[0];
			}
			else
			{
				alert("Parsing error : malformed expression !");
				return [106, ''];
			}
		}
		else
		{
			return [106, ''];
		}
	}
	
	this.eval_var = function(a)
	{
		var a2 = htmlentities(a);
		if(a == 'true')
		{
			return true;
		}
		else if(a == 'false')
		{
			return false;
		}
		else if(etat_jeu['vars'][a2])
		{
			return etat_jeu['vars'][a2];
		}
		else
		{
			return 0;
		}
	}
	
	this.eval_fct = function(s, args)
	{
		if(typeof(args) !='object' || !(args instanceof Array))
		{
			args = [args];
		}
		
		switch(s)
		{
			case 'str_begins_with' :
				if(args[0].indexOf(args[1]) == 0)
				{
					return true;
				}
				else
				{
					return false;
				}
				break;
			case 'str_ends_with' :
				if(args[0].lastIndexOf(args[1]) == (args[0].length - args[1].length))
				{
					return true;
				}
				else
				{
					return false;
				}
				break;
			case 'str_contains' :
				if(args[0].indexOf(args[1]) != -1)
				{
					return true;
				}
				else
				{
					return false;
				}
				break;
			case 'str_first_word' :
				var mots = args[0].split(' ');
				return mots[0];
				break;
			case 'str_distance' :
				var a = args[0].toString();
				var b = args[1].toString();
				
				if(args[2] && args[2] == 1) //si sensible à la casse
				{
					var l = levenshtein(a,b);
				}
				else
				{
					var l = levenshtein(a.toLowerCase(),b.toLowerCase());
				}
				return l * 100 / Math.max(a.length, b.length);
				break;
			case 'evidence_is_revealed' :
				var type = args[0];
				var id = args[1];
				var elt = document.getElementById(type+'_'+id);
				if(elt && elt.style.display == '')
				{
					return true;
				}
				else
				{
					return false;
				}
				break;
			case 'random_int' :
				if(args.length >= 2)
				{
					var min = parseInt(args[0]);
					var max = parseInt(args[1]);
				}
				else
				{
					var min = 0;
					var max = 100;
				}
				return Math.floor(Math.random() * (max - min) + min);
				break;
			case 'get_date' :
				var date = new Date();
				return date.getTime();
				break;
			
		}
	}
	
	this.eval_syn = function(a)
	{
		if(a[0] == 100 || a[0] == 106) //si c'est un nombre ou une str
		{
			return a[1];
		}
		else if(a[0] == 102) //si c'est un op2
		{
			return this.op2(a[1], this.eval_syn(a[2]), this.eval_syn(a[3]));
		}
		else if(a[0] == 101) //si c'est un op1
		{
			return this.op1(a[1], this.eval_syn(a[2]));
		}
		else if(a[0] == 105)
		{
			return this.eval_var(a[1]);
		}
		else if(a[0] == 107)
		{
			return this.eval_fct(a[1], this.eval_syn(a[2]));
		}
		else if(a[0] == 108)
		{
			var resultat = [];
			for(var i = 0; i < a[1].length; i++)
			{
				resultat.push(this.eval_syn(a[1][i]))
			}
			return resultat;
		}
	}
	
	this.eval = function(s)
	{
		return this.eval_syn(this.parse(s));
	}
	
}
var c_f = new calcul_formel();
//fin calcul formel

var mess_retour_lieu = 0;

function incrementer(mode)
{
	//mode 0 : clic du joueur, tout afficher tout de suite
	//mode 1 : délai, donc attendre fin d'affichage
	//mode 2 : brutal, passer directement au texte suivant
	
	if(mode == 2 || typewriter.defilement_en_cours == 0)
	{
		controleSon.jouerMP3(2, -1);
		controleAnimation.pause();
		etat_jeu['id_courant']++;
		actualiser();
	}
	else
	{
		if(mode == 0)
		{
			var num = etat_jeu['id_courant'];
			controleSon.jouerMP3(2, -1);
			controleAnimation.pause();
			typewriter.defilement_en_cours = 0;
			document.getElementById('affichage_texte_'+num).innerHTML += typewriter.texte_a_afficher_en_cours.replace(/\[#(.*?)\]/g, '');
		}
		else if(mode == 1)
		{
			window.setTimeout('incrementer(1);', 100);
		}
	}
}

function decrementer()
{
	if(typewriter.defilement_en_cours == 0)
	{
		controleSon.jouerMP3(2, -1);
		controleAnimation.pause();
		var num = etat_jeu['id_courant'] - 1;
		while(num > etat_jeu['user_input']['message_debut_CI'] && donnees_messages[num].cache == 1)
		{
			num = num-1;
		}
		etat_jeu['id_courant'] = num;
		actualiser();
	}
	else
	{
		if(incrementation_delai_auto == 1)
		{
			window.setTimeout('decrementer();', 100);
		}
	}
}


//effets graphiques
function apparitionPersoFondu()
{
	var image = document.getElementById('img');
	var opacite = image.style.opacity;
	image.style.opacity = opacite - (0 - 0.1);
	if(opacite < 1.0)
	{
		window.setTimeout("apparitionPersoFondu();", 10);
	}
}


var ancien_quatrieme_plan = '';
function flashLumineux()
{
	var quatrieme_plan = document.getElementById('quatrieme_plan');
	if(ancien_quatrieme_plan == '')
	{
		ancien_quatrieme_plan = quatrieme_plan.style.background;
		if(ancien_quatrieme_plan == '')
		{
			ancien_quatrieme_plan = 'vide';
		}
		quatrieme_plan.style.background = 'white';
		quatrieme_plan.style.opacity = 1;
		window.setTimeout('flashLumineux();', 20);
	}
	else
	{
		var opacite = quatrieme_plan.style.opacity;
		quatrieme_plan.style.opacity = opacite - 0.1;
		if(opacite > 0)
		{
			window.setTimeout('flashLumineux();', 20);
		}
		else
		{
			if(ancien_quatrieme_plan != 'vide')
			{
				quatrieme_plan.style.background = ancien_quatrieme_plan;
			}
			else
			{
				quatrieme_plan.style.background = '';
			}
			ancien_quatrieme_plan = '';
			quatrieme_plan.style.opacity = 1;
		}
	}
}

var nombre_de_secousses = 0;
var position_banc_originale = '';
var position_perso_originale = '';
var position_fond_originale = '';
function screenShake()
{
	if(nombre_de_secousses == 0)
	{
		position_banc_originale = document.getElementById('banc').style.backgroundPosition;
		position_perso_originale = document.getElementById('img').style.backgroundPosition;
		position_fond_originale = document.getElementById('fond').style.backgroundPosition;
	}
	
	if(nombre_de_secousses <= 20)
	{
		var ampleur = 10;
		
		var decal_perso_x = Math.random()*ampleur - (ampleur / 2);
		var decal_perso_y = Math.random()*ampleur - (ampleur / 2);
		var decal_fond_x = Math.random()*ampleur - (ampleur / 2);
		var decal_fond_y = Math.random()*ampleur - (ampleur / 2);
		var decal_banc_x = Math.random()*ampleur - (ampleur / 2);
		var decal_banc_y = Math.random()*ampleur - (ampleur / 2);
		document.getElementById('banc').style.backgroundPosition = decal_banc_x+'px '+decal_banc_y+'px';
		document.getElementById('img').style.backgroundPosition = decal_perso_x+'px '+decal_perso_y+'px ';
		document.getElementById('fond').style.backgroundPosition = decal_fond_x+'px '+decal_fond_y+'px';
		nombre_de_secousses++;
		window.setTimeout('screenShake();', 10);
	}
	else
	{
		document.getElementById('banc').style.backgroundPosition = position_banc_originale;
		document.getElementById('img').style.backgroundPosition = position_perso_originale;
		document.getElementById('fond').style.backgroundPosition = position_fond_originale;
		nombre_de_secousses = 0;
	}
}
//fin effets graphiques

//affichage du texte
var typewriter = new Object({
	div_texte:'',
	span_texte:'',
	defilement_en_cours:0,
	texte_a_afficher_en_cours:'',
	incrementation_delai_auto:0,
	defilement_rapide:'',
	
	appendText:function(texte, couleur, id, son_texte, vitesse, action_suiv)
		{
			if(this.defilement_rapide.checked == 1)
			{
				this.div_texte.innerHTML += '<span>' + texte.replace(/\[#(.*?)\]/g, '') + '</span>';
				this.span_texte = this.div_texte.getElementsByTagName('span')[0];
				this.span_texte.style.color = couleur;
				window.setTimeout('controleAnimation.play();', 5);
				if(action_suiv == -1)
				{
					window.setTimeout("incrementer(1);", 400);
				}
				else
				{
					gererAction(action_suiv);
				}
			}
			else
			{
				this.div_texte.innerHTML += '<span id="affichage_texte_'+id+'"></span>';
				this.span_texte = document.getElementById('affichage_texte_'+id);
				this.span_texte.style.color = couleur;
				this.texte_a_afficher_en_cours = texte;
				this.afficherTexteDefilant(couleur, id, son_texte, vitesse, action_suiv);
			}
		},
		
	afficherTexteDefilant:function(couleur, id, son_texte, vitesse, action_suiv)
		{
			if(son_texte == 0)
			{
				if(couleur == 'lime')
				{
					var son = 3;
				}
				else
				{
					var son = 1;
				}
			}
			else
			{
				var son = son_texte;
			}
			this.defilement_en_cours = 1;
			
			controleSon.jouerMP3(2, son);
			controleAnimation.play();
			
			this.afficherTexteDefilant2(son, id, vitesse, action_suiv);
		},
		
	afficherTexteDefilant2:function(son, id, vitesse, action_suiv)
		{
			var texte_restant = this.texte_a_afficher_en_cours;
			if((texte_restant != '') && (this.defilement_en_cours == 1))
			{
				if(texte_restant.match(/^(\[#(.*?)\])/))
				{
					var recherche = /^(\[#(.*?)\])/;
					var balise = recherche.exec(texte_restant);
					balise = balise[0];
					this.texte_a_afficher_en_cours = texte_restant.substring(balise.length, texte_restant.length);
					
					controleAnimation.pause();
					controleSon.jouerMP3(2, -1);
					
					if(balise == '[#]')
					{
						window.setTimeout('controleSon.jouerMP3(2, '+son+'); controleAnimation.play(); typewriter.afficherTexteDefilant2("'+son+'", '+id+', '+vitesse+', '+action_suiv+')', 1000);
					}
					else if(balise == '[#f]')
					{
						window.setTimeout('flashLumineux();', 5);
						window.setTimeout('controleSon.jouerMP3(2, '+son+'); controleAnimation.play(); typewriter.afficherTexteDefilant2("'+son+'", '+id+', '+vitesse+', '+action_suiv+')', 500);
					}
					else if(balise == '[#s]')
					{
						screenShake();
						window.setTimeout('controleSon.jouerMP3(2, '+son+'); controleAnimation.play(); typewriter.afficherTexteDefilant2("'+son+'", '+id+', '+vitesse+', '+action_suiv+')', 500);
					}
					else	if(balise.indexOf('[#p') == 0)
					{
						var duree = parseInt(balise.substring(3, balise.length - 1));
						window.setTimeout('controleSon.jouerMP3(2, '+son+'); controleAnimation.play(); typewriter.afficherTexteDefilant2("'+son+'", '+id+', '+vitesse+', '+action_suiv+')', duree * 10);
					}
					else
					{
						window.setTimeout('controleSon.jouerMP3(2, '+son+'); controleAnimation.play(); typewriter.afficherTexteDefilant2("'+son+'", '+id+', '+vitesse+', '+action_suiv+')', 1000);
					}
					
				}
				else
				{
					if(texte_restant.match(/^</))
					{
						if(texte_restant.match(/^(<br(\ )?(\/)?>)/i))
						{
							var recherche = /^(<br(\ )?(\/)?>)/i;
							var balise = recherche.exec(texte_restant);
							balise = balise[0];
						}
						else
						{
							var recherche = /<(.+?)>(.+?)<\/(.+?)>/i;
							var balise = recherche.exec(texte_restant);
							if(balise)
							{
								balise = balise[0].replace(/<(.+?)>(.+?)<\/(.+?)>/i, '<$1>$2</$3>');
							}
							else
							{
								this.span_texte.innerHTML += '&lt;';
								this.texte_a_afficher_en_cours = texte_restant.substring(1, texte_restant.length);
								window.setTimeout('typewriter.afficherTexteDefilant2("'+son+'", '+id+', '+vitesse+', '+action_suiv+');', (50 / vitesse));
								return;
							}
						}
						this.span_texte.innerHTML += balise;
						this.texte_a_afficher_en_cours = texte_restant.substring(balise.length, texte_restant.length);
						window.setTimeout('typewriter.afficherTexteDefilant2("'+son+'", '+id+', '+vitesse+', '+action_suiv+');', (200 / vitesse));
					}
					else
					{
						if(texte_restant.charAt(0) == '\\')
						{
							this.span_texte.innerHTML += texte_restant.charAt(0)+texte_restant.charAt(1);
							this.texte_a_afficher_en_cours = texte_restant.substring(2, texte_restant.length);
							window.setTimeout('typewriter.afficherTexteDefilant2("'+son+'", '+id+', '+vitesse+', '+action_suiv+');', (50 / vitesse));
						}
						else if(texte_restant.charAt(0) == '\n')
						{
							this.span_texte.innerHTML += '<br />';
							this.texte_a_afficher_en_cours = texte_restant.substring(1, texte_restant.length);
							window.setTimeout('typewriter.afficherTexteDefilant2("'+son+'", '+id+', '+vitesse+', '+action_suiv+');', (50 / vitesse));
						}
						else
						{
							this.span_texte.innerHTML += texte_restant.charAt(0);
							this.texte_a_afficher_en_cours = texte_restant.substring(1, texte_restant.length);
							window.setTimeout('typewriter.afficherTexteDefilant2("'+son+'", '+id+', '+vitesse+', '+action_suiv+');', (50 / vitesse));
						}
					}
				}
			}
			else
			{
				controleSon.jouerMP3(2, -1);
				controleAnimation.pause();
				window.setTimeout("typewriter.defilement_en_cours = 0;", 50);
				if(action_suiv == -1)
				{
					window.setTimeout("incrementer(1);", 100);
				}
				else
				{
					gererAction(action_suiv);
				}
			}
		}
});

//fin affichage du texte

function afficher(section)
{
	if(section == 'preuves')
	{
		document.getElementById('tableau_profils').style.display = 'none';
		document.getElementById('bandeau_profils').style.display = 'none';
		document.getElementById('tableau_preuves').style.display = '';
		document.getElementById('bandeau_preuves').style.display = '';
	}
	else
	{
		document.getElementById('tableau_preuves').style.display = 'none';
		document.getElementById('bandeau_preuves').style.display = 'none';
		document.getElementById('tableau_profils').style.display = '';
		document.getElementById('bandeau_profils').style.display = '';
	}
}


function afficherElt(type, id_elt)
{
	if(document.getElementById('presenter').style.display == '' || document.getElementById('presenter_obj').style.display == '')
	{
		var suffixe = '_pres';
	}
	else
	{
		var suffixe = '';
	}
	
	document.getElementById('aff_preuve'+suffixe).style.display = '';
	document.getElementById('elt_affiche_id'+suffixe).value = id_elt;
	document.getElementById('elt_affiche_type'+suffixe).value = type;
	document.getElementById('elt_affiche_nom'+suffixe).innerHTML = document.getElementById(type+'_'+id_elt+'_nom').innerHTML;
	document.getElementById('elt_affiche_image'+suffixe).src = document.getElementById(type+'_'+id_elt+'_image').src;
	document.getElementById('elt_affiche_description'+suffixe).innerHTML = document.getElementById(type+'_'+id_elt+'_description').innerHTML;
	
	var table_verif = document.getElementById(type+'_'+id_elt+'_verifier')
	if(table_verif && table_verif.rows.length >= 2)
	{
		document.getElementById('bouton_verifier'+suffixe).style.display = '';
	}
	else
	{
		document.getElementById('bouton_verifier'+suffixe).style.display = 'none';
	}
}

function afficherEltJeu(type, id_elt)
{
	var fond_actuel = document.getElementById('fond').style.background;
	var position_largeur = 0;
	if(fond_actuel.match(/accusation|prosecution/))
	{
		position_largeur = 5;
	}
	else
	{
		if(gdformat == 1)
		{
			position_largeur = 181;
		}
		else
		{
			position_largeur = 165;
		}
	}
	document.getElementById('quatrieme_plan').style.background = 'url("'+document.getElementById(type+'_'+id_elt+'_image').src+'") '+position_largeur+'px 5px no-repeat';
}


function devoilerElt(type, id_elt)
{
	document.getElementById(type+'_'+id_elt).style.display = '';
	etat_jeu['dossier'][etat_jeu.id_proces][type][id_elt] = 0;
}

function masquerElt(type, id_elt)
{
	document.getElementById(type+'_'+id_elt).style.display = 'none';
	etat_jeu['dossier'][etat_jeu.id_proces][type][id_elt] = 1;
	if(document.getElementById('elt_affiche_id').value == id_elt && document.getElementById('elt_affiche_type').value == type)
	{
		document.getElementById('aff_preuve').style.display = 'none';
	}
}

function presenter()
{
	if(document.getElementById('aff_preuve_pres').style.display == '')
	{
	var num = etat_jeu['id_courant'];
	var elt_affiche_id = document.getElementById('elt_affiche_id_pres').value;
	var elt_affiche_type = document.getElementById('elt_affiche_type_pres').value;
	var id_elt_sol = etat_jeu['user_input']['id_elt_sol'];
	var type_elt_sol = etat_jeu['user_input']['type_elt_sol'];
	var id_mess_succes = etat_jeu['user_input']['message_succes'];
	
	var longueur = Math.min(id_elt_sol.length, Math.min(type_elt_sol.length, id_mess_succes.length));
	
	var mess_destination = etat_jeu['user_input']['message_echec'];
	
	for(i=0; i < longueur; i++)
	{
		if(type_elt_sol[i] == elt_affiche_type && id_elt_sol[i] == elt_affiche_id)
		{
			mess_destination = id_mess_succes[i];
		}
	}
	
	document.getElementById('bandeau_profils').style.visibility = '';
	document.getElementById('bandeau_preuves').style.visibility = '';
	
	etat_jeu['id_courant'] = mess_destination;
	document.getElementById('suivant').style.display = '';
	document.getElementById('presenter').style.display = 'none';
	document.getElementById('aff_preuve_pres').style.display = 'none';
	document.getElementById('sortirVerrous').style.display = 'none';
	document.getElementById('bouton_retour').style.display = 'none';
	document.getElementById('bouton_verifier_pres').style.display = 'none';
	actualiser();
	}
}

function insister()
{
	controleSon.jouerMP3(2, -1);
	controleAnimation.pause();
	etat_jeu['id_courant'] = document.getElementById('texte_pression').value;
	actualiser();
}

function objection()
{
	document.getElementById('CI_barre_1').style.display = 'none';
	document.getElementById('CI_barre_2').style.display = 'none';
	
	document.getElementById('presenter_obj').style.display = '';
	document.getElementById('bouton_retour').style.display = '';
	document.getElementById('bouton_retour').href = "javascript:retourDObj();";
}

function retourDObj()
{
	document.getElementById('presenter_obj').style.display = 'none';
	document.getElementById('aff_preuve_pres').style.display = 'none';
	document.getElementById('bouton_retour').style.display = 'none';
	document.getElementById('bouton_verifier_pres').style.display = 'none';
	
	document.getElementById('CI_barre_1').style.display = '';
	document.getElementById('CI_barre_2').style.display = '';
}

function presenterObj()
{
	if(document.getElementById('aff_preuve_pres').style.display == '')
	{
	
	var num = etat_jeu['id_courant'];
	var elt_affiche_type = document.getElementById('elt_affiche_type_pres').value;
	var elt_affiche_id = document.getElementById('elt_affiche_id_pres').value;
	
	var messages_sol = etat_jeu['user_input']['message_sol_CI'].split('_');
	var type_elts_sol = etat_jeu['user_input']['type_elt_sol_CI'].split('_');
	var id_elts_sol = etat_jeu['user_input']['id_elt_sol_CI'].split('_');
	var messages_succes = etat_jeu['user_input']['message_succes_CI'].split('_');
	var message_echec = etat_jeu['user_input']['message_echec_CI'];
	
	var nb_contrad = Math.min(messages_sol.length, Math.min(type_elts_sol.length, Math.min(id_elts_sol.length, messages_succes.length)));
	
	var contrad_reperee = -1;
	
	for(var i = 0; i < nb_contrad; i++)
	{
		if(elt_affiche_id == id_elts_sol[i] && elt_affiche_type == type_elts_sol[i] && num == messages_sol[i])
		{
			contrad_reperee = i;
			break;
		}
	}
	
	if(contrad_reperee == -1)
	{
		if(message_echec != 0)
		{
			etat_jeu['id_courant'] = message_echec;
			document.getElementById('suivant').style.display = '';
			document.getElementById('presenter_obj').style.display = 'none';
			document.getElementById('aff_preuve_pres').style.display = 'none';
			document.getElementById('bouton_retour').style.display = 'none';
			document.getElementById('bouton_verifier_pres').style.display = 'none';
		}
		else
		{
			barreDeVie.perteVie(24);
		}
	}
	else
	{
		etat_jeu['id_courant'] = messages_succes[contrad_reperee];
		document.getElementById('suivant').style.display = '';
		document.getElementById('presenter_obj').style.display = 'none';
		document.getElementById('aff_preuve_pres').style.display = 'none';
		document.getElementById('bouton_retour').style.display = 'none';
		document.getElementById('bouton_verifier_pres').style.display = 'none';
		etat_jeu['user_input']['etat_actuel'] = '';
	}
	controleSon.jouerMP3(2, -1);
	controleAnimation.pause();
	actualiser();
	}
}

function signe(x)
{
	if(x > 0) return 1; 
	else return -1;
}

//
//affichage d'éléments du dossier
//

function fonduZone(arrivee, nb_etapes)
{
	var check_l = vg_aff['check'];
	var opacite_courante = parseFloat(check_l.style.opacity);
	if(nb_etapes <= 1)
	{
		check_l.style.opacity = arrivee;
	}
	else
	{
		check_l.style.opacity = opacite_courante + (arrivee - opacite_courante) / nb_etapes;
		window.setTimeout('fonduZone('+arrivee+', '+(nb_etapes - 1)+');', 20);
	}
	
	if(check_l.style.opacity == 0)
	{
		check_l.style.display = 'none';
	}
	else
	{
		check_l.style.display = '';
	}
}

function afficherDetails(type, donnees, mode)
{
	var vg_aff_l = vg_aff;
	
	if(mode == 1 || vg_aff_l['checkwindow'].className != '1')
	{
		if(son_verif_en_cours != -1)
		{
			liste_sons_verif[son_verif_en_cours].stop();
			son_verif_en_cours = -1;
			if(controleSon.musique_en_cours != -1 && !soundManager.muted)
			{
				liste_objets_mp3[controleSon.musique_en_cours].unmute();
			}
		}
		
		vg_aff_l['affichage_img'].style.display = 'none';
		vg_aff_l['affichage_texte'].style.display = 'none';
		vg_aff_l['affichage_son'].style.display = 'none';
		vg_aff_l['affichage_video'].style.display = 'none';
		
		vg_aff_l['checkwindow'].className = mode;
		
		if(type == 'img')
		{
			afficherImage(donnees, mode);
		}
		else if(type == 'txt')
		{
			afficherTexte(donnees);
		}
		else if(type == 'son')
		{
			afficherSon(donnees);
		}
		
		if(mode == 2)
		{
			vg_aff_l['check_back'].style.display = '';
			
			if(index_elt_verif_affiche>0)
			{
				vg_aff_l['check_prec'].style.display = '';
				vg_aff_l['check_prec'].href = 'javascript:afficherElementAVerifier('+(index_elt_verif_affiche - 1)+');';
			}
			else
			{
				vg_aff_l['check_prec'].style.display = 'none';
			}
			
			if(index_elt_verif_affiche<(elts_verifier.length - 1))
			{
				vg_aff_l['check_suiv'].style.display = '';
				vg_aff_l['check_suiv'].href = 'javascript:afficherElementAVerifier('+(index_elt_verif_affiche - (-1))+');';
			}
			else
			{
				vg_aff_l['check_suiv'].style.display = 'none';
			}
		}
		else if(mode == 1)
		{
			vg_aff_l['check_back'].style.display = 'none';
			vg_aff_l['check_prec'].style.display = 'none';
			vg_aff_l['check_suiv'].style.display = 'none';
		}
		else
		{
			vg_aff_l['check_back'].style.display = '';
			vg_aff_l['check_prec'].style.display = 'none';
			vg_aff_l['check_suiv'].style.display = 'none';
		}
	}
}

//affichage d'images

var image_a_afficher = '';

function afficherImage(adresse, mode)
{
	var vg_aff_l = vg_aff;
	//mode == 0 : dans description
	//mode == 1 : cliquable
	//mode == 2 : vérifier
	
	vg_aff_l['affichage_img'].src = '';
	vg_aff_l['affichage_img'].width = 1;
	vg_aff_l['affichage_img'].height = 1;
	vg_aff_l['affichage_img'].style.display = '';
	
	if(mode == 1)
	{
		vg_aff_l['affichage_img'].useMap = '#map_image_a_pointer';
	}
	else
	{
		vg_aff_l['affichage_img'].useMap = '';
	}
	
	image_a_afficher = new Image();
	
	image_a_afficher.onerror = function()
	{
		if(mode != 1 || (this.src != '' && this.src != window.location.href))
		{
			alert(l('image_non_chargee'));
		}
		if(mode == 1)
		{
			fermerAffichage();
			
			var area = document.getElementById('map_image_a_pointer').getElementsByTagName('area');
			area = area[area.length - 1];
			window.location.href = area.href;
		}
	};
	
	image_a_afficher.onload = function()
	{
		vg_aff['affichage_img'].src = this.src;
		vg_aff['affichage_img'].width = this.width
		vg_aff['affichage_img'].height = this.height;
		
		vg_aff['checkwindow'].style.width = Math.max(256, this.width)+'px';
		vg_aff['checkwindow'].style.height = (this.height-(-26))+'px';
		
		fonduZone(1, 10);
	};
	
	image_a_afficher.src = adresse;
	
	if(adresse == '')
	{
		image_a_afficher.onerror();
	}
}

//affichage de texte
function afficherTexte(contenu)
{
	var vg_aff_l = vg_aff;
	
	vg_aff_l['checkwindow'].style.width = '256px';
	vg_aff_l['checkwindow'].style.height = '192px';
	vg_aff_l['affichage_texte'].innerHTML = contenu;
	vg_aff_l['affichage_texte'].style.display = '';
	
	fonduZone(1, 10);
}

//affichage du lecteur de musique
function getTime(nMSec)
{
	var nSec = Math.floor(nMSec/1000);
	var min = Math.floor(nSec/60);
	var sec = nSec-(min*60);
	return min+':'+(sec<10?'0'+sec:sec);
}

var son_verif_en_cours = -1;

function actualiserSonVerif()
{
	var pos = this.position;
	var dur = this.duration;
	var nouvelle_largeur = Math.floor(100 * (pos / dur));
	vg_aff['aff_son_barre_pleine'].style.width = nouvelle_largeur+'%';
	vg_aff['aff_son_tps_actuel'].innerHTML = getTime(pos);
}

function goToAff(event)
{
	var x = event.layerX;
	var xmax = vg_aff['aff_son_barre'].clientWidth;
	var son = liste_sons_verif[son_verif_en_cours];
	son.stop();
	son.play({position:Math.floor(son.duration * (x / xmax)), whileplaying:actualiserSonVerif});
}

function afficherSon(id_son)
{
	var vg_aff_l = vg_aff;
	
	vg_aff_l['checkwindow'].style.width = '80%';
	vg_aff_l['checkwindow'].style.height = '192px';
	vg_aff_l['aff_son_tps_total'].innerHTML = getTime(liste_sons_verif[id_son].duration);
	son_verif_en_cours = id_son;
	if(controleSon.musique_en_cours != -1)
	{
		liste_objets_mp3[controleSon.musique_en_cours].mute();
	}
	
	
	vg_aff_l['affichage_son'].style.display = '';
	fonduZone(1, 10);
	liste_sons_verif[id_son].play({whileplaying:actualiserSonVerif}); 
}


//fonctions de fermeture
function fermerAffichage()
{
	var vg_aff_l = vg_aff;
	
	if(son_verif_en_cours != -1)
	{
		liste_sons_verif[son_verif_en_cours].stop();
		if(controleSon.musique_en_cours != -1 && !soundManager.muted)
		{
			liste_objets_mp3[controleSon.musique_en_cours].unmute();
		}
	}
	
	fonduZone(0, 10);
	
	vg_aff_l['affichage_img'].style.display = 'none';
	vg_aff_l['affichage_texte'].style.display = 'none';
	vg_aff_l['affichage_son'].style.display = 'none';
	vg_aff_l['affichage_video'].style.display = 'none';
	
	vg_aff_l['check_back'].style.display = 'none';
	vg_aff_l['checkwindow'].className = '0';
	
	son_verif_en_cours = -1;
}

//gestion du bouton vérifier
var elts_verifier = new Array();
index_elt_verif_affiche = 0;

function verifierPreuve(mode)
{
	var type_elt = document.getElementById('elt_affiche_type'+mode).value;
	var id_elt = document.getElementById('elt_affiche_id'+mode).value;
	var tableau = document.getElementById(type_elt+'_'+id_elt+'_verifier').rows;
	
	elts_verifier = new Array();
	for(var i = 1; i < tableau.length; i++)
	{
		elts_verifier.push(new Array(tableau[i].cells[0].innerHTML, tableau[i].cells[1].innerHTML));
	}
	
	afficherElementAVerifier(0);
}

function afficherElementAVerifier(index)
{
	index_elt_verif_affiche = index;
	
	afficherDetails(elts_verifier[index][0], elts_verifier[index][1], 2);
}

//
//fin affichage d'étéments du dossier
//

var barreDeVie = new Object({
	barre_verte: '',
	barre_rouge: '',
	barre_flash: '',
	
	perteVie:function(valeur)
		{
			var ancienne_largeur_verte = parseInt(this.barre_verte.style.width.replace(/[^\d]/g,"")) + parseInt(this.barre_flash.style.width.replace(/[^\d]/g,""));
			var ancienne_largeur_rouge = this.barre_rouge.style.width.replace(/[^\d]/g,"");
			var nouvelle_largeur_verte = (ancienne_largeur_verte - valeur);
			var nouvelle_largeur_rouge = (ancienne_largeur_rouge - (0- valeur));
			
			this.barre_flash.style.width = "0px";
			if(nouvelle_largeur_rouge <= 0)
			{
				this.barre_verte.style.width = (ancienne_largeur_verte - (0 - ancienne_largeur_rouge))+"px";
				this.barre_rouge.style.width = "0px";
			}
			else if(nouvelle_largeur_verte <= 0)
			{
				this.barre_verte.style.width = "0px";
				this.barre_rouge.style.width = (ancienne_largeur_verte - (0 - ancienne_largeur_rouge))+"px";
				document.getElementById('CI_barre_1').style.display = 'none';
				document.getElementById('CI_barre_2').style.display = 'none';
				document.getElementById('suivant').style.display = 'none';
				document.getElementById('presenter').style.display = 'none';
				
				if(!etat_jeu['user_input']['redirection_game_over'] || isNaN(etat_jeu['user_input']['redirection_game_over']))
				{
					finDuJeu(l('GameOver'));
				}
				else
				{
					etat_jeu['user_input']['etat_actuel'] = '';
					etat_jeu['id_courant'] = etat_jeu['user_input']['redirection_game_over'];
					window.setTimeout('actualiser();', 100);
				}
			}
			else
			{
				this.barre_verte.style.width = nouvelle_largeur_verte+"px";
				this.barre_rouge.style.width = nouvelle_largeur_rouge+"px";
			}
			
			etat_jeu['vie'] = nouvelle_largeur_verte;
		},
	
	clignoter:function(valeur)
		{
			var larg_verte = parseInt(this.barre_verte.style.width.replace(/[^\d]/g, ""));
			var larg_flash = parseInt(this.barre_flash.style.width.replace(/[^\d]/g, ""));
			
			var valeur2 = Math.max(0, Math.min(larg_verte + larg_flash, valeur));
			
			this.barre_verte.style.width = (larg_verte + larg_flash - valeur2)+"px";
			this.barre_flash.style.width = valeur2+"px";
		}
});

var son_active = 1;
function couperSon()
{
	if(document.getElementById('son_desactive').checked == 1)
	{
		/*
		document.getElementById('fond_musical').innerHTML = '';
		document.getElementById('effet_sonore').innerHTML = '';
		document.getElementById('son_texte').innerHTML = '';
		*/
		soundManager.mute();
		//son_active = 0;
	}
	else
	{
		soundManager.unmute();
		if(son_verif_en_cours != -1)
		{
			if(controleSon.musique_en_cours != -1)
			{
				liste_objets_mp3[controleSon.musique_en_cours].mute();
			}
		}
		//son_active = 1;
	}
}


function genererLigneEtat()
{
	etat_jeu.musique_en_cours = controleSon.musique_en_cours;
	
	etat_jeu.perso_qui_parle = controleAnimation.perso_qui_parle;
	etat_jeu.perso_affiche = controleAnimation.perso_affiche ;
	etat_jeu.image_fixe_en_cours = controleAnimation.image_fixe_en_cours;
	etat_jeu.image_anim_en_cours = controleAnimation.image_anim_en_cours;
	
	etat_jeu.fond_en_cours = document.getElementById('fond').style.background;
	etat_jeu.banc_en_cours = document.getElementById('banc').style.backgroundImage;
	
	etat_jeu.vie = parseInt(barreDeVie.barre_verte.style.width.replace(/[^\d]/g,"")) + parseInt(barreDeVie.barre_flash.style.width.replace(/[^\d]/g,""));
	
	var etat = base64_encode(serialize(etat_jeu));
	return etat;
}

function sauvegarder()
{
	var etat = genererLigneEtat();
	
	window.location.href = 'jeu.php?id_proces='+etat_jeu.id_proces+'&etat='+etat;
}
