// JavaScript Document

/* gestion QCM DDV */
function sousQuestion(){
	if(document.getElementById('sousQuestion4').style.display == 'none'){
	document.getElementById('sousQuestion4').style.display = 'block';
	document.getElementById('sousQuestion5').style.display = 'block';
	document.getElementById('sousQuestion6').style.display = 'block';
	
	} else if(document.getElementById('sousQuestion4').style.display == 'block'){
  	 document.getElementById('sousQuestion4').style.display = 'none';
	   document.getElementById('sousQuestion5').style.display = 'none';
	   document.getElementById('sousQuestion6').style.display = 'none';
	   document.getElementById('extensionCircuit').checked = false;
	   document.getElementById('modAutonomeCircuit').checked = false;
	   document.getElementById('modEncadreCircuit').checked = false;
	
	}
}

/* Mega drop down menu avec delay settimeout en mouseover et mouseout javascript david faggianelli pour Comptoir des voyages */
var tabTags = new Array('_1','_2','_3');
var timeOutId;
	
function entree(cetElement){
	clearTimeout(timeOutId);
	timeOutId = window.setTimeout(function(){permuteur(cetElement, 'on')}, 10 );
	}

function sortie(cetElement){
	clearTimeout(timeOutId);
	timeOutId = window.setTimeout(function(){permuteur(cetElement, 'off')}, 200 );
	}

function permuteur(cetElement, etat){
	if(etat=='on'){
		for(i=0; i<=tabTags.length; i++){
			if(tabTags[i]!=cetElement){
					if(document.getElementById('panel'+tabTags[i])!= null){document.getElementById('panel'+tabTags[i]).style.display = 'none';}
			} else {
					if(document.getElementById('panel'+tabTags[i])!= null){document.getElementById('panel'+tabTags[i]).style.display = 'block';}
					document.getElementById('_1').style.zIndex = '400';
					document.getElementById('_2').style.zIndex = '400';
					document.getElementById('_3').style.zIndex = '400';
					//if(document.getElementById('borderSlider2')!= null){document.getElementById('borderSlider2').style.zIndex = '9999';}
			}
		}
	} else if(etat=='off'){
		for(i=0; i<=tabTags.length-1; i++){
			if(document.getElementById('panel'+tabTags[i])!= null){document.getElementById('panel'+tabTags[i]).style.display = 'none';}
			}
	}
}


/* gestionnaire moteur */
function aggrandirMoteur(indice) {
	if(indice == 'oui' ) {
		/*document.getElementById('global_moteur').style.height = '355px';
		document.getElementById('onglet1').style.height = '225px';
		document.getElementById('ligne_onglet5').style.display = 'block';
		document.getElementById('ligne_onglet6').style.display = 'block';*/
		$("#global_moteur").animate({ height: "355px"}, 1000 );			
		$("#onglet1").animate({ height: "225px"}, 1000 );			
		$("#ligne_onglet5").delay(700).fadeIn(500);
		$("#ligne_onglet6").delay(700).fadeIn(500);	
		$("#moinsCriteres").delay(700).fadeIn(500);	
		document.getElementById('plusCriteres').style.display = 'none';
		}
	if(indice == 'non' ) {
		/*document.getElementById('global_moteur').style.height = '305px';
		document.getElementById('onglet1').style.height = '175px';
		document.getElementById('ligne_onglet5').style.display = 'none';
		document.getElementById('ligne_onglet6').style.display = 'none';*/
		$("#global_moteur").animate({ height: "305px"}, 1000 );			
		$("#onglet1").animate({ height: "175px"}, 1000 );			
		$("#ligne_onglet5").fadeOut(200);
		$("#ligne_onglet6").fadeOut(200);	
		$("#plusCriteres").fadeIn(200);	
		
		document.getElementById('moinsCriteres').style.display = 'none';
		/*document.getElementById('plusCriteres').style.display = 'block';*/
		}
}

/* Gestionnaire d'onglet generique */
// gestion des gonlets de la page nous-contacter
function Onglet(eltId, puce, classePremierElement) {
	arrLinkId = new Array('_sommaire0','_sommaire1','_sommaire2', '_sommaire3', '_sommaire4', '_sommaire5',  '_sommaire6', '_sommaire7', '_sommaire8', '_sommaire9');
	intNbLinkElt = new Number(arrLinkId.length);
	arrClassLink = new Array('sommaireActif','');
	strContent = new String()
	for (i=0; i<intNbLinkElt; i++) {
		strContent = "block"+arrLinkId[i];
		strPuce = "puce"+arrLinkId[i];
		if ( arrLinkId[i] == eltId ) { // actif
			document.getElementById(arrLinkId[i]).className = arrClassLink[0];
			//document.getElementById(strContent).style.display = 'block';
			Effect.Appear(strContent);
if(puce=="avecPuce"){document.getElementById(strPuce).src = 'img/bouton_extand_page.gif';}
			if(classePremierElement!=''){ // si pas vide contient la classe speciale
				if(arrLinkId[i] == '_sommaire0'){document.getElementById(arrLinkId[i]).className = 'sommaireActif '+classePremierElement;}
				}
		} else { // inactif
			document.getElementById(arrLinkId[i]).className = arrClassLink[1];
			document.getElementById(strContent).style.display = 'none';
			if(puce=="avecPuce"){document.getElementById(strPuce).src = 'img/bouton_pro_page.gif';}
			if(classePremierElement!=''){ // si pas vide contient la classe speciale
				if(arrLinkId[i] == '_sommaire0'){document.getElementById(arrLinkId[i]).className = 'sommaireFirstElement';}
				}
		}
	}
}
//Vérifie si le champ est un entier : 
//Le champ ne peut contenir que des caractères allant de 0 à 9
//Paramètre "champ" >>> chemin du champ contenant la valeur à tester (Exemple d'appel: estUnEntier(document.form.valeur))
function getRadioVal(rb)
{var L=rb.length;var ret="";
for (var i = 0 ; i< L ; i++)
{if(rb[i].checked) {ret=rb[i].value;break;}}
return(ret);
}

function UpdateChecked(sIdFrom,sIdTo, sValue){
	if(document.getElementById(sIdFrom) && document.getElementById(sIdTo)){
	  if(document.getElementById(sIdFrom).checked == true){
			  document.getElementById(sIdTo).value=sValue;
			}
	}
}

function estUnEntier(champ)
{
	var verif=/^[0-9]+$/
	if (!verif.test(champ.value)) {
		return false;
    }
    return true;
}
// Fonction verifiant si le champ est un reel
// La fonction accepte la virgule et le point comme séparateur pour les décimales.
// Paramètre "champ" >>> chemin du champ contenant la valeur à tester (Exemple d'appel: estUnReel(document.form.valeur))
function estUnReel(champ)
{
	var verif=/^[0-9]+([,.][0-9])?[0-9]*$/
	if (!verif.test(champ.value)) {
		return false;
    }
    return true;
}
//Vérifie la validité d'une adresse mail par expression régulière : 
//N'importe quel caractère et/ou chiffre + "@" + au moins 2 caractères et/ou chiffres + "." + 2 ou 4 caractères
//Paramètre "champ" >>> chemin du champ contenant l'email (Exemple d'appel: estUnMail(document.form.email))
function estUnEmail(champ)
	{
    var strValeur;
    strValeur = champ.value;	
    var verif     = /^[a-zA-Z0-9_.-]+@[a-zA-Z0-9_.-]{2,}[.][a-zA-Z]{2,4}$/
		if (verif.exec(strValeur) == null)
		{
		return false;
		}    
return true;
}
// Fonction vérifiant la validité d'une date 
// ainsi que si elle est postérieure à la date du jour pour un départ
// ou inférieure à la date du jour pour une date de naissance
// Les paramètres "DateDepart" et DateNaissance sont booléens et doivent prendre
// les valeurs 0 ou 1. Les 2 paramètres sont mutuellement exclusifs
// La fontion accepte tous les séparateurs possibles pour le jour le mois et l'année
// et renvoie la date au format JJ/MM/AAAA
function VerifDate(champ,DateDepart,DateNaissance) { 
	var Separateur = new RegExp("[^0-9]","g"); /*Filtre pour tous les caractères non numériques*/
	var StructureDate = new RegExp("^(0[1-9]|[1-2][0-9]|[3][0-1])(0[1-9]|[1][0-2])(19|20)?[0-9][0-9]$");/*Filtre pour la structure des dates à 6 ou 8 caractères*/
	var erreur=0;
	var Aujourdhui = new Date();/*Stocke la date du jour au format date javascript*/
	var DateTestee = champ.value.replace(Separateur,"");/*Supprime tous les caractères non numériques dans la date saisie*/
	if (!StructureDate.test(DateTestee)) {erreur=1} /*Vérifie si la date expurgée des caractères non numériques respecte une structure de date à 6 ou 8 caractères*/
	else {
		if (DateTestee.length==6) { /*Si la date saisie contient une année à deux chiffres seulement*/
			if (parseInt(DateTestee.substring(4,6))<50) {DateTestee=DateTestee.substring(0,4)+"20"+DateTestee.substring(4,6)} /*si l'année à deux chiffres est inférieure à 50, on considère que c'est le 21ème siècle*/
			else {DateTestee=DateTestee.substring(0,4)+"19"+DateTestee.substring(4,6)}} /*si l'année à deux chiffres est supérieure ou égal à 50, on considère que c'est le 20ème siècle*/
		var DateJs = new Date(DateTestee.substring(4,8), DateTestee.substring(2,4) - 1, DateTestee.substring(0,2)); /*Transforme la date saisie en date javascript*/
		if(DateJs.getDate()!=DateTestee.substring(0,2)||(DateJs.getMonth()+1)!=DateTestee.substring(2,4)||DateJs.getFullYear()!=DateTestee.substring(4,8)){erreur=2} /*Teste si la date javascript est la même que la date saisie*/
	}
	if (erreur==1) {alert("Veuillez saisir une date au format jjmmaaaa!");return false;}
	if (erreur==2) {alert("La date saisie n'existe pas !");return false;}
	if (DateJs<Aujourdhui && DateDepart==1) {alert("La date de départ doit être postérieure à la date d'aujourd'hui !");return false;}
	if (DateJs>Aujourdhui && DateNaissance==1) {alert("Une date de naissance ne peut pas être postérieure à la date d'aujourd'hui !");return false;}
	champ.value=DateTestee.substring(0,2) + "/" + DateTestee.substring(2,4) + "/" + DateTestee.substring(4,8)
	return true;
}

function valideEmail(email)
{
// a very simple email validation checking.
// you can add more complex email checking if it helps
    var splitted = email.match("^(.+)@(.+)$");
    if(splitted == null) return false;
    if(splitted[1] != null )
    {
      var regexp_user=/^\"?[\w-_\.]*\"?$/;
      if(splitted[1].match(regexp_user) == null) return false;
    }
    if(splitted[2] != null)
    {
      var regexp_domain=/^[\w-\.]*\.[A-Za-z]{2,4}$/;
      if(splitted[2].match(regexp_domain) == null)
      {
	    var regexp_ip =/^\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\]$/;
	    if(splitted[2].match(regexp_ip) == null) return false;
      }// if
      return true;
    }
return false;
}

// Verifie si le champ saisi est une date valide
//
function estUneDate(value)
{
	var bErr;
	var strValeur;
	var strJour, strMois, strAnnee;
    var intJour, intMois, intAnnee;
	var strSeparateur1, strSeparateur2;

	bErr = 0;
	strValeur = value;
    
    // Verification de la longueur
	if (strValeur.length != 10)
	    bErr = 1;

    // Separation des chaines j/m/a
	strJour = strValeur.substring(0, 2);        // jour
	strSeparateur1 = strValeur.substring(2, 3); // '/'
	strMois = strValeur.substring(3, 5);        // mois
	strSeparateur2 = strValeur.substring(5, 6); // '/'
	strAnnee = strValeur.substring(6);          // année

    // Conversion des chaines en entier
    intJour = parseInt(strJour, 10);
    if (isNaN(intJour))
        bErr = 1;
    intMois = parseInt(strMois, 10);
    if (isNaN(intMois))
        bErr = 1;
    intAnnee = parseInt(strAnnee, 10);
    if (isNaN(intAnnee))
        bErr = 1;
	if (intAnnee < 1900 || intAnnee > 2099)
        bErr = 1;

	// Erreurs de base
	//

        if (intJour < 1 || intJour > 31)
            bErr = 1;
        if (strSeparateur1 != '/')
            bErr = 1;
        if (intMois < 1 || intMois > 12)
            bErr = 1;
        if (strSeparateur2 != '/')
            bErr = 1;


	// Erreurs avancées

	// Mois comportant 30 jours
	if (intMois == 4 || intMois == 6 || intMois == 9 || intMois == 11)
	{
		if (intJour == 31)
		    bErr = 1;
	}

	// Février, année bisextile
	if (intMois == 2)
	{
        if (intJour > 29)
		    bErr = 1;
        if ((intJour == 29) && (!AnneeBisextile(intAnnee)))
            bErr = 1;
	}

    if (bErr == 1)
    {
        return false;
    }

    return true;
}



//##########  FONCTIONS DE VALIDATION DES FORMULAIRE ################
function InitLabelClass(){
	if(document.getElementsByTagName){
  	cLabel=document.getElementsByTagName('label');
  	for(i=0;i<cLabel.length;i++){
			cLabel[i].className="inherit";													 
  	}
  }
}

function GetLabelFor(sInputId){
		if(document.getElementsByTagName){
			cLabel=document.getElementsByTagName('label');
			
			for(iLabel=0;iLabel<cLabel.length;iLabel++){
				if(cLabel[iLabel].htmlFor==sInputId){return cLabel[iLabel];}
			}
			return null;
		}
}

function BuildErrorMessage(oInput, sMessage, sControl){
		var m_sError='';
		var bMessageDone=false;

		if (!oInput) return '';
		
		if(!oInput.type){
			//Il s'agit d'un tableau d'inputs
  		for(i=0; i<oInput.length;i++){
  			if(!ControlValueOk(oInput[i].value, sControl)){
  				if (!bMessageDone){
  					 m_sError=sMessage;
  					 bMessageDone=true;
  				}// end - if (!bMessageDone)
  				cLabels[cLabels.length]=GetLabelFor(oInput[i].id);
  			}// end - if(oInput[i].value=="")
  		}// end - for(i=0; i<oInput.length;i++)
			
		}else{
			//il s'agit d'un input isolé
			if(!ControlValueOk(oInput.value, sControl)){
    		m_sError=sMessage;
    		cLabels[cLabels.length]=GetLabelFor(oInput.id);
    	}
		}// end - if(oInput.length)
		
		
		return m_sError;
}

function ControlValueOk(sValue, sControl){
  
	switch (sControl){
		case 'isInt':
    		 var re = /^[0-9]+$/
				 return sValue.match(re) && parseInt(sValue)>0;
				 //return parseInt(sValue);
				 break;
		case 'telFR':
				 var re = /^(0[12345689])[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}$/	// Accepte un numero de téléphone de type 'national' y compris numéros en '08'.
				 return sValue.match(re);
				 break;
		case 'tel':
				 var re = /^[0-9\(\)\+\.\/\-\s]+$/	// Accepte un numero de téléphone de type 'international'. Ex : (+33) 1 34 12 52 30
				 return sValue.match(re);
				 break;
		case 'cpFR':
				 var re = /^([A-Z]+[A-Z]?\-)?[0-9]{1,2} ?[0-9]{3}$/	// Accepte une chaine de type 'code postal'. Ex : F-33370 ou 33 370 ou 33370 ou F-1 370				 
				 return sValue.match(re);
				 break;
		case 'cp':
				 var re = /^([a-zA-Z0-9-\/ ().]{4,8})$/	// Accepte une chaine de type 'code postal' autre que la France. Ex : NH- 5JT				 
				 return sValue.match(re);
				 break;
		case 'email':
				 return valideEmail(sValue)
				 break;
		case 'jjmmaaaa':
				 return !(sValue=='jj/mm/aaaa')
		case 'date':
				 return  estUneDate(sValue)
		default :
				 return sValue!="";
				 break;
	}// end - switch
	
}

var _checkCharErrorRaised=false;
function checkCharacters(oTextArea){
	if(String(oTextArea.value).substr(String(oTextArea.value).length-1)=='>' || String(oTextArea.value).substr(String(oTextArea.value).length-1)=='<' ){
		if(!_checkCharErrorRaised){
			_checkCharErrorRaised=true;
			alert('Les caractères < et > ne sont pas autorisés, ils seront automatiquement supprimés.');
		}
		oTextArea.value=String(oTextArea.value).substring(0,String(oTextArea.value).length-1);
	}
}


