/*****                 VISIBILITE                     *****/

//Affichage/Masquage Question

//Affiche la question ainsi que l'avant et apres reponse

function afficheQuestionComplete(idQuestion){
	var question = document.getElementById(idQuestion);
	var avant = document.getElementById(question.getAttribute("id")+"AvantReponse");
	if (avant) {avant.style.display = '';}
	question.style.display ='block';
	var apres = document.getElementById(question.getAttribute("id")+"ApresReponse");
	if (apres) {apres.style.display = '';}
	document.getElementById("reponse" + idQuestion).style.display = 'block';
}


//Affichage/masquage Bloc
function afficheBloc(idBloc){
    try {
        document.getElementById(idBloc).style.display ='block';
    }
    catch(Exception){}
}

//affiche la question idQuestion si condition est vrai
function afficheSiCond(idQuestion,condition){
    var question = document.getElementById(idQuestion);
    try
    {
        if (eval(condition)) {afficheQuestionComplete(question.getAttribute('id'));}
        else {cacheQuestion(question.getAttribute('id'));}
    }
    catch(Exception) {cacheQuestion(question.getAttribute('id'));}
}



//affiche une colonne de idtable
function montreColonne(idTable,indiceColonne){
    var tableHtml = document.getElementById(idTable);
    var tabTr = tableHtml.rows;
    var i;
    for(i=0;i<tabTr.length;i++)
    {
        var tabTd = tabTr[i].cells
        var td = tabTd[indiceColonne];
        if (td!=null) td.style.display= '';
    }
}



//Recupère la reponse associée a la question idQuestion
function recupereReponse(idQuestion){
    var nom = "reponse"+idQuestion;
    var i=0;
    var elements = document.getElementsByTagName('*');;
    while(i<elements.length)
    {
        if ((elements[i].getAttribute("typeElt") == "reponse")&&(elements[i].getAttribute("id") == nom))
        {
            return elements[i];
        }
        i++;
    }
    return null;
}


//recupere l'ensemble des blocs
function recupereBlocs(){
    var tab = [];
    var elements  =  document.getElementsByTagName('*');
    for(i=0;i<elements.length;i++) 
    {
        var obj = elements[i];
        if ((obj!=null) && (obj.getAttribute("typeElt")!=null) &&(obj.getAttribute("typeElt").indexOf("bloc")==0) ) 
        {
            tab.push(obj);
        }
    }
    return tab;
}

//Recupere l'ensemble des questions soit l'ensemble des éléments dont le typeElt est question 
// Les <tr> ne sont pas considérés comme des éléments par le dom, on les teste egalement
function recupereQuestions(){
    var tabRef;
    var tab = [];
    var elements = document.getElementsByTagName('*');;
    for(i=0;i<elements.length;i++)
    {
        var obj = elements[i];
        if ((obj!=null) && (obj.getAttribute("typeElt")!=null) &&(obj.getAttribute("typeElt")=="question") ) {tab.push(obj);}
    }
    var trs = document.getElementsByTagName("tr");
    for(j=0;j<trs.length;j++)
    {
        var obj2 = trs[j];
        if ((obj2!=null) && (obj2.getAttribute("typeElt")!=null) &&(obj2.getAttribute("typeElt")=="question") ) {tab.push(obj2);}
    }
    return tab;
}

//Conditionnels
function estRemplie(reponse){
    if (reponse==null) return false;
    return (reponse.getAttribute("saisie") == 'remplie');
}

//Methode principale d'initialisation de la visibilité, le formulaire n'est affiché qu'à la fin pour eviter un affichage saccadé.
function initVisible() {
	initVisibleBlocs();
    initVisibleQuestions();
    document.getElementById("form1").style.display='block';
}

//Détermine la visibilité des blocs, dynActive est utilisé pour désactiver ce processus
function initVisibleBlocs(){
    var dynActive = document.getElementById("dynActive");
    if ((dynActive == null) || (dynActive.value !='false')) 
    {
        var tableau = recupereBlocs();
        for(k=0;k<tableau.length;k++)
        {
            var bloc = tableau[k];
            if ((bloc.getAttribute("conditionVisibilite") == "") || (eval(bloc.getAttribute("conditionVisibilite"))))
                afficheBloc(bloc.getAttribute('id'));            
            else
                cacheBloc(bloc.getAttribute('id'));
        }
    }
}

//Détermine la visibilité des questions 
function initVisibleQuestions(){
    var dynActive = document.getElementById("dynActive");
    if ((dynActive == null) || (dynActive.value !='false')) 
    {
        var tableau = recupereQuestions();
        for(k=0;k<tableau.length;k++)
        {
            var question = tableau[k];
            if ((question.getAttribute("conditionVisibilite") =="")||(question.getAttribute("erreur") !="0")||(eval(question.getAttribute("conditionVisibilite")))) afficheQuestionComplete(question.getAttribute('id'));
            else cacheQuestion(question.getAttribute('id'));
        }
    }
}



/**********           Méthodes de communication avec l'automate **************/

//Affiche la div d'attente, place la commande à suivant et poste le formulaire
function valider(event){
    attente();
    validerSansAttente(event);
}


//Meme chose mais sans attente
function validerSansAttente(event){
	// pour eviter qu'un double-click entraine deux post vers le serveur
	event.target.onclick = null;
	testSecurite("securiserSuivant");
	//document.forms["form1"].elements.abandonQuestionnaire.value ='false';
	document.forms["form1"].commande.value='suivant';
	document.forms["form1"].submit();
}

//Affiche la div d'attente, place la commande à suivant et poste le formulaire
function validerAction(event, action) {
    attente();
    inscrireValeur("SuiteTarif", action);
    validerSansAttente(event);
}

/*******************        Utilitaires divers ***************/
//Variable globale
var popup;


//Bibliotheque personnalisée

//Méthode d'affichage conditionnel de contenu texte, si condition alors on écrit texte
function texteConditionnel(condition, texte,noeudParent){
try{ 
	if (eval(condition))  {writeMoz(texte,noeudParent);}
	}
catch (ex){
}
}

//Affichage à l'écran (version FireFox)
function writeMoz(texte,noeudParent){
    var noeudXmlParent = document.getElementById(noeudParent);
    if (noeudXmlParent) {
	    var l = document.createTextNode(texte);
        noeudXmlParent.appendChild(l);
    }
}

//Modifie la valeur de la question
function inscrireValeur(idQuestion, valeur) {
    var rep = recupereInputReponse(idQuestion);
    if (rep != null)
        rep.value = valeur;
}

// Affichage des aides en fonction de la position de la souris
function montreAidePosition(event, nomDiv) {
    cacheListBox();
    document.getElementById('aide' + nomDiv).style.top = event.pageY - 100 + 'px';
    montreDiv('aide' + nomDiv);
}
