/**********************************************************/
/**** Fichier des javascripts pour les deux navigateurs ***/
/**********************************************************/


/******************************************************/
/****************** Contenu du fichier ****************/
/******************************************************/
// ----- Constantes -----
// ----- Affichage/Masquage d'éléments ----- 
// ----- Récupérations d'éléments ----------
// ----- Conditionnels ---------------------
// ----- Initialisation --------------------
// ----- Utilitaires Divers ----------------

/******************************************************/
/******************Constantes**************************/
/******************************************************/

/* Utilisées dans la récupération du tarif d'une option dans le flux xml métier*/
var CONST_FRACTIONNEMENT_AN = 3;
var CONST_FRACTIONNEMENT_SEM = 2;
var CONST_FRACTIONNEMENT_MENS = 1;
// textes par defaut
var CONST_TEXTE_CPVILLE_DEFAUT = '(Code postal ou Ville)';
var CONST_TEXTE_JJMMAAAA_DEFAUT = 'JJ/MM/AAAA';
var CONST_TEXTE_JJMM_DEFAUT = 'JJ/MM';
var CONST_TEXTE_MMAAAA_DEFAUT = 'MM/AAAA';
var CONST_TEXTE_MM_DEFAUT = 'MM';
var CONST_TEXTE_AAAA_DEFAUT = 'AAAA';


//SCENARIO
var CONST_SCENARIO_POURCOMMENCER_ASSURE = 'Scenario_GroupePourCommencer_1';
var CONST_SCENARIO_POURCOMMENCER_CLIENTDA = 'Scenario_GroupePourCommencer_2';
var CONST_SCENARIO_VOITUREAASSURER_RAE = 'Scenario_GroupeVoitureAAssurer_1';
var CONST_SCENARIO_VOITUREAASSURER_REMP = 'Scenario_GroupeVoitureAAssurer_2';
var CONST_SCENARIO_VOITUREAASSURER_ACHATAUTRE = 'Scenario_GroupeVoitureAAssurer_3';
var CONST_SCENARIO_VOITUREAASSURER_RAZ = 'Scenario_GroupeVoitureAAssurer_4';
var CONST_SCENARIO_CARACTERISTIQUESVOITURE_REPONSE = 'Scenario_GroupeCaracteristiquesVoiture_1';
var CONST_SCENARIO_CPANTECEDENTS_UNEVOITURESUPP = 'Scenario_GroupeCPAntecedents_1';
var CONST_SCENARIO_CPANTECEDENTS_PLUSIEURSVOITURESUPP = 'Scenario_GroupeCPAntecedents_2';
var CONST_SCENARIO_CPANTECEDENTS_AUCUNEVOITURESUPP = 'Scenario_GroupeCPAntecedents_3';
var CONST_SCENARIO_RECAPITULATIF_STYLESTABLEAUX = 'Scenario_GroupeRecapitulatif_1';
var CONST_SCENARIO_USAGE_VOITURE = 'Scenario_UsageVoiture';

//SIMULATION
var CONST_LIM_MODIF_SIMUL = 10; //limitation du nombre de modification de simulation


/******************************************************/
/**************Affichage/Masquage d'éléments***********/
/******************************************************/

//affiche le bloc
function afficheBloc(idBloc){
    //document.getElementById(idBloc).style.display ='inline';
    document.getElementById(idBloc).style.display ='';
}


//affiche l'élement idElement si condition est vrai
function afficheElementSiCond(idElement,condition){
try {
    var element = document.getElementById(idElement);
    if (eval(condition)) element.style.display='';
    else element.style.display='none';
}
catch (Exception) {}
}

//affiche un style a un element
function affecteStyle(idElement, style, conserveAncienStyle)
{
	try
	{
		var element = document.getElementById(idElement);
		
		if( conserveAncienStyle )
		{
			element.className += style;
		}
		else
		{
			element.className = style;
		}
	}
	catch (Exception) {}
}

//affecte le style display a un element
//probleme de comptabilite IE/Firefox si l'on passe par la css
function affecteDisplay(idElement, styleDisplay)
{
	try
	{
		var element = document.getElementById(idElement);
		
		document.getElementById(idElement).style.display = styleDisplay;
	}
	catch (Exception) {}
}

//Affiche les lignes d'un tableau présent dans le document à la condition que ces lignes (tr) contiennent un attribut 'contenuLigne' dont la valeur n'est pas vide
//Utilisée pour les aides récapitulatives des garanties : Si la garantie n'est pas proposée (la donnée est vide), on affiche pas la ligne.
function afficherLignesTableau()
{
	var tabTrs = document.getElementsByTagName("tr");
	var i=0;
	while(i<tabTrs.length)
	{
		var contenu = tabTrs[i].getAttribute("contenuLigne");
		var sContenu = new String(contenu);
		if ( (sContenu.replace(" ","") != "") && (sContenu != "undefined") ) tabTrs[i].style.display = "";
		
		i++;
	}
}

//Méthode utilisée après la refonte du site
// pour afficher/cacher une partie du tableau du tarif
function initTableauTarifTeamSite(nombreSauvegardesEffectuees, rechargementSimulationAutorise, choixTarif, animationCommercialeAffichable)
{
    affecteStyle("divContenuMB", 'fondTarif largeurContenu bordGris floatLeft', false);
    affecteStyle('aideSimulationEnCoursModification', 'infoSimulModif', false);
	
	if ( choixTarif == '' || choixTarif.indexOf('ToutRisque') >= 0 ) 
	{
	    affecteStyle("tdTsRisques", "couleurBleuTarif fondBlanc", false);
	    affecteStyle("tdTsRisquesTarifAn", "tarifChoisi fondBlanc", false);
	    affecteStyle("tdTsRisquesTarifMens", "tarifChoisi fondBlanc", false);
	    affecteStyle("tdTsRisquesTarifSem", "tarifChoisi fondBlanc", false);
	    
		cacheDiv('divGarantiesTiers');
		montreDiv('divGarantiesTsRisques');
	}
	else
	{
	    affecteStyle("tdTsRisques", "tdTarif ", false);
	    affecteStyle("tdTsRisquesTarifAn", "tdTarif", false);
	    affecteStyle("tdTsRisquesTarifMens", "tdTarif", false);
	    affecteStyle("tdTsRisquesTarifSem", "tdTarif", false);
	}

	if( choixTarif.indexOf('Tiers') >= 0 )
	{
	    affecteStyle("tdTiers", "couleurBleuTarif fondBlanc", false);
	    affecteStyle("tdTiersTarifAn", "tarifChoisi fondBlanc", false);
	    affecteStyle("tdTiersTarifMens", "tarifChoisi fondBlanc", false);
	    affecteStyle("tdTiersTarifSem", "tarifChoisi fondBlanc", false);
	    
		cacheDiv('divGarantiesTsRisques');
		montreDiv('divGarantiesTiers');
	}
	else
	{
	    affecteStyle("tdTiers", "tdTarif", false);
	    affecteStyle("tdTiersTarifAn", "tdTarif", false);
	    affecteStyle("tdTiersTarifMens", "tdTarif", false);
	    affecteStyle("tdTiersTarifSem", "tdTarif", false);
	}
	
	if( animationCommercialeAffichable == 'true' && document.getElementById("divAnimationCommerciale") ){
		cacheListBox();
		montreDiv('divAnimationCommerciale');
    }

    if (eval((nombreSauvegardesEffectuees > '0') && (rechargementSimulationAutorise == 'true'))) {
        montreAide('AlerteEnregistrementSimulation');
        completerTexteAlerteSimul(parseInt(nombreSauvegardesEffectuees));
        document.getElementById('lienFermeraideAlerteEnregistrementSimulation').onclick = function() { cacheDivSurTarif('aideAlerteEnregistrementSimulation') };
    }

    //cacher les liens Enregistrement simulation quand le nombre de sauvegardes > 10
    if (nombreSauvegardesEffectuees > CONST_LIM_MODIF_SIMUL)
    {
        affecteDisplay('tdSauvegardeSimul', 'none');
        affecteDisplay('spImpressionDevis', 'none');
    }
	
	//verifie les fractionnements dispos et modifie eventuellement le texte de la question correspondante
	verifierListeFractionnements();
	afficheTarifFractionne();
	afficheFormuleConseillee(formuleConseillee);
}

//affiche le macaron recommandation dans les cellules 1/3 ou Tous risques
function afficheFormuleConseillee(inFormuleConseillee) {
    if (inFormuleConseillee == '1') {
        affecteStyle("tdTiersTarifAn", " notreConseil", true);
        affecteStyle("tdTiersTarifMens", " notreConseil", true);
        affecteStyle("tdTiersTarifSem", " notreConseil", true);
    }
    else {
        affecteStyle("tdTsRisquesTarifAn", " notreConseil", true);
        affecteStyle("tdTsRisquesTarifMens", " notreConseil", true);
        affecteStyle("tdTsRisquesTarifSem", " notreConseil", true);
    }
}

//complete le texte d'alerte sur le nombre de sauvegardes restant
function completerTexteAlerteSimul(nbSauvegardes) {
    var txtNbModifsRestantes = '';
    
    if (nbSauvegardes < CONST_LIM_MODIF_SIMUL) {
        txtNbModifsRestantes = "que " + (11 - nbSauvegardes) + " modifications possibles.";
        affecteDisplay('spAutres', 'none');
    }
    else if (nbSauvegardes == CONST_LIM_MODIF_SIMUL) {
        txtNbModifsRestantes = "qu'une seule modification possible.";
        affecteDisplay('spAutres', 'none');
    }
    else {
        txtNbModifsRestantes = "aucune modification possible.";
        affecteDisplay('spAutres', '');
    }
    
    ajouteTexte(txtNbModifsRestantes, 'spNbModifsRestantes', false);
}

//Affiche la partie dynamique de l'avatar sur la page Tarif
function afficheAvatarTarif(dateEffetInferieureOuEgale30j)
{
    if (dateEffetInferieureOuEgale30j == 'true')
    {
        //Affiche l'avatar dans le cas d'une GPI
        document.write('<script type="text/javascript" src="/avatar/auto/js/LA_integration_Form_12_a.js"></script>');
	}
	else
	{
	    //Affiche l'avatar dans le cas d'une Non-GPI
	    document.write('<script type="text/javascript" src="/avatar/auto/js/LA_integration_Form_12_b.js"></script>');
	}
}

/******************************************************/
/****************** Initialisation ********************/
/******************************************************/

//Rend visible le lien vers les pdf Conditions Generales
function afficheConditionsGenerales(){
    if (eval(document.getElementById('blocChoixTarif'))) 
     {
      document.getElementById('blocConditionsGenerales').style.display='inline';
     }
}

//Rend visible la loi Chatel si nécessaire
function montreLoiChatel(dateCourantePlus60j, dateDebutGarantie, cibleDemandeTarif, idSession, isTarif, marque, tessLot2Active)
{
	var test = compareDates(dateCourantePlus60j,dateDebutGarantie);
	
	// l'affichage de la loi chatel pour la recherche véhicule dépend de la donnée automate TessLot2Active
	if (tessLot2Active == 'true')
	{    
        if (test && (cibleDemandeTarif == '4') && (marque == ""))
	    {
		    if (isTarif)
		    {
		        montreDiv('LoiChatelTarif');
		    }
		    else
		    {
		        cacheDiv('infoCaracteristiquesVoiture');
		        montreDiv('LoiChatel');
		    }
	    }
	}
	else
	{
        if (test && (cibleDemandeTarif == '4') && (!questionExiste('AppellationCommercialeVoiture')))
        {
            if (isTarif)
		    {
		      montreDiv('LoiChatelTarif');
		    }
		    else
		    {
		      cacheDiv('infoCaracteristiquesVoiture');
		      montreDiv('LoiChatel');
		    }
	    }
    }  
}


//Déclenche l'affichage d'une popup d'erreur en fonction de l'erreur presente sur le GROUPE CaracteristiquesVoiture
//Les codes erreur sont separes par '::'
function initPopupErreur(idPopup)
{
	var cleRemote = document.forms["form1"].elements.idSession.value;
	var codeErreur = document.forms["form1"].getAttribute("codeErreur")+'';
	var idPopup='Erreur';
	if ( codeErreur.indexOf('3::')!=-1 ) idPopup = 'ErreurZeroVehicule';
	if ( codeErreur.indexOf('4::')!=-1 ) idPopup = 'ErreurTropVehicule';
	if ( codeErreur!='null' && codeErreur!='' && codeErreur!='0::' ) 
	{
		if ( idPopup=='ErreurZeroVehicule' || idPopup=='ErreurTropVehicule' )
		{
			document.getElementById('ErreurSaisie').style.display="none";
			montreAide(idPopup);
		}
	}
	//si le code erreur 5 est present, ce n'est pas vraiment une erreur, c'est juste un flag pour empecher de passer au groupe suivant
	if ( codeErreur.indexOf('5::')!=-1 )
	{
		document.getElementById('ErreurSaisie').style.display="none";
	}
}

function initialiserMacaron(fichierXml)
{
	try
	{
		soBody.addVariable("xmlUrl", "/xml/" + fichierXml);
	}
	catch(Exception) {}
}

function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}

function setLyr(obj,lyr)
{
	try
	{
		var coors = findPos(document.getElementById(obj));
		var x = document.getElementById(lyr);
		coors[0] -= 45;
		coors[1] += 50;
		x.style.top = coors[1] + 'px';
		x.style.left = coors[0] + 'px';
	}
	catch (Exception){
	}
}	

/******************************************************/
/********** Communication avec l'automate *************/
/******************************************************/

//Affiche la div d'attente, place la commande à suivant et poste le formulaire
function valider(event){
    attente();
    validerSansAttente(event);
}


//demande un précédent à l'automate
function retour(){
    attente();
    testSecurite("securiserRetour");
    document.forms["form1"].elements.abandonQuestionnaire.value ='false';
    document.forms["form1"].elements.commande.value='precedent';
    document.forms["form1"].submit();
}


//Demande à l'automate de passer directement au groupe idGroupe
function mettreFocusGroupe(idGroupe){
    attente();
    goHTTP();
    document.forms["form1"].elements.abandonQuestionnaire.value ='false';
    document.forms["form1"].elements.commande.value='selectionnerGroupe;'+idGroupe;
    document.forms["form1"].submit();
}


//Envoie la commande Fin à l'automate
function fermer(){
try {
    goHTTP();
    document.forms["form1"].elements.abandonQuestionnaire.value ='false';
    document.forms["form1"].elements.commande.value='fin;';
    document.forms["form1"].submit();
   }
catch (Exception) {}
//self.close();
}

//action specifique lors qu'on quitte le formulaire en cours
function quitterFormulaire(idSession, idPartenaire) {
    attente();
    //mettre abandon à false pour ne pas provoquer la destruction automatique du remote lors que l'evenement unload se lève
    document.forms["form1"].elements.abandonQuestionnaire.value = 'false';
    //Pour DA, supprimer le remote et rediriger vers la home auto pour ne pas tagguer le 1er groupe après la commande fin
    if (idPartenaire == '') {
        detruireAutomate(idSession, false);
        location.href = '/pages/auto_home.html';
    }
    //Pour les partenaires, ne pas detruire automate mais envoyer la commande fin
    else {
        fermer();
    }
}

//fonction qui valide la page si les conditions générales sont acceptées
function validerCoordonnees(suiteTarif, event)
{
	var acceptationConditions;
	acceptationConditions = validerConditions('AcceptationConditions');

	if (acceptationConditions == 1 || acceptationConditions == -1) 
	{
		valider(event);
	}
	else 
	{
	    alert('Veuillez consulter, imprimer ou t\351l\351charger les Conditions G\351n\351rales Auto et cochez la case pour terminer votre demande.');
	}
}

//Méthode appelée avant la validation du groupe tarif, l'argument est la donnee à tester pour s'assurer qu'un tarif a été choisi.
function validerTarif(suiteTarif,event){
	var tarif = recupereInputReponse("ChoixTarif");
	var tarifSelectionne = false;
	
	for (i = 0; i < tarif.length; i++)
	{
		if (tarif[i].checked)
			tarifSelectionne = true;
	}
	
	// teste si on a choisi autre chose qu'enregistrer une simulation sans avoir selectionner de tarif
	if ( !tarifSelectionne ) 
	{
		alert("Choisissez un tarif");
	}
	else
	{
        inscrireValeur('SuiteTarif', suiteTarif);
		valider(event);
	}
}

// vérifie que les CG ont bien été cochées
function validerConditions(idAcceptationConditions)
{
	var test = recupereInputReponse(idAcceptationConditions);
	var resultat = -1;
	if (test != null)
	{
		var cg = document.getElementById("CG");
		if (test[0].checked != true) 
		{
			if (cg != null)
			{
				cg.style.color = "Red";
				clignoteCouleur('CG');
			}
			// pas coché
			resultat = 0;
			return 0;
		}
		else 
		{	
			if (cg != null)
			{
				cg.style.color = "Black";
			}	
			// coché
			resultat = 1;
			return 1;
		}
	}
	// pas présent, sélection du média
	else
	{
		return -1;
	}
}


/******************************************************/
/******************Utilitaires Divers******************/
/******************************************************/

//Transforme l'url de https en http
function goHTTP(){
    var val = new String();
    val = location.href;
    val = val.replace("https:","http:");
    document.forms["form1"].action = val;
}

//En fonction du type de sécurité (securiserGroupe, securiserSuivant ou securiserRetour
function testSecurite(typeSecurite){
var val = new String();
val = location.href;
if (document.forms["form1"].elements.activationHTTPS.value == "true") 
{
	switch (typeSecurite){
	case "securiserGroupe" : 
	if (document.forms["form1"].elements.securiserGroupe !=null) val = val.replace("http:","https:");
	else val = val.replace("https:","http:");
	break;
	case "securiserSuivant" : 
	if (document.forms["form1"].elements.securiserSuivant !=null) val = val.replace("http:","https:");
	else val = val.replace("https:","http:");
	break;
	case "securiserRetour" : 
	if (document.forms["form1"].elements.securiserRetour !=null) val = val.replace("http:","https:");
	else val = val.replace("https:","http:");
	break;
	}
}
document.forms["form1"].action = val;
}


//Envoie la commande Fin Ã  l'automate et abandonne la propo courante.
function abandonner(){
try {
    document.forms["form1"].elements.abandonQuestionnaire.value ='false';
    goHTTP();
    document.forms["form1"].elements.commande.value='fin';
    abandon();
    self.focus();
    document.forms["form1"].submit();
}
catch (Exception) {}
}


//Si l'abandon pour ce groupe est activé, une alerte s'affiche pour demander à  l'utilisateur si il souhaite vraiment quitter.
//Si oui on déclenche un abandon, si non on réouvre la page
function abandonnerQuestionnaire(){
if (document.forms["form1"].elements.abandonQuestionnaire.value == 'true'){
if (confirm("Voulez-vous vraiment quitter ?")) 
	{	
		var cleRemote = document.forms["form1"].elements.idSession.value;
		OpenWindowReturn('abandonPremierContact.aspx?cleRemote='+cleRemote,'Abandon','left=10000','10','10','');
		//empeche la fermeture de fenetre pour DA
		//self.opener = top;
		//self.close();
	}
	else
	{
		self.opener = top;
		self.close();
		window.open(window.location.href);
	}
}
}



//Variable globale
var popup;


//Ouvre la page dynamique des PDFs avec en argument le type de PDF (recapDevis, attestationGarabties,....)
function popupPdf(idPopup)
{
	var cleRemote = document.forms["form1"].elements.idSession.value;
	var fen = OpenWindowReturn('pagePdf.aspx?cleRemote='+cleRemote+'&&typePdf='+idPopup,'info','','1000','1000','');
}


//Ouvre la page dynamique des PDFs avec en argument le type de PDF (recapDevis, attestationGarabties,....)
function popupSondageIPI()
{
	if (document.forms["form1"].elements.abandonQuestionnaire.value == 'true')
	{
		var cleRemote = document.forms["form1"].elements.idSession.value;
		var fen = OpenWindowReturn('pageSondageIPI.aspx?cleRemote='+cleRemote,'info','','650','500','');
		//OpenWindow('http://www.areyounet.com/runet/client/Reponse?i=16719795&s=A5CC5', 'info', '', '800', '850', '')
	}
}


// Teste si le groupe courant est le groupe tarif (si il contient ChoixTarif)
function testTarif()
{
    var fen = popup;
    var test=0;
    try {
        if (window.opener.document.forms["form1"].innerHTML.indexOf("ChoixTarif")>0) fen.close();
    }
    catch (Exception)
    {
    //Quand on a chargé la page du tarif, l'instruction window.opener renvoie une exception, on ferme donc la popup
    test=1;
    }
    if (test==1) fen.close();
}
	
	
function fermePopup(){
popup.close();
}


//Contrà´le le code postal et affiche une alerte si il n'est pas correct.
//Obj est le controle html contenant le code à  tester
function testCodePostal(obj){
    var codePostal = new String();
    codePostal = obj.value;
    if ( (codePostal.length != 4) && (codePostal.length != 5) ) {obj.value = '';alert('merci de saisir un code postal de 4 ou 5 chiffres');}
}


//Vérifie si la date 'obj' est supérieure à  'date'
function testLimiteDate(obj,date,texteDefaut){
    var val = obj.value;
    var tab = val.split('/');
    var test;
    var dateLimite = new String();
    dateLimite = date;
    var anneeLimite = dateLimite.substring(6,dateLimite.length);
    var moisLimite = dateLimite.substring(3,5);

    if (tab.length == 1) {test = (parseFloat(anneeLimite) <= parseFloat(tab)); }
    else if (tab.length == 2) 
    {
    var moisTab = tab[0];
    var anneeTab = tab[1];
    test = ( (parseFloat(anneeLimite) < parseFloat(anneeTab)) || ( (parseFloat(anneeTab) == parseFloat(anneeLimite)) && (parseFloat(moisTab) >= parseFloat(moisLimite)) )  );
    }
    else test= compareDates(val,date);

    if (!test) 
    {
        alert("La date saisie n'est pas valide.");
        obj.value = texteDefaut;
    }
return test;
}

function testDateLimite(strDate,strDateLimite,texteDefaut)
{
    if(!(comparerDate(strDate,strDateLimite)==">"))
    {
        alert("La date saisie n'est pas valide.");
        return texteDefaut;   
    }
    else
    {
        return strDate;
    }
}


//change la couleur du contrôle html d'id 'c' présente dans la page.
//Si c est rouge, il passe à violet, sinon il passe rouge
function chcolor(idElement){ 
	if( document.getElementById(idElement) )
	{
		var color = document.getElementById(idElement).style.color;
		if (color =='red') document.getElementById(idElement).style.color = 'black';
		if (color =='black') document.getElementById(idElement).style.color = 'red';
	}
}


//Appelle la méthode précédente toutes les 2 secondes.
function clignoteCouleur(idElement)
{
	var speed = 600;
	setInterval("chcolor('"+idElement+"')",speed);
}

//affiche une div d'aide
function montreAide(nomAide) {
	cacheListBox();
	montreDiv('aide' + nomAide);
}


// cache une div d'aide
function cacheAide(nomDiv)
{
	cacheDiv(nomDiv);
	afficheListBox();
}


// cache les listbox
function cacheListBox()
{
	var aSelect=document.getElementsByTagName('select');
	for (i=0;i<aSelect.length;i++)
	{
		aSelect[i].style.visibility= 'hidden';
	} 
}


// affiche les listbox
function afficheListBox()
{
	var aSelect=document.getElementsByTagName('select');
	for (i=0;i<aSelect.length;i++)
	{
		aSelect[i].style.visibility= 'visible';
	} 
}	

		
// cache les listbox
function cacheAides()
{
	var listeDiv =document.getElementsByTagName('div');
	for (i=0;i<listeDiv.length;i++)
	{
		var c = listeDiv[i].getAttribute("id");
		if (c.substring(0, 4) == 'aide')
		{
			cacheDiv(listeDiv[i].id);
		}
	} 
}

function finAttente()
{
    afficheListBox();
    document.getElementById("divAttente").style.display = 'none';
}

function retrouveIndiceChoix(question,valeur)
 {
	var i=0;
	while(i < question.length)
	{
		if (question[i].value==valeur) 
		{
			return i
		};
		i++;
	}
	return null;
 }

//fonction qui redirige vers le partenaire inPartenaire
function GotoPartenaire(inPartenaire) {
    switch (inPartenaire) {
        case "LSACourtage":
            window.open("http://www.assurpeople.com/devis-assurance-auto-en-ligne.html?proven=DA");
            break;
        case "Empruntis":
            window.open("http://www.empruntis.com/assurance-auto/blanc/assuranceauto.php?pagevoulue=projet&code=ST9PHN");
            break;
        default:
            break;
    }
}

//Appelle la page d'abandon du questionnaire (qui se ferme toute seule).
function abandon()
{
	var cleRemote = document.forms["form1"].elements.idSession.value;
	OpenWindowReturn('abandonPremierContact.aspx?cleRemote='+cleRemote,'Abandon','left=10000','10','10','');	
}


//Rend visible le 'bon' numero de telephone d'appel plateau en fonction d'une donnée automate
function afficherTelephoneRenvoiCDC(estJourOuvre)
{
	if( estJourOuvre=='true' )
		afficheElementSiCond('divPhoneJourOuvre','true');
	else
		afficheElementSiCond('divPhoneJourNonOuvre','true');
}


// ouvrir le lien vers l'espace client  
function Siteclient() {
	this.location.href = "/DA.WEB.PS.Identification.Web/Pages/SignIn_IdentUser.aspx";
}

/*
 ==============================================
  Fonction de detection d'une touche du clavier
  dont le code est fourni en paramètre
  (fonction à appeler sur l'événement onkeydown
  exemple :
  Si la touche tapée est 'enter' :
  toucheDetectee(event, 13) retournera 'true'
 ==============================================
*/
var soumissionFormulaireTraitee = false;
function toucheDetectee(e, code)
{
	var estIE = false;
	var estFF = false;
	
	if(window.event) { estIE = true; }
	else if(e) { estFF= true; }
	else {}
	
		
	var event = e || window.event;
	var target = e.target || event.srcElement;
	
	onclick = target.onclick;
	target.onclick = null;
	
	if(event)
	{	
		if(estIE && event.keyCode == code)
		{
			event.cancelBubble = true;
			event.returnValue = false;
			if (!soumissionFormulaireTraitee) {
				soumissionFormulaireTraitee = true;
				return true;
			}
			return false;
		}
		else if(estFF && event.which == code)
		{
			if(event.stopPropagation) { event.stopPropagation(); }
			event.cancelBubble = true;
			//if(event.preventDefault) { event.preventDefault(); }
				if (!soumissionFormulaireTraitee)
				{
					soumissionFormulaireTraitee = true;
					return true;
				}
				return false;
		}
		else {}
	}
	target.onclick = onclick;
	return false;
	
}

// methode plus simple qui ne modifie pas l'évennement
function toucheDetectee2(e, code)
{
	var estIE = false;
	var estFF = false;
	
	if(window.event) { estIE = true; }
	else if(e) { estFF= true; }
			
	var event = e || window.event;
	
	if(event)
	{	
		if(estIE && event.keyCode == code)
		{
    		return true;
		}
		else if(estFF && event.which == code)
		{
			return true;
		}
	}
	return false;
}

function gererSoumission(event)
{
	if (toucheDetectee(event,13))
	{
		valider(event);
	}
}

function gererSoumissionConducteurs(event, idSession, antecedentsCPCommeCP, idQuestionDatePermis, idQuestionCRM, dateCourante, moisDerniereEcheancePrincipale) {
    var evenement = event || window.event;
    //verifier si la touche 'Enter' est tapee
    //toucheDetectee(event,13) vide l'attribut onclick, ce qui n'est pas souhaitable car on reste bloque sur cet ecran en cas d'incoherence CRM
    if (evenement.keyCode == 13) {
        validerGroupeConducteurs(event, idSession, antecedentsCPCommeCP, idQuestionDatePermis, idQuestionCRM, dateCourante, moisDerniereEcheancePrincipale);
    }
}

function gererSoumissionVoitureAAssurer(event, antecedentsCPCommeCP, dateCourante) {
    var evenement = event || window.event;
    //verifier si la touche 'Enter' est tapee
    //toucheDetectee(event,13) vide l'attribut onclick, ce qui n'est pas souhaitable car on reste bloque sur cet ecran en cas d'affichage des alertes
    if (evenement.keyCode == 13) {
        validerGroupeVoitureAAssurer(event, antecedentsCPCommeCP, dateCourante);
    }
}

function gererSoumissionCaracteristiqueVoiture(suiteTarif, event) {
    var evenement = event || window.event;
    //verifier si la touche 'Enter' est tapee
    //toucheDetectee(event,13) vide l'attribut onclick, ce qui n'est pas souhaitable car on reste bloque sur cet ecran en cas d'affichage des alertes
    if (evenement.keyCode == 13) {
        validerCoordonnees(suiteTarif, event);
    }
}

function gererSoumissionEmbranchementPaiement(idAcceptationConditions, event) {
    var evenement = event || window.event;
    //verifier si la touche 'Enter' est tapee
    //toucheDetectee(event,13) vide l'attribut onclick, ce qui n'est pas souhaitable car on reste bloque sur cet ecran en cas d'affichage des alertes
    if (evenement.keyCode == 13) {
        if (validerConditions(idAcceptationConditions) == 1) { return; }
    }
}

// empêche de passer au groupe suivant si un précédent modèle (code auto) a été sélectionné mais qu'on a changé 
// de voiture dans la recherche
function gererSoumissionCaracteristiqueVoiture(event) {
    var evenement = event || window.event;
    if (evenement.keyCode == 13) {
        validerRechercheVehicule(event);
    }
}

function envoyerEmail(body)     
{
	chaine_mail = "mailto:BonnesQuestionsPropositions@directassurance.fr?subject=Bonne question ";
	chaine_mail += "&body=" + document.forms["formEmail"].bodyEmailQuestion.value;
    location.href = chaine_mail;
}

// ecrit un texte dans un noeud donne
// texte : nouveau texte
// idElement : id de l'element du texte à ajouter
// ajouter (true|false) : true -> ajouter à la suite, false ou undefined -> remplacer
function ajouteTexte(texte, idElement, ajouter)
{
	var element = document.getElementById(idElement);
	if (element) 
	{
	    if (element.childNodes.length == 0 || ajouter)
	    {
	        element.appendChild(document.createTextNode(texte));
        }
        else
        {
            var nouvTexte = document.createTextNode(texte);
            element.replaceChild(nouvTexte, element.firstChild);
	    }
	}
}

function viderTexte(idElement)
{
    var element = document.getElementById(idElement);
	if (element) 
	{
	    if (element.childNodes.length != 0)
        {
            // supprime tous les noeuds texte ou enfant
            var i = element.childNodes.length;
            while (i > 0)
            {
                element.removeChild(element.firstChild);
                i--;
            }
          //  var nouvTexte = document.createTextNode("");
          //  element.replaceChild(nouvTexte, element.firstChild);
        }
	}
}

function ajouteBreak(idElement)
{
	var element = document.getElementById(idElement);
	if (element) 
	{
	    element.appendChild(document.createElement('br'));
	}
}



/*---------------- Page Tarif ---------------------------*/


// fonction qui met a checked le tarif qui a ete selectionne
function selectionnerTarifChoisiDA(choixTarif)
{
	if (choixTarif != null)
	{	
    	var tarif = recupereInputReponse("ChoixTarif");   
		if (tarif != null)   
		{   
			for(i=0;i<tarif.length;i++)   
			{   
				if ( tarif[i].value == choixTarif )
				{   
					tarif[i].checked = true;
					break;
				}   
			}   
		} 
	}
}



//Affiche le(s) option(s) choisie(s) dans le total
//Change la couleur de fond en blanc pour les options choisies
function afficheOptions(choixTarif, fluxTarif, ListeOptionsGarantiesQuestion, ListeIdOptionsGarantiesQuestion, ListeOptionsComplementGarantieQuestion, ListeIdOptionsComplementGarantieQuestion)
{
    // vide la div divOptionsChoisies
    viderTexte('divOptionsChoisies');
	//Récupération du nom des questions optionGarantie1 à n à gérer
	if(ListeOptionsGarantiesQuestion != "")
	{
	    afficheListeOptions(ListeIdOptionsGarantiesQuestion, ListeOptionsGarantiesQuestion, false);
	}

	//Récupération du nom des questions OptionsComplementGarantieQuestion à n à gérer
	if(ListeOptionsComplementGarantieQuestion != "")
	{
	    afficheListeOptions(ListeIdOptionsComplementGarantieQuestion, ListeOptionsComplementGarantieQuestion, true);
	}
}

//Affiche une liste d'options ou de compléments d'option
// ListeIdOptions : liste des id des garanties ou des compléments de garantie
// ListeOptions : liste des noms de garanties ou compléments de garantie
// isComplement : si les listes correspondent à des garantie (false) ou complément de garantie (true)
function afficheListeOptions(ListeIdOptions, ListeOptions, isComplement)
{
	try			
	{
		// on récupère un tableau contenant les nom des options
		tabOption = ListeOptions.split("|");
		// on récupère un tableau contenant les id des options
		tabIdOption = ListeIdOptions.split("|");
		
		//Trouver la combinaison des options cliquées et la comparer avec les valeurs des données pour toutes les options 
		var indexQuestion = 0;

		// on traite toutes les options
		while (indexQuestion < tabOption.length)
		{
			//récupération de la question correspondant à l'option
			var tabOptionsCheckBox = recupereToutesInputReponses(tabOption[indexQuestion]);
			
			// on regarde si la garantie a été checkée
    		var isChecked = tabOptionsCheckBox[0].checked;

			// pour toutes les garanties et les compléments de garantie ????
    		// si on est sur un complément de garantie
    		if(isComplement)
    		{
    			// on ne veut récupérer que le montant du complément de garantie sélectionné et non les n 
    			// pour un niveau 1 on a un checkbox
    			// pour un niveau > 1 on a une liste, il faut donc rechercher quel complément est sélectionné
				
				// de x_y on récupère x (id) et y (max niveau), toujours le même
				var tabIdGarNiv = (tabIdOption[indexQuestion]).split("_");
				// format 1_1 par exemple, condition fausse si aucune option complément garantie paramétrée
		        if( tabIdGarNiv.length == 2 )
		        {
					// on veut savoir si le nombre de niveau est égal à 1 ou supérieur
					if (tabIdGarNiv[1] == "1")
					{
						afficheOption(isChecked, choixTarif, fluxTarif, tabIdGarNiv[0], tabOption[indexQuestion], tabIdGarNiv[1], "", isComplement);
					}
					else
					{
						// on a plusieurs niveau, on recherche un selected correspondant à la valeur du complément de garantie choisi
						var libNiveauComplGarantie = tabOptionsCheckBox[1].options[tabOptionsCheckBox[1].selectedIndex].text;
    					afficheOption(isChecked, choixTarif, fluxTarif, tabIdGarNiv[0], tabOption[indexQuestion], tabOptionsCheckBox[1].value, libNiveauComplGarantie, isComplement);	
					}
    			}
    		}
    		else
    		{
    			afficheOption(isChecked, choixTarif, fluxTarif, tabIdOption[indexQuestion], tabOption[indexQuestion], 0, "", isComplement);
			}
		    indexQuestion++;
		}//fin 1er While
	}// fin try
	catch (Exception) {}
}

// Colorise en blanc l'option cochée et affiche son montant
function afficheOption(isChecked, choixTarif, fluxTarif, idGarantie, optionChoisie, niveauComplGarantie, libNiveauComplGarantie, isComplement)
{
	try			
	{
		var montantGarantie = 0;
		switch( choixTarif )
		{
			case "FTiers_AN":
				montantGarantie = recupMontantGarantie(choixTarif, fluxTarif, idGarantie, niveauComplGarantie, CONST_FRACTIONNEMENT_AN, isComplement);
				break;
			case "FTiers_SEM":
				montantGarantie = recupMontantGarantie(choixTarif, fluxTarif, idGarantie, niveauComplGarantie, CONST_FRACTIONNEMENT_SEM, isComplement);
				break;
			case "FTiers_MENS":
				montantGarantie = recupMontantGarantie(choixTarif, fluxTarif, idGarantie, niveauComplGarantie, CONST_FRACTIONNEMENT_MENS, isComplement);
				break;
			case "FToutRisque_AN":
				montantGarantie = recupMontantGarantie(choixTarif, fluxTarif, idGarantie, niveauComplGarantie, CONST_FRACTIONNEMENT_AN, isComplement);
				break;
			case "FToutRisque_SEM":
				montantGarantie = recupMontantGarantie(choixTarif, fluxTarif, idGarantie, niveauComplGarantie, CONST_FRACTIONNEMENT_SEM,  isComplement);
				break;
			case "FToutRisque_MENS":
				montantGarantie = recupMontantGarantie(choixTarif, fluxTarif, idGarantie, niveauComplGarantie, CONST_FRACTIONNEMENT_MENS,  isComplement);
				break;
		}
		
		//Affiche le montant de l'option
		ajouteTexte(montantGarantie,  "td"+optionChoisie);
			
		//change la couleur du fond de l'option en blanc
		if(isChecked)
		{
			affecteStyle("td"+optionChoisie, 'optionTarifChoisie', false);
	    	
			//Change la couleur du fond de l'option en blanc
			affecteStyle(optionChoisie, 'margL10  fondBlanc margR10 largeurOption', false);
	    	
			//Change la couleur de l'intitulé de l'option en bleu
			affecteStyle("intitule"+optionChoisie, 'couleurBleuTarif', false);
	    	
			//Change la couleur du trait en bleu
			affecteStyle("trait"+optionChoisie, 'traitBleuOption', false);

			//Rajoute le texte de l'option dans le récapitulatif
			var OptionGarantieLibelle = document.getElementById("libelle"+optionChoisie);
			ajouteTexte("Avec "+OptionGarantieLibelle.innerHTML + " " + libNiveauComplGarantie, 'divOptionsChoisies', true);
			ajouteBreak('divOptionsChoisies');
		}
		else
		{
		    affecteStyle("td" + optionChoisie, 'textTarif', false);
	    	
			//Change la couleur du fond de l'option en bleu
			affecteStyle(optionChoisie, 'margL10  fondBleu margR10 largeurOption', false);
	    	
			//Change la couleur de l'intitulé de l'option en blanc
			affecteStyle("intitule"+optionChoisie, 'couleurBlancTarif', false);
	    	
			//Change la couleur du trait en blanc
			affecteStyle("trait"+optionChoisie, 'traitBlancOption', false);

			//Supprime le texte de l'option dans le récapitulatif
			var OptionGarantieLibelle = document.getElementById("libelle"+optionChoisie);
		}
	}
	catch (Exception) {}
}

//affiche les montants des options garantie
function recupMontantGarantie(choixTarif, fluxTarif, idGarantie, niveauComplGarantie, codeFractionnment, isComplement)
{
    if (isComplement)
    {
	 path="/TARIF/"+choixTarif+"/ListeComplementGaranties/ComplementGarantie[IdComplementGarantie='"+idGarantie+"' and Niveau='"+niveauComplGarantie+"']/MontantAnnuelTTC";
	}
	else
	{
	 path = "/TARIF/"+choixTarif+"/ListeGaranties/Garantie[IdGarantie='"+idGarantie+"']/MntTTC";
	}

	return "\u00A0" + RecupererMontant(fluxTarif, path) / 100 + "\u20AC";
}



///Affiche le texte de la formule choisie dans le resume
function afficheFormuleChoisieResume(choixTarif)
{
	var sFormuleChoisie = ( choixTarif.indexOf('FTiers')> -1 ? "Au tiers" : "Tous risques" );
	
	ajouteTexte(sFormuleChoisie, 'divFormuleChoisie');
}


//affiche le montant comptant 30j et le fractionnement mensuel ou semestriel
function afficheFractionnement(choixTarif, fluxTarif, comptant30j, comptant)
{
try			
{
	var montantComptant = ( comptant30j != 0 ? comptant30j : comptant );
	switch(choixTarif){
	    case "FTiers_SEM":
	        viderTexte('divTextFractionnement');
	        viderTexte('divMontantFractionnement');
			ajouteTexte("dont un premier semestre de " + RecupererMontant(fluxTarif,'/TARIF/FTiers_SEM/PrimeFractionnee') + " \u20AC", 'divMontantPremierVersement');
			break;
		case "FTiers_MENS":
			ajouteTexte("soit des mensualit\u00E9s de " ,  'divTextFractionnement');
			ajouteTexte(RecupererMontant(fluxTarif,'/TARIF/FTiers_MENS/PrimeFractionnee') + " \u20AC",  'divMontantFractionnement');
			ajouteTexte("apr\u00E8s un 1er versement de " + montantComptant + " \u20AC", 'divMontantPremierVersement');
			break;
		case "FToutRisque_SEM":
		    viderTexte('divTextFractionnement');
		    viderTexte('divMontantFractionnement');
			ajouteTexte("dont un premier semestre de " + RecupererMontant(fluxTarif,'/TARIF/FToutRisque_SEM/PrimeFractionnee') + " \u20AC", 'divMontantPremierVersement');
			break;
		case "FToutRisque_MENS":
			ajouteTexte("soit des mensualit\u00E9s de " ,  'divTextFractionnement');
			ajouteTexte(RecupererMontant(fluxTarif,'/TARIF/FToutRisque_MENS/PrimeFractionnee') + " \u20AC",  'divMontantFractionnement');
			ajouteTexte("apr\u00E8s un 1er versement de " + montantComptant + " \u20AC", 'divMontantPremierVersement');
			break;
	    default:
	        viderTexte('divTextFractionnement');
	        viderTexte('divMontantPremierVersement');
	        viderTexte('divMontantFractionnement');
	        break;
	}
}
catch (Exception) {}
}

//affiche la cotisation totale annuelle TTC
function afficheCotisTotale(choixTarif, fluxTarif)
{
try			
{
	var montantTotal = "";
	switch(choixTarif){
		case "FTiers_AN":
			montantTotal = RecupererMontant(fluxTarif,'/TARIF/FTiers_AN/Cotis');
			break;
		case "FTiers_SEM":
			montantTotal = RecupererMontant(fluxTarif,'/TARIF/FTiers_SEM/Cotis');
			break;
		case "FTiers_MENS":
			montantTotal = RecupererMontant(fluxTarif,'/TARIF/FTiers_MENS/Cotis');
			break;
		case "FToutRisque_AN":
			montantTotal = RecupererMontant(fluxTarif,'/TARIF/FToutRisque_AN/Cotis');
			break;
		case "FToutRisque_SEM":
			montantTotal = RecupererMontant(fluxTarif,'/TARIF/FToutRisque_SEM/Cotis');
			break;
		case "FToutRisque_MENS":
			montantTotal = RecupererMontant(fluxTarif,'/TARIF/FToutRisque_MENS/Cotis');
			break;
	}
	ajouteTexte(montantTotal+" \u20AC", 'divMontantTotal');
}
catch (Exception) {}
}


//verifie les fractionnements dispos et modifie eventuellement le texte de la question correspondante
function verifierListeFractionnements()
{
	listeFractionnements = recupereInputReponse("TypeFractionnement");
	spanTitreTypeFractionnement = document.getElementById("titreTypeFractionnement");
	
	if( listeFractionnements!=null && spanTitreTypeFractionnement!=null && listeFractionnements.length==1 )
	{
		iTailleAncienTitre = spanTitreTypeFractionnement.firstChild.nodeValue.length;
		nouveauTitre = " Votre fr\u00E9quence de paiement est annuelle";
		spanTitreTypeFractionnement.firstChild.replaceData(0,iTailleAncienTitre,nouveauTitre);
		
		listeFractionnements.style.display='none';
	}
}

//affiche le tarif correspondant au fractionnement choisi
function afficheTarifFractionne()
{
	var fractionnementChoisi = '3'; //fractionnement annuel par defaut
	listeFractionnements = recupereInputReponse("TypeFractionnement");
	if( listeFractionnements!=null )
	{
		fractionnementChoisi = listeFractionnements.value;
	}
	
	//cache les trois lignes AN/MENS/SEM
	affecteDisplay('trFracAn','none');
	affecteDisplay('trFracSem','none');
	affecteDisplay('trFracMens','none');

	//affiche la ligne correspondant au fractionnement choisi
	switch(fractionnementChoisi)
	{
		case '1': //mensuel
			affecteStyle('trFracMens','',false);
			affecteDisplay('trFracMens','');
			break;
		case '2': //semestriel
			affecteStyle('trFracSem','',false);
			affecteDisplay('trFracSem','');
			break;
		case '3': //annuel
			affecteStyle('trFracAn','',false);
			affecteDisplay('trFracAn','');
			break;
    }
}

//verifie les complements d'otion dispos et modifie eventuellement le texte du bloc des options 
function verifierListeComplementOptions()
{
	listeComplementOptions = recupereInputReponse("OptionComplementGarantie1");
	spanTitreTypeFractionnement = document.getElementById("titreOptions");
	
	if( listeComplementOptions == null )
	{
		iTailleAncienTitre = spanTitreTypeFractionnement.firstChild.nodeValue.length;
		nouveauTitre = " Option  ";
		spanTitreTypeFractionnement.firstChild.replaceData(0,iTailleAncienTitre,nouveauTitre);
		
    	document.getElementById("trAideAssistanceKm").style.display = 'none';
	}
}

//ferme idDiv sur l'ecran tarif et re-affiche eventuellement la liste des fractionnnements
function cacheDivSurTarif(idDiv)
{
	cacheDiv(idDiv);
	listeFractionnements = recupereInputReponse("TypeFractionnement");
	if( listeFractionnements && listeFractionnements.length>1 )
	{
		listeFractionnements.style.display='';
		listeFractionnements.style.visibility = 'visible';
	}
	
	//afficher les autres listebox
	var listeSelect=document.getElementsByTagName('select');
	
	for (i=0;i<listeSelect.length;i++)
	{
		if( listeSelect[i].name != 'reponseTypeFractionnement' )
		{
			listeSelect[i].style.display= '';
			listeSelect[i].style.visibility = 'visible';
		}
	}
}

/*  ----------   Groupe Coord -----------------------------*/
//Affiche la liste d'options choisies sur l'ecran coordonnees
function afficheCoordOptionsChoisies(ListeOptions)
{
try
{
		tabOption = ListeOptions.split("|");
		
		//Trouver la combinaison des options cliquées et la comparer avec les valeurs des données pour toutes les options 
		var index = 0;

		while (index < tabOption.length)
		{
			//récupération de toutes les questions option garantie (ex : OptionGarantie1)
			if(index > 0) ajouteTexte(",", 'blocCoordonneesGarantieChoisie');
			ajouteTexte(tabOption[index], 'blocCoordonneesGarantieChoisie');
			index++;
		}

}
catch (Exception) {}
}

//affiche la localite selectionnee
function afficheLocalite(idQuestion)
{
	var reponse = recupereToutesInputReponses(idQuestion)
	
	if( reponse!=null && reponse.length==2 )
	{
		inputCPVille = reponse[0];
		listeLocalites = reponse[1];
		
		//on affiche le textebox et on cache la liste des localites
		if( listeLocalites.selectedIndex!= 0 )
		{
			//Si l'option annulation est selectionnee, on reinitialise le champ CPVille
			if( listeLocalites.selectedIndex==1 )
			{
				reinitialiseCPVille(idQuestion);
			}
			else
			{
				inputCPVille.style.display='';
				inputCPVille.value = listeLocalites.options[listeLocalites.selectedIndex].text;
				listeLocalites.style.display='none';
				//supprime les autres localites pour eviter le conflit d'affichage dans le cas ou ya pls composants CPVille et on clique sur les aides
				for( indexLocalite=2 ; indexLocalite <listeLocalites.length ; indexLocalite++ ){
					opt = listeLocalites.options[indexLocalite];
					if (!opt.selected){
						listeLocalites.options[indexLocalite] = null;
						indexLocalite--;
					}
				}
			}
		}
	}
}


//affiche la liste box s'il y a pls localites trouvees sinon affiche le textebox
function initCPVille(idQuestion)
{
	var reponse = recupereToutesInputReponses(idQuestion);
	if( reponse!=null && reponse.length==2 )
	{
		inputCPVille = reponse[0];
		listeLocalites = reponse[1];
		
		//s'il y a plusieurs localites trouvees, on affiche la liste sinon on la cache
		if(listeLocalites.length<4)
		{
			inputCPVille.style.display = '';
			listeLocalites.style.display = 'none';
			//pre selection si l'on trouve une seule localite
			if( listeLocalites.length== 3 )
			{
				listeLocalites.selectedIndex = 2;
				inputCPVille.value = listeLocalites.options[listeLocalites.selectedIndex].text;
			}
			else{
				//pre selection du 1er element pour les listes dont attribut size>1
				listeLocalites.selectedIndex = 0;
			}
		}
		else
		{
			inputCPVille.style.display = 'none';
			listeLocalites.selectedIndex = 0;
			listeLocalites.style.display = '';
			flasheQuestion(idQuestion,'red');
		}
	}
}

//redefinit l'evenement onclick du lien Fermer des div d'aide sur le groupe AProposVoiture
function initEvenementGroupeAProposVoiture()
{
	var lienFermerAideDateMiseCirculation = document.getElementById('lienFermeraideDateMiseCirculation');
	var lienFermerAidePaysAchatVoiture = document.getElementById('lienFermeraidePaysAchatVoiture');
	var lienFermerAideStationnementTravail = document.getElementById('lienFermeraideStationnementTravail');
	var lienFermerAideModeFinancementVoiture = document.getElementById('lienFermeraideModeFinancementVoiture');
	var lienFermerAideDateCarteGrise = document.getElementById('lienFermeraideDateCarteGrise');
	
	if( lienFermerAideDateMiseCirculation )
	{
		lienFermerAideDateMiseCirculation.onclick = function(){ cacheAide('aideDateMiseCirculation'); initCPVille('StationnementDomicile'); initCPVille('StationnementTravail') };
	}
	if( lienFermerAidePaysAchatVoiture )
	{
		lienFermerAidePaysAchatVoiture.onclick = function(){ cacheAide('aidePaysAchatVoiture'); initCPVille('StationnementDomicile'); initCPVille('StationnementTravail') };
	}
	if( lienFermerAideStationnementTravail )
	{
		lienFermerAideStationnementTravail.onclick = function(){ cacheAide('aideStationnementTravail'); initCPVille('StationnementDomicile'); initCPVille('StationnementTravail') };
	}
	if( lienFermerAideModeFinancementVoiture )
	{
		lienFermerAideModeFinancementVoiture.onclick = function(){ cacheAide('aideModeFinancementVoiture'); initCPVille('StationnementDomicile'); initCPVille('StationnementTravail') };
	}
	if( lienFermerAideDateCarteGrise )
	{
		lienFermerAideDateCarteGrise.onclick = function(){ cacheAide('aideDateCarteGrise'); initCPVille('StationnementDomicile'); initCPVille('StationnementTravail') };
	}
}

//affiche la question StationnementTravail ou StationnementTravailFrontalier suivant valeurChoisie
function GererCocheFrancePaysFrontalier(valeurChoisie)
{
	//probleme firefox: saisie avec les fleches clavier -> appel 2 fois, 1 fois avec la bonne valeur et 1 fois avec undefined
	if( valeurChoisie )
	{
		afficheSiCond('StationnementTravail','\'' + valeurChoisie + '\'==\'france\''); 
		afficheSiCond('StationnementTravailFrontalier','\'' + valeurChoisie + '\'==\'frontalier\''); 
		if( valeurChoisie=='france' )
		{
			viderToutesValeurs('StationnementTravailFrontalier');
			if( ancienLieuStationnementTravail != valeurChoisie )
			{
				reinitialiseCPVille('StationnementTravail');
			}
		}
		else
		{
			reinitialiseCPVille('StationnementTravail');
		}
		ancienLieuStationnementTravail = valeurChoisie;
	}
}

//reinitialise le champ CPVille
function reinitialiseCPVille(idQuestion)
{
	var reponse = recupereToutesInputReponses(idQuestion)
	
	if( reponse!=null && reponse.length==2 )
	{
		inputCPVille = reponse[0];
		listeLocalites = reponse[1];
		//on affiche le textebox et on cache la liste des localites
		inputCPVille.style.display='';
		inputCPVille.value = CONST_TEXTE_CPVILLE_DEFAUT;
		listeLocalites.style.display='none';
		//supprime les autres localites pour eviter le conflit d'affichage dans le cas ou ya pls composants CPVille et on clique sur les aides
		for( indexLocalite=2 ; indexLocalite <listeLocalites.length ; indexLocalite++ ){
			listeLocalites.options[indexLocalite] = null;
			indexLocalite--;
		}
		//pre selection du 1er element pour les listes dont attribut size>1
		listeLocalites.selectedIndex = 0;
	}
}

function verifieTelNonVides(telDomicile,telPortable)
{
	if ((recupereReponseAvantSubmit(telDomicile)=='') && (recupereReponseAvantSubmit(telPortable)==''))
	{
		return true;
	}
	else
	{
		return false;
	}
}



//Détermine et affiche l'année de renouvellement de contrat à partir du mois de renouvellement
function calculerAnneeRenouvellementContrat(dateCourante, moisRenouvellement)
{
        var regMois = new RegExp("0[1-9]|1[0-2]");
        var match,len, anneeRenouvellement;
        var moisCourant = recupererMois(dateCourante);
        
        anneeRenouvellement = "";
        
        len = moisRenouvellement.length;
        match = regMois.exec(moisRenouvellement.substr(len-2,2));
        if(match!=null)
        {
            if (match[0] > moisCourant) {
                anneeRenouvellement = recupererAnnee(dateCourante) - 1;
            }
            else{
                anneeRenouvellement = recupererAnnee(dateCourante);
            }
        }        
        return anneeRenouvellement;        
}

function determinerProcessusRAEouREMPJSA(cibleDemande,antecedentsCPCommeCP)
{

    if(cibleDemande=='4')
    {
        return "RAE";
    }
    if(cibleDemande=='2' || antecedentsCPCommeCP=='3')
    {
        return "REMPJSA";
    }
    return "";   
}

function calculerDateDebutGarantiesREMPJSA(cibleDemande,antecedentsCPCommeCP,dateAchat,dateCourante,textDefault)
{
    if(determinerProcessusRAEouREMPJSA(cibleDemande,antecedentsCPCommeCP)!="REMPJSA")
    {
        return textDefault;
    }
    if((!validerDate(dateAchat)) || (!validerDate(dateCourante)))
    {
        return textDefault;    
    }    
    if(comparerDate(dateAchat,dateCourante)=='>')
    {
        return dateAchat;
    }
    return dateCourante;
}

function calculerDateDebutGarantiesRAE(cibleDemande,antecedentsCPCommeCP,jourMoisRenouvellement,dateCourante,textDefault)
{
    if(determinerProcessusRAEouREMPJSA(cibleDemande,antecedentsCPCommeCP)!="RAE")
    {
        return textDefault;
    }
    
    var anneeCourante = parseInt(recupererAnnee(dateCourante));
    var dateRenouvellement = jourMoisRenouvellement + '/' + anneeCourante;

    //si l'annee en cours n'est pas bissextile, on remplace 29/02 par 28/02
    if (!estAnneeBissextile(anneeCourante) && jourMoisRenouvellement == '29/02') {
        dateRenouvellement = '28/02/' + anneeCourante;
    }
    
    if((!validerDate(dateRenouvellement)) || (!validerDate(dateCourante)))
    {
        return textDefault;
    }
    
    var dateDebutGarantiesProposee = textDefault;
    var diffDate = comparerDate(dateCourante, dateRenouvellement);
    var anneeProposee = 0;

    if (diffDate == ">" || diffDate == "==")
    {
        anneeProposee = anneeCourante + 1;
    }

    if (diffDate == "<")
    {
        anneeProposee = anneeCourante;
    }

    if (anneeProposee != 0) {
        //si l'annee proposee n'est pas bissextile, on remplace 29/02 par 28/02
        if (!estAnneeBissextile(anneeProposee) && jourMoisRenouvellement == '29/02')
            dateDebutGarantiesProposee = '28/02/' + anneeProposee;
        else
            dateDebutGarantiesProposee = jourMoisRenouvellement + '/' + anneeProposee;
    }
    
    return dateDebutGarantiesProposee;
}


//Change les intitulés de questions (si on y déclare 2 spans : intituleDefault et intituleAutre)
//TODO : Intégrer le changement d'intitulés à la structure XSL des questions/blocs ?
function ChangerIntitules(condition,idQuestion)
{
    var intituleDefault = document.getElementById('intituleDefault'+idQuestion);
    var intituleAutre = document.getElementById('intituleAutre'+idQuestion);

    try
    {
        if(eval(condition))
        {
            intituleDefault.style.display = 'none';
            intituleAutre.style.display = '';
        }
        else
        {
            intituleDefault.style.display = '';
            intituleAutre.style.display = 'none';
        }
    }
    catch (Exception)
    {}
}

//Verifie le nombre d'accidents responsables declares
//Afficher/Cacher des infos complementaires en fonction du nombre declare
// les informations sur le véhicule sinistré n'est affiché que pour un véhicule de remplacement ou une RAE
function VerifierNombreAccidentsResponsables(nombreDeclare, cibleDemandeTarif) {
    afficheSiCond('DateDeclarationAccidentResponsable1', '( (' + nombreDeclare + ' == 2 ) || (' + nombreDeclare + ' == 1 ))');
    afficheSiCond('NombreVehiculesImpliquesAccidentResponsable1', '( (' + nombreDeclare + ' == 2 ) || (' + nombreDeclare + ' == 1 ))');
    afficheSiCond('PartResponsabiliteAccidentResponsable1', '( (' + nombreDeclare + ' == 2 ) || (' + nombreDeclare + ' == 1 ))');

    if (cibleDemandeTarif == "2" || cibleDemandeTarif == "4") {
        afficheSiCond('VehiculeConcerneAccidentResponsable1', '( (' + nombreDeclare + ' == 2 ) || (' + nombreDeclare + ' == 1 ))');
        afficheSiCond('VehiculeConcerneAccidentResponsable2', ' (' + nombreDeclare + ' == 2 )');
    }
    afficheSiCond('VehiculeConcerneAccidentResponsableRemplace1', '( (' + nombreDeclare + ' == 2 ) || (' + nombreDeclare + ' == 1 ))');
    afficheSiCond('PresenceBlessesAccidentResponsable1', '( (' + nombreDeclare + ' == 2 ) || (' + nombreDeclare + ' == 1 ))');
    afficheSiCond('ConducteurImpliqueAccidentResponsable1', '( (' + nombreDeclare + ' == 2 ) || (' + nombreDeclare + ' == 1 ))');
    afficheSiCond('DateDeclarationAccidentResponsable2', ' (' + nombreDeclare + ' == 2 )');
    afficheSiCond('NombreVehiculesImpliquesAccidentResponsable2', ' (' + nombreDeclare + ' == 2 )');
    afficheSiCond('PartResponsabiliteAccidentResponsable2', ' (' + nombreDeclare + ' == 2 )');
    afficheSiCond('VehiculeConcerneAccidentResponsableRemplace2', ' (' + nombreDeclare + ' == 2 )');
    afficheSiCond('PresenceBlessesAccidentResponsable2', ' (' + nombreDeclare + ' == 2 )');
    afficheSiCond('ConducteurImpliqueAccidentResponsable2', ' (' + nombreDeclare + ' == 2 )');
    if (nombreDeclare < 2) {
        ViderInfoComplementaireAccidentResponsable2();
    }
    if (nombreDeclare < 1) {
        ViderInfoComplementaireAccidentResponsable1();
    }
    if (nombreDeclare >= 3) {
        ViderInfoComplementaireAccidentResponsable1();
        ViderInfoComplementaireAccidentResponsable2();
    }

    var spanNbreAccidents = document.getElementById('spanNombreAccidentsResponsable');
    if (spanNbreAccidents != null) {
        spanNbreAccidents.innerText = (nombreDeclare == 2) ? " 1er" : "";
    }
}

//**** Surcharge des methodes qui vident les champs date du groupe Sinistres afin d'afficher le format da saisie jj/mm/aaaa
//vider les infos complemenatires saisies pour le 1er bloc Accident Responsable
function ViderInfoComplementaireAccidentResponsable1()
{
	inscrireValeur('DateDeclarationAccidentResponsable1', CONST_TEXTE_JJMMAAAA_DEFAUT);
	viderValeur('PartResponsabiliteAccidentResponsable1');
	if (questionExiste('VehiculeConcerneAccidentResponsable1')) viderValeur('VehiculeConcerneAccidentResponsable1');
	if (questionExiste('VehiculeConcerneAccidentResponsableRemplace1')) viderValeur('VehiculeConcerneAccidentResponsableRemplace1');
	viderValeur('PresenceBlessesAccidentResponsable1');
	viderValeur('ConducteurImpliqueAccidentResponsable1');
}

//vider les infos complemenatires saisies pour le 2e bloc Accident Responsable
function ViderInfoComplementaireAccidentResponsable2()
{
	inscrireValeur('DateDeclarationAccidentResponsable2', CONST_TEXTE_JJMMAAAA_DEFAUT);
	viderValeur('PartResponsabiliteAccidentResponsable2');
	if (questionExiste('VehiculeConcerneAccidentResponsable2')) viderValeur('VehiculeConcerneAccidentResponsable2');
	if (questionExiste('VehiculeConcerneAccidentResponsableRemplace2')) viderValeur('VehiculeConcerneAccidentResponsableRemplace2');
	viderValeur('PresenceBlessesAccidentResponsable2');
	viderValeur('ConducteurImpliqueAccidentResponsable2');
}

//vider les infos complemenatires saisies pour le 1er bloc Accident Non Responsable
function ViderInfoComplementaireAccidentNonResponsable1()
{
	inscrireValeur('DateDeclarationAccidentNonResponsable1', CONST_TEXTE_JJMMAAAA_DEFAUT);
	if (questionExiste('VehiculeConcerneAccidentNonResponsable1')) viderValeur('VehiculeConcerneAccidentNonResponsable1');
	if (questionExiste('VehiculeConcerneAccidentNonResponsableRemplace1')) viderValeur('VehiculeConcerneAccidentNonResponsableRemplace1');
	viderValeur('PresenceBlessesAccidentNonResponsable1');
	viderValeur('ConducteurImpliqueAccidentNonResponsable1');
}

//vider les infos complemenatires saisies pour le 2e bloc Accident Non Responsable
function ViderInfoComplementaireAccidentNonResponsable2()
{
	inscrireValeur('DateDeclarationAccidentNonResponsable2', CONST_TEXTE_JJMMAAAA_DEFAUT);
	if (questionExiste('VehiculeConcerneAccidentNonResponsable2')) viderValeur('VehiculeConcerneAccidentNonResponsable2');
	if (questionExiste('VehiculeConcerneAccidentNonResponsableRemplace2')) viderValeur('VehiculeConcerneAccidentNonResponsableRemplace2');
	viderValeur('PresenceBlessesAccidentNonResponsable2');
	viderValeur('ConducteurImpliqueAccidentNonResponsable2');
}

//controle la saisie du champ CPVille et soumet le formulaire eventuellement
function controleCPVille(idQuestion, champCPVille)
{
	valeurSaisie = trim(champCPVille.value);
	if( valeurSaisie != '' )
	{
		if(!isNaN(valeurSaisie) && valeurSaisie.length != 4 && valeurSaisie.length != 5 )
		{
			//alert('Merci de saisir un code postal de 4 ou 5 chiffres ou le nom de la Ville');
			//champCPVille.value=CONST_TEXTE_CPVILLE_DEFAUT;
		}
		else if(valeurSaisie.length>2)
		{
			RechercherLocalites(idQuestion);
		}
	}
	else
	{
		champCPVille.value=CONST_TEXTE_CPVILLE_DEFAUT;
	}
}

//transforme le crm recu par le metier pour prendre 2 decimales
function transformeCRM(inCRM)
{
	inCRM = inCRM.replace(",",".");
	if( inCRM=="" || isNaN(inCRM ) )
	{
		return "1.00";
	}
	
	//on ne prend que 2 chiffres significatifs
	var crmTemp = "" + Math.round(100*inCRM)/100;
	
	if (crmTemp.indexOf(".")==-1){crmTemp+="."}
	
	crmTemp += "00";
	var positionPoint = crmTemp.indexOf(".");
	return crmTemp.substring(0,positionPoint) + "." + crmTemp.substr(positionPoint+1,2);
}

//selectionne le CRM envoye par le metier
function selectionneCRM(inCRM, inNbAnnees50, idQuestion)
{
	crmRendu = transformeCRM(inCRM);
	if( crmRendu=="0.50" )
	{
		crmRendu += inNbAnnees50;
	}
	inscrireValeur(idQuestion, crmRendu);
}

function calculePourcentageBonus(inCRM)
{
	inCRM = inCRM.replace(",",".");
	if( inCRM=="" || isNaN(inCRM ) )
	{
		return "";
	}

	var pourcentageBonus = Math.abs(100 * (1 - inCRM));
	return Math.round(pourcentageBonus);
}

function executerScenario(scenario)
{
    switch(scenario)
    {
        case "Scenario_GroupePourCommencer_1":
        {
            return Scenario_GroupePourCommencer_1();
        }
        case "Scenario_GroupePourCommencer_2":
        {
            return Scenario_GroupePourCommencer_2();
        }
        case "Scenario_GroupeVoitureAAssurer_1":
        {
            return Scenario_GroupeVoitureAAssurer_1();
        }
        case "Scenario_GroupeVoitureAAssurer_2":
        {
            return Scenario_GroupeVoitureAAssurer_2();
        }
        case "Scenario_GroupeVoitureAAssurer_3":
        {
            return Scenario_GroupeVoitureAAssurer_3();
        }
        case "Scenario_GroupeVoitureAAssurer_4":
        {
            return Scenario_GroupeVoitureAAssurer_4();
        }
        case "Scenario_GroupeCaracteristiquesVoiture_1":
        {
            return Scenario_GroupeCaracteristiquesVoiture_1();
        }
        case "Scenario_GroupeCPAntecedents_1":
        {
            return Scenario_GroupeCPAntecedents_1();
        }
        case "Scenario_GroupeCPAntecedents_2":
        {
            return Scenario_GroupeCPAntecedents_2();
        }
        case "Scenario_GroupeCPAntecedents_3":
        {
            return Scenario_GroupeCPAntecedents_3();
        }
        case "Scenario_GroupeRecapitulatif_1":
        {
            return Scenario_GroupeRecapitulatif_1();
        }
		case "Scenario_UsageVoiture":
		{
			return Scenario_UsageVoiture(recupereReponseAvantSubmit('UsageVoitureAAssurer'));
		}
        default:
        {
            return false;
        }
    } 
}

//si le parcours court est actif, on envoie vers le groupe PourCommencer
function modifierQuestionnaire(bParcoursCourtActif)
{
	if( bParcoursCourtActif=='true' )
	{
		mettreFocusGroupe('GroupePourCommencer');
	}
	else
	{
		retour();
	}
}

//affiche la div AlerteIncoherenceCRM en cas d'incoherence CRM
function verifierPresenceIncoherenceCRM(crmSaisi, nbAnneesCRM05Saisi, crmApplique, nbAnneesCRM05Applique, datePermis, moisDerniereEcheance, dateAuj) {
    var bPresenceIncoherenceCRM = crmSaisi != '' && crmApplique != '' && !isNaN(crmSaisi) && !isNaN(crmApplique) &&
                                ((crmSaisi < crmApplique) || (parseFloat(crmSaisi) == 0.5 && parseInt(nbAnneesCRM05Saisi) > nbAnneesCRM05Applique))
    if (bPresenceIncoherenceCRM) {
        completerAlerteCRMIncoherent(crmSaisi, nbAnneesCRM05Saisi, crmApplique, nbAnneesCRM05Applique, datePermis, moisDerniereEcheance, dateAuj);
        montreDiv('divAlerteIncoherenceCRM');
    }
    else {
        cacheDiv('divAlerteIncoherenceCRM');
    }
}

//valide le groupe VoitureAAssurer et affiche eventuellement les div d'alerte SansAssuranceApresAchat
function validerGroupeVoitureAAssurer(event, antecedentsCPCommeCP, dateCourante) {
    var cibleDemande = recupereReponseAvantSubmit('CibleDemande');

    var dateAchat = recupereReponseAvantSubmit('DateAchatVoitureAAssurer');
    var dateEffet = recupereReponseAvantSubmit('DateDebutGarantiesProposee');
    var diffDate;

    //si c'est 1 jeune conducteur, date effet-date achat doit etre <= 180j si date achat est dans le passé et 90j si date achat est dans le futur
    //si veh de remplacement, date effet-date achat doit etre <= 90j
    if (antecedentsCPCommeCP == '3' || cibleDemande == '2') {
        if (antecedentsCPCommeCP == '3' && comparerDate(dateAchat, dateCourante) == '<') {
            diffDate = comparerDate(calculerDate(dateAchat, 180), dateEffet);
        }
        else {
            diffDate = comparerDate(calculerDate(dateAchat, 90), dateEffet);
        }

        if (diffDate == '<') {
            ajouteTexte(dateAchat, 'spanSansAssuranceApresAchatDateAchat', false);
            ajouteTexte(dateEffet, 'spanSansAssuranceApresAchatDateEffet', false);
            montreAide('SansAssuranceApresAchat');
            return false;
        }
    }
    
    valider(event);
}

//verifie la presence des parametres cryptes dans la querystring pour valider automatiuement ou non le groupe RevoirSimulation
function verifierParamsSimulation() {
    //s'il y ades params cryptes et s'il n'y a aucune erreur de saisie, on valide le groupe
    if (location.href.indexOf('?c=') != -1 && document.getElementById('ErreurSaisie')==null) {
        valider(null);
    }
    else {
        initVisible();
    }
}

//verifie si l'internaute a deja visualise le tarif
function verifierTarifVu(inTarifVu) {
    //si le tarif est deja visualise, afficher le pdf et afficher le bouton reprendre saisie
    if (inTarifVu == 'true') {
        affecteDisplay('tdImgReprendreSaisie', 'none');
        popupPdfSimulation();
    }
    //si le tarif n'est pas encore visualise, afficher le bouton reprendre saisie
    else  
    {
        // On appelle l'appli WEB qui envoie l'email de simulation via un pixel transparent -> permet d'éviter la pop-up
        var pixelSimulationDA = window.document.getElementById('pixelSim');
        var cleRemote = document.forms["form1"].elements.idSession.value;
        pixelSimulationDA.src = "/DA.WEB.PS.GenerationPdf.Auto.Web/DAWEBAUTO/pdfSimulationDA.aspx?cleRemote=" + cleRemote;
    
        affecteDisplay('tdImgRevenirTarif', 'none');
        affecteDisplay('imgAideEnregistrerSimulation', 'none');
        affecteDisplay('spPopupPdfSimulation', 'none');
    }
}

function onKeydown_Handler(event)
{
	var touche=event.keyCode;
	
	switch(touche)
	{
		case 8:   // Backspace
		case 116: // F5
		{ 
		    document.forms["form1"].elements.abandonQuestionnaire.value = 'false';
			break;	
		}
	}
}

//On affiche la div d'aide en fonction de la position de la souris.
function deplacerDivAide(idAide, evenement) {
    var divAide = document.getElementById(idAide);
    if (divAide != null) {
        var event = evenement || window.event;

        // Si on est pas sous IE
        if (window.event) {
            if (document.documentElement.clientWidth > 0)
                divAide.style.top = event.clientY + document.documentElement.scrollTop - 80 + "px";
            else 
                divAide.style.top = event.clientY + document.body.scrollTop - 80 + "px";
        }
        else {
            divAide.style.top = event.pageY - 80 + "px";
        }
    }
}

//affiche le montant du 1er versement
function afficherMontant1erVersement(idElement, comptant30j, comptant) {
    var montantAffiche = (comptant30j != 0 ? comptant30j : comptant);
    ajouteTexte(montantAffiche, idElement, false); 
}

//Méthode d'affichage conditionnel de contenu texte, si condition alors on écrit texte
function textehtmlConditionnel(condition, texte, code, noeudParent) {
    try {
        if (eval(condition)) {
            var noeudXmlParent = document.getElementById(noeudParent);
            if (noeudXmlParent) {
                var l = document.createTextNode(texte);
                if (code != '') {
                    var m = document.createElement(code);
                    m.appendChild(l);
                    noeudXmlParent.appendChild(m);
                }
                else {
                    noeudXmlParent.appendChild(l);
                }
            }
        }
    }
    catch (ex) {
    }
}

function afficherMontantCB(montantCB)
{
	var montantCBEuros = parseInt(montantCB) / 100;
	var sMontantCB = new String(montantCBEuros);
	document.write(sMontantCB.replace(".",","));
	
}