var i,j,k,l; /*Variables utilisées dans la fonction Comparer()*/
var exercice = new Array(); /*tableau qui contient les résultats des évaluations*/
var etapes= new Array();
var essai,etape,elements,erreurs,reponses; /*Variables utilisées dans la fonction Continuer()*/
etape=0; /*étape en cours*/
essai=0; /*marqueur de passage*/


function Initialiser()
  {
  /*instruction qui détermine le nombre d'éléments dans le corps de la page*/
  var area = document.getElementsByTagName("*");
  for ( i = 0; i < area.length ; i++ ) 
    {
    if (area.item(i).className.indexOf("etape") != -1)
      { 
      etapes.push(area.item(i));
      }
    }
  elements=(etapes.length-1);
  EffacerEtapes();
  AfficherEtape();
  EffacerResultat();
  ChoisirDonnees();
  }


function EffacerEtapes()
  {
  /*instruction qui efface toutes les divisions*/
  for (i=0;i<elements;i++)
    {
    etapes[i].style.display = "none";
    }
  }


function Continuer()
  {
  /*instruction qui masque toutes les sections étape*/
  EffacerEtapes();
  /*suppresssion de tous les éléments visibles de la section résultat*/
  EffacerResultat();
  /*instruction qui vérifie que l'exercice a été évalué et initialise le marqueur de passage*/
  switch (essai)
    {
    case 0:
      window.alert("Vous devez évaluer au moins une fois");
      etape --;
    break;
    default:
      essai=0;
    break;
    }
  etape ++;
  AfficherEtape();
  }


function AfficherEtape()
/*instruction qui détermine l'étape en cours et l'affiche*/
{
switch (etape)
{
case elements:
Bilan();
break;
default:
etapes[etape].style.display = "block";
exercice[etape] = new Array();
break;
}
}


function Evaluer ()
/*suppresssion de tous les éléments visibles de la section résultat*/
{
switch (essai)
{
case 2:
window.alert("Vous avez déjà été évalué deux fois. Vous allez passer à l'étape suivante");
Continuer();
break;
default:
EffacerResultat();
/*premier cas de figure : les réponses sont entrées dans des cases input text.*/
if (etapes[etape].getElementsByTagName("input").length!=0)
{
InputText();
AfficherResultat();
}
/*second cas de figure : les réponses sont sélectionnées dans des menus select.*/
if (etapes[etape].getElementsByTagName("select").length!=0)
{
InputSelect();
AfficherResultat();
}
break;
}
}


function InputText()
  {
  var proposition=new Array();
  proposition = etapes[etape].getElementsByTagName("input");
  /*instruction qui détermine le passage en cours*/
  essai ++;
  /*instruction qui compare les propositions et la correction*/
  erreurs=0; /*nombre d'erreurs*/
  reponses=0; /*nombre de réponses*/
  for (i=0;i<correction[etape].length;i++)
    {
    reponses ++;
/**instructions qui formatent la réponse**/
proposition[i].value=proposition[i].value.toLowerCase();
while ((proposition[i].value.charAt(0) == " ")||
(proposition[i].value.charAt(0) == ",")||
(proposition[i].value.charAt(0) == ".")||
(proposition[i].value.charAt(0) == ":")||
(proposition[i].value.charAt(0) == ";")||
(proposition[i].value.charAt(0) == "\'"))
{
proposition[i].value=proposition[i].value.substr(1);
}
while ((proposition[i].value.charAt(proposition[i].value.length-1) == " ")||
(proposition[i].value.charAt(proposition[i].value.length-1) == ",")||
(proposition[i].value.charAt(proposition[i].value.length-1) == ".")||
(proposition[i].value.charAt(proposition[i].value.length-1) == ":")||
(proposition[i].value.charAt(proposition[i].value.length-1) == ";")||
(proposition[i].value.charAt(proposition[i].value.length-1) == "\'"))
{
proposition[i].value=proposition[i].value.substr(0,proposition[i].value.length-1);
}
proposition[i].className="greenborder";
if (correction[etape][i]!=proposition[i].value)
{
proposition[i].className="redborder";
erreurs ++;
}
}
exercice[etape][essai] = erreurs;
}


function InputSelect()
{
var proposition=new Array();
proposition = etapes[etape].getElementsByTagName("select");
/*instruction qui détermine le passage en cours*/
essai++;
/*instruction qui compare les propositions et la correction*/
erreurs=0; /*nombre d'erreurs*/
reponses=0; /*nombre de réponses*/
for (i=0;i<correction[etape].length;i++)
{
reponses++;
proposition[i].className="greenborder";
if (correction[etape][i]!=proposition[i].value)
{
proposition[i].className="redborder";
erreurs++;
}
}
exercice[etape][essai] = erreurs;
}


function EffacerResultat()
{
/*instruction qui efface le résultat précédent*/
var resultat=etapes[elements];
while(resultat.hasChildNodes())
{
resultat.removeChild(resultat.childNodes[0]);
}
resultat.style.display="none";
}

function AfficherResultat()
{
/*instruction qui affiche le résultat*/
var resultat=etapes[elements];
resultat.style.display="block";
/*instruction qui crée le titre*/
var titre=document.createElement("h3");
var annonce=document.createTextNode("");
var repere = etapes[etape].getElementsByTagName("h2")[0].firstChild.nodeValue;
switch (essai)
{
case 1:
annonce.data=repere+" : "+essai+"ère évaluation.";
break;
default:
annonce.data=repere+" : "+essai+"ème évaluation.";
break;
}
resultat.appendChild(titre);
titre.appendChild(annonce);
/*instruction qui crée le conteneur du texte*/
var paragraphe=document.createElement("p");
resultat.appendChild(paragraphe);
/*instruction qui crée le texte*/
var texte=document.createTextNode("");
switch(erreurs)
{
case 0:
titre.className="greenbg";
paragraphe.className="greentext";
texte.data="Félicitations. Vous n'avez fait aucune erreur. La notion semble maîtrisée. Vous pouvez continuer.";
break;
case 1:
titre.className="redbg";
paragraphe.className="redtext";
texte.data="Vous avez une seule erreur. La notion est presque maîtrisée. Vous devriez relire et vérifier vos réponses.";
break;
default:
titre.className="redbg";
paragraphe.className="redtext";
texte.data="Vous avez "+erreurs+" erreurs. La notion n'est pas encore maîtrisée. Vous devriez relire et vérifier vos réponses.";
break;
case l:
titre.className="redbg";
paragraphe.className="redtext";
texte.data="Vous n'avez aucune bonne réponse. La notion n'est pas du tout maîtrisée. Vous devriez relire et vérifier vos réponses.";
break;

}
paragraphe.appendChild(texte);
}



function Bilan()
{
/*instruction qui efface toute la page*/
EffacerEtapes();
/*instruction qui affiche le résultat*/
var bilan=etapes[elements];
bilan.style.display="block";
/*instruction qui crée le titre*/
var titre=document.createElement("h2");
titre.innerHTML="Bilan";
bilan.appendChild(titre);
/*instruction qui crée le conteneur du texte*/
var paragraphe=document.createElement("p");
bilan.appendChild(paragraphe);
/*instruction qui crée le texte et les retours à la ligne*/
var introduction=document.createTextNode("");
var listemois=new Array("janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre");
var maintenant=new Date();
var jour=maintenant.getDate();
var mois=maintenant.getMonth();
var an=maintenant.getFullYear();
var heure=maintenant.getHours();
var minute=maintenant.getMinutes();
introduction.data="Réalisé le "+jour+" "+listemois[mois]+" "+an+" à "+heure+" heures "+minute+" :";
paragraphe.appendChild(introduction);
var retour=document.createElement("br");
paragraphe.appendChild(retour);
var texte=new Array();
for ( i=0;i<elements;i++ )
{
var ligne=document.createElement("br");
paragraphe.appendChild(ligne);
/*var longueur longueur de l'exercice*/
longueur=exercice[i].length-1;
texte[i]=new Array();
/*var r n° du passage*/
for ( j=1;j<=longueur;j++ )
{
var annonce = etapes[i].getElementsByTagName("h2")[0].firstChild.nodeValue;
texte[i][j]=document.createTextNode("");
if (longueur==1)
{
texte[i][j].data=annonce+" : vous avez fait "+exercice[i][j]+" erreur(s).";
}
else
{
switch (j)
{
case 1:
texte[i][j].data=annonce+" : la 1ère fois vous avez fait "+exercice[i][j]+" erreur(s).";
break;
default:
texte[i][j].data=annonce+" : la "+j+"ème fois vous avez fait "+exercice[i][j]+" erreur(s).";
break;
}
}
paragraphe.appendChild(texte[i][j]);
var retour=document.createElement("br");
paragraphe.appendChild(retour);

}
}
}


