(function(){
  var C = window.ECO || {};
  var API = C.api, PRODUCT = C.product;
  // live founders counter
  function counter(){
    var el = document.getElementById('counter'); if(!el||!PRODUCT) return;
    fetch(API+'/'+PRODUCT+'/stats').then(function(r){return r.json()}).then(function(d){
      if(d.founder_cap){ el.innerHTML = 'Déjà <b>'+d.count+'</b> inscrits · il reste <b>'+d.founder_remaining+'</b> places fondatrices'; }
      else { el.innerHTML = 'Déjà <b>'+d.count+'</b> candidatures reçues'; }
    }).catch(function(){});
  }
  // regional price (priced sites)
  function geo(){
    var box = document.getElementById('pricebox'); if(!box) return;
    var base = {EU: box.dataset.eu, AF: box.dataset.af};
    function show(region){
      var p = base[region]||base.EU;
      box.innerHTML = 'Votre tarif estimé : <b>'+p+' €/mois</b>'+(region==='AF'?' (tarif Afrique)':'')+
        ' — et <b>−50 % à vie</b> si vous faites partie des 100 premiers.';
    }
    fetch(API+'/geo').then(function(r){return r.json()}).then(function(d){ show(d.region||'EU');
      var sel=document.getElementById('country'); if(sel&&d.country_code){ sel.value=d.country_code; }
    }).catch(function(){ show('EU'); });
    var sel=document.getElementById('country');
    if(sel){ sel.addEventListener('change',function(){
      var af="DZ AO BJ BW BF BI CM CV CF TD KM CG CD CI DJ EG GQ ER SZ ET GA GM GH GN GW KE LS LR LY MG MW ML MR MU MA MZ NA NE NG RW ST SN SC SL SO ZA SS SD TZ TG TN UG ZM ZW".split(' ');
      show(af.indexOf(this.value)>=0?'AF':'EU'); }); }
  }
  // form submit
  function bind(form){
    form.addEventListener('submit', function(e){
      e.preventDefault();
      var msg = form.querySelector('.formmsg'); var btn = form.querySelector('button[type=submit]');
      var prod = form.dataset.product || PRODUCT;
      var body = {source_url: location.href};
      Array.prototype.forEach.call(form.elements, function(el){
        if(el.name) body[el.name] = el.value;
      });
      btn.disabled = true; btn.dataset.t = btn.textContent; btn.textContent = 'Envoi…';
      fetch(API+'/'+prod+'/waitlist', {method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify(body)})
        .then(function(r){return r.json()}).then(function(d){
          if(d.status==='ok'){
            var t = form.dataset.ok || 'Merci ! Votre pré-inscription est confirmée. Vérifiez votre boîte mail.';
            if(d.founder && d.rank){ t = 'Bienvenue — vous êtes inscrit·e en position n°'+d.rank+', statut fondateur 🎉. Un e-mail de confirmation arrive.'; }
            else if(d.rank){ t = 'Merci ! Vous êtes inscrit·e en position n°'+d.rank+'. Un e-mail de confirmation arrive.'; }
            if(prod==='vendor' && d.commission_percent!=null){ var cp=(''+d.commission_percent).replace('.',','); t = 'Vous êtes le Bâtisseur n°'+d.rank+' — votre commission à vie : '+cp+' %'+(d.founder?' (Bâtisseur Fondateur 🎉)':'')+'. Un e-mail de confirmation arrive.'; }
            if(d.duplicate){ t = 'Vous étiez déjà inscrit·e (position n°'+d.rank+'). À très vite !'; }
            msg.className = 'formmsg ok'; msg.textContent = t; form.querySelectorAll('input,select,textarea,button').forEach(function(x){x.style.display='none'});
            msg.style.display='block';
          } else {
            msg.className='formmsg err'; msg.textContent = d.message||'Une erreur est survenue.'; btn.disabled=false; btn.textContent=btn.dataset.t;
          }
        }).catch(function(){ msg.className='formmsg err'; msg.textContent='Erreur réseau, réessayez.'; btn.disabled=false; btn.textContent=btn.dataset.t; });
    });
  }
  function ecoBanner(){
    var box=document.getElementById('eco-early-banner'); if(!box) return;
    var prod=box.getAttribute('data-eco-product'); var cid=box.getAttribute('data-eco-count');
    if(!prod||!cid) return;
    var b=document.getElementById(cid); if(!b) return;
    fetch('https://mektech.cloud/api/product/stats?product='+encodeURIComponent(prod)).then(function(r){return r.json()}).then(function(d){
      if(d&&typeof d.remaining==='number'){ b.textContent='Plus que '+d.remaining.toLocaleString('fr-FR')+' places'; }
    }).catch(function(){});
  }
  document.addEventListener('DOMContentLoaded', function(){
    counter(); geo(); ecoBanner();
    document.querySelectorAll('form.wlform').forEach(bind);
  });
})();