/* ------------------------------------------------------------------------ */
/* CONSENTEMENT AU DEMARCHAGE - loi n 2025-594 du 30/06/2025 - DEV-4823 */
/* */
/* Pour les sites en generation LibSource (prototype + scriptaculous), qui */
/* ne chargent NI jQuery NI Load.js : l'injection du parc n'a aucune prise */
/* sur eux. Ce bloc est donc autonome, en JS natif, et se pose dans */
/* config.js, seul fichier charge par TOUTES les pages de ces sites. */
/* */
/* Cote serveur il n'y a RIEN a faire : lib_mail.php / GetConsentDemarchage()*/
/* lit deja $_REQUEST["consentement_demarchage" | "_tel" | "_email"], et */
/* RecMail() - appele par MailContact(), MailDeposer() et MailEnregistrer(), */
/* les handlers de ces formulaires - l'appelle. Les dates sont horodatees */
/* par le SERVEUR, jamais par le navigateur. */
/* ------------------------------------------------------------------------ */
(function()
{
var Reglages =
{
Responsable : "KYLIA IMMOBILIER",
UrlPpd : "http://www.ppd-rgpd.com/fr/75003/75003"
};
var Textes =
{
Intro : "J'accepte que mes donn\u00e9es personnelles soient trait\u00e9es \u00e0 des fins de prospection commerciale :",
LibTel : "Par t\u00e9l\u00e9phone",
LibEmail : "Par courrier \u00e9lectronique",
AriaTel : "J'accepte d'\u00eatre contact\u00e9(e) par t\u00e9l\u00e9phone \u00e0 des fins de prospection commerciale.",
AriaEmail: "J'accepte d'\u00eatre contact\u00e9(e) par courrier \u00e9lectronique (e-mail) \u00e0 des fins de prospection commerciale.",
Legal1 : "Les donn\u00e9es collect\u00e9es par le pr\u00e9sent formulaire sont trait\u00e9es par ",
Legal2 : ", responsable du traitement, aux fins de gestion de votre demande. Vous disposez de droits d'acc\u00e8s, de rectification, d'effacement, de limitation, d'opposition et de portabilit\u00e9 sur vos donn\u00e9es, ainsi que du droit de d\u00e9finir des directives sur leur sort apr\u00e8s votre d\u00e9c\u00e8s. Pour exercer ces droits ou en savoir plus sur le traitement de vos donn\u00e9es, leur dur\u00e9e de conservation et leurs destinataires, consultez notre ",
LibPpd : "politique de protection des donn\u00e9es",
Legal3 : ". Vous pouvez \u00e9galement introduire une r\u00e9clamation aupr\u00e8s de la CNIL."
};
// Hors perimetre : moteurs de recherche, simulateurs, points d'interet,
// authentification, desinscription, rappel, et l'envoi a un ami que le cahier
// des charges formulaires exclut explicitement du RGPD. Meme liste que Load.js.
var HorsPerimetre = /Ami|Search|Calc|Poi|Login|Forget|Pass|Unsubscribe|Resa|DetailEnova|Newsletter|Rappel|MyaCreate|MiniMoteur|Dept/i;
// Une case ne se pose que si le canal est REELLEMENT collecte. email2 est la
// confirmation de saisie, pas une seconde coordonnee : elle n'est pas listee.
var ChampsTel = ["tel", "telephone", "telport", "tel_portable", "rappel_tel"];
var ChampsEmail = ["email", "mail"];
function Echappe(T)
{
return String(T).replace(/&/g, "&").replace(//g, ">").replace(/"/g, """);
}
function ChampPresent(Form, Noms)
{
for(var i = 0; i < Noms.length; i++)
{
var E = Form.elements[Noms[i]];
if(E && (!E.length || E.length > 0)) return true;
}
return false;
}
// Le bouton d'envoi de ces gabarits n'est PAS un input[type=submit] : c'est
// une qui porte onclick="ValiderFormulaire('FormContact')". On cherche
// donc d'abord les vrais boutons, puis tout element dont le onclick declenche
// un envoi. Detection par le COMPORTEMENT, jamais par le nom du formulaire :
// les 4 sites ne sont pas identiques - proximmo34 passe par Adapt.Form.Submit
// et ne charge meme pas fonction.js.
function TrouveEnvoi(Form)
{
var Vrai = Form.querySelector("input[type='submit'],button[type='submit'],input[type='image']");
if(Vrai) return Vrai;
var Candidats = Form.querySelectorAll("[onclick]");
for(var i = 0; i < Candidats.length; i++)
{
var Code = Candidats[i].getAttribute("onclick") || "";
if(/ValiderFormulaire|Adapt\.Form\.Submit|ValiderAlertEmail|\.submit\s*\(/i.test(Code)) return Candidats[i];
}
return null;
}
function NbColonnes(Ligne)
{
var N = 0;
for(var i = 0; i < Ligne.cells.length; i++) N += (Ligne.cells[i].colSpan || 1);
return N || 1;
}
function PoseStyle()
{
if(document.getElementById("consent-demarchage-css")) return;
var S = document.createElement("style");
S.id = "consent-demarchage-css";
S.type = "text/css";
S.appendChild(document.createTextNode(
".form-ppd{margin:8px 0;text-align:left;line-height:1.4}" +
".form-ppd-intro{margin:0 0 4px 0;font-weight:bold}" +
".form-ppd-cases{display:block}" +
".form-ppd-consentement{display:inline-block;margin:0 18px 2px 0;font-weight:normal;cursor:pointer}" +
".form-ppd-consentement input{vertical-align:middle;margin:0 5px 0 0}" +
".form-ppd-legal{margin:8px 0;text-align:left;font-size:11px;line-height:1.4}" +
".form-ppd-legal a{text-decoration:underline}"
));
(document.head || document.getElementsByTagName("head")[0] || document.body).appendChild(S);
}
function ConstruitBloc(ATel, AEmail)
{
var D = document.createElement("div");
D.className = "form-ppd form-critere";
var H = '
' + Echappe(Textes.Intro) + '
'; if(ATel) H += ''; if(AEmail) H += ''; D.innerHTML = H + ''; return D; } function ConstruitLegal() { var P = document.createElement("p"); P.className = "form-ppd-legal"; P.innerHTML = Echappe(Textes.Legal1) + Echappe(Reglages.Responsable) + Echappe(Textes.Legal2) + '' + Echappe(Textes.LibPpd) + '' + Echappe(Textes.Legal3); return P; } // Les cases AU-DESSUS du bouton d'envoi, le bloc juridique EN DESSOUS : c'est // la disposition validee sur le parc, et celle que verifie le banc. Sur ces // gabarits en