
// ============================================================
// TRACKING HASOFFERS
// ============================================================

// Récupère le transaction_id depuis l'URL.
// Exemple :
// https://maisondesverres.com/jeu-concours.php?transaction_id=ABC123
const urlParams = new URLSearchParams(window.location.search);
const trackingHost = document.getElementById('gateStep');

const transactionId =
  urlParams.get('transaction_id') ||
  (window.MDV_TRACKING && window.MDV_TRACKING.transaction_id) ||
  (trackingHost && trackingHost.getAttribute('data-transaction-id')) ||
  sessionStorage.getItem('mdv_transaction_id') ||
  '';

// On mémorise le transaction_id pendant toute la navigation
if (transactionId) {
  sessionStorage.setItem('mdv_transaction_id', transactionId);
}

console.log('MDV transaction_id =', transactionId);


// --- Countdown vers la date du tirage au sort ---
// Tirage fin septembre. Le mois est 0-indexé : 8 = septembre.
// À changer ici à chaque nouvelle échéance mensuelle.
const drawDate = new Date(2026, 8, 30, 23, 59, 59);

const drawDateTextElement = document.getElementById('drawDateText');

if (drawDateTextElement) {
  drawDateTextElement.textContent = drawDate.toLocaleDateString(
    'fr-FR',
    {
      day: 'numeric',
      month: 'long',
      year: 'numeric'
    }
  );
}

function updateCountdown() {
  const countdownElement = document.getElementById('countdown');

  if (!countdownElement) return;

  const diff = drawDate - new Date();

  if (diff <= 0) {
    countdownElement.textContent = 'Tirage en cours';
    return;
  }

  const d = Math.floor(diff / 86400000);
  const h = Math.floor((diff % 86400000) / 3600000);
  const m = Math.floor((diff % 3600000) / 60000);

  countdownElement.textContent =
    d + 'j ' + h + 'h ' + m + 'm';
}

updateCountdown();
setInterval(updateCountdown, 60000);


// --- Gate email variables ---
// Empreinte du formulaire, posee par PHP sur #gateStep : soit la roue,
// soit le bloc concours de l'accueil quand l'internaute en vient (?from=).
const gateStep = document.getElementById('gateStep');

const formSource = gateStep
  ? gateStep.getAttribute('data-form-source')
  : 'jeu_concours_roue';

const consent = document.getElementById('consent_rules');
const unlockBtn = document.getElementById('unlockBtn');
const prenom = document.getElementById('prenom');
const email = document.getElementById('email');

let storedPrenom = '';
let storedEmail = '';


function checkGate() {
  if (unlockBtn) {
    unlockBtn.disabled = !(
      consent.checked &&
      prenom.value.trim() &&
      email.value.includes('@')
    );
  }
}


if (consent && prenom && email) {
  [consent, prenom, email].forEach(el =>
    el.addEventListener('input', checkGate)
  );

  consent.addEventListener('change', checkGate);
}


if (unlockBtn) {
  unlockBtn.addEventListener('click', function () {
    storedPrenom = prenom.value.trim();
    storedEmail = email.value.trim();

    document.getElementById('gateStep').style.display = 'none';
    document.getElementById('wheelStep').style.display = 'block';
  });
}


// --- Roue : détermine uniquement le modèle affiché, pas de gain. ---
const models = [
  { label: '#C Round', angle: 0 },
  { label: '#D Reading', angle: 45 },
  { label: 'Screen #E', angle: 90 },
  { label: '#A Glacier', angle: 135 },
  { label: '#C Round', angle: 180 },
  { label: '#D Reading', angle: 225 },
  { label: 'Screen #E', angle: 270 },
  { label: '#A Glacier', angle: 315 }
];


const spinBtn = document.getElementById('spinBtn');

if (spinBtn) {

  spinBtn.addEventListener('click', function () {

    this.disabled = true;

    const target =
      models[Math.floor(Math.random() * models.length)];

    const fullTurns = 5 * 360;

    const finalRotation =
      fullTurns +
      (360 - target.angle) -
      22.5;


    const wheel = document.getElementById('wheel');

    if (wheel) {
      wheel.style.transform =
        'rotate(' + finalRotation + 'deg)';
    }


    setTimeout(function () {

      // ======================================================
      // ENVOI DU LEAD VERS submit.php
      // ======================================================

      const formData = new FormData();

      formData.append('type', 'jeu_concours');

      formData.append('prenom', storedPrenom);

      formData.append('email', storedEmail);

      formData.append(
        'modele_choisi',
        target.label
      );

      formData.append(
        'source',
        formSource
      );


      // ======================================================
      // AJOUT DU TRANSACTION ID HASOFFERS
      // ======================================================

      formData.append(
        'transaction_id',
        transactionId
      );


      console.log(
        'transaction_id envoyé à submit.php =',
        transactionId
      );


      fetch('submit.php', {

        method: 'POST',

        body: formData

      })

        .then(response => {

          console.log(
            'HTTP submit.php =',
            response.status
          );

          return response.json();

        })

        .then(data => {

          console.log(
            'Réponse submit.php =',
            data
          );


          if (data.success) {
            window.location.assign('confirmation.php');

          } else {

            let errMsg =
              data.message ||
              "Une erreur est survenue lors de l'enregistrement de votre participation.";


            if (data.debug) {

              errMsg +=
                "\n\nDétails : " +
                data.debug;

            }


            alert(errMsg);

            spinBtn.disabled = false;

          }

        })

        .catch(error => {

          console.error(
            'Erreur:',
            error
          );

          alert(
            "Une erreur de connexion réseau est survenue. Votre participation n'a pas pu être enregistrée."
          );

          spinBtn.disabled = false;

        });

    }, 4600);

  });

}


// --- Chances bonus ---
const shareBtn =
  document.getElementById(
    'shareBtn'
  );


if (shareBtn) {

  shareBtn.addEventListener(
    'click',
    function (e) {

      e.preventDefault();

      alert(
        'Partagez le lien de cette page sur Instagram avec le hashtag #Maison des Verres et mentionnez @Maison des Verres_optique pour doubler vos chances !'
      );

    }
  );

}


const referBtn =
  document.getElementById(
    'referBtn'
  );


if (referBtn) {

  referBtn.addEventListener(
    'click',
    function (e) {

      e.preventDefault();


      const referralLink =
        window.location.origin +
        window.location.pathname +
        '?ref=' +
        btoa(storedEmail);


      navigator.clipboard
        .writeText(referralLink)

        .then(() => {

          alert(
            'Votre lien de parrainage unique a été copié dans le presse-papiers :\n' +
            referralLink
          );

        })

        .catch(err => {

          alert(
            'Copiez ce lien pour parrainer vos proches :\n' +
            referralLink
          );

        });

    }
  );

}
