var nbF=0 //nb réponses fausses
var nbJ=0 //nb réponses justes
var listeJustes="/" //liste des zones déjà testées avec réponse juste

var isOpera, isIE, isNav, isFox, isOther = false;
if (navigator.userAgent.indexOf("Opera")!=-1) {
 isOpera = true;
} else if (navigator.userAgent.indexOf("Firefox")!=-1) {
 isFox = true;
} else if (navigator.appName == "Microsoft Internet Explorer") {
 isIE = true;
} else if (navigator.appName == "Netscape") {
 isNav = true;
} else {
 isOther = true;
}


function score(txtscore,s)
{
	if (s)
	{
		txtscore.value=nbJ + " / " + (nbJ+nbF);
	}
	else
	{
		txtscore.value=Math.floor((100*nbJ/(nbJ+nbF))+0.5)+" %";
	}
}


function btnF(b)
{
	b.value="F";
	b.style.backgroundColor="red";
}
function btnF1(b)
{
	b.value="W";
	b.style.backgroundColor="red";
}

function btnJ(b)
{
	b.value="J";
	b.style.backgroundColor="lightgreen";
}
function btnJ1(b)
{
	b.value="C";
	b.style.backgroundColor="lightgreen";
}

function btnIni(b)
{
	b.value="?";
	b.style.backgroundColor="";
}

function SupEspace(s)
//supprime tous les espaces de la chaîne s
{
       while (s.indexOf(" ")!=-1){s=s.replace(/ /,"")} 
       return(s);
}
function SupVirgule(s)
//supprime la virgule dans un nombre pour la version Anglaise
{
       while (s.indexOf(",")!=-1){s=s.replace(/,/,"")} 
       return(s);
}

var atirer="";
var PremFois=false;
function tirage()
//Tire au sort un n° de caractère dans la chaine atirer puis enlève ce caractère de la chaine pour qu'il ne soit pas retiré
//atirerini : chaîne initiales des caractères pouvant être tirés. Elle doit être initialisée
//Retourne la position du caractère dans atirerini
{
	if (atirer=="")
	{
		atirer=atirerini;
		if (PremFois)
		{
			alert("Fin de l'exercice");
			if (pageretour){window.location.href=pageretour};
		}
		PremFois=!(PremFois);
	}
	if (PremFois)
	{
		var i=Math.ceil(Math.random()*atirer.length)-1; //nombre entre 0 et longueur de atirer-1
		var car=atirer.charAt(i);
		atirer=atirer.substr(0,i)+atirer.substr(i+1);
		return atirerini.indexOf(car);
	}
	else
	{
		return -1;
	}
}



function tirage1()
//Tire au sort un n° de caractère dans la chaine atirer puis enlève ce caractère de la chaine pour qu'il ne soit pas retiré
//atirerini : chaîne initiales des caractères pouvant être tirés. Elle doit être initialisée
//Retourne la position du caractère dans atirerini
{
	if (atirer=="")
	{
		atirer=atirerini;
		if (PremFois)
		{
			alert("End of exercise");
			if (pageretour){window.location.href=pageretour};
		}
		PremFois=!(PremFois);
	}
	if (PremFois)
	{
		var i=Math.ceil(Math.random()*atirer.length)-1; //nombre entre 0 et longueur de atirer-1
		var car=atirer.charAt(i);
		atirer=atirer.substr(0,i)+atirer.substr(i+1);
		return atirerini.indexOf(car);
	}
	else
	{
		return -1;
	}
}
function test_texte(b,z,v,m)
//teste la valeur d'une zone de texte
//b=bouton z=zone_de_texte  v=valeur_juste  m=message_si_faux
{
	if (SupEspace(z.value)!=SupEspace(v))
	{
		if (m){alert(m)};
		btnF(b);
		nbF+=1;
		z.focus();
		z.select();
	}
	else
	{
		btnJ(b);
		if (listeJustes.indexOf("/"+b.name+"/")==-1)
                {
                	nbJ+=1;
                	listeJustes+=b.name + "/";
 		};
	};
	if (b.form.score){score(b.form.score)}
}
function test_texte1(b,z,v,m)
//teste la valeur d'une zone de texte
//b=bouton z=zone_de_texte  v=valeur_juste  m=message_si_faux
{
	if (SupEspace(z.value)!=SupEspace(v))
	{
		if (m){alert(m)};
		btnF1(b);
		nbF+=1;
		z.focus();
		z.select();
	}
	else
	{
		btnJ1(b);
		if (listeJustes.indexOf("/"+b.name+"/")==-1)
                {
                	nbJ+=1;
                	listeJustes+=b.name + "/";
 		};
	};
	if (b.form.score){score(b.form.score)}
}




function test_menu(b,z,m)
//teste la valeur d'un menu deroulant
//b=bouton z=menu  v=valeur_juste  m=message_si_faux
//L'item juste doit avoir la valeur "J"
{
	if (z.value!="J")
	{
		if (m){alert(m)};
		btnF(b);
		nbF+=1;
		z.focus();
	}
	else
	{
		btnJ(b);
		if (listeJustes.indexOf("/"+b.name+"/")==-1)
                {
                	nbJ+=1;
                	listeJustes+=b.name + "/";
 		};
	};
	if (b.form.score){score(b.form.score)}
}
function test_menu1(b,z,m)
//teste la valeur d'un menu deroulant
//b=bouton z=menu  v=valeur_juste  m=message_si_faux
//L'item juste doit avoir la valeur "J"
{
	if (z.value!="J")
	{
		if (m){alert(m)};
		btnF1(b);
		nbF+=1;
		z.focus();
	}
	else
	{
		btnJ1(b);
		if (listeJustes.indexOf("/"+b.name+"/")==-1)
                {
                	nbJ+=1;
                	listeJustes+=b.name + "/";
 		};
	};
	if (b.form.score){score(b.form.score)}
}



function test_menu_texte(b,zm,zt,v,m)
//teste la valeur d'un menu et d'une zone de texte
//b=bouton zt=zone_de_texte  v=valeur_juste_Zonedetexte  m=message_si_faux
//L'item juste du menu doit avoir la valeur "J"
{
	//teste le menu
	if (zm.value!="J")
	{
		if (m){alert(m)};
		btnF(b);
		nbF+=1;
		zm.focus();
	}
	else
	{
		//teste la zone de texte
		if (SupEspace(zt.value)!=SupEspace(v))
		{
			if (m){alert(m)};
			btnF(b);
			nbF+=1;
			zt.focus();
			zt.select();
		}
		else
		{
			btnJ(b);
			if (listeJustes.indexOf("/"+b.name+"/")==-1)
         	       	{
             		   	nbJ+=1;
           		     	listeJustes+=b.name + "/";
 			};
		}
	};
	if (b.form.score){score(b.form.score)}
}
function test_menu_texte1(b,zm,zt,v,m)
//teste la valeur d'un menu et d'une zone de texte
//b=bouton zt=zone_de_texte  v=valeur_juste_Zonedetexte  m=message_si_faux
//L'item juste du menu doit avoir la valeur "J"
{
	//teste le menu
	if (zm.value!="J")
	{
		if (m){alert(m)};
		btnF1(b);
		nbF+=1;
		zm.focus();
	}
	else
	{
		//teste la zone de texte
		if (SupEspace(zt.value)!=SupEspace(v))
		{
			if (m){alert(m)};
			btnF1(b);
			nbF+=1;
			zt.focus();
			zt.select();
		}
		else
		{
			btnJ1(b);
			if (listeJustes.indexOf("/"+b.name+"/")==-1)
         	       	{
             		   	nbJ+=1;
           		     	listeJustes+=b.name + "/";
 			};
		}
	};
	if (b.form.score){score(b.form.score)}
}


function test_cases(b,z,nb,m)
//teste la valeur d'une liste de cases à cocher ou d'options
//b=bouton z=liste_de_cases  nb=nombre_valeurs_justes(=1 si cases d'options)  m=message_si_faux
//L'item juste doit avoir la valeur "J"
//L'item faux doit avoir la valeur "F"
{
	var i, reponse="", reponseJ=""
	for (i=0;i<z.length;i++)
	{
		if (z[i].checked){reponse+=z[i].value}
	}
	for (i=1;i<=nb;i++)
	{
		reponseJ+="J"
	}
	if (reponse!=reponseJ)
	{
		if (m){alert(m)};
		btnF(b);
		nbF+=1;
	}
	else
	{
		btnJ(b);
		if (listeJustes.indexOf("/"+b.name+"/")==-1)
                {
                	nbJ+=1;
                	listeJustes+=b.name + "/";
 		};
	};
	if (b.form.score){score(b.form.score)}
}

function test_cases1(b,z,nb,m)
//teste la valeur d'une liste de cases à cocher ou d'options
//b=bouton z=liste_de_cases  nb=nombre_valeurs_justes(=1 si cases d'options)  m=message_si_faux
//L'item juste doit avoir la valeur "J"
//L'item faux doit avoir la valeur "F"
{
	var i, reponse="", reponseJ=""
	for (i=0;i<z.length;i++)
	{
		if (z[i].checked){reponse+=z[i].value}
	}
	for (i=1;i<=nb;i++)
	{
		reponseJ+="J"
	}
	if (reponse!=reponseJ)
	{
		if (m){alert(m)};
		btnF1(b);
		nbF+=1;
	}
	else
	{
		btnJ1(b);
		if (listeJustes.indexOf("/"+b.name+"/")==-1)
                {
                	nbJ+=1;
                	listeJustes+=b.name + "/";
 		};
	};
	if (b.form.score){score(b.form.score)}
}

function test_texte_texte(b,zt1,v1,zt2,v2,m)
//teste la valeur de 2 zones de texte
//b=bouton zt=zone_de_texte  v=valeur_juste  m=message_si_faux
//L'item juste du menu doit avoir la valeur "J"
{
	//teste la première zone
	if (SupEspace(zt1.value)!=SupEspace(v1))
	{
		if (m){alert(m)};
		btnF(b);
		nbF+=1;
		zt1.focus();
		zt1.select();
	}
	else
	{
		//teste la seconde zone
		if (SupEspace(zt2.value)!=SupEspace(v2))
		{
			if (m){alert(m)};
			btnF(b);
			nbF+=1;
			zt2.focus();
			zt2.select();
		}
		else
		{
			btnJ(b);
			if (listeJustes.indexOf("/"+b.name+"/")==-1)
         	       	{
             		   	nbJ+=1;
           		     	listeJustes+=b.name + "/";
 			};
		}
	};
	if (b.form.score){score(b.form.score)}
}
function test_texte_texte1(b,zt1,v1,zt2,v2,m)
//teste la valeur de 2 zones de texte
//b=bouton zt=zone_de_texte  v=valeur_juste  m=message_si_faux
//L'item juste du menu doit avoir la valeur "J"
{
	//teste la première zone
	if (SupEspace(zt1.value)!=SupEspace(v1))
	{
		if (m){alert(m)};
		btnF1(b);
		nbF+=1;
		zt1.focus();
		zt1.select();
	}
	else
	{
		//teste la seconde zone
		if (SupEspace(zt2.value)!=SupEspace(v2))
		{
			if (m){alert(m)};
			btnF1(b);
			nbF+=1;
			zt2.focus();
			zt2.select();
		}
		else
		{
			btnJ1(b);
			if (listeJustes.indexOf("/"+b.name+"/")==-1)
         	       	{
             		   	nbJ+=1;
           		     	listeJustes+=b.name + "/";
 			};
		}
	};
	if (b.form.score){score(b.form.score)}
}


function test_menu_menu(b,zm1,zm2,m)
//teste la valeur d'un menu et d'une zone de texte
//b=bouton zt=zone_de_texte  v=valeur_juste_Zonedetexte  m=message_si_faux
//L'item juste du menu doit avoir la valeur "J"


{
	//teste le menu 1
	if (zm1.value!="J")
	{
		if (m){alert(m)};
		btnF(b);
		nbF+=1;
		zm1.focus();
	}
	else
	{
		//teste le menu 2
		if (zm2.value!="J")
		{
			if (m){alert(m)};
			btnF(b);
			nbF+=1;
			zm2.focus();
		}
		else
		{
			btnJ(b);
			if (listeJustes.indexOf("/"+b.name+"/")==-1)
         	       	{
             		   	nbJ+=1;
           		     	listeJustes+=b.name + "/";
 			};
		}
	};
	if (b.form.score){score(b.form.score)}
}
function test_menu_menu1(b,zm1,zm2,m)
//teste la valeur d'un menu et d'une zone de texte
//b=bouton zt=zone_de_texte  v=valeur_juste_Zonedetexte  m=message_si_faux
//L'item juste du menu doit avoir la valeur "J"


{
	//teste le menu 1
	if (zm1.value!="J")
	{
		if (m){alert(m)};
		btnF1(b);
		nbF+=1;
		zm1.focus();
	}
	else
	{
		//teste le menu 2
		if (zm2.value!="J")
		{
			if (m){alert(m)};
			btnF1(b);
			nbF+=1;
			zm2.focus();
		}
		else
		{
			btnJ1(b);
			if (listeJustes.indexOf("/"+b.name+"/")==-1)
         	       	{
             		   	nbJ+=1;
           		     	listeJustes+=b.name + "/";
 			};
		}
	};
	if (b.form.score){score(b.form.score)}
}


function setcookie(name, value, expire){
/*	'name' est le nom du cookie, 'value' la valeur à lui assigner, et 'expire' est la date d'expiration 
du cookie, qui doit être un TimeStamp UNIX, comme pour la fonction PHP.	
Tous les arguments sont obligatoires. Toutefois, pour créer un cookie dit de session, c'est à dire 
qui n'existe que pendant que le navigateur est ouvert, vous devez ommettre l'argument 'expires'.
Pour supprimer un cookie, vous devez donner une valeur dépassée à l'argument expire.
Voici un exemple d'utilisation :	
setcookie("count", 10, (new Date(2010, 12).getTime()));	*/

	var timestamp=new Date(expire);
	document.cookie=name + "=" + escape(value) + "; expires=" + timestamp.toGMTString();
}

function getcookie(name){
	var cookies = document.cookie.split(/;/);
	for(var i=0; i < cookies.length; i++){
		var mycook = cookies[i].split(/=/);
		if(mycook[0]==name)return unescape(mycook[1]);
	}
}

function flash(url){
	setcookie('url',url,(new Date().getTime()+10000));//durée en milisecondes
}


