/*****************************************************/
/**** 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
{
 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(){
    attente();
    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){
    attente();
    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);
}
}

//Methodes dédiées à la gestion de l'abandon premier contact, une varible (input hidden) retient si il faut considérer qu'un unload du questionnaire sera un abandon.
function initAbandonQuestionnaire(){
 document.forms["form1"].elements.abandonQuestionnaire.value = 'true';
}

//Envoie la commande Fin Ã  l'automate et abandonne la propo courante.
function abandonner(){
try {
    form1.elements.abandonQuestionnaire.value ='false';
    goHTTP();
    form1.elements.commande.value='fin';
    abandon();
    self.focus();
    form1.submit();
}
catch (Exception) {}
}

//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');}
}

// 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);
	}
}



//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);
}

// 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;
}

function popupPdfSimulation()
{
	var cleRemote = document.forms["form1"].elements.idSession.value;
	var fen = OpenWindowReturn('pagePdfSimulation.aspx?cleRemote='+cleRemote,'info','scrollbars=yes, menubar=yes','880','850','');
}

// 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 )
	{
		if (val == "unique")
		{
			document.getElementsByName('reponseStationnementTravailFranceOuPaysFrontaliers')[0].checked=true;
		}
		else 
		{
			document.getElementsByName('reponseStationnementTravailFranceOuPaysFrontaliers')[1].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");
    
    var champ = document.createElement ("input");
    champ.name = "reponseChoixModeleVoiture";
    champ.type = "radio";
    champ.setAttribute ("value", valeur);
    td.appendChild (champ);
    return td;
}