(function (){
'use strict';
var CFG=window.CLP_DATA||{};
var PRODUCT_LABEL={
'per':    'per',
'av':     'assurance-vie',
'av-lux': 'assurance-vie-lux'
};
var STEP_LABEL={
1: 'objectif',
2: 'montant',
3: 'contact_pref',
4: 'coordonnees'
};
var FORM_TYPE='native_lp';
var pushedStart=false;
var pushedLeadIds={};
var pushedSteps={};
var DEBUG=(function (){
try { return /(^|[?&])tracking_debug=1(&|$)/.test(window.location.search); }
catch (e){ return false; }})();
function buildBase(){
var raw=(window.clpProduct||CFG.product||'per');
return {
product:       PRODUCT_LABEL[raw]||raw,
form_type:     FORM_TYPE,
page_location: window.location.href
};}
function push(payload){
window.dataLayer=window.dataLayer||[];
window.dataLayer.push(payload);
if(DEBUG){
try { console.info('[lp-gtm]', payload.event||'(no event)', payload); }
catch (e){}}
}
function normalizePhone(raw){
if(!raw) return '';
var s=String(raw).replace(/[\s().\-]/g, '');
if(s.charAt(0)==='+') return s;
if(s.substr(0, 2)==='00') return '+' + s.substr(2);
if(/^0[1-9][0-9]{8}$/.test(s)) return '+33' + s.substr(1);
return s;
}
function formStart(){
if(pushedStart) return;
pushedStart=true;
var p=buildBase();
p.event='form_start';
push(p);
}
function formStep(stepNumber, stepName){
var n=parseInt(stepNumber, 10);
if(!n||pushedSteps[n]) return;
pushedSteps[n]=true;
var p=buildBase();
p.event='form_step';
p.step_number=n;
p.step_name=stepName||STEP_LABEL[n]||('step_' + n);
push(p);
}
function generateLead(data){
data=data||{};
var id=data.lead_id||data.leadId||'';
if(!id){
if(DEBUG) console.warn('[lp-gtm] generateLead() ignoré:lead_id manquant');
return;
}
if(pushedLeadIds[id]){
if(DEBUG) console.info('[lp-gtm] generateLead() ignoré (déjà poussé)', id);
return;
}
pushedLeadIds[id]=true;
var p=buildBase();
p.event='generate_lead';
p.lead_id=id;
if(data.objectif) p.objectif=String(data.objectif);
var email=(data.email||'').trim().toLowerCase();
var phone=normalizePhone(data.phone_number||data.phone);
if(email||phone){
p.user_data={};
if(email) p.user_data.email=email;
if(phone) p.user_data.phone_number=phone;
}
push(p);
}
window.clpGtm={
formStart:    formStart,
formStep:     formStep,
generateLead: generateLead,
_normalizePhone: normalizePhone,
_debug: DEBUG
};})();