/*****************************************************/
/**** Fichier des javascripts pour Mozilla Firefox ***/
/*****************************************************/


/******************************************************/
/****************** Contenu du fichier ****************/
/******************************************************/

// ----- Affichage/Masquage d'éléments ----- 
// ----- Récupérations d'éléments ----------
// ----- Conditionnels ---------------------
// ----- Initialisation --------------------
// ----- Utilitaires Divers ----------------

/******************************************************/
/******************************************************/


/******************************************************/
/****************** Initialisation ********************/
/******************************************************/

//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.forms["form1"].style.display='';
    //initPopupErreur('Erreur');
    initAbandonQuestionnaire();
}



/******************************************************/
/**************Affichage/Masquage d'éléments***********/
/******************************************************/

//Affiche la question ainsi que l'avant et apres reponse
function afficheQuestionComplete(idQuestion){
try {
    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 = '';}
}
catch(Exception){}
}


//affiche le bloc ainsi que l'avant et apres question
function afficheBlocComplete(idBloc){
try {
    var bloc = document.getElementById(idBloc);
    var avant = document.getElementById(bloc.getAttribute("id")+"AvantQuestion");
    if (avant) avant.style.display = '';
    bloc.style.display ='';
    var apres = document.getElementById(bloc.getAttribute("id")+"ApresQuestion");
    if (apres) apres.style.display = '';
    var erreur = document.getElementById(bloc.getAttribute("id")+"Erreur");
    if (erreur) erreur.style.display = '';
}
catch(Exception){}
}


//affiche une div
function montreDiv(nomDiv) {

try
{
    if(nomDiv.toString().match("aide*")){
        montreAide(nomDiv.toString().substring(4, nomDiv.toString().length));
    }
    else{
        document.getElementById(nomDiv).style.display = 'block';
    }
}
catch(Exception){}

}


//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= '';
    }
}


/******************************************************/
/********** Communication avec l'automate *************/
/******************************************************/

//Meme chose mais sans attente
function validerSansAttente(event){
    // pour eviter qu'un double-click entraine deux post vers le serveur
    if(event != null && event.target != null)
    {
        event.target.onclick = null;
    }
    testSecurite("securiserSuivant");
    
    SupprimerCaracteresSpeciaux();
    
    document.forms["form1"].elements.abandonQuestionnaire.value ='false';
    document.forms["form1"].commande.value='suivant';
    document.forms["form1"].submit();
}


//demande un précédent à l'automate
function retour(){
    attenteNouvelleOffre();
    testSecurite("securiserRetour");
    
    SupprimerCaracteresSpeciaux();
    
    document.forms["form1"].elements.abandonQuestionnaire.value ='false';
    document.forms["form1"].commande.value='precedent';
    document.forms["form1"].submit();
}

//Valide la question idQuestion 
function recharger(idQuestion){
    attenteNouvelleOffre();
    testSecurite("securiserGroupe");
    
    SupprimerCaracteresSpeciaux();
    
    document.forms["form1"].elements.abandonQuestionnaire.value ='false';
    var commande = document.getElementById("commande");
    document.forms["form1"].commande.value='validerQuestion;'+idQuestion;
    document.forms["form1"].submit();
}


/******************************************************/
/******************Utilitaires Divers******************/
/******************************************************/

//Vérifie la cohérence d'une date en s'appuyant sur une méthode générique
function coherenceBornesDate(date,noeudParent){
writeMoz(valideCoherenceBornesDate(date,noeudParent),noeudParent);
}


//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){
}
}

//Fonction d'écriture dynamique de contenu html : texte est écrit dans le noeud XHtml noeud.
function writeMoz(texte,noeudParent){
var noeudXmlParent = document.getElementById(noeudParent);
if (noeudXmlParent) {
	var l = document.createTextNode(texte);
  noeudXmlParent.appendChild(l);
}
}

// affiche et cache les questions selon ce que choisi l'utilisateur
// prends en paramètre la valeur de la listBox PeriodeAssureeCP
function afficheDetailsPeriodeAssuree(val)
{
	var PeriodeAssuree = document.getElementsByName('reponsePeriodeAssureeCP');
	
	switch(val)
	{
		case "1" :
		case "3" :
		{
			afficheQuestionComplete('RoleConducteurSurPeriodeAssuree');
			afficheQuestionComplete('ContratDeDesignation');
			break;
		}
		default : 
			cacheQuestion('RoleConducteurSurPeriodeAssuree');
			cacheQuestion('ContratDeDesignation');
		break;
	}
}
// fonction qui affiche l'heure à partir de laquelle le contrat sera effectif
function afficheHeureDebutContrat(dateCourante, noeudParent) 
{

	today = new Date();
	month = today.getMonth() + 1;
	day = today.getDate();
	if (day < 10)
	{
		str_day = "0" + day;
	}
	else
	{
		str_day = day;
	}
	if (month < 10)
	{
		str_month = "0" + month;
	}
	else
	{
		str_month = month;
	}
	str_today = str_day + "/" +  str_month + "/" + today.getFullYear();
	if (str_today == dateCourante) 
	{
		if  (today.getMinutes() == 0) 
		{
			writeMoz(today.getHours() + 1 + "h00", noeudParent);
		}
		else
		{
			writeMoz(today.getHours() + 2 + "h00", noeudParent);
		}
	}
	else
	{
		writeMoz("0h", noeudParent);
	}
}

// cache une div d'aide
function cacheAide(nomDiv)
{
	cacheDiv(nomDiv);
	afficheListBox();
}

// cache les listbox
function cacheAides()
{
	var listeDiv =document.getElementsByTagName('div');
	cacheListBox();
	for (i=0;i<listeDiv.length;i++)
	{
		var c = listeDiv[i].getAttribute("id");
		if(c && c.substring(0, 4) == 'aide')
		{
			cacheDiv(listeDiv[i].id);
		}
	} 
}

function cocheStationnementUniqueMultiple()
{
    document.getElementsByName('reponseStationnementUniqueMultiple')[0].checked=true;
    cocheFrance('unique');
}

//Fonction d'écriture de civilite : texte est écrit dans le noeud XHtml noeud.
//sex: 1: masculin, 2: feminin
//situationFamille : 2 : marie
function formaterCivilite(sex, situationFamille, insererBreak, noeudParent)
{
	var noeudXmlParent = document.getElementById(noeudParent);
	var spanElem = document.createElement('span');
	var sCivilite = "";
	if (noeudXmlParent)
	{
		if( insererBreak )
		{
			styleAttribut = document.createAttribute('class');
			styleAttribut.value = 'coordonneeTitre';
			spanElem.setAttributeNode(styleAttribut);
		}
		//afficher le texte de civilite
		if( sex=='1' )
		{
			sCivilite = 'Monsieur';
		}
		if( sex=='2' )
		{
			if( situationFamille == '1' )
				sCivilite = 'Mademoiselle';
			else
				sCivilite = 'Madame';
		}
		//ajouter le nouvel element span
		var textSpan = document.createTextNode(sCivilite);
		spanElem.appendChild(textSpan);
		noeudXmlParent.appendChild(spanElem);
	}

}

//creeer un XMLDOM a partir d'unne chaine
function CreerXmlDoc(inSource)
{
	var parser=new DOMParser();
	var xmlDoc = parser.parseFromString(inSource,"text/xml");
	
	var roottag = xmlDoc.documentElement;
    return ( roottag.tagName != "parserError" && roottag.namespaceURI != "http://www.mozilla.org/newlayout/xml/parsererror.xml" ? xmlDoc : null )
}

//recupre le montant d'une garantie
function RecupererMontant(fluxTarif, path)
{
	var montant = "";
	if( fluxTarif != null )
	{
		var nodes = fluxTarif.evaluate(path, fluxTarif, null, XPathResult.ANY_TYPE, null);
		var result=nodes.iterateNext();
		if( result )
		{
			montant = result.childNodes[0].nodeValue
		}
	}
	
	return montant;
}

//recupère le montant d'une garantie
function RecupererNoeudFluxTarif(fluxTarif, path)
{
    
	var nodes = null;
	if( fluxTarif != null)
	{
		nodes = fluxTarif.evaluate(path, fluxTarif, null, XPathResult.ANY_TYPE, null);
	}
	
	return nodes;
}

// coche france lorsque unique est choisi
// prend en parametre la valeur de la radioBox StationnementUniqueMultiple
function cocheFrance(val) {
	//probleme firefox: saisie avec les fleches clavier -> appel 2 fois, 1 fois avec la bonne valeur et 1 fois avec undefined
    if (val == "unique") {
        document.getElementsByName('reponseStationnementTravailFranceOuPaysFrontaliers')[0].checked = true;
    }
}

// coche et fait apparaitre les bonnes questions selon l'usage de la voiture choisie
// prend en parametre la valeur de la listeBox UsageVoiture
function selectionneStationnement(val) {
	if ((val == 2) || (val == 3)) {
	
		var valLieuTravail = recupereReponseAvantSubmit('StationnementUniqueMultiple');
		if( valLieuTravail != 'multiple' )
		{
		    inscrireValeur('StationnementUniqueMultiple', 'unique');
		}
		
		var lieuTravail = document.getElementsByName('reponseStationnementUniqueMultiple');
		// si unique
		if (lieuTravail[0].checked) {
			cocheFrance(lieuTravail[0].value);
			afficheLieuxTravail(lieuTravail[0].value);
			reinitialiseCPVille('StationnementTravail');
			viderToutesValeurs('StationnementTravailFrontalier');
		}
		else {
			cocheFrance(lieuTravail[1].value);
			cacheQuestion('StationnementTravailFranceOuPaysFrontaliers');
			cacheQuestion('StationnementTravail');
			cacheQuestion('StationnementTravailFrontalier');
		}
	}
	else {
		cacheQuestion('StationnementTravail');
		cacheQuestion('StationnementTravailFrontalier');
	}
}

// affiche et cache les questions selon ce que coche l'utilisateur (voir cdc pour voir le comportement)
// prend en parametre la valeur de la radioBox StationnementUniqueMultiple
function afficheLieuxTravail(val) {
	//probleme firefox: saisie avec les fleches clavier -> appel 2 fois, 1 fois avec la bonne valeur et 1 fois avec undefined
	if( val )
	{
		var paysStationnement = document.getElementsByName('reponseStationnementTravailFranceOuPaysFrontaliers');
		if (val == "unique") {
			afficheQuestionComplete('StationnementTravailFranceOuPaysFrontaliers');
			if (paysStationnement[0].checked) {
				afficheQuestionComplete('StationnementTravail');
				cacheQuestion('StationnementTravailFrontalier');
			}
			else {
				afficheQuestionComplete('StationnementTravailFrontalier');
				cacheQuestion('StationnementTravail');			
			}
		}
		else {
			cacheQuestion('StationnementTravailFranceOuPaysFrontaliers');
			cacheQuestion('StationnementTravail');
			cacheQuestion('StationnementTravailFrontalier');
		}
	}
}

/******************************************************/
/********** Recherche véhicule pour Ajax **************/
/******************************************************/

// fonction utilisé pour générer le tableau de la recherche véhicule pour l'Ajax
function genererTdSelection (numero, valeur)
{
    var td = document.createElement("td");
    td.setAttribute ("id", "colonneBouton_" + numero);
    td.setAttribute ("align", "center");
    td.setAttribute ("height", "35");
    td.setAttribute ("donnee", "visible");
    td.setAttribute ("class", "padL10");
    
    var champ = document.createElement ("input");
    champ.name = "reponseChoixModeleVoiture";
    champ.type = "radio";
    champ.setAttribute ("value", valeur);
    td.appendChild (champ);
    return td;
}

/* Gestion des packs nouvelle offre auto da*/
 //Modification du total à afficher
    
    
    //Renseigne le montant du pack pour Firefox
    function RenseignerMontantPack(choixTarif, fluxTarif)
    {
            var zoneMontantPack = $("#LignePackRecapMontant");
            //Montant du pack
		    var nodesListePacks = RecupererNoeudFluxTarif(fluxTarif,'TARIF/'+choixTarif+'/ListePacks/Pack');
           if(nodesListePacks!=null)
           { 
              var thisNode = nodesListePacks.iterateNext();
              while (thisNode) 
              {
                var montantPack = null;
                for(var i=0;i<thisNode.childNodes.length;i++)
                {
                    var nomTag = thisNode.childNodes[i].tagName;
                    var contenuTag = thisNode.childNodes[i].textContent;
                    //Gestion du montant
                    if(nomTag == "Montant")
                    {
                        montantPack = contenuTag;
                    }
                    if(nomTag == "Selectionne")
                    {
                        if(contenuTag == "true")
                        {
                            zoneMontantPack.text(montantPack);
                        }
                    } 
                }
                thisNode = nodesListePacks.iterateNext();
              }
            }
    }

    //Modification des montants des formules
    function ModificationMontantFormuleSuivantFractionnement(fluxTarif, choixTarif) 
    {
        var nomMethode = "ModificationMontantFormuleSuivantFractionnement";
        try 
        {
            var tabChoixTarif = choixTarif.split('_');
            
            if (tabChoixTarif.length == 2) 
            {
                var nodesFormuleTiersMini = RecupererNoeudFluxTarif(fluxTarif, 'TARIF /FRCSeule_' + tabChoixTarif[1] + '/CotisBase');
                var nodesFormuleTiersEssentiel = RecupererNoeudFluxTarif(fluxTarif, 'TARIF /FTiersSimple_' + tabChoixTarif[1] + '/CotisBase');
                var nodesFormuleTiersIntegral = RecupererNoeudFluxTarif(fluxTarif, 'TARIF /FTiersComplete_' + tabChoixTarif[1] + '/CotisBase');
                var nodesFormuleTousRisques = RecupererNoeudFluxTarif(fluxTarif, 'TARIF /FComplete_' + tabChoixTarif[1] + '/CotisBase');
                var valeurNodeTiersMini = nodesFormuleTiersMini.iterateNext().childNodes[0].textContent;
                
                //TiersMini
                $("#valeurMontantTiersMini").text(valeurNodeTiersMini);

                var valeurNodeTiersIntegral = nodesFormuleTiersIntegral.iterateNext().childNodes[0].textContent;
                //TiersIntegral
                $("#valeurMontantTiersIntegral").text(valeurNodeTiersIntegral);

                var valeurNodeTiersEssentiel = nodesFormuleTiersEssentiel.iterateNext().childNodes[0].textContent;
                //TiersEssentiel
                $("#valeurMontantTiersEssentiel").text(valeurNodeTiersEssentiel);

                var valeurNodeTiersTousRisques = nodesFormuleTousRisques.iterateNext().childNodes[0].textContent;
                //TiersTousRisques
                $("#valeurMontantTiersTousRisques").text(valeurNodeTiersTousRisques);

                //Mise à jour des values pour les radioBoutons
                $("#radioFormuleTiersMini").val("FRCSeule_" + tabChoixTarif[1]);
                $("#radioFormuleTiersEssentiel").val("FTiersSimple_" + tabChoixTarif[1]);
                $("#radioFormuleTiersIntegral").val("FTiersComplete_" + tabChoixTarif[1]);
                $("#radioFormuleTiersTousRisques").val("FComplete_" + tabChoixTarif[1]);
            }
        }
        catch (e) 
        {
            AjoutErreurJS("Methode " + nomMethode + " " + e.message);
        }
    }
    
    //Modification des montants des packs
    function ModificationPackNORetourCalculerComptant(fluxTarif, choixTarif, fractionnementMontantPack)
    {
        var nomMethode = "ModificationPackNORetourCalculerComptant";
        try
        {
           var nodesListePacks = RecupererNoeudFluxTarif(fluxTarif,'TARIF/'+choixTarif+'/ListePacks/Pack');
           if(nodesListePacks!=null)
           {
                //on désélectionne les packs
                RemiseAZeroPack();
                
                var thisNode = nodesListePacks.iterateNext();
  
                  while (thisNode) 
                  {
                    var idPack = null;
                    
                    for(var i=0;i<thisNode.childNodes.length;i++)
                    {
                        var nomTag = thisNode.childNodes[i].tagName;
                        var contenuTag = thisNode.childNodes[i].textContent;
                        
                        if(nomTag == "IdPack")
                        {
                            //on prend l'id en cours
                            idPack = contenuTag;
                        }
                        //Gestion du montant
                        if(nomTag == "Montant")
                        {
                            //on est au niveau du montant d'un pack
                            if(idPack!=null)
                            {
                                var montantPack = contenuTag;
                                $("#montantPackPack"+idPack).html(GestionArrondiePack(montantPack, fractionnementMontantPack));
                            }
                        }
                        //Gestion du sélectionnée
                        if(nomTag == "Selectionne")
                        {
                            //on est au niveau de la sélection d'un pack
                            if(idPack!=null)
                            {
                                var selectionPack = contenuTag;
                                if(selectionPack == 'true')
                                {
                                    //on sélectionne le pack
                                    $("#checkboxPackPack" + idPack)[0].checked = true;
                                    
                                    var hautPack = $("#idHautPack_Pack"+i);
                                    var tableauPack = $("#tableauPack"+idPack);
                                    var checkboxPack = $("#checkboxPackPack"+idPack);
                                    var toolTipAidePack = $("#ToolTipAide_Pack"+idPack);
                                    var basTableauPack = $("tr[name=Pack"+idPack+"BasTableau]");
                                    hautPack.attr("class", "hautTableauPack");
                                    tableauPack.attr("class", "tableauPackChoisi");
                                    checkboxPack.removeAttr("disabled");
                                    toolTipAidePack.attr("class", "toolTipPack");
                                    basTableauPack.attr("class", "basTableauPackChoisi");
                                }
                            }
                        }
                        //Gestion du grisée du pack
                        if(nomTag == "PresencePack")
                        {
                            //on est au niveau de la sélection d'un pack
                            if(idPack!=null)
                            {
                                var presencePack = contenuTag;
                                if(presencePack == 'false')
                                {
                                    //on doit invalider le pack (grisée)
                                    var hautPack = $("#idHautPack_Pack"+i);
                                    var tableauPack = $("#tableauPack"+idPack);
                                    var checkboxPack = $("#checkboxPackPack"+idPack);
                                    var toolTipAidePack = $("#ToolTipAide_Pack"+idPack);
                                    var basTableauPack = $("tr[name=Pack"+idPack+"BasTableau]");
                                    var textePackNonDisponible = $("#idTextePackNonDisponible_Pack"+idPack);
                                    $("#checkboxPackPack"+idPack)[0].checked = false;
                                    hautPack.attr("class", "hautTableauPack_Off");
                                    tableauPack.attr("class", "tableauPack_Off");
                                    checkboxPack.attr("disabled", "true");
                                    toolTipAidePack.attr("class", "toolTipPack_Off");
                                    basTableauPack.attr("class", "basTableauPack");
                                    textePackNonDisponible.css("display", "block");
                                }
                            }
                        }
                        //Gestion du recommandé du pack 
                        if(nomTag == "RecommandePack")
                        {
                            if(idPack!=null)
                            {
                                var recommandePack = contenuTag;
                                if(recommandePack == 'true')
                                {
                                    //on doit recommander le pack
                                    var tableauPack = $("#tableauPack"+idPack);
                                    tableauPack.attr("class", tableauPack.attr("class") + " tableauPack_Recommande");
                                    
                                    var tdRecommandePack = $("#tdRecommandePack"+idPack);
                                    tdRecommandePack.attr("class", "recommandePack");
                                    
                                    $("td[class=recommandePack]").corner("left 10");
                                    $("div[id=tableauPack"+idPack+"]").corner("right 10");
                                    $("#idHautPack_Pack"+idPack).corner("tr 10");
                                }
                                else
                                {
                                    $("div[id=tableauPack"+idPack+"]").corner();
                                    $("#idHautPack_Pack"+idPack).corner("top 10");
                                }
                            }
                        }
                    }
                    thisNode = nodesListePacks.iterateNext();
                  }
               
           }
        }
        catch(e)
        {
            AjoutErreurJS("Methode "+nomMethode+" "+e.message);
        }
    }


