// ============================================================
// Left TOC + Right sidebar panels — single-doctype (uznání dluhu)
// ============================================================

const TOC_ITEMS = [
  { id: 'art-1',     num: 'I',   title: 'Uznání dluhu' },
  { id: 'art-2',     num: 'II',  title: 'Splácení dluhu' },
  { id: 'art-3',     num: 'III', title: 'Způsob vrácení dluhu' },
  { id: 'art-4',     num: 'IV',  title: 'Další ujednání', optional: 'c-other-terms' },
  { id: 'art-5',     num: 'V',   title: 'Rozhodčí doložka', optional: 'c-arbitration' },
  { id: 'art-final', num: 'VI',  title: 'Závěrečná ustanovení' },
];

const TOC = ({ active, setActive, optionals }) => (
  <aside className="toc" aria-label="Obsah uznání dluhu">
    <div className="toc-title">Obsah uznání dluhu</div>
    <ol>
      {TOC_ITEMS
        .filter(item => !item.optional || optionals[item.optional])
        .map(item => (
          <li key={item.id}>
            <a
              href={`#${item.id}`}
              className={active === item.id ? 'active' : ''}
              onClick={() => setActive(item.id)}
            >
              <span className="toc-num">čl. {item.num}</span>
              <span>{item.title}</span>
            </a>
          </li>
        ))}
    </ol>
    <div className="toc-divider"></div>
    <div className="toc-meta">
      <div><strong>Poslední aktualizace</strong><br />{new Date().toLocaleDateString('cs-CZ', { day: 'numeric', month: 'numeric', year: 'numeric' })}</div>
      <div><strong>Autor</strong><br />JUDr. Milan Ficek</div>
      <div><strong>Editorial review</strong><br />JUDr. Milan Ficek, ev. č. 50245 ČAK</div>
    </div>
  </aside>
);

window.TOC = TOC;
window.TOC_ITEMS = TOC_ITEMS;


// ---------- Volitelné klauzule (single-doctype) ----------
const OPTIONAL_CLAUSES = [
  {
    id: 'c-other-terms',
    title: 'Další ujednání (čl. IV)',
    sub: 'Volitelný odstavec pro vlastní text — např. zákaz postoupení pohledávky, ručitelství, zástava, smluvní pokuty.',
  },
  {
    id: 'c-arbitration',
    title: 'Rozhodčí doložka (čl. V)',
    sub: 'Spory řeší rozhodce JUDr. Milan Ficek (ČAK 50245). Rychlejší a levnější než soudní řízení; rozhodčí nález je přímo exekučním titulem.',
  },
];

window.OPTIONAL_CLAUSES = OPTIONAL_CLAUSES;


// ---------- Tips advokáta pre každý článok uznání dluhu ----------
// Citácie podľa docs/UZNANIDLUHU_LEGAL.md.
const Tips = ({ activeArticle, optionals, activeTipKey, clearTipKey }) => {
  const TIPS = {
    'art-parties': {
      head: 'Tip advokáta · Smluvní strany',
      body: <>U <strong>právnické osoby</strong> vždy uvádějte osobu oprávněnou jednat za společnost (jednatel, představenstvo) podle aktuálního výpisu z obchodního rejstříku. Při <strong>více dlužnících</strong> doporučujeme zaškrtnout <strong>solidaritu</strong> (§ 1872 NOZ) — věřitel pak může požadovat celý dluh od kteréhokoli dlužníka. Bez solidarity každý dlužník ručí jen za svůj poměrný díl (§ 1869 NOZ).</>,
      cite: '§ 1869, § 1872 NOZ; výpis z OR / živnostenského rejstříku',
    },
    'art-1': {
      head: 'Tip advokáta · čl. I (Uznání dluhu)',
      body: <>Uznání dluhu je <strong>jednostranný písemný úkon</strong> dlužníka — § 2053 NOZ vyžaduje, aby dlužník výslovně uznal dluh <strong>co do důvodu i výše</strong>. Generická věta „uznávám své závazky" účinky uznání nezpůsobuje (NS ČR sp. zn. 33 Cdo 1865/2010). Důsledek: vyvratitelná domněnka trvání dluhu (§ 2054 odst. 1 NOZ) a desetiletá promlčecí lhůta od data uznání (§ 639 NOZ).</>,
      cite: '§ 2053, § 2054, § 639 NOZ; NS ČR sp. zn. 33 Cdo 1865/2010',
    },
    'art-2': {
      head: 'Tip advokáta · čl. II (Splácení dluhu)',
      body: <>Při <strong>splátkách</strong> doporučujeme zachovat ujednání o ztrátě výhody splátek („v případě prodlení s jednou splátkou má věřitel právo požadovat celý dluh") — bez něj platí jen § 1931 NOZ (dispozitivní). <strong>Měsíční splátky</strong> jsou nejčastější formou; stanovte konkrétní den v měsíci (typicky 5., 10. nebo 15.). První splátka by měla být splatná nejdříve 30 dnů po podpisu, aby měl dlužník čas připravit finance.</>,
      cite: '§ 1931 NOZ; § 639 NOZ (promlčení)',
    },
    'art-3': {
      head: 'Tip advokáta · čl. III (Způsob vrácení dluhu)',
      body: <><strong>Převod na účet</strong> je důkazně silnější než hotovost — bankovní výpis je nezpochybnitelný. Při hotovostním splacení doporučujeme <strong>písemné potvrzení</strong> od věřitele o převzetí každé splátky. Místem plnění peněžitého dluhu je <strong>sídlo/bydliště věřitele</strong> (§ 1955 NOZ) — dlužník je povinen přinést peníze věřiteli, ne naopak.</>,
      cite: '§ 1955 NOZ (místo plnění peněžitého dluhu)',
    },
    'art-4': {
      head: 'Tip advokáta · čl. IV (Další ujednání)',
      body: <>Volitelný odstavec pro <strong>vlastní text</strong>. Příklady: zákaz postoupení pohledávky (§ 1881 NOZ), ručitelství třetí osoby (§ 2018 NOZ), zástava nemovitosti, smluvní pokuta nad rámec úroku z prodlení, sjednání úroku z prodlení v zákonné výši (§ 1968 a § 1970 NOZ + nař. vlády č. 351/2013 Sb. — sazba REPO ČNB + 8 procentních bodů).</>,
      cite: '§ 1881, § 2018, § 1968, § 1970 NOZ; nař. vlády č. 351/2013 Sb.',
    },
    'art-5': {
      head: 'Tip advokáta · čl. V (Rozhodčí doložka)',
      body: <>Rozhodce je <strong>určen jménem</strong> (JUDr. Milan Ficek, ev. č. 50245 ČAK) — splňuje § 7 ZRŘ, doložka je platná. Řízení trvá <strong>týdny</strong>, oproti soudnímu sporu <strong>roky</strong>. <strong>Klíčová výhoda:</strong> rozhodčí nález je <strong>přímo exekučním titulem</strong> (§ 28 odst. 2 zák. č. 216/1994 Sb. + § 274 odst. 1 písm. i) o. s. ř.) — věřitel může okamžitě podat návrh na exekuci, bez dalšího nalézacího řízení. Pro <strong>spotřebitelské spory</strong> (§ 419 NOZ) může být doložka neplatná, pokud nebyla individuálně sjednaná (ÚS ČR sp. zn. III. ÚS 1996/13).</>,
      cite: '§ 3, § 7, § 28 zák. č. 216/1994 Sb.; § 274 odst. 1 písm. i) o. s. ř.; ÚS ČR sp. zn. III. ÚS 1996/13',
    },
    'art-final': {
      head: 'Tip advokáta · Závěrečná ustanovení',
      body: <>Uznání dluhu musí být <strong>písemné</strong> (§ 2053 odst. 1 NOZ — kogentní). Doporučujeme <strong>2 stejnopisy</strong> (po jednom pro každou stranu) a <strong>úředně ověřené podpisy</strong> u vyšších částek nebo při anticipovaném sporu. Datum podpisu je rozhodující pro běh <strong>desetileté promlčecí lhůty</strong> podle § 639 NOZ. Pro důkazní účely uchovejte také podací lístek z pošty, pokud uznání zasíláte věřiteli korespondenčně.</>,
      cite: '§ 2053 odst. 1, § 639 NOZ',
    },

    // ===== Bodovo specifické TIPy =====
    '1.1': {
      head: 'Tip advokáta · bod 1.1 (Výše a důvod dluhu)',
      body: <>Uveďte <strong>jednoznačnou identifikaci dluhu</strong>: výši, měnu a <strong>titul vzniku</strong> (např. „zápůjčka peněz dle smlouvy o zápůjčce ze dne 1. 5. 2025", „neuhrazená kupní cena dle faktury č. 2025001 ze dne 14. 6. 2025"). Bez určitého důvodu je uznání neúčinné (NS ČR sp. zn. 33 Cdo 1865/2010). Vyplnění hodnoty „slovem" eliminuje pochybnosti o čtení čísla.</>,
      cite: '§ 2053 NOZ; NS ČR sp. zn. 33 Cdo 1865/2010',
    },
    '1.2': {
      head: 'Tip advokáta · bod 1.2 (Výslovné prohlášení)',
      body: <>Věta „<em>výslovně prohlašuji, že uznávám dluh co do důvodu i výše</em>" je <strong>esenciální</strong>. § 2053 NOZ vyžaduje, aby uznání pokrývalo OBA prvky — důvod (titul) a výši. Bez této formulace nevzniká vyvratitelná domněnka trvání dluhu (§ 2054 odst. 1 NOZ) ani prodloužení promlčecí lhůty (§ 639 NOZ). Nemažte tuto větu z dokumentu.</>,
      cite: '§ 2053 odst. 1, § 2054 odst. 1, § 639 NOZ',
    },
    '2.1': {
      head: 'Tip advokáta · bod 2.1 (Splatnost / forma splácení)',
      body: <>Splatnost <strong>vždy uveďte</strong> — buď konkrétní datum (jednorázově) nebo splátkový kalendář. Pokud splatnost neurčíte, uplatní se obecné pravidlo § 1958 NOZ (dluh je splatný v den, kdy věřitel požádá o plnění) — a začíná běžet promlčecí lhůta. <strong>Určení doby splnění</strong> v uznání má navíc důsledek na běh <strong>desetileté promlčecí lhůty</strong> — podle § 639 věty druhé NOZ se promlčí za 10 let od posledního dne určené doby.</>,
      cite: '§ 1958, § 639 NOZ',
    },
    '2.2': {
      head: 'Tip advokáta · bod 2.2 (Forma splátek)',
      body: <><strong>Měsíční splátky</strong> jsou nejčastější. „Jiné než měsíční" zvolte pro speciální režim (čtvrtletní, sezónní, vázané na příjem). Při vlastním režimu popište přesně, aby bylo splátkování <strong>určité a vymahatelné</strong>.</>,
      cite: '§ 1931 NOZ',
    },
    '2.4': {
      head: 'Tip advokáta · bod 2.4 (Ztráta výhody splátek)',
      body: <>Klauzule „v případě prodlení byť s jednou splátkou věřitel může požadovat celý dluh" je <strong>výslovnou dohodou</strong> stran ve smyslu § 1931 NOZ. Bez této klauzule by věřitel mohl žádat celý dluh až po prodlení s první splátkou (§ 1931 NOZ je dispozitivní), avšak <strong>současně</strong> by musel jednotlivě uplatňovat každou splátku. Jasné ujednání je vždy výhodnější pro vymáhání.</>,
      cite: '§ 1931 NOZ',
    },
    '2.solidarity': {
      head: 'Tip advokáta · Solidární odpovědnost dlužníků',
      body: <>Při více dlužnících je toto ustanovení <strong>klíčové</strong>. Bez něj by každý dlužník odpovídal pouze za <strong>svůj poměrný díl</strong> dluhu (§ 1869 NOZ — pokud podíly nejsou určené, platí rovným dílem). Při <strong>solidární odpovědnosti</strong> („společně a nerozdílně" podle § 1872 NOZ) <strong>každý jeden z dlužníků odpovídá za celý dluh</strong> — věřitel může žádat zaplacení celé částky od kteréhokoli z nich. Ten, kdo zaplatí, má následně regresní právo vůči ostatním (§ 1876 NOZ). Pro věřitele je solidarita <strong>výrazně výhodnější</strong>.</>,
      cite: '§ 1869, § 1872, § 1876 NOZ',
    },
    '3.1': {
      head: 'Tip advokáta · bod 3.1 (Způsob vrácení dluhu)',
      body: <><strong>Převod na účet</strong> je důkazně silnější než hotovost — bankovní výpis je nezpochybnitelný. Při hotovostním splacení doporučujeme <strong>písemné potvrzení</strong> od věřitele o převzetí každé splátky. Místem plnění peněžitého dluhu je <strong>bydliště/sídlo věřitele</strong> (§ 1955 NOZ) — dlužník přináší peníze věřiteli, ne naopak. V případě sporu by věřitel jinak musel dokazovat, zda u dlužníka byl či nikoli — což je v praxi velmi obtížné.</>,
      cite: '§ 1955 NOZ',
    },
    '4.1': {
      head: 'Tip advokáta · bod 4.1 (Další ujednání)',
      body: <>Příklady užitečných ujednání:<br/>• <strong>Smluvní úrok z prodlení</strong> — odkaz na zákonnou výši (§ 1968, § 1970 NOZ + nař. vlády č. 351/2013 Sb.).<br/>• <strong>Smluvní pokuta</strong> za prodlení nad rámec úroku z prodlení (§ 2048 NOZ).<br/>• <strong>Ručitelství</strong> třetí osoby (§ 2018 NOZ).<br/>• <strong>Zákaz postoupení pohledávky</strong> (§ 1881 NOZ).<br/>• <strong>Zástavní právo</strong> k movité věci nebo nemovitosti (§ 1309 a násl. NOZ).</>,
      cite: '§ 1881, § 1968, § 1970, § 2018, § 2048, § 1309 NOZ',
    },
    '5.1': {
      head: 'Tip advokáta · bod 5.1 (Rozhodčí doložka)',
      body: <>Rozhodce je <strong>určen jménem</strong> (JUDr. Milan Ficek, ev. č. 50245 ČAK) — doložka splňuje § 7 ZRŘ a je platná. Řízení trvá <strong>týdny</strong>, soudní spor <strong>roky</strong>. <strong>Klíčová výhoda:</strong> rozhodčí nález je <strong>přímo exekučním titulem</strong> (§ 28 odst. 2 zák. č. 216/1994 Sb. + § 274 odst. 1 písm. i) o. s. ř.). Po nabytí právní moci může věřitel <strong>okamžitě podat návrh na exekuci</strong>. <strong>Pozor:</strong> pro <strong>spotřebitelské spory</strong> (uznání dluhu mezi podnikatelem a spotřebitelem podle § 419 NOZ) může být doložka neplatná (ÚS ČR sp. zn. III. ÚS 1996/13) — je proto lepší ji v takovém případě nepoužívat a obrátit se přímo na advokáta.</>,
      cite: '§ 3, § 7, § 28 zák. č. 216/1994 Sb.; § 274 odst. 1 písm. i) o. s. ř.; § 419 NOZ; ÚS ČR sp. zn. III. ÚS 1996/13',
    },
    'final.2': {
      head: 'Tip advokáta · Forma a doručení',
      body: <>Uznání dluhu musí být <strong>písemné</strong> (§ 2053 odst. 1 NOZ — kogentní ustanovení; ústní uznání je neúčinné). Doporučujeme:<br/>• <strong>Vlastnoruční podpisy</strong> obou stran na všech vyhotoveních.<br/>• Při vyšších částkách <strong>úředně ověřené podpisy</strong> (notář, Czech Point, advokát).<br/>• <strong>Doručení věřiteli</strong> proti potvrzení — vlastní rukou nebo doporučeně.<br/>• Datum podpisu je rozhodující pro běh <strong>desetileté promlčecí lhůty</strong> podle § 639 NOZ.</>,
      cite: '§ 2053 odst. 1, § 639 NOZ',
    },
  };

  // Lookup poradie:
  //  1) activeTipKey (scroll-spy alebo manuálny klik na TIP v margine)
  //  2) activeArticle (default 'art-1' nebo článek při scroll-spy)
  //  3) Fallback: ak ani jedno nemá záznam (napr. 'art-parties'), ukáž 'art-1'
  const tipKey = (activeTipKey && TIPS[activeTipKey]) ? activeTipKey
                : (activeArticle && TIPS[activeArticle]) ? activeArticle
                : 'art-1';
  const tip = TIPS[tipKey];
  if (!tip) return null;
  return (
    <div className="tip-box no-copy">
      <div className="tip-author">
        <div className="tip-author-img">
          <img src="/assets/milan-ficek.jpg" alt="JUDr. Milan Ficek" loading="lazy" decoding="async" />
        </div>
        <div className="tip-author-meta">
          <div className="tip-author-name">JUDr. Milan Ficek</div>
          <div className="tip-author-role">Advokát · ev. č. 50245 ČAK</div>
        </div>
      </div>
      <div className="tip-head">
        <span className="pilcrow">§</span>
        <span>{tip.head}</span>
      </div>
      <p className="tip-body">{tip.body}</p>
      {tip.cite && <div className="tip-cite">Zdroj: {tip.cite}</div>}
    </div>
  );
};


// Bodovo specifické tip kľúče — synchronizované s `pointKey` v Paper.jsx TipBtn.
window.POINT_TIP_KEYS = [
  '1.1', '1.2',
  '2.1', '2.2', '2.4', '2.solidarity',
  '3.1',
  '4.1',
  '5.1',
  'final.2',
];

const RightSidebar = ({ optionals, toggleOptional, activeArticle, activeTipKey, clearTipKey }) => {
  return (
    <aside className="sidebar-r" aria-label="Pomocník a vymáhání pohledávky">
      <Tips activeArticle={activeArticle} optionals={optionals} activeTipKey={activeTipKey} clearTipKey={clearTipKey} />

      {/* Voliteľné klauzule */}
      <div className="panel">
        <div className="panel-head">
          <span>Volitelné klauzule</span>
          <span className="count">{OPTIONAL_CLAUSES.filter(cl => optionals[cl.id]).length}/{OPTIONAL_CLAUSES.length}</span>
        </div>
        {OPTIONAL_CLAUSES.map(cl => (
          <label key={cl.id} className="clause">
            <input
              type="checkbox"
              checked={!!optionals[cl.id]}
              onChange={() => toggleOptional(cl.id)}
            />
            <span className="clause-text">
              <strong>{cl.title}</strong>
              <span>{cl.sub}</span>
            </span>
          </label>
        ))}
      </div>

      {/* Help CTA — vymáhání pohledávky cez rozhodčie konanie (rrcr.cz) */}
      <div className="panel sidebar-help-cta">
        <div className="panel-head"><span>Dlužník Vám neplatí?</span></div>
        <p style={{ margin: '0 0 14px', fontSize: 13, lineHeight: 1.55, color: 'var(--ink-2)' }}>
          Dlužník přestal splácet uznaný dluh? Dejte nám vědět — pomůžeme Vám s vymáháním pohledávky cestou <strong>rozhodčího řízení</strong>. Řízení trvá <strong>týdny</strong>, ne roky, a rozhodčí nález je přímo exekučním titulem.
        </p>
        <a
          href="https://www.rrcr.cz"
          target="_blank"
          rel="noopener noreferrer"
          className="btn btn-oxblood"
          style={{ display: 'block', textAlign: 'center', textDecoration: 'none', padding: '11px 16px', fontSize: 14 }}
        >
          Kontaktovat rozhodce
        </a>
        <p style={{ margin: '10px 0 0', fontSize: 11, color: 'var(--ink-3)', textAlign: 'center', fontStyle: 'italic' }}>
          rrcr.cz · JUDr. Milan Ficek, advokát<br/>ev. č. 50245 ČAK
        </p>
      </div>
    </aside>
  );
};

window.RightSidebar = RightSidebar;
window.Tips = Tips;

// Bottom-sheet modal pre tip — používa sa len na mobiloch (≤768px).
const TipModal = ({ optionals, tipKey, onClose }) => {
  React.useEffect(() => {
    if (!tipKey) return;
    const onKey = (e) => { if (e.key === 'Escape') onClose(); };
    window.addEventListener('keydown', onKey);
    return () => window.removeEventListener('keydown', onKey);
  }, [tipKey, onClose]);

  if (!tipKey) return null;

  return (
    <div className="tip-modal no-copy" role="dialog" aria-modal="true" aria-label="Tip advokáta">
      <div className="tip-modal-overlay" onClick={onClose} />
      <div className="tip-modal-sheet">
        <button type="button" className="tip-modal-close" onClick={onClose} aria-label="Zavřít tip">×</button>
        <Tips activeArticle={null} optionals={optionals} activeTipKey={tipKey} clearTipKey={onClose} />
      </div>
    </div>
  );
};

window.TipModal = TipModal;
