//-- sylvie tissot ---
function evalue(){
	
	//----------------------------
	//-- recuperation des variables  ----------
	//----------------------------
	vNbMenteurs    = document.forms["formulaire"].nbmenteurs.value;
	vNbevaluations = document.forms["formulaire"].nbevaluations.value;
	if (vNbMenteurs>26){
		vNbMenteurs = 26;
	}else{
	}
	//--------------------------------
	// valeur de l'expression ---
	//--------------------------------
	tabVarDefaut = Array();
	tabPronomDefaut = Array();
	for(i=0;i<26;i++){
		tabVarDefaut[i]=String.fromCharCode(65+i);
		tabPronomDefaut[i]="il";
	}
	//-- pour agrémenter les premiers menteurs
	tabVarDefaut[0]="Alice";tabPronomDefaut[0]="elle";
	tabVarDefaut[1]="Bob";tabPronomDefaut[1]="il";
	tabVarDefaut[2]="Claude";tabPronomDefaut[2]="il";
	tabVarDefaut[3]="Deborah";tabPronomDefaut[3]="elle";
	tabVarDefaut[4]="Eve";tabPronomDefaut[4]="elle";
	tabVarDefaut[5]="Fatima";tabPronomDefaut[5]="elle";
	tabVarDefaut[6]="Gerald";tabPronomDefaut[6]="il";
	tabVarDefaut[7]="Henry";tabPronomDefaut[7]="il";
	tabVarDefaut[8]="Iris";tabPronomDefaut[8]="elle";
	tabVarDefaut[9]="Julia";tabPronomDefaut[9]="elle";
	tabVarDefaut[10]="Kevin";tabPronomDefaut[10]="il";
	
	
	// compter le nombre de variables
	tabVar    = Array();
	tabPronom = Array();
	nbVar  =0;
	
	for(i=0;i<vNbMenteurs;i++){
		tabVar[i]=tabVarDefaut[i];
		tabPronom[i]=tabPronomDefaut[i];
	}
	
	
	//--------------------------------
	//-- init ---
	//--------------------------------
	vNbVar = tabVar.length;
	
	vValeurVeriteInitiale = ""
	for(i=0;i<vNbVar;i++){
		vValeurVeriteInitiale = vValeurVeriteInitiale + "1";
	}
	
	vTabChaine = fRecursive(vNbVar-1);
	vChaineTotale = "";
	
	vNbExpressions = vTabChaine.length;
	
	tabPuissances = Array();

	//--------------------------------
	//-- développer ---
	//--------------------------------
	for(i=0;i<vNbExpressions;i++){
		
		//-- qui dit quoi de qui --
		vChaine          = vTabChaine[i];
		vChaineTotale    = vChaineTotale + "<font color=\"#FF00FF\"><b>cas numéro " + (i+1) + "</b></font><BR>";
		vValeurVeriteFuture    = vValeurVeriteInitiale;
		vChaineCycle = "";
		
		//-- nombre d'évaluation --
		for(j=0;j<vNbevaluations;j++){
			//-- init + mise en évidence du premier
			vValeurVerite = vValeurVeriteFuture;
			
			if (j==0){
				vFont1 = "<font color=\"#0000FF\">"
				vFont2 = "</font>"
				vDonc =  ""
			}else{
				vFont1 = ""
				vFont2 = ""
			}
			
			//-- mise en évidence du cycle
			if (vValeurVerite==vValeurVeriteInitiale){
				if (j==0){
				}else{
					if (vChaineCycle==""){
						vChaineCycle = "x<sup>" + (j+1) + "</sup>=x"
						//-- mémorise les puissances ---
						vTrouve = tabPuissances.inArray(j+1);
						if (vTrouve==false){
							tabPuissances[tabPuissances.length]=j+1;
						}else{
						}

					}else{
					}
					vChaineTotale = vChaineTotale + "<font color=\"FF0000\">.....fin du cycle....." + vChaineCycle + "</font><BR>"
				}
			}else{
			}
			
			
			for(k=0;k<vNbMenteurs;k++){
				if (j==0){
					vDonc = ""
				}else{
					if (k==0){
						vDonc = "<font color=\"#00FF00\"><b>donc </b></font>"
					}else{
						vDonc = "et "
					}
				}
				if (vValeurVerite.substr(k,1)=="1"){
					vChaineTotale = vChaineTotale + vDonc + tabVar[k] + " dit vrai : ";
				}else{
					vChaineTotale = vChaineTotale + vDonc + " ce que dit " + tabVar[k] + " est faux : ";
				}
				
				//-- cas : l'autre ment ----------
				if (vChaine.substr(k,1)=="0"){
					//-- dernier menteur : ------------
					if (k==vNbMenteurs-1){
						//-- s'il dit la vérité : on change --
						if (vValeurVerite.substr(k,1)=="1"){
							vValeurVeriteFuture= fRemplace(vValeurVeriteFuture,"0",0)
							vMais = ""
						}else{
							vValeurVeriteFuture= fRemplace(vValeurVeriteFuture,"1",0)
							vMais = " mais "
						}
						vChaineTotale = vChaineTotale + vMais + vFont1 + " " + tabPronom[k] + " dit que " + tabVar[0] + " ment <BR>" + vFont2;
							
					}else{
					//-- autre menteur : ------------
						if (vValeurVerite.substr(k,1)=="1"){
							vValeurVeriteFuture= fRemplace(vValeurVeriteFuture,"0",k+1)
							vMais = " "
						}else{
							vValeurVeriteFuture= fRemplace(vValeurVeriteFuture,"1",k+1)
							vMais = " mais "
						}
						vChaineTotale = vChaineTotale + vMais + vFont1 + " " + tabPronom[k] + " dit que " + tabVar[k+1] + " ment <BR>"+ vFont2;
					}
				}else{
				//-- cas : l'autre dit vrai ------------
					if (k==vNbMenteurs-1){
						if (vValeurVerite.substr(k,1)=="1"){
							vValeurVeriteFuture= fRemplace(vValeurVeriteFuture,"1",0)
							vMais = " "
						}else{
							vValeurVeriteFuture= fRemplace(vValeurVeriteFuture,"0",0)
							vMais = " mais "
						}
						vChaineTotale = vChaineTotale + vMais + vFont1 + " " + tabPronom[k] + " dit que " + tabVar[0] + " dit vrai <BR>"+ vFont2;
					}else{
						if (vValeurVerite.substr(k,1)=="1"){
							vValeurVeriteFuture= fRemplace(vValeurVeriteFuture,"1",k+1)
							vMais = " "
						}else{
							vValeurVeriteFuture= fRemplace(vValeurVeriteFuture,"0",k+1)
							vMais = " mais "
						}
						vChaineTotale = vChaineTotale + vMais + vFont1 + " " + tabPronom[k] + " dit que " + tabVar[k+1] + " dit vrai <BR>"+ vFont2;
					}
				}
				
			}
			
		}
		
		vChaineTotale = vChaineTotale + "<BR>";

		
	}
	
	document.getElementById( 'arrivee' ).innerHTML = vChaineTotale;
	document.getElementById( 'conclusion' ).innerHTML = " liste des puissances : " + tabPuissances.sort(TrierColAsc);
	//alert(vTabChaine);
	
	//vNewExpression = vNewExpression.replace(tabVar[j],vChaine.substr(j,1));
	
}
//--------------------------
Array.prototype.inArray = function(val) {
   vRetour=false;
   for(var i = 0; i < this.length; i++) {
      if(this[i] == val){
	      vRetour=true;
      }else{
      }
  	}
	return vRetour;
}
 

// recursive pour donner la suite de chiffres
function fRecursive(n){
	if (n==0){
		tab = Array("0","1")
		return tab;
	}else{
		vTab = fRecursive(n-1);
		vNb  = vTab.length
		vNewTab = Array()
		for(i=0;i<vNb;i++){
			indice = i*2
			vNewTab[ indice + 0 ] = "0" + vTab[i]
			vNewTab[ indice + 1 ] = "1" + vTab[i]
		}
		return vNewTab;
	}
}
function fRemplace(vChaine,vcar,vIndice){
	vRetour = "";
	vLongueur = vChaine.length;
	for(l=0;l<vLongueur;l++){
		if (l==vIndice){
			vRetour = vRetour+vcar;
		}else{
			vRetour = vRetour+vChaine.substr(l,1);
		}
	}
	return vRetour
}
function TrierColAsc(x1,x2){   
 // Tri ascendant sur chaîne de caractères
 return (x1 < x2 ? -1 : 1);
}   

/*
2
2,3
2,3,5
2,3,4,7
2,3,5,9
2,3,6,11
2,3,4,5,7,13
2,3,8,15
*/

