(function () { 'use strict'; var PRIVACY_URL = 'https://sprut61.ru/политика-конфиденциальности/'; var CONSENT_URL = 'https://sprut61.ru/согласие-на-обработку-персональных-д/'; var OFFER_URL = 'https://sprut61.ru/оферта/'; var BOOKING_URL = 'https://sprut61.ru/besplatnaya-diagnostika/'; var ENDPOINT = '/wp-json/sprut/v1/ceiling-lead'; var METRIKA_ID = 108703490; var questions = [ { text: 'Насколько вы уверены в своих силах, когда речь заходит о повышении цен на ваши услуги?', options: [ { score: 1, text: 'Совсем не уверен(а), боюсь потерять всех клиентов' }, { score: 2, text: 'Колеблюсь, думаю об этом, но не решаюсь' }, { score: 3, text: 'Уверенно повышаю цены по мере роста своей экспертизы' }, ], }, { text: 'Сколько времени в неделю у вас уходит на создание контента для соцсетей (посты, сторис, видео)?', options: [ { score: 1, text: 'Более 5 часов. Это съедает почти весь свободный день' }, { score: 2, text: 'Примерно 2–4 часа. Успеваю, но это ощутимая нагрузка' }, { score: 3, text: 'До 2 часов. У меня есть система/помощник, и это не проблема' }, ], }, { text: 'Как вы себя чувствуете в конце типичной рабочей недели?', options: [ { score: 1, text: 'Полностью выжатый(ая) лимон, нет сил даже на личную жизнь' }, { score: 2, text: 'Усталый(ая), но manageable. Понимаю, что так работать нельзя' }, { score: 3, text: 'Энергичный(ая), в ресурсе. Работа меня питает' }, ], }, { text: 'Насколько стабилен ваш поток клиентов?', options: [ { score: 1, text: 'Полный хаос. Месяц завален работой, следующий — пустой' }, { score: 2, text: 'Есть постоянные клиенты, но постоянно нужно искать новых, чтобы закрывать дыры', }, { score: 3, text: 'Стабильный поток, есть очередь. Я практически не ищу клиентов' }, ], }, { text: "Что для вас значит «продвижение своих услуг»?", options: [ { score: 1, text: "Это что-то неэтичное, «прямые продажи», мне это неприятно" }, { score: 2, text: 'Нужно делать, но я не знаю как. Делаю что-то от случая к случаю' }, { score: 3, text: 'Это системная работа по донесению ценности, у меня есть чёткий план' }, ], }, ]; var results = { burned: { min: 5, max: 8, title: 'Ловушка выжатого эксперта', body: 'Вы находитесь в самой опасной зоне. Ваша высокая экспертность и желание помочь всем приводят к тотальному выгоранию и финансовому тупику. Вы работаете больше всех, но зарабатываете меньше, чем могли бы. Система «Спрут» была создана специально для психологов в вашей ситуации — чтобы взять на себя 80% рутинной работы по контенту и освободить ваше время и силы для клиентов и достойной оплаты вашего труда.', next: 'Запишитесь на экспресс-сессию «Антивыгорание». За 20 минут мы определим 3 задачи, которые нужно автоматизировать в первую очередь, чтобы вы вздохнули свободнее уже на этой неделе.', }, freelancer: { min: 9, max: 12, title: 'Ловушка фрилансера', body: 'Вы хороший специалист, но застряли в ситуации, когда обмениваете своё время на деньги. Ваш доход напрямую зависит от количества отработанных часов, и есть чёткий потолок, который вы не можете преодолеть. Вы чувствуете, что можете больше, но не знаете, как «масштабироваться», не работая 24/7. Проблема не в вас, а в отсутствии системы, которая будет работать на вас, пока вы спите.', next: 'Запишитесь на стратегическую сессию «Точка роста». Мы проанализируем, куда «утекают» деньги в вашей практике и как с помощью автоматизации контента создать дополнительный пассивный или активный доход.', }, breakthrough: { min: 13, max: 15, title: 'На пороге прорыва', body: 'Поздравляю! У вас уже есть много системных элементов, и вы чувствуете себя уверенно. Но вы чувствуете и «стеклянный потолок», который не можете пробить. Вы понимаете, что для следующего рывка в доходах нужна не просто работа, а умные технологии. Вам нужно не выживать, а расти. И здесь автоматизация — не спасение, а ускоритель.', next: 'Запишитесь на сессию «Ускоритель роста». Мы не будем решать старые проблемы — мы спроектируем вашу будущую систему доходов на 6–12 месяцев вперёд и посмотрим, как «Спрут» может стать её основой.', }, }; var CTA_HINT = 'Это не продажа. Это 20 минут моего времени, чтобы помочь вам увидеть свою ситуацию со стороны и наметить конкретный план действий. Если мы поймём, что вам нужна моя система — отлично. Если нет — вы всё равно уйдёте с чётким пониманием того, куда двигаться дальше.'; var state = { index: 0, scores: [], total: 0, resultKey: '', advancing: false, }; function esc(s) { var d = document.createElement('div'); d.textContent = s == null ? '' : String(s); return d.innerHTML; } function goal(name) { try { if (typeof ym === 'function') ym(METRIKA_ID, 'reachGoal', name); } catch (e) {} } function $(sel, root) { return (root || document).querySelector(sel); } function showScreen(name) { var root = $('#scq-root'); if (!root) return; root.querySelectorAll('.scq-screen').forEach(function (el) { el.classList.toggle('is-active', el.getAttribute('data-screen') === name); }); } function getResult(total) { if (total <= 8) return { key: 'burned', data: results.burned }; if (total <= 12) return { key: 'freelancer', data: results.freelancer }; return { key: 'breakthrough', data: results.breakthrough }; } function renderQuestion() { var q = questions[state.index]; var wrap = $('#scq-question'); var fill = $('#scq-progress-fill'); var label = $('#scq-progress-label'); var pctLabel = $('#scq-progress-pct'); if (!wrap || !q) return; var pct = (state.index / questions.length) * 100; if (fill) fill.style.width = pct + '%'; if (label) label.textContent = 'Вопрос ' + (state.index + 1) + ' из ' + questions.length; if (pctLabel) pctLabel.textContent = Math.round(pct) + '%'; var opts = q.options .map(function (opt, i) { return ( '' ); }) .join(''); wrap.innerHTML = '
' + '
' + esc(q.text) + '
' + '
' + opts + '
'; } function selectOption(optionIndex) { if (state.advancing) return; var q = questions[state.index]; if (!q || !q.options[optionIndex]) return; var buttons = document.querySelectorAll('#scq-question .scq-option'); buttons.forEach(function (btn, i) { btn.classList.toggle('is-selected', i === optionIndex); }); state.advancing = true; state.scores[state.index] = q.options[optionIndex].score; setTimeout(function () { state.index += 1; if (state.index < questions.length) { state.advancing = false; renderQuestion(); } else { runLoading(); } }, 320); } function runLoading() { showScreen('loading'); var fill = $('#scq-analysis-fill'); var label = $('#scq-analysis-label'); var steps = [ { p: 25, t: 'Считаю ваши ответы…', d: 280 }, { p: 52, t: 'Ищу скрытую ловушку…', d: 560 }, { p: 78, t: 'Формирую рекомендацию…', d: 900 }, { p: 100, t: 'Готово', d: 1200 }, ]; if (fill) fill.style.width = '0%'; var t = 0; steps.forEach(function (s) { t += s.d; setTimeout(function () { if (fill) fill.style.width = s.p + '%'; if (label) label.textContent = s.t; }, t); }); setTimeout(showResult, t + 380); } function showResult() { state.total = state.scores.reduce(function (a, b) { return a + (b || 0); }, 0); var packed = getResult(state.total); state.resultKey = packed.key; var data = packed.data; var fill = $('#scq-progress-fill'); if (fill) fill.style.width = '100%'; var box = $('#scq-result-content'); if (!box) return; box.innerHTML = '
' + '
' + '
Ваш результат
' + '

' + esc(data.title) + '

' + '

Сумма баллов: ' + state.total + ' из 15

' + '
' + '
' + '

' + esc(data.body) + '

' + '
Ваш следующий шаг

' + esc(data.next) + '

' + '
' + '' + '

' + esc(CTA_HINT) + '

' + '
'; showScreen('result'); goal('ceiling_quiz_result'); state.advancing = false; var openBtn = $('#scq-open-lead'); if (openBtn) { openBtn.addEventListener('click', function () { openLeadModal(); }); } } function openLeadModal() { var modal = $('#scq-lead-modal'); if (!modal) return; modal.classList.add('is-open'); modal.setAttribute('aria-hidden', 'false'); document.body.classList.add('scq-modal-open'); goal('ceiling_quiz_cta_click'); var nameInput = $('#scq-name'); if (nameInput) setTimeout(function () { nameInput.focus(); }, 80); } function closeLeadModal() { var modal = $('#scq-lead-modal'); if (!modal) return; modal.classList.remove('is-open'); modal.setAttribute('aria-hidden', 'true'); document.body.classList.remove('scq-modal-open'); } function normalizePhone(v) { var d = String(v || '').replace(/\D+/g, ''); if (d.length === 11 && d[0] === '8') d = '7' + d.slice(1); if (d.length === 10) d = '7' + d; return d; } function showFormMsg(text, ok) { var msg = $('#scq-form-msg'); if (!msg) return; msg.textContent = text; msg.className = 'scq-form-msg ' + (ok ? 'is-ok' : 'is-err'); } function submitLead(e) { e.preventDefault(); var form = e.target; var name = (form.querySelector('[name=name]') || {}).value || ''; var phone = normalizePhone((form.querySelector('[name=phone]') || {}).value || ''); var time = (form.querySelector('[name=time]') || {}).value || ''; var personal = !!(form.querySelector('[name=consent_personal]') || {}).checked; var privacy = !!(form.querySelector('[name=consent_privacy]') || {}).checked; var btn = form.querySelector('[type=submit]'); name = String(name).trim(); time = String(time).trim(); if (name.length < 2) { showFormMsg('Укажите имя.', false); return; } if (!/^7\d{10}$/.test(phone)) { showFormMsg('Введите телефон в формате +7 XXX XXX-XX-XX.', false); return; } if (!time) { showFormMsg('Укажите удобное время для звонка.', false); return; } if (!personal || !privacy) { showFormMsg('Отметьте обязательные согласия.', false); return; } var resultData = getResult(state.total).data; if (btn) btn.disabled = true; showFormMsg('Отправляем заявку…', true); fetch(ENDPOINT, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ name: name, phone: phone, time: time, result: resultData.title, score: state.total, source: location.href, consents: { personal: personal, privacy: privacy }, }), }) .then(function (r) { return r.json().then(function (j) { return { ok: r.ok, j: j }; }); }) .then(function (res) { if (res.ok && res.j && res.j.ok) { showFormMsg(res.j.message || 'Заявка отправлена. Мы свяжемся с вами.', true); goal('ceiling_quiz_lead_sent'); form.reset(); setTimeout(function () { closeLeadModal(); window.location.href = BOOKING_URL + '?from=ceiling-quiz&score=' + state.total; }, 1400); } else { showFormMsg( (res.j && res.j.message) || 'Не удалось отправить. Попробуйте ещё раз.', false ); } }) .catch(function () { showFormMsg('Сеть недоступна. Попробуйте позже или напишите в мессенджер.', false); }) .finally(function () { if (btn) btn.disabled = false; }); } function startQuiz() { state.index = 0; state.scores = []; state.total = 0; state.resultKey = ''; state.advancing = false; showScreen('quiz'); renderQuestion(); goal('ceiling_quiz_start'); } function bind() { var root = $('#scq-root'); if (!root || root.dataset.scqBound === '1') return; root.dataset.scqBound = '1'; var startBtn = $('#scq-start'); if (startBtn) startBtn.addEventListener('click', startQuiz); root.addEventListener('click', function (e) { var opt = e.target.closest('.scq-option'); if (opt && root.contains(opt)) { e.preventDefault(); var idx = parseInt(opt.getAttribute('data-option'), 10); if (!isNaN(idx)) selectOption(idx); } }); var modal = $('#scq-lead-modal'); if (modal) { var backdrop = modal.querySelector('.scq-modal-backdrop'); var closeBtn = modal.querySelector('.scq-modal-close'); if (backdrop) backdrop.addEventListener('click', closeLeadModal); if (closeBtn) closeBtn.addEventListener('click', closeLeadModal); } document.addEventListener('keydown', function (e) { if (e.key === 'Escape') closeLeadModal(); }); var form = $('#scq-lead-form'); if (form) form.addEventListener('submit', submitLead); showScreen('cover'); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', bind); } else { bind(); } })();