<?php
$offername = $_GET['offer'] ?? '';
$lang = $_POST['language'] ?? $_GET['language'] ?? 'cs';
?>

<div id="xc-form-embed" data-lang="<?= htmlspecialchars($lang, ENT_QUOTES, 'UTF-8') ?>">
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/intl-tel-input@17.0.8/build/css/intlTelInput.min.css">

  <style>
    #xc-form-embed,
    #xc-form-embed * {
      box-sizing: border-box;
    }

    #xc-form-embed {
      width: 100%;
      font-family: Arial, Helvetica, sans-serif;
      position: relative;
      isolation: isolate;
    }

    #xc-form-embed .xc-form-shell {
      width: 100%;
      display: flex;
      justify-content: center;
    }

    #xc-form-embed .xc-form-container {
      background: #ffffff;
      width: 100%;
      max-width: 520px;
      padding: 28px;
      border-radius: 16px;
      box-shadow: 0 10px 35px rgba(15, 23, 42, 0.08);
      border: 1px solid #e5e7eb;
    }

    #xc-form-embed .xc-form-title {
      margin: 0 0 8px;
      font-size: 28px;
      line-height: 1.2;
      font-weight: 700;
      color: #111827;
      text-align: center;
    }

    #xc-form-embed .xc-form-subtitle {
      margin: 0 0 22px;
      font-size: 14px;
      line-height: 1.6;
      color: #6b7280;
      text-align: center;
    }

    #xc-form-embed .xc-success-message,
    #xc-form-embed .xc-error-message {
      display: none;
      padding: 12px 14px;
      border-radius: 10px;
      margin-bottom: 16px;
      font-size: 14px;
      line-height: 1.5;
    }

    #xc-form-embed .xc-success-message {
      background: #ecfdf5;
      color: #065f46;
      border: 1px solid #a7f3d0;
    }

    #xc-form-embed .xc-error-message {
      background: #fef2f2;
      color: #991b1b;
      border: 1px solid #fecaca;
    }

    #xc-form-embed .xc-field {
      margin-bottom: 16px;
    }

    #xc-form-embed .xc-label {
      display: block;
      margin-bottom: 7px;
      font-size: 14px;
      font-weight: 600;
      color: #111827;
    }

    #xc-form-embed .xc-input,
    #xc-form-embed input[type="tel"].xc-input,
    #xc-form-embed input[type="text"].xc-input,
    #xc-form-embed input[type="email"].xc-input {
      width: 100%;
      height: 48px;
      padding: 0 14px;
      border: 1px solid #d1d5db;
      border-radius: 12px;
      background: #ffffff;
      font-size: 15px;
      color: #111827;
      outline: none;
      transition: border-color .2s ease, box-shadow .2s ease;
    }

    #xc-form-embed .xc-input:focus {
      border-color: #dc2626;
      box-shadow: 0 0 0 4px rgba(220, 38, 38, 0.10);
    }

    #xc-form-embed .iti {
      width: 100%;
    }

    #xc-form-embed .iti__flag {
      background-image: url("https://cdn.jsdelivr.net/npm/intl-tel-input@17.0.8/build/img/flags.png") !important;
      background-repeat: no-repeat !important;
    }

    @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
      #xc-form-embed .iti__flag {
        background-image: url("https://cdn.jsdelivr.net/npm/intl-tel-input@17.0.8/build/img/flags@2x.png") !important;
        background-size: 5652px 15px !important;
      }
    }

    #xc-form-embed .xc-consent-box {
      margin-top: 8px;
      margin-bottom: 8px;
      padding: 14px 14px 10px;
      border: 1px solid #e5e7eb;
      border-radius: 12px;
      background: #fafafa;
    }

    #xc-form-embed .xc-consent-label {
      display: flex;
      align-items: flex-start;
      gap: 10px;
      margin: 0;
      font-size: 13px;
      line-height: 1.7;
      color: #374151;
      font-weight: 400;
      cursor: pointer;
    }

    #xc-form-embed .xc-consent-label input[type="checkbox"] {
      margin-top: 3px;
      flex: 0 0 auto;
    }

    #xc-form-embed .xc-consent-text a {
      color: #dc2626;
      text-decoration: none;
      font-weight: 700;
    }

    #xc-form-embed .xc-consent-text a:hover {
      text-decoration: underline;
    }

    #xc-form-embed .xc-submit-btn {
      width: 100%;
      height: 50px;
      margin-top: 18px;
      border: 0;
      border-radius: 12px;
      background: linear-gradient(135deg, #dc2626 0%, #b91c1c 100%);
      color: #ffffff;
      font-size: 16px;
      font-weight: 700;
      cursor: pointer;
      transition: transform .15s ease, box-shadow .2s ease, opacity .2s ease;
      box-shadow: 0 10px 20px rgba(220, 38, 38, 0.18);
    }

    #xc-form-embed .xc-submit-btn:hover {
      transform: translateY(-1px);
      opacity: 0.98;
    }

    #xc-form-embed .xc-submit-btn:disabled {
      opacity: .7;
      cursor: not-allowed;
      transform: none;
    }

    #xc-form-embed .xc-modal-overlay {
      position: fixed;
      inset: 0;
      display: none;
      align-items: center;
      justify-content: center;
      padding: 20px;
      background: rgba(17,24,39,.58);
      z-index: 999999;
    }

    #xc-form-embed .xc-modal-overlay.xc-show {
      display: flex;
    }

    #xc-form-embed .xc-modal-box {
      width: 100%;
      max-width: 520px;
      background: #ffffff;
      border-radius: 18px;
      padding: 28px 24px;
      box-shadow: 0 24px 60px rgba(0,0,0,.25);
      text-align: center;
    }

    #xc-form-embed .xc-modal-box h3 {
      margin: 0 0 8px;
      font-size: 22px;
      color: #111827;
    }

    #xc-form-embed .xc-modal-box p {
      margin: 0;
      font-size: 15px;
      line-height: 1.6;
      color: #4b5563;
    }

    #xc-form-embed .xc-spinner {
      width: 42px;
      height: 42px;
      margin: 18px auto 0;
      border: 4px solid #e5e7eb;
      border-top-color: #dc2626;
      border-radius: 50%;
      animation: xc-spin 1s linear infinite;
    }

    @keyframes xc-spin {
      to { transform: rotate(360deg); }
    }

    #xc-form-embed .xc-legal-modal {
      width: 100%;
      max-width: 760px;
      max-height: 85vh;
      overflow-y: auto;
      background: #ffffff;
      border-radius: 18px;
      padding: 24px;
      box-shadow: 0 24px 60px rgba(0,0,0,.25);
      position: relative;
    }

    #xc-form-embed .xc-legal-modal h3 {
      margin: 0 0 16px;
      font-size: 24px;
      color: #111827;
    }

    #xc-form-embed .xc-legal-modal h4 {
      margin: 18px 0 8px;
      font-size: 16px;
      color: #111827;
    }

    #xc-form-embed .xc-legal-modal p,
    #xc-form-embed .xc-legal-modal li {
      font-size: 14px;
      line-height: 1.7;
      color: #374151;
    }

    #xc-form-embed .xc-legal-modal ul {
      padding-left: 20px;
      margin: 8px 0;
    }

    #xc-form-embed .xc-close-btn {
      position: absolute;
      top: 12px;
      right: 14px;
      border: 0;
      background: transparent;
      color: #6b7280;
      font-size: 28px;
      line-height: 1;
      cursor: pointer;
      padding: 0;
      margin: 0;
      width: auto;
      height: auto;
      box-shadow: none;
    }

    #xc-form-embed .xc-close-btn:hover {
      color: #111827;
    }

    #xc-form-embed #xc-pixelContainer {
      width: 0;
      height: 0;
      overflow: hidden;
    }

    @media (max-width: 640px) {
      #xc-form-embed .xc-form-container {
        padding: 22px 16px;
        border-radius: 14px;
      }

      #xc-form-embed .xc-form-title {
        font-size: 24px;
      }

      #xc-form-embed .xc-legal-modal,
      #xc-form-embed .xc-modal-box {
        padding: 20px 16px;
        border-radius: 14px;
      }
    }
  </style>

  <div class="xc-form-shell">
    <form class="xc-form-container" id="xcCrmForm" method="post" autocomplete="off" novalidate>
      <h2 class="xc-form-title">Zaregistrujte se nyní</h2>
      <p class="xc-form-subtitle">Pro pokračování prosím vyplňte formulář.</p>

      <div class="xc-success-message" id="xcSuccessMsg">Vaše údaje byly úspěšně odeslány.</div>
      <div class="xc-error-message" id="xcErrorMsg">Došlo k chybě. Zkuste to prosím znovu.</div>

      <div class="xc-field">
        <label class="xc-label" for="xc_fname">Jméno *</label>
        <input class="xc-input" type="text" id="xc_fname" name="fname" required>
      </div>

      <div class="xc-field">
        <label class="xc-label" for="xc_lname">Příjmení *</label>
        <input class="xc-input" type="text" id="xc_lname" name="lname" required>
      </div>

      <div class="xc-field">
        <label class="xc-label" for="xc_email">E-mail *</label>
        <input class="xc-input" type="email" id="xc_email" name="email" required>
      </div>

      <div class="xc-field">
        <label class="xc-label" for="xc_fullphone">Telefonní číslo *</label>
        <input class="xc-input" type="tel" id="xc_fullphone" name="fullphone" required>
      </div>

      <input type="hidden" name="ip" id="xc_ip">
      <input type="hidden" name="country" id="xc_country">
      <input type="hidden" name="language" value="cs">
      <input type="hidden" name="source" value="">
      <input type="hidden" name="funnel" value="<?= htmlspecialchars($offername, ENT_QUOTES, 'UTF-8') ?>-p-cs">
      <input type="hidden" name="link_id" value="">
      <input type="hidden" name="click_id" value="">
      <input type="hidden" name="utm_campaign" value="">
      <input type="hidden" name="personal_consent" value="1">

      <div class="xc-consent-box">
        <label class="xc-consent-label" for="xc_personal_consent_checkbox">
          <input type="checkbox" id="xc_personal_consent_checkbox" required>
          <span class="xc-consent-text">
            Přečetl(a) jsem si
            <a href="#" data-open="xcTermsModal">Obchodní podmínky</a>
            a
            <a href="#" data-open="xcPrivacyModal">Zásady ochrany osobních údajů</a>
            a souhlasím se zpracováním svých osobních údajů.
          </span>
        </label>
      </div>

      <button type="submit" class="xc-submit-btn" id="xcSubmitBtn">Registrovat se</button>
    </form>
  </div>

  <div id="xcThankyouModal" class="xc-modal-overlay" role="dialog" aria-modal="true" aria-hidden="true">
    <div class="xc-modal-box">
      <h3>Děkujeme za registraci.</h3>
      <p>Brzy budete přesměrováni na naši platformu.</p>
      <div class="xc-spinner"></div>
      <div id="xc-pixelContainer"></div>
    </div>
  </div>

  <div id="xcTermsModal" class="xc-modal-overlay" role="dialog" aria-modal="true" aria-hidden="true">
    <div class="xc-legal-modal">
      <button type="button" class="xc-close-btn" data-close="xcTermsModal">&times;</button>
      <h3>Obchodní podmínky</h3>

      <h4>1. Rozsah použití</h4>
      <p>Tyto obchodní podmínky upravují používání tohoto formuláře a odesílání vašich údajů v souvislosti s registrací nebo žádostí.</p>

      <h4>2. Používání formuláře</h4>
      <p>Odesláním formuláře potvrzujete, že poskytnuté údaje jsou správné a úplné a že formulář používáte pouze pro zákonné účely.</p>

      <h4>3. Služby</h4>
      <p>Prostřednictvím tohoto formuláře mohou být vaše údaje zpracovány za účelem vyřízení vaší žádosti, kontaktování nebo poskytnutí vhodných informací a nabídek.</p>

      <h4>4. Povinnosti uživatele</h4>
      <ul>
        <li>Uvádět pravdivé a úplné údaje</li>
        <li>Neposílat údaje třetích osob bez jejich souhlasu</li>
        <li>Nepoužívat formulář podvodně, zneužívajícím způsobem nebo nezákonně</li>
      </ul>

      <h4>5. Odpovědnost</h4>
      <p>Nenese­me odpovědnost za technické výpadky, chyby přenosu nebo dočasnou nedostupnost v rozsahu povoleném zákonem.</p>

      <h4>6. Ochrana osobních údajů</h4>
      <p>Další informace o zpracování osobních údajů naleznete v Zásadách ochrany osobních údajů.</p>

      <h4>7. Změny</h4>
      <p>Vyhrazujeme si právo tyto podmínky kdykoli do budoucna změnit.</p>
    </div>
  </div>

  <div id="xcPrivacyModal" class="xc-modal-overlay" role="dialog" aria-modal="true" aria-hidden="true">
    <div class="xc-legal-modal">
      <button type="button" class="xc-close-btn" data-close="xcPrivacyModal">&times;</button>
      <h3>Zásady ochrany osobních údajů</h3>

      <h4>1. Obecné informace</h4>
      <p>Ochrana vašich osobních údajů je pro nás důležitá. Níže vás informujeme o typu, rozsahu a účelu zpracování vašich údajů v souvislosti s tímto formulářem.</p>

      <h4>2. Shromažďované údaje</h4>
      <ul>
        <li>Jméno a příjmení</li>
        <li>E-mailová adresa</li>
        <li>Telefonní číslo</li>
        <li>IP adresa</li>
        <li>Země, jazyk a technické informace</li>
        <li>Parametry sledování a kampaní</li>
      </ul>

      <h4>3. Účel zpracování</h4>
      <p>Údaje jsou zpracovávány za účelem vyřízení vaší žádosti nebo registrace, kontaktování, poskytnutí vhodných informací a technického přiřazení marketingových procesů.</p>

      <h4>4. Právní základ</h4>
      <p>Zpracování probíhá na základě vašeho souhlasu a tam, kde je to relevantní, také za účelem provedení předsmluvních opatření a ochrany oprávněných zájmů.</p>

      <h4>5. Předávání třetím stranám</h4>
      <p>Vaše údaje mohou být sdíleny s technickými poskytovateli, CRM systémy nebo odpovědnými partnery, pokud je to nezbytné pro vyřízení vaší žádosti.</p>

      <h4>6. Doba uchování</h4>
      <p>Vaše údaje budou uchovávány pouze po dobu nezbytnou pro uvedené účely nebo po dobu stanovenou zákonnými povinnostmi.</p>

      <h4>7. Vaše práva</h4>
      <ul>
        <li>Přístup k uloženým údajům</li>
        <li>Oprava nesprávných údajů</li>
        <li>Výmaz vašich údajů</li>
        <li>Omezení zpracování</li>
        <li>Odvolání souhlasu s účinky do budoucna</li>
      </ul>

      <h4>8. Bezpečnost údajů</h4>
      <p>Přijímáme vhodná technická a organizační opatření k ochraně vašich údajů před neoprávněným přístupem, ztrátou nebo zneužitím.</p>
    </div>
  </div>

  <script src="https://cdn.jsdelivr.net/npm/intl-tel-input@17.0.8/build/js/intlTelInput.min.js"></script>
  <script>
    (function () {
      const wrapper = document.getElementById('xc-form-embed');
      if (!wrapper || wrapper.dataset.initialized === '1') return;
      wrapper.dataset.initialized = '1';

      let enableRedirect = true;

      const form = wrapper.querySelector('#xcCrmForm');
      const phoneInput = wrapper.querySelector('#xc_fullphone');
      const successMsg = wrapper.querySelector('#xcSuccessMsg');
      const errorMsg = wrapper.querySelector('#xcErrorMsg');
      const submitBtn = wrapper.querySelector('#xcSubmitBtn');
      const consentCheckbox = wrapper.querySelector('#xc_personal_consent_checkbox');
      const pixelContainer = wrapper.querySelector('#xc-pixelContainer');
      const ipField = wrapper.querySelector('#xc_ip');
      const countryField = wrapper.querySelector('#xc_country');

      function fillHiddenFromURL(param, fieldName) {
        const urlParams = new URLSearchParams(window.location.search);
        const value = urlParams.get(param);
        const field = form.querySelector('[name="' + fieldName + '"]');
        if (value && field) field.value = value;
      }

      ['source', 'link_id', 'click_id', 'utm_campaign', 'funnel'].forEach(function(param) {
        fillHiddenFromURL(param, param);
      });

      function openModal(id) {
        const modal = wrapper.querySelector('#' + id);
        if (modal) {
          modal.classList.add('xc-show');
          modal.setAttribute('aria-hidden', 'false');
          document.body.style.overflow = 'hidden';
        }
      }

      function closeModal(id) {
        const modal = wrapper.querySelector('#' + id);
        if (modal) {
          modal.classList.remove('xc-show');
          modal.setAttribute('aria-hidden', 'true');
          document.body.style.overflow = '';
        }
      }

      wrapper.querySelectorAll('[data-open]').forEach(function(link) {
        link.addEventListener('click', function(e) {
          e.preventDefault();
          openModal(this.getAttribute('data-open'));
        });
      });

      wrapper.querySelectorAll('[data-close]').forEach(function(btn) {
        btn.addEventListener('click', function() {
          closeModal(this.getAttribute('data-close'));
        });
      });

      wrapper.querySelectorAll('.xc-modal-overlay').forEach(function(overlay) {
        overlay.addEventListener('click', function(e) {
          if (e.target === overlay) {
            overlay.classList.remove('xc-show');
            overlay.setAttribute('aria-hidden', 'true');
            document.body.style.overflow = '';
          }
        });
      });

      document.addEventListener('keydown', function(e) {
        if (e.key === 'Escape') {
          wrapper.querySelectorAll('.xc-modal-overlay.xc-show').forEach(function(modal) {
            modal.classList.remove('xc-show');
            modal.setAttribute('aria-hidden', 'true');
          });
          document.body.style.overflow = '';
        }
      });

      const iti = window.intlTelInput(phoneInput, {
        initialCountry: "auto",
        separateDialCode: true,
        nationalMode: false,
        autoPlaceholder: "aggressive",
        utilsScript: "https://cdn.jsdelivr.net/npm/intl-tel-input@17.0.8/build/js/utils.js",
        geoIpLookup: function(callback) {
          fetch("https://api.ipstack.com/check?access_key=061a864446c4fc350c3a20c2b0405122")
            .then(function(response) { return response.json(); })
            .then(function(data) {
              ipField.value = data.ip || "";
              countryField.value = data.country_code || "CZ";
              callback((data.country_code || "CZ").toLowerCase());
            })
            .catch(function() {
              countryField.value = "CZ";
              callback("cz");
            });
        }
      });

      const crm_api_url = "https://tracking.spartas360.com/api/v3/integration?api_token=K4SG6IBlKPmXEVN3AvKjefhJSVbiPcQxWyzXesw3NbcxezJ2bG1EKOtTlirg";

      function showError(message) {
        successMsg.style.display = 'none';
        errorMsg.textContent = message;
        errorMsg.style.display = 'block';
      }

      function clearMessages() {
        successMsg.style.display = 'none';
        errorMsg.style.display = 'none';
      }

      function showThankYouAndRedirect(url) {
        pixelContainer.innerHTML = '<iframe src="pixel.html' + window.location.search + '" width="0" height="0" style="border:0; visibility:hidden;"></iframe>';
        openModal('xcThankyouModal');

        if (enableRedirect && url && typeof url === 'string' && url.startsWith('http')) {
          setTimeout(function () {
            window.location.href = url;
          }, 5000);
        }
      }

      form.addEventListener('submit', function(e) {
        e.preventDefault();
        clearMessages();

        if (!consentCheckbox.checked) {
          showError('Musíte souhlasit s Obchodními podmínkami a Zásadami ochrany osobních údajů.');
          return;
        }

        const fullNumber = iti.getNumber();
        if (!fullNumber || !iti.isValidNumber()) {
          showError('Zadejte prosím platné telefonní číslo.');
          phoneInput.focus();
          return;
        }

        phoneInput.value = fullNumber;

        const formData = new FormData(form);
        const data = {};
        formData.forEach(function(val, key) {
          data[key] = val;
        });

        submitBtn.disabled = true;
        submitBtn.textContent = 'Zpracovává se...';

        fetch(crm_api_url, {
          method: 'POST',
          headers: { 'Content-Type': 'application/json' },
          body: JSON.stringify(data)
        })
        .then(function(res) { return res.json(); })
        .then(function(response) {
          submitBtn.disabled = false;
          submitBtn.textContent = 'Registrovat se';

          if (enableRedirect && response.autologin && response.autologin.startsWith('http')) {
            showThankYouAndRedirect(response.autologin);
          } else if (response.message || response.error) {
            const tmp = document.createElement('div');
            tmp.innerHTML = response.message || response.error;
            showError(tmp.textContent || tmp.innerText || 'Chyba');
          } else {
            showThankYouAndRedirect(null);
          }
        })
        .catch(function() {
          submitBtn.disabled = false;
          submitBtn.textContent = 'Registrovat se';
          showError('Došlo k chybě. Zkuste to prosím znovu.');
        });
      });
    })();
  </script>
</div>