(function(){
var DATA = {
"Particulier": {
q2: "Quel est votre projet ?",
cats: [
{value:"Renovation energetique", label:"Rénovation énergétique", icon:"fa-leaf"},
{value:"Construction et gros oeuvre", label:"Construction, extension, gros œuvre", icon:"fa-hammer"}
],
services: {
"Renovation energetique": ["Pompe à chaleur air/eau","Pompe à chaleur air/air","VMC double flux","Panneaux photovoltaïques","Éclairage LED","Récupérateur de chaleur","Autre"],
"Construction et gros oeuvre": ["Extension / surélévation","Construction neuve","Ouverture de mur porteur","Reprise en sous-œuvre","Autre"]
}
},
"Professionnel": {
q2: "Quel est votre secteur ?",
cats: [
{value:"Efficacite energetique CEE", label:"Efficacité énergétique (CEE)", icon:"fa-bolt"},
{value:"Renovation tertiaire", label:"Rénovation tertiaire", icon:"fa-building"},
{value:"Construction et gros oeuvre", label:"Construction, gros œuvre", icon:"fa-hammer"}
],
services: {
"Efficacite energetique CEE": ["Déstratification d'air","Éclairage LED","Récupérateur de chaleur","Haute pression flottante","Autre"],
"Renovation tertiaire": ["Rénovation globale tertiaire","Isolation","Chauffage / climatisation","Autre"],
"Construction et gros oeuvre": ["Construction neuve","Extension","Gros œuvre","Autre"]
}
}
};
var form = document.getElementById("vbf-form");
if (!form) return;
var bar = document.getElementById("vbf-bar");
var pct = document.getElementById("vbf-pct");
var steps = form.querySelectorAll(".vb-fstep");
var fProfil = document.getElementById("vbf-profil");
var fCategorie = document.getElementById("vbf-categorie");
var fService = document.getElementById("vbf-service");
var current = 1;
function showStep(n){
current = n;
for (var i = 0; i < steps.length; i++){
var s = steps[i];
s.classList.toggle("active", parseInt(s.getAttribute("data-step"), 10) === n);
}
bar.style.width = (n * 20) + "%";
pct.textContent = n * 20;
}
function buildOpts(container, items, isService){
container.innerHTML = "";
for (var i = 0; i < items.length; i++){
var btn = document.createElement("button");
btn.type = "button";
btn.className = "vb-fopt";
if (isService){
var label = items[i];
btn.setAttribute("data-value", label);
btn.innerHTML = '' + label + '';
btn.addEventListener("click", function(){
fService.value = this.getAttribute("data-value");
showStep(4);
});
} else {
var it = items[i];
btn.setAttribute("data-value", it.value);
btn.innerHTML = '' + it.label + '';
btn.addEventListener("click", function(){
fCategorie.value = this.getAttribute("data-value");
var profil = fProfil.value;
var services = DATA[profil].services[this.getAttribute("data-value")] || [];
buildOpts(document.getElementById("vbf-step3-opts"), services, true);
showStep(3);
});
}
container.appendChild(btn);
}
}
var step1Opts = document.getElementById("vbf-step1-opts").querySelectorAll(".vb-fopt");
for (var i = 0; i < step1Opts.length; i++){
step1Opts[i].addEventListener("click", function(){
var profil = this.getAttribute("data-value");
fProfil.value = profil;
document.getElementById("vbf-step2-q").textContent = DATA[profil].q2;
buildOpts(document.getElementById("vbf-step2-opts"), DATA[profil].cats, false);
showStep(2);
});
}
var backBtns = form.querySelectorAll(".vb-fback");
for (var j = 0; j < backBtns.length; j++){
backBtns[j].addEventListener("click", function(){
showStep(parseInt(this.getAttribute("data-back"), 10));
});
}
document.querySelector('.vb-fnext[data-next="5"]').addEventListener("click", function(){
var cp = document.getElementById("vbf-cp");
var err = document.getElementById("vbf-cp-err");
var valid = /^[0-9]{5}$/.test(cp.value.trim());
err.classList.toggle("show", !valid);
if (valid) showStep(5);
});
form.addEventListener("submit", function(e){
var nom = document.getElementById("vbf-nom").value.trim();
var tel = document.getElementById("vbf-tel").value.trim();
var email = document.getElementById("vbf-email").value.trim();
var err = document.getElementById("vbf-contact-err");
var emailValid = /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email);
var valid = nom.length > 1 && tel.length > 5 && emailValid;
if (!valid){
e.preventDefault();
err.classList.add("show");
}
});
})();