const varietyCatalog = [ { slug: "ermolovka", name: "Ермоловка", region: "Центральный регион и ЦЧР", maturity: "Среднепоздний", avgYield: "131.4 ц/га", maxYield: "165.7 ц/га", protein: "более 15%", }, { slug: "volodya", name: "Володя", region: "ЦЧР, СКФО и Средневолжье", maturity: "Среднеспелый", avgYield: "108.6 ц/га", maxYield: "122.6 ц/га", protein: "до 18.2%", }, { slug: "df-2020", name: "ДФ 2020", region: "Средневолжье и Урал", maturity: "Среднеранний", avgYield: "118.6 ц/га", maxYield: "124.6 ц/га", protein: "ценная пшеница", }, { slug: "inteza", name: "Интеза", region: "Центральный регион и СКФО", maturity: "Среднеранний", avgYield: "118.5 ц/га", maxYield: "129.1 ц/га", protein: "до 15.9%", }, { slug: "sokrat", name: "Сократ", region: "Центральный регион", maturity: "Среднепоздний", avgYield: "136.2 ц/га", maxYield: "163 ц/га", protein: "рекордная урожайность", }, { slug: "sistema", name: "Система", region: "СКФО", maturity: "Среднеспелый", avgYield: "118.9 ц/га", maxYield: "127.8 ц/га", protein: "более 16%", }, { slug: "izumrud-dubovitskogo", name: "Изумруд Дубовицкого", region: "ЦЧР, Средневолжье и Урал", maturity: "Раннеспелый", avgYield: "109.1 ц/га", maxYield: "115.6 ц/га", protein: "высокие показатели белка", }, ]; function buildFooterSocialLinksMarkup() { return `
`; } function normalizeFooterContacts() { const footer = document.querySelector("footer"); footer?.querySelectorAll(".grid > div:last-child li").forEach((item) => { item.textContent = item.textContent.replace(/^[^+\p{L}\p{N}]+/u, "").trim(); }); } function initFooterSocialLinks() { const footer = document.querySelector("footer"); const footerColumns = footer?.querySelectorAll(".grid > div"); const contactColumn = footerColumns?.[footerColumns.length - 1]; if (!contactColumn || contactColumn.querySelector("[data-footer-socials]")) return; contactColumn.insertAdjacentHTML("beforeend", buildFooterSocialLinksMarkup()); } function fillLeadVarieties(currentSlug) { const group = document.getElementById("lead-variety-group"); if (!group) return; group.innerHTML = ""; varietyCatalog.forEach((item) => { const label = document.createElement("label"); label.className = "lead-checkbox flex items-start gap-2 rounded-lg border border-gray-200 bg-white px-3 py-2"; label.innerHTML = ` ${item.name} `; const checkbox = label.querySelector("input"); if (item.slug === currentSlug) { checkbox.checked = true; } group.appendChild(label); }); } function renderOtherVarieties(currentSlug) { const grid = document.getElementById("other-varieties-grid"); if (!grid) return; const items = varietyCatalog.filter((item) => item.slug !== currentSlug); grid.innerHTML = items .map( (item) => `

${item.name}

Узнать подробнее
` ) .join(""); grid.querySelectorAll("[data-variety]").forEach((button) => { button.addEventListener("click", () => scrollToLeadForm(button.dataset.variety)); }); } function scrollToLeadForm(varietyName) { document.getElementById("mobile-menu")?.classList.add("hidden"); const checkbox = document.querySelector( `input[name="lead-variety"][value="${varietyName}"]` ); if (checkbox) checkbox.checked = true; document.getElementById("lead-form")?.scrollIntoView({ behavior: "smooth", block: "start" }); } function applyPhoneMask(input) { if (!input) return; input.addEventListener("input", (event) => { let digits = event.target.value.replace(/\D/g, ""); if (!digits) { event.target.value = ""; return; } if (digits[0] === "8") digits = "7" + digits.slice(1); if (digits[0] !== "7") digits = "7" + digits; digits = digits.slice(0, 11); let formatted = "+7"; if (digits.length > 1) formatted += " (" + digits.slice(1, 4); if (digits.length >= 4) formatted += ")"; if (digits.length > 4) formatted += " " + digits.slice(4, 7); if (digits.length > 7) formatted += "-" + digits.slice(7, 9); if (digits.length > 9) formatted += "-" + digits.slice(9, 11); event.target.value = formatted; }); input.addEventListener("focus", () => { if (!input.value) input.value = "+7"; }); input.addEventListener("blur", () => { if (input.value === "+7") input.value = ""; }); } async function submitLead(event) { event.preventDefault(); const company = document.getElementById("lead-company").value.trim(); const name = document.getElementById("lead-name").value.trim(); const phone = document.getElementById("lead-phone").value.trim(); const checkedVarieties = [ ...document.querySelectorAll('input[name="lead-variety"]:checked'), ].map((checkbox) => checkbox.value); const variety = checkedVarieties.length > 0 ? checkedVarieties.join(", ") : "не указан"; const pack = document.getElementById("lead-package").value; const volume = document.getElementById("lead-volume").value; const out = document.getElementById("lead-result"); const btn = document.querySelector('#lead-form button[type="submit"]'); const phoneDigits = phone.replace(/\D/g, ""); if (phoneDigits.length !== 11 || !phoneDigits.startsWith("7")) { out.className = "mt-4 p-3 rounded bg-red-50 border border-red-200 text-sm text-red-800"; out.textContent = "Введите корректный номер телефона в формате +7 (XXX) XXX-XX-XX"; out.classList.remove("hidden"); return; } btn.disabled = true; btn.textContent = "Отправляем…"; out.classList.add("hidden"); const params = new URLSearchParams({ "fields[TITLE]": `Заявка с озимая.рф — ${company}`, "fields[NAME]": name, "fields[COMPANY_TITLE]": company, "fields[PHONE][0][VALUE]": phone, "fields[PHONE][0][VALUE_TYPE]": "WORK", "fields[COMMENTS]": `Сорта: ${variety}\nПакет: ${pack}\nПлощадь посева: ${volume} га`, "fields[SOURCE_ID]": "WEB", "fields[SOURCE_DESCRIPTION]": "Форма на сайте озимая.рф", }); try { const response = await fetch("/api/lead", { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: params.toString(), }); const json = await response.json(); if (!json.result) { throw new Error(JSON.stringify(json)); } out.className = "mt-4 p-3 rounded bg-green-50 border border-green-200 text-sm text-green-800"; out.textContent = `Заявка принята. Мы свяжемся с вами в ближайшее время. (${company}, ${volume} га)`; document.getElementById("lead-form").reset(); fillLeadVarieties(document.body.dataset.varietySlug); } catch (error) { out.className = "mt-4 p-3 rounded bg-red-50 border border-red-200 text-sm text-red-800"; out.innerHTML = 'Не удалось отправить заявку. Позвоните нам напрямую: +7 (495) 745-05-51 или попробуйте позже.'; console.error("Bitrix24 lead error:", error); } finally { out.classList.remove("hidden"); btn.disabled = false; btn.textContent = "Отправить заявку"; } } document.addEventListener("DOMContentLoaded", () => { const currentSlug = document.body.dataset.varietySlug; fillLeadVarieties(currentSlug); renderOtherVarieties(currentSlug); normalizeFooterContacts(); initFooterSocialLinks(); const mobileMenuButton = document.getElementById("mobile-menu-btn"); const mobileMenu = document.getElementById("mobile-menu"); if (mobileMenuButton && mobileMenu) { mobileMenuButton.addEventListener("click", () => { mobileMenu.classList.toggle("hidden"); }); mobileMenu.querySelectorAll("a, button").forEach((item) => { item.addEventListener("click", () => mobileMenu.classList.add("hidden")); }); } document.querySelectorAll("[data-scroll-target]").forEach((button) => { button.addEventListener("click", () => { mobileMenu?.classList.add("hidden"); const target = document.querySelector(button.dataset.scrollTarget); if (target) { target.scrollIntoView({ behavior: "smooth", block: "start" }); } }); }); document.querySelectorAll("[data-variety]").forEach((button) => { button.addEventListener("click", () => scrollToLeadForm(button.dataset.variety)); }); document.getElementById("lead-form")?.addEventListener("submit", submitLead); applyPhoneMask(document.getElementById("lead-phone")); });