// Пригласительный: обратный отсчёт + форма RSVP (отправляет в /api/rsvp) const WEDDING_DATE = new Date("2026-11-01T16:00:00"); const cd = document.getElementById("countdown"); if (cd) { function tick() { const diff = WEDDING_DATE - new Date(); if (diff <= 0) { cd.innerHTML = 'Сегодня наш день!'; return; } const d = Math.floor(diff / 86400000); const h = Math.floor(diff / 3600000) % 24; const m = Math.floor(diff / 60000) % 60; const s = Math.floor(diff / 1000) % 60; cd.innerHTML = cell(d, "дней") + cell(h, "часов") + cell(m, "минут") + cell(s, "секунд"); } function cell(n, lab) { return '
' + n + "
" + lab + "
"; } tick(); setInterval(tick, 1000); } const form = document.getElementById("rsvp-form"); const msg = document.getElementById("rsvp-msg"); if (form) { form.addEventListener("submit", async function (e) { e.preventDefault(); msg.textContent = "Отправляю…"; try { const body = Object.fromEntries(new FormData(form).entries()); const res = await fetch("api/rsvp", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(body), }); if (!res.ok) throw new Error("server " + res.status); const attendance = form.attendance.value; msg.textContent = attendance === "yes" ? "Спасибо! До встречи 1 ноября." : "Спасибо, что сообщили. Мы вас поздравим на расстоянии."; form.reset(); } catch (err) { msg.textContent = "Не получилось отправить. Попробуйте ещё раз или напишите организатору напрямую."; } }); }