document.addEventListener('DOMContentLoaded', function() { const reveals = document.querySelectorAll('.reveal'); const faqItems = document.querySelectorAll('.faq-item'); const sizeBtns = document.querySelectorAll('.size-btn'); const contrastBtns = document.querySelectorAll('.contrast-btn'); const amountBtns = document.querySelectorAll('.amount-btn'); const customAmount = document.getElementById('custom-amount'); function checkReveal() { const triggerBottom = window.innerHeight * 0.85; reveals.forEach(reveal => { const boxTop = reveal.getBoundingClientRect().top; if (boxTop < triggerBottom) { reveal.classList.add('in'); } }); } window.addEventListener('scroll', checkReveal); checkReveal(); faqItems.forEach(item => { const question = item.querySelector('.faq-question'); question.addEventListener('click', function() { const isExpanded = this.getAttribute('aria-expanded') === 'true'; faqItems.forEach(i => { i.classList.remove('active'); i.querySelector('.faq-question').setAttribute('aria-expanded', 'false'); }); if (!isExpanded) { item.classList.add('active'); this.setAttribute('aria-expanded', 'true'); } }); }); sizeBtns.forEach(btn => { btn.addEventListener('click', function() { sizeBtns.forEach(b => b.classList.remove('active')); this.classList.add('active'); document.body.classList.remove('text-normal', 'text-large', 'text-xlarge'); document.body.classList.add('text-' + this.dataset.size); }); }); contrastBtns.forEach(btn => { btn.addEventListener('click', function() { contrastBtns.forEach(b => b.classList.remove('active')); this.classList.add('active'); document.body.classList.remove('contrast-normal', 'contrast-high'); if (this.dataset.contrast === 'high') { document.body.classList.add('contrast-high'); } }); }); amountBtns.forEach(btn => { btn.addEventListener('click', function() { amountBtns.forEach(b => b.classList.remove('active')); this.classList.add('active'); if (customAmount) customAmount.value = ''; }); }); if (customAmount) { customAmount.addEventListener('input', function() { amountBtns.forEach(b => b.classList.remove('active')); }); } }); function openModal(modalId) { const modal = document.getElementById(modalId); if (modal) { modal.removeAttribute('hidden'); modal.setAttribute('aria-hidden', 'false'); document.body.style.overflow = 'hidden'; const focusable = modal.querySelector('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'); if (focusable) focusable.focus(); modal.addEventListener('keydown', function(e) { if (e.key === 'Escape') { closeModal(modalId); } if (e.key === 'Tab') { const focusableElements = modal.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'); const first = focusableElements[0]; const last = focusableElements[focusableElements.length - 1]; if (e.shiftKey && document.activeElement === first) { e.preventDefault(); last.focus(); } else if (!e.shiftKey && document.activeElement === last) { e.preventDefault(); first.focus(); } } }); } } function closeModal(modalId) { const modal = document.getElementById(modalId); if (modal) { modal.setAttribute('hidden', ''); modal.setAttribute('aria-hidden', 'true'); document.body.style.overflow = ''; } } let currentStep = 1; const totalSteps = 10; function showStep(step) { const steps = document.querySelectorAll('.form-step:not(.result-step)'); steps.forEach((s, index) => { s.classList.remove('active'); if (index === step - 1) { s.classList.add('active'); } }); currentStep = step; } function nextStep(current) { const currentStepEl = document.querySelectorAll('.form-step:not(.result-step)')[current - 1]; const inputs = currentStepEl.querySelectorAll('input[type="radio"], input[type="checkbox"]'); let answered = false; inputs.forEach(input => { if (input.checked) answered = true; }); if (!answered) { alert('Пожалуйста, выберите вариант ответа'); return; } if (current < totalSteps) { showStep(current + 1); } } function prevStep(current) { if (current > 1) { showStep(current - 1); } } function submitTest() { const resultsDiv = document.getElementById('test-results'); const answers = { disability: document.querySelector('input[name="disability"]:checked'), work: document.querySelector('input[name="work"]:checked'), location: document.querySelector('input[name="location"]:checked'), income: document.querySelector('input[name="income"]:checked'), housing: document.querySelector('input[name="housing"]:checked'), tsr: document.querySelectorAll('input[name="tsr"]:checked'), employment: document.querySelector('input[name="employment"]:checked'), children: document.querySelector('input[name="children"]:checked'), legal: document.querySelector('input[name="legal"]:checked'), volunteer: document.querySelector('input[name="volunteer"]:checked') }; let results = []; if (answers.disability && answers.disability.value !== 'none') { results.push({ title: 'Пенсия по инвалидности', desc: 'Положена всем гражданам с инвалидностью. Размер зависит от группы.' }); results.push({ title: 'Ежемесячная выплата (ЕДВ)', desc: 'Дополнительная выплата для отдельных категорий.' }); } if (answers.income && answers.income.value === 'low') { results.push({ title: 'Материальная помощь', desc: 'Единовременная выплата в трудной жизненной ситуации.' }); } if (answers.housing && answers.housing.value === 'yes') { results.push({ title: 'Субсидия на оплату ЖКУ', desc: 'Компенсация до 50% расходов на коммунальные услуги.' }); results.push({ title: 'Программа доступного жилья', desc: 'Постановка в очередь на социальное жильё.' }); } if (answers.tsr && answers.tsr.length > 0) { results.push({ title: 'Технические средства реабилитации', desc: 'Бесплатное получение колясок, протезов и других ТСР.' }); } if (answers.employment && answers.employment.value === 'yes') { results.push({ title: 'Содействие в трудоустройстве', desc: 'Квоты для людей с инвалидностью, программы переобучения.' }); } if (answers.volunteer && answers.volunteer.value !== 'no') { results.push({ title: 'Волонтёрская поддержка', desc: 'Помощь волонтёров в быту, сопровождении, транспорте.' }); } if (answers.children && answers.children.value === 'yes') { results.push({ title: 'Пособие на детей', desc: 'Дополнительные выплаты на детей в семье.' }); } if (answers.legal && answers.legal.value === 'yes') { results.push({ title: 'Юридическая помощь', desc: 'Бесплатные консультации юриста по вопросам инвалидности.' }); } if (results.length === 0) { results.push({ title: 'Обратитесь в центр соцзащиты', desc: 'Специалисты подберут индивидуальную программу поддержки.' }); } resultsDiv.innerHTML = results.map(r => '
' + r.desc + '