/* global React */

const LEGAL_TRANSLATIONS = {
  'Späť na hlavnú stránku': 'Back to home',
  'Zásady cookies': 'Cookie policy',
  'Podmienky používania': 'Terms of use',
  'Nastavenia cookies': 'Cookie settings',
  'Právne dokumenty': 'Legal documents',
  'Aktualizované: Apríl 2026': 'Updated: April 2026',
  'Aktualizované:': 'Updated:',
  'Apríl 2026': 'April 2026',

  'Zásady': 'Cookie',
  'cookies': 'policy',
  'Táto stránka vysvetľuje, aké cookies používame na webe 85runtime.sk, prečo ich používame a aké máte možnosti ich kontroly.': 'This page explains which cookies we use on 85runtime.sk, why we use them and what control options you have.',
  'Čo sú cookies?': 'What are cookies?',
  'Cookies sú malé textové súbory, ktoré sa ukladajú vo vašom prehliadači pri návšteve webovej stránky. Pomáhajú stránke zapamätať si vaše preferencie a zlepšujú váš zážitok z používania.': 'Cookies are small text files stored in your browser when you visit a website. They help the site remember your preferences and improve your experience.',
  'Nevyhnutné cookies': 'Necessary cookies',
  'Tieto cookies sú nevyhnutné pre správne fungovanie webu. Zahŕňajú uloženie vašich preferencií ohľadom cookies (kľúč:': 'These cookies are necessary for the website to function properly. They include storing your cookie preferences (key:',
  '). Bez nich nemôžeme zabezpečiť základnú funkčnosť stránky. Tieto cookies nevyžadujú váš súhlas.': '). Without them, we cannot provide the basic functionality of the site. These cookies do not require your consent.',
  'Analytické cookies': 'Analytics cookies',
  'Používame Google Analytics 4 (GA4) na pochopenie toho, ako návštevníci používajú náš web, ktoré stránky navštevujú, ako dlho na nich zostávajú a odkiaľ prichádzajú. Tieto údaje nám pomáhajú zlepšovať obsah a štruktúru webu. Analytické cookies aktivujeme len s vaším súhlasom. Merací kód: G-7DKJS324FT.': 'We use Google Analytics 4 (GA4) to understand how visitors use our website: which pages they visit, how long they stay and where they come from. This data helps us improve the content and structure of the website. Analytics cookies are activated only with your consent. Measurement ID: G-7DKJS324FT.',
  'Marketingové cookies': 'Marketing cookies',
  'Marketingové cookies umožňujú personalizovanú reklamu a sledovanie konverzií. Momentálne tieto cookies aktívne nepoužívame, no máme pripravenú infraštruktúru pre prípadné budúce reklamné kampane. Aktivujú sa len s vaším explicitným súhlasom.': 'Marketing cookies enable personalized advertising and conversion tracking. We do not actively use these cookies at the moment, but we have infrastructure prepared for possible future advertising campaigns. They are activated only with your explicit consent.',
  'Správa a odvolanie súhlasu': 'Managing and withdrawing consent',
  'Svoj súhlas môžete kedykoľvek zmeniť kliknutím na „Nastavenia cookies" v päte stránky. Môžete tiež vymazať cookies priamo v nastaveniach vášho prehliadača. Odvolanie súhlasu nemá vplyv na zákonnosť spracovania pred jeho odvolaním.': 'You can change your consent at any time by clicking "Cookie settings" in the page footer. You can also delete cookies directly in your browser settings. Withdrawal of consent does not affect the lawfulness of processing before withdrawal.',
  'Prevádzkovateľ': 'Operator',
  '85runtime s.r.o., Volgogradská 13, 080 01 Prešov, Slovenská republika. Kontakt: info@85runtime.sk': '85runtime s.r.o., Volgogradska 13, 080 01 Presov, Slovak Republic. Contact: info@85runtime.sk',

  'Podmienky': 'Terms',
  'používania': 'of use',
  'Tieto podmienky upravujú používanie webovej stránky 85runtime.sk a služieb poskytovaných spoločnosťou 85runtime s.r.o.': 'These terms govern the use of the 85runtime.sk website and services provided by 85runtime s.r.o.',
  'Webovú stránku 85runtime.sk prevádzkuje spoločnosť 85runtime s.r.o., so sídlom Volgogradská 13, 080 01 Prešov, Slovenská republika. Kontaktný email: info@85runtime.sk': 'The 85runtime.sk website is operated by 85runtime s.r.o., with registered office at Volgogradska 13, 080 01 Presov, Slovak Republic. Contact email: info@85runtime.sk',
  'Účel stránky': 'Purpose of the website',
  '85runtime.sk je prezentačná stránka štúdia pre vývoj webových stránok, AI agentov a automatizácií. Stránka slúži na informovanie o službách a získavanie dopytov od potenciálnych klientov.': '85runtime.sk is a presentation website for a studio focused on website development, AI agents and automation. The site provides information about services and collects inquiries from potential clients.',
  'Používanie stránky': 'Use of the website',
  'Obsah tejto stránky je chránený autorským právom. Akékoľvek kopírovanie, šírenie alebo komerčné využitie obsahu bez písomného súhlasu prevádzkovateľa je zakázané. Stránku je dovolené používať výhradne na zákonné účely.': 'The content of this website is protected by copyright. Any copying, distribution or commercial use of the content without written consent from the operator is prohibited. The website may be used only for lawful purposes.',
  'AI asistent a odosielanie dopytov': 'AI assistant and inquiry submission',
  'Na stránke je k dispozícii AI asistent na predkvalifikáciu dopytov. Informácie, ktoré do neho zadáte (meno, email, popis projektu), budú uložené v našom CRM systéme a použité výhradne na účely odpovede na váš dopyt. Viac informácií o spracovaní osobných údajov nájdete v našich Zásadách ochrany osobných údajov.': 'The website includes an AI assistant for pre-qualifying inquiries. Information you enter into it (name, email, project description) will be stored in our CRM system and used solely to respond to your inquiry. More information about personal data processing can be found in our privacy policy.',
  'Obmedzenie zodpovednosti': 'Limitation of liability',
  'Prevádzkovateľ nezodpovedá za škody vzniknuté v dôsledku používania alebo nemožnosti používania tejto stránky. Obsah stránky má informatívny charakter a nepredstavuje záväznú ponuku.': 'The operator is not liable for damages arising from use of this website or inability to use it. The website content is informational and does not constitute a binding offer.',
  'Rozhodné právo': 'Governing law',
  'Tieto podmienky sa riadia právnym poriadkom Slovenskej republiky. Prípadné spory budú riešené pred príslušnými súdmi Slovenskej republiky.': 'These terms are governed by the laws of the Slovak Republic. Any disputes will be resolved before the competent courts of the Slovak Republic.',
  'Zmeny podmienok': 'Changes to terms',
  'Prevádzkovateľ si vyhradzuje právo tieto podmienky kedykoľvek zmeniť. Aktuálna verzia je vždy dostupná na tejto stránke s dátumom poslednej aktualizácie.': 'The operator reserves the right to change these terms at any time. The current version is always available on this page with the date of the latest update.',

  'Zavrieť': 'Close',
  'Nastavenia': 'Settings',
  'Nastavenia súkromia': 'Privacy settings',
  'Používame cookies na zlepšenie vášho zážitku a analýzu návštevnosti. Nevyhnutné cookies sú vždy aktívne.': 'We use cookies to improve your experience and analyze traffic. Necessary cookies are always active.',
  'Nevyhnutné': 'Necessary',
  'Zabezpečujú základné funkcie webu. Nedajú sa vypnúť.': 'They ensure basic website functions and cannot be disabled.',
  'Analytické': 'Analytics',
  'Pomáhajú nám pochopiť, ako návštevníci používajú web (Google Analytics).': 'They help us understand how visitors use the website (Google Analytics).',
  'Marketingové': 'Marketing',
  'Umožňujú personalizovanú reklamu a sledovanie konverzií.': 'They enable personalized advertising and conversion tracking.',
  'Prijať všetky': 'Accept all',
  'Uložiť nastavenia': 'Save settings',
  'Cookie súhlas': 'Cookie consent',
  'Používame cookies na analýzu návštevnosti a zlepšenie webu. Pokračovaním súhlasíte s ich používaním.': 'We use cookies to analyze traffic and improve the website. By continuing, you agree to their use.',
  'Odmietnuť': 'Reject',
};

const LEGAL_REVERSE_TRANSLATIONS = Object.fromEntries(
  Object.entries(LEGAL_TRANSLATIONS).map(([sk, en]) => [en, sk])
);

const LEGAL_HEAD_META = {
  cookies: {
    sk: {
      title: 'Zásady cookies - 85runtime',
      description: 'Informácie o cookies používaných na webe 85runtime.sk.',
    },
    en: {
      title: 'Cookie policy - 85runtime',
      description: 'Information about cookies used on the 85runtime.sk website.',
    },
  },
  terms: {
    sk: {
      title: 'Podmienky používania - 85runtime',
      description: 'Podmienky používania webovej stránky 85runtime.sk.',
    },
    en: {
      title: 'Terms of use - 85runtime',
      description: 'Terms of use for the 85runtime.sk website.',
    },
  },
};

function setLegalHeadContent(selector, value) {
  const node = document.querySelector(selector);
  if (node) node.setAttribute('content', value);
}

function applyLegalHeadMeta(language) {
  const page = window.location.pathname.includes('terms-of-use') ? 'terms' : 'cookies';
  const meta = LEGAL_HEAD_META[page][language] || LEGAL_HEAD_META[page].sk;
  document.title = meta.title;
  setLegalHeadContent('meta[name="description"]', meta.description);
}

const LEGAL_TRANSLATION_ATTRS = ['aria-label', 'title'];

function normalizeLegalText(value) {
  return String(value || '').trim().replace(/\s+/g, ' ');
}

function translateLegalValue(value, language) {
  if (!value || !normalizeLegalText(value)) return value;
  const normalized = normalizeLegalText(value);
  const replacement = language === 'en'
    ? LEGAL_TRANSLATIONS[normalized]
    : LEGAL_REVERSE_TRANSLATIONS[normalized];
  if (!replacement) return value;
  const leading = value.match(/^\s*/)?.[0] || '';
  const trailing = value.match(/\s*$/)?.[0] || '';
  return `${leading}${replacement}${trailing}`;
}

function applyLegalTranslations(language, root = document.body) {
  if (!root || typeof document === 'undefined') return;

  const translateAttrs = (element) => {
    LEGAL_TRANSLATION_ATTRS.forEach((attr) => {
      if (!element.hasAttribute?.(attr)) return;
      const current = element.getAttribute(attr);
      const next = translateLegalValue(current, language);
      if (next !== current) element.setAttribute(attr, next);
    });
  };

  if (root.nodeType === Node.ELEMENT_NODE) translateAttrs(root);
  root.querySelectorAll?.('*').forEach(translateAttrs);

  const walker = document.createTreeWalker(root.nodeType === Node.ELEMENT_NODE ? root : document.body, NodeFilter.SHOW_TEXT);
  const nodes = [];
  while (walker.nextNode()) nodes.push(walker.currentNode);
  nodes.forEach((node) => {
    const next = translateLegalValue(node.nodeValue, language);
    if (next !== node.nodeValue) node.nodeValue = next;
  });
}

function useLegalLanguage() {
  const [language, setLanguage] = React.useState(() => {
    try {
      return localStorage.getItem('85runtime:language') || 'sk';
    } catch {
      return 'sk';
    }
  });

  React.useEffect(() => {
    document.documentElement.lang = language;
    applyLegalHeadMeta(language);
    localStorage.setItem('85runtime:language', language);
    window.dispatchEvent(new CustomEvent('85rt:language-change', { detail: { language } }));

    let applying = false;
    const apply = (root = document.body) => {
      if (applying) return;
      applying = true;
      applyLegalTranslations(language, root);
      applying = false;
    };
    apply();

    const observer = new MutationObserver((mutations) => {
      if (applying) return;
      mutations.forEach((mutation) => {
        if (mutation.type === 'characterData') {
          apply(mutation.target.parentElement || document.body);
          return;
        }
        if (mutation.type === 'attributes') {
          apply(mutation.target);
          return;
        }
        mutation.addedNodes.forEach((node) => {
          if (node.nodeType === Node.ELEMENT_NODE) apply(node);
          if (node.nodeType === Node.TEXT_NODE) apply(node.parentElement || document.body);
        });
      });
    });
    observer.observe(document.body, {
      childList: true,
      subtree: true,
      characterData: true,
      attributes: true,
      attributeFilter: LEGAL_TRANSLATION_ATTRS,
    });

    return () => observer.disconnect();
  }, [language]);

  return [language, setLanguage];
}

function LegalLanguageSwitch({ language, setLanguage }) {
  return (
    <div className="language-switch nav-language legal-language-switch" aria-label="Jazyk">
      <button type="button" className={language === 'sk' ? 'active' : ''} onClick={() => setLanguage('sk')}>SK</button>
      <span>/</span>
      <button type="button" className={language === 'en' ? 'active' : ''} onClick={() => setLanguage('en')}>EN</button>
    </div>
  );
}

function LegalLogo() {
  return (
    <a href="/" style={{ display: 'inline-flex', alignItems: 'center', gap: '10px', textDecoration: 'none' }}>
      <svg width="28" height="28" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
        <rect width="40" height="40" rx="10" fill="var(--ink)" />
        <text x="50%" y="54%" dominantBaseline="middle" textAnchor="middle"
          style={{ fontFamily: 'JetBrains Mono, monospace', fontSize: '14px', fontWeight: 700, fill: 'var(--accent-3)', letterSpacing: '-0.04em' }}>
          85
        </text>
      </svg>
      <span style={{ fontFamily: 'JetBrains Mono, monospace', fontSize: '13px', color: 'var(--muted)', letterSpacing: '0.06em' }}>
        85runtime
      </span>
    </a>
  );
}

function LegalNav({ language, setLanguage }) {
  return (
    <nav className="legal-nav">
      <div className="legal-nav-inner">
        <a href="/" className="legal-back">
          <span className="legal-back-arrow">←</span>
          Späť na hlavnú stránku
        </a>
        <div style={{ display: 'flex', alignItems: 'center', gap: '14px' }}>
          <LegalLanguageSwitch language={language} setLanguage={setLanguage} />
          <LegalLogo />
        </div>
      </div>
    </nav>
  );
}

function LegalPageFooter() {
  function openSettings(e) {
    e.preventDefault();
    document.dispatchEvent(new CustomEvent('85rt:open-cookie-settings'));
  }

  return (
    <footer className="legal-footer">
      <div className="legal-footer-inner">
        <span className="legal-footer-copy">© 2026 85runtime s.r.o.</span>
        <nav className="legal-footer-links">
          <a href="/cookie-policy">Zásady cookies</a>
          <a href="/terms-of-use">Podmienky používania</a>
          <button onClick={openSettings}>Nastavenia cookies</button>
        </nav>
      </div>
    </footer>
  );
}

/* ======================================================
   Cookie Policy Page
   ====================================================== */
function CookiePolicyPage() {
  const updated = 'Apríl 2026';
  const [language, setLanguage] = useLegalLanguage();

  return (
    <div className="legal-page">
      <LegalNav language={language} setLanguage={setLanguage} />

      <header className="legal-header">
        <div className="container">
          <span className="legal-label">Právne dokumenty</span>
          <h1>Zásady<br />cookies</h1>
          <p className="legal-header-meta">Aktualizované: {updated}</p>
        </div>
      </header>

      <main className="legal-body">
        <div className="container">
          <div className="legal-body-inner">
            <p className="legal-intro">
              Táto stránka vysvetľuje, aké cookies používame na webe 85runtime.sk, prečo ich používame
              a aké máte možnosti ich kontroly.
            </p>

            <section className="legal-section">
              <div className="legal-section-num">01</div>
              <h2>Čo sú cookies?</h2>
              <p>
                Cookies sú malé textové súbory, ktoré sa ukladajú vo vašom prehliadači pri návšteve webovej stránky.
                Pomáhajú stránke zapamätať si vaše preferencie a zlepšujú váš zážitok z používania.
              </p>
            </section>

            <section className="legal-section">
              <div className="legal-section-num">02</div>
              <h2>Nevyhnutné cookies</h2>
              <p>
                Tieto cookies sú nevyhnutné pre správne fungovanie webu. Zahŕňajú uloženie vašich preferencií
                ohľadom cookies (kľúč: <code>85rt_consent_v1</code>). Bez nich nemôžeme zabezpečiť základnú
                funkčnosť stránky. Tieto cookies nevyžadujú váš súhlas.
              </p>
            </section>

            <section className="legal-section">
              <div className="legal-section-num">03</div>
              <h2>Analytické cookies</h2>
              <p>
                Používame Google Analytics 4 (GA4) na pochopenie toho, ako návštevníci používajú náš web,
                ktoré stránky navštevujú, ako dlho na nich zostávajú a odkiaľ prichádzajú. Tieto údaje nám
                pomáhajú zlepšovať obsah a štruktúru webu. Analytické cookies aktivujeme len s vaším súhlasom.
                Merací kód: G-7DKJS324FT.
              </p>
            </section>

            <section className="legal-section">
              <div className="legal-section-num">04</div>
              <h2>Marketingové cookies</h2>
              <p>
                Marketingové cookies umožňujú personalizovanú reklamu a sledovanie konverzií. Momentálne
                tieto cookies aktívne nepoužívame, no máme pripravenú infraštruktúru pre prípadné budúce
                reklamné kampane. Aktivujú sa len s vaším explicitným súhlasom.
              </p>
            </section>

            <section className="legal-section">
              <div className="legal-section-num">05</div>
              <h2>Správa a odvolanie súhlasu</h2>
              <p>
                Svoj súhlas môžete kedykoľvek zmeniť kliknutím na „Nastavenia cookies" v päte stránky.
                Môžete tiež vymazať cookies priamo v nastaveniach vášho prehliadača. Odvolanie súhlasu
                nemá vplyv na zákonnosť spracovania pred jeho odvolaním.
              </p>
            </section>

            <section className="legal-section">
              <div className="legal-section-num">06</div>
              <h2>Prevádzkovateľ</h2>
              <p>
                85runtime s.r.o., Volgogradská 13, 080 01 Prešov, Slovenská republika.
                Kontakt: info@85runtime.sk
              </p>
            </section>
          </div>
        </div>
      </main>

      <LegalPageFooter />
    </div>
  );
}

/* ======================================================
   Terms of Use Page
   ====================================================== */
function TermsOfUsePage() {
  const updated = 'Apríl 2026';
  const [language, setLanguage] = useLegalLanguage();

  return (
    <div className="legal-page">
      <LegalNav language={language} setLanguage={setLanguage} />

      <header className="legal-header">
        <div className="container">
          <span className="legal-label">Právne dokumenty</span>
          <h1>Podmienky<br />používania</h1>
          <p className="legal-header-meta">Aktualizované: {updated}</p>
        </div>
      </header>

      <main className="legal-body">
        <div className="container">
          <div className="legal-body-inner">
            <p className="legal-intro">
              Tieto podmienky upravujú používanie webovej stránky 85runtime.sk a služieb poskytovaných
              spoločnosťou 85runtime s.r.o.
            </p>

            <section className="legal-section">
              <div className="legal-section-num">01</div>
              <h2>Prevádzkovateľ</h2>
              <p>
                Webovú stránku 85runtime.sk prevádzkuje spoločnosť 85runtime s.r.o., so sídlom
                Volgogradská 13, 080 01 Prešov, Slovenská republika. Kontaktný email: info@85runtime.sk
              </p>
            </section>

            <section className="legal-section">
              <div className="legal-section-num">02</div>
              <h2>Účel stránky</h2>
              <p>
                85runtime.sk je prezentačná stránka štúdia pre vývoj webových stránok, AI agentov a
                automatizácií. Stránka slúži na informovanie o službách a získavanie dopytov od
                potenciálnych klientov.
              </p>
            </section>

            <section className="legal-section">
              <div className="legal-section-num">03</div>
              <h2>Používanie stránky</h2>
              <p>
                Obsah tejto stránky je chránený autorským právom. Akékoľvek kopírovanie, šírenie alebo
                komerčné využitie obsahu bez písomného súhlasu prevádzkovateľa je zakázané. Stránku
                je dovolené používať výhradne na zákonné účely.
              </p>
            </section>

            <section className="legal-section">
              <div className="legal-section-num">04</div>
              <h2>AI asistent a odosielanie dopytov</h2>
              <p>
                Na stránke je k dispozícii AI asistent na predkvalifikáciu dopytov. Informácie, ktoré
                do neho zadáte (meno, email, popis projektu), budú uložené v našom CRM systéme a
                použité výhradne na účely odpovede na váš dopyt. Viac informácií o spracovaní
                osobných údajov nájdete v našich Zásadách ochrany osobných údajov.
              </p>
            </section>

            <section className="legal-section">
              <div className="legal-section-num">05</div>
              <h2>Obmedzenie zodpovednosti</h2>
              <p>
                Prevádzkovateľ nezodpovedá za škody vzniknuté v dôsledku používania alebo nemožnosti
                používania tejto stránky. Obsah stránky má informatívny charakter a nepredstavuje
                záväznú ponuku.
              </p>
            </section>

            <section className="legal-section">
              <div className="legal-section-num">06</div>
              <h2>Rozhodné právo</h2>
              <p>
                Tieto podmienky sa riadia právnym poriadkom Slovenskej republiky. Prípadné spory budú
                riešené pred príslušnými súdmi Slovenskej republiky.
              </p>
            </section>

            <section className="legal-section">
              <div className="legal-section-num">07</div>
              <h2>Zmeny podmienok</h2>
              <p>
                Prevádzkovateľ si vyhradzuje právo tieto podmienky kedykoľvek zmeniť. Aktuálna verzia
                je vždy dostupná na tejto stránke s dátumom poslednej aktualizácie.
              </p>
            </section>
          </div>
        </div>
      </main>

      <LegalPageFooter />
    </div>
  );
}
