function getElementsByClassName(cl) { var retnode = []; var myclass = new RegExp('\\b'+cl+'\\b'); var elem = document.getElementsByTagName('*'); for (var i = 0; i < elem.length; i++) { var classes = elem[i].className; if (myclass.test(classes)) retnode.push(elem[i]); } return retnode; }; function verifierSaisieObligatoire(etape) { this.champs_cooQui_obligatoire=1; this.champs_cooNom_obligatoire=1; this.champs_cooPrenom_obligatoire=1; this.champs_cooTel_obligatoire=1; this.champs_cooAutretel_obligatoire=0; this.champs_ppalDept_obligatoire=1; this.champs_ppalComm_obligatoire=0; this.champs_ppalCP_obligatoire=1; this.champs_cooAdr_obligatoire=1; this.champs_cooEmail_obligatoire=1; this.champs_typePb_obligatoire=1; this.champs_ppalVilleP_obligatoire=0; this.champs_ppalHab_obligatoire=1; this.champs_ppalVois_obligatoire=0; this.champs_ppalDatePb_obligatoire=1; this.champs_ppalFreqHeurePb_obligatoire=0; this.champs_ppalFreq_obligatoire=1; this.champs_ppalFreqHeureFixe_obligatoire=0; this.champs_ppalMeteo_obligatoire=0; this.champs_ppalContTDF_obligatoire=1; this.champs_ppalDateContTDF_obligatoire=0; this.champs_teleAnt_obligatoire=1; this.champs_teleAntAmp_obligatoire=0; this.champs_telePbRecep_obligatoire=0; this.champs_teleEmett_obligatoire=0; this.champs_teleCanal_obligatoire=0; this.groupe_champs_telePbDesc_obligatoire_myValue=0; this.champs_telePbDescAutre_obligatoire=0; this.champs_radioProg_obligatoire=1; this.champs_radioFreq_obligatoire=0; this.champs_radioEmett_obligatoire=0; this.groupe_champs_fieldRadioNatPb_obligatoire_myValue=1; this.groupe_champs_fieldRadioTypeOnde_obligatoire_myValue=1; this.champs_radioCondRecep_obligatoire=1; for (var l = 0; l < document['formContact'].elements.length; l++) { if(document['formContact'].elements[l].name!=undefined) { var ElementNom=document['formContact'].elements[l].name.replace('\[\]', ''); if(this["champs_"+ElementNom+"_obligatoire"] && this["champs_"+ElementNom+"_obligatoire"]==1) { var isFilled=0; switch(document['formContact'].elements[l].type) { case "radio": case "checkbox": if(document['formContact'][document['formContact'].elements[l].name].length) { for(t=0; t 21 on ôte 1 pour recaler l'id du département sur son code (début de CP) if (dpt2 > 21) { dpt2 = dpt2 - 1; } if (dpt2==cp2) { return true; } else { alert(message); ctrldpt.focus(); return false; } } catch(err) { return true; } } verifierAdresseEmail = function(ctrlId, msg) { try { var ctrl = window.document.getElementById(ctrlId); var adr = ctrl.value; var tailleAdr = adr.length; var invalidCars = "\/\'\\ ;:?!()[]\{\}^|" + '"'; var nbInvalidCars = invalidCars.length; var valide = true; //----- on vérifie que l'adresse ne contient pas de caractère invalide ou non-ASCII 127 for (var i = 0; i < nbInvalidCars; i++) { if (adr.indexOf(invalidCars.charAt(i), 0) > -1) { valide = false; break; } } if (valide) { for (i = 0; i < tailleAdr; i++) { if (adr.charCodeAt(i) > 127) { valide = false; break; } } } /* On vérifie que l'arobase existe et qu'elle ne débute pas l'adresse, qu'elle est unique, qu'il y a au moins un point après elle mais ni immédiatement ni juste avant elle, et que deux points sont toujours séparés par au moins un caractère. */ if (valide) { var posArobas = adr.indexOf('@', 0); if ((posArobas < 1) || (adr.indexOf('@', posArobas + 1) > - 1) || (adr.indexOf('.', posArobas) == -1) || (adr.indexOf('@.', 0) != -1) || (adr.indexOf('.@', 0) != -1) || (adr.indexOf('..', 0) != -1)) { valide = false; } } //----- enfin on vérifie que le suffixe (type de domaine) est valide ie. + de 2) if (valide) { if (adr.substring(adr.lastIndexOf('.') + 1).length < 2) { valide = false; } } //----- on retourne la valeur du contrôle en affichant un éventuel message if (!valide) { alert(msg); ctrl.focus(); return false; } else { return true; } } catch(err) { return true; } } verifierDate = function(ctrlId) { try { var ctrl = window.document.getElementById(ctrlId); var dte = ctrl.value; //----- on vérifie que la date contient bien 10 caractères à moins qu'elle soit vide et facultative var valide = true; if (dte.length != 10) { valide = false; } //----- on vérifie que l'adresse ne contient que des chiffres ou le / var validCars = '0123456789/'; if (valide) { for (var i = 0; i < 10; i++) { if (validCars.indexOf(dte.charAt(i), 0) == -1) { valide = false; break; } } } //----- on vérifie le format global (00/00/0000) if (valide) { dteJJ = dte.substr(0, 2); sep0 = dte.substr(2, 1); dteMM = dte.substr(3, 2); sep1 = dte.substr(5, 1); dteAAAA = dte.substr(6); if (isNaN(dteJJ) || isNaN(dteMM) || isNaN(dteAAAA) || (sep0 != '/') || (sep1 != '/')) { valide = false; } } //----- on vérifie aussi que le jour, le mois et l'année sont dans des intervalles acceptables if (valide) { dteJJ = parseFloat(dteJJ); dteMM = parseFloat(dteMM); dteAAAA = parseFloat(dteAAAA); if ((dteJJ < 1) || (dteJJ > 31) || (dteMM < 1) || (dteMM > 12) || (dteAAAA < 2000) || (dteAAAA > 2100)) { valide = false; } } //----- on retourne la valeur du contrôle en affichant un éventuel message if (!valide) { alert('Le format de date saisi est incorrect'); ctrl.focus(); return false; } else { return true; } } catch(err) { return true; } } verifierContactTDF = function(ctrlContTDF, ctrlDateContTDF, msg) { /* Cette méthode vérifie si la personne a contacté TDF et si elle a bien indiqué la date */ try { var tTDF = window.document.getElementById(ctrlContTDF).checked; var tDateTDF = window.document.getElementById(ctrlDateContTDF); var vDateTDF = tDateTDF.value; // on verifie si la personne a indiqué la date de contact si elle a coché oui if ((tTDF == true) && (vDateTDF == '')){ alert(msg); tDateTDF.focus(); return false; } else { return true; } } catch(err) { return true; } //----- et on indique que la saisie est invalide return false; } verifierFormatHeure=function(labelId,msg) { try { var ctrl = window.document.getElementById(labelId); var heurefixe = ctrl.value; var valide = true; var car; //----- on vérifie que le format du champ var reg=new RegExp("[:]+", "g"); var tableau=heurefixe.split(reg); if(tableau.length != 2) { valide = false; } else { lesheures = tableau[0]; lesminutes = tableau[1]; if (lesheures >= 0 && lesheures <= 24) { valide = true; } else { valide = false; } if (lesminutes >= 0 && lesminutes < 60 && valide) { valide = true; } else { valide = false; } } if (valide) { } else { alert(msg); ctrl.focus(); } return valide; } catch(err) { return true; } } verifierHeureFixe = function(radioId,labelId,msg) { try { var tRadio = window.document.getElementsByName(radioId); var iMax = tRadio.length; var i; for (i = 0; i < iMax; i++) { if (tRadio[i].checked && i==2) { // si heure fixe est coché dans choix Fréquence du problème // on verifie que le champs heure fixe est bien renseignée ( HH:MM ) var tHeureFixe=window.document.getElementById(labelId).value; if(tHeureFixe=='') { alert(msg); return false; } } } return true; } catch(err) { //alert(err); return true; } } verifierSaisieRadio = function(ctrlNom, msg) { /* Cette méthode vérifie qu'au moins un bouton radio d'un groupe donné est sélectionné */ try { //----- on récupère la liste des boutons radio du groupe var tRadio = window.document.getElementsByName(ctrlNom); var iMax = tRadio.length; var i; for (i = 0; i < iMax; i++) { //----- si on rencontre un bouton radio coché, alors la saisie est valide if (tRadio[i].checked) { return true; } } //----- tous les boutons radios sont décochés : on affiche le message alert(msg); //----- on passe le focus au premier bouton radio du groupe if (iMax > 0) { tRadio[0].focus(); } } catch(err) { return true; } //----- et on indique que la saisie est invalide return false; } verifierNumerique = function(ctrlId, msg) { /* Cette méthode vérifie si un champ texte facultatif contient ou pas une valeur numérique */ try { var ctrl = window.document.getElementById(ctrlId); //----- si le champ est vide on valide le contrôle var val = ctrl.value; if (ctrl.value.length < 1) { return true; } var validCars = '0123456789.,'; var nbCars = ctrl.value.length; var valide = true; var car; var nbSep = 0; //----- on vérifie que l'adresse ne contient que des chiffres et au plus un séparateur numérique if (valide) { for (var i = 0; i < nbCars; i++) { car = ctrl.value.charAt(i); if (validCars.indexOf(car, 0) == -1) { valide = false; break; } if ((car == '.') || (car == ',')) { nbSep++; } if (nbSep > 1) { valide = false; break; } } } //----- on retourne la valeur du contrôle en affichant un éventuel message if (!valide) { alert(msg); ctrl.focus(); return false; } else { return true; } } catch(err) { return true; } } verifierSaisieRadioById = function(ctrlNom, msg) { /* Cette méthode vérifie qu'au moins un bouton radio d'un groupe donné est sélectionné */ try { //----- on récupère la liste des boutons radio du groupe var tRadio = window.document.getElementById(ctrlNom); var iMax = tRadio.length; var i; alert(ctrlNom); for (i = 0; i < iMax; i++) { //----- si on rencontre un bouton radio coché, alors la saisie est valide if (tRadio[i].checked) { return true; } } //----- tous les boutons radios sont décochés : on affiche le message alert(msg); //----- on passe le focus au premier bouton radio du groupe if (iMax > 0) { tRadio[0].focus(); } } catch(err) { return true; } //----- et on indique que la saisie est invalide return false; } verifierSaisieRadioByClassName = function(ctrlNom, ctrlClass, msg) { /* Cette méthode vérifie qu'au moins un bouton radio d'un groupe donné est sélectionné */ try { //----- on récupère la liste des boutons radio du groupe var tRadio = getElementsByClassName(ctrlClass); var iMax = tRadio.length; var i; for (i = 0; i < iMax; i++) { //----- si on rencontre un bouton radio coché, alors la saisie est valide if (tRadio[i].checked) { return true; } } //----- tous les boutons radios sont décochés : on affiche le message alert(msg); //----- on passe le focus au premier bouton radio du groupe if (iMax > 0) { tRadio[0].focus(); } } catch(err) { return true; } //----- et on indique que la saisie est invalide return false; } selectAntInd = function() { /* Sert à sélectionner le button radio antenne individuelle quand on clique sur un de ses fils */ window.document.getElementById('teleAntInd').checked = true; window.document.getElementById('teleAntNSP').checked = false; window.document.getElementById('teleAntCol').checked = false; } unselectAntInd = function() { /* Sert à désélectionner le button radio antenne individuelle fils quand on clique sur un autre type d'antenne */ window.document.getElementById('teleAntIndivInt').checked = false; window.document.getElementById('teleAntIndivExt').checked = false; window.document.getElementById('teleAntIndivSsT').checked = false; } verifierSaisieInfosPannes = function() { //Procédure chargée d'effectuer les contrôles sur les donnée saises (formats et champs obligatoires). Indique à //l'utilisateur les données à renseigner ou à modifier et retourne true/false selon que la saisie est correcte ou non. //Cette fonction concerne le bloc d'informations des pannes. L'utilisateur renseigne le code postal et un popup indique //s'il y a des pannes closes depuis moins de 48h ou en cours. //S'il n'y en pas, un message le lui signale egalement. //Ces messages sont gérés par le scripts "informations_pannes.php" var msgDeb = 'Vous devez obligatoirement indiquer '; if (!verifierSaisieTexte('infosPannesCP', msgDeb + 'votre code postal pour obtenir des informations')) return false; if (!verifierCodePostal('infosPannesCP', 'Le code postal saisi ne nous semble pas valide')) return false; //Coherence demandee : reprendre le CP dans le formulaire window.document.getElementById('ppalCP').value = window.document.getElementById('infosPannesCP').value; // Une fois le CP renseigné dans le formulaire, on recherche la commune en lancant la méthode setCommune //setCommune(window.document.getElementById('ppalCP').value); livesearch() var mode = 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, '; mode = mode + 'resizable=yes, copyhistory=no, width=650, height=500, top=75, left=75 '; mode = mode + 'dependent=yes, true'; window.open("", "popup_infopanne", mode); window.document.forms['formInfosPannes'].target="popup_infopanne"; window.document.forms['formInfosPannes'].submit(); return true; } verifierSaisieTexte = function(ctrlId, msg) { /* Cette méthode vérifie si un champ texte du formulaire est vide ou pas */ try { var ctrl = window.document.getElementById(ctrlId); } catch(err) { return true; } if (ctrl.value.length > 0) { return true; } else { alert(msg); ctrl.focus(); return false; } } /* Cette méthode retourne le nom de la commune correspondant au CP fourni ou une liste de commune sous forme ed tableau en cas de choix multiples */ setCommune = function(cp) { if(cp && verifierCodePostal('ppalCP', 'Le code postal saisi ne nous semble pas valide')) { var xhr_object = null; if(window.XMLHttpRequest) // Firefox et autres xhr_object = new XMLHttpRequest(); else if(window.ActiveXObject){ // Internet Explorer try { xhr_object = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); } } else { // XMLHttpRequest non supporté par le navigateur alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); xhr_object = false; } // On ouvre la requete vers la page désirée xhr_object.open("GET", "sources/get_communes.php?cp=" + cp, true); // dans le cas du get xhr_object.send(null); xhr_object.onreadystatechange = function(){ if ( xhr_object.readyState == 4 && xhr_object.status == 200) { var xmlDoc = xhr_object.responseXML.documentElement; var error = xmlDoc.getElementsByTagName("error"); var toutesLesCommunes = xmlDoc.firstChild; var nbCommunes = xmlDoc.childNodes.length; if(error[0]) { document.getElementById("div_commune").innerHTML = "" + error[0].firstChild.data; document.getElementById("ppalCP").value=""; return true; } else { if(nbCommunes > 1 ) { contenuDIV = ""; document.getElementById("div_commune").innerHTML = contenuDIV; } else { try { contenuDIV = "" + toutesLesCommunes.childNodes[0].nodeValue; } catch(err) { contenuDIV = "Aucune commune trouvée pour ce code postal."; document.getElementById("ppalCP").value=""; } document.getElementById("div_commune").innerHTML = contenuDIV; } } // j'affiche dans la DIV spécifiée le contenu retourné par le fichier //document.getElementById("div_commune").innerHTML = ajaxRetour; } } } }