(function() {
'use strict';
let captchaSolved = false;
let activeForm = null;
let activeButton = null;
// SVG иконки (эндокринология)
const icons = {
'thyroid': `
`,
'insulin': `
`,
'glucose': `
`,
'hormones': `
`
};
const figures = [
{ id: 'thyroid', svg: icons.thyroid, name: 'Щитовидная железа' },
{ id: 'insulin', svg: icons.insulin, name: 'Инсулин' },
{ id: 'glucose', svg: icons.glucose, name: 'Глюкометр' },
{ id: 'hormones', svg: icons.hormones, name: 'Гормоны' }
];
// Создаём HTML капчи (скрытой)
const captchaHTML = `
Проверка безопасности
Выберите изображение, связанное с эндокринологией:
`;
// Добавляем HTML на страницу
document.body.insertAdjacentHTML('beforeend', captchaHTML);
const captchaDiv = document.getElementById('endocaptcha');
const optionsDiv = document.getElementById('captchaOptions');
const messageDiv = document.getElementById('captchaMessage');
let currentForm = null;
let currentButton = null;
let currentTargetId = null;
function shuffleArray(arr) {
for (let i = arr.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[arr[i], arr[j]] = [arr[j], arr[i]];
}
return arr;
}
function showCaptcha(form, button) {
currentForm = form;
currentButton = button;
// Выбираем случайную целевую фигуру
const shuffled = shuffleArray([...figures]);
const target = shuffled[0];
const options = shuffled.slice(0, 3);
currentTargetId = target.id;
// Создаём кнопки
optionsDiv.innerHTML = '';
options.forEach(opt => {
const btn = document.createElement('button');
btn.innerHTML = opt.svg;
btn.style.cssText = `
background: #f0f0f0;
border: 2px solid #ddd;
border-radius: 12px;
padding: 20px;
cursor: pointer;
transition: all 0.2s;
color: #666;
`;
btn.onmouseenter = () => { btn.style.background = '#e0e0e0'; btn.style.transform = 'scale(1.02)'; };
btn.onmouseleave = () => { btn.style.background = '#f0f0f0'; btn.style.transform = 'scale(1)'; };
btn.onclick = () => checkAnswer(opt.id, btn);
optionsDiv.appendChild(btn);
});
captchaDiv.style.display = 'flex';
}
function checkAnswer(selectedId, btnElement) {
if (selectedId === currentTargetId) {
// Правильно
messageDiv.innerHTML = '
✓ Правильно! Отправляем форму...';
captchaSolved = true;
// Сохраняем в sessionStorage
try {
sessionStorage.setItem('endocaptcha_solved', 'true');
} catch(e) {}
setTimeout(() => {
captchaDiv.style.display = 'none';
messageDiv.innerHTML = '';
// Отправляем форму
if (currentButton) {
currentButton.click();
}
}, 1000);
} else {
// Неправильно
messageDiv.innerHTML = '
✗ Неправильно. Попробуйте ещё раз.';
btnElement.style.background = '#ffebee';
btnElement.style.borderColor = '#f44336';
setTimeout(() => {
btnElement.style.background = '#f0f0f0';
btnElement.style.borderColor = '#ddd';
messageDiv.innerHTML = '';
}, 1500);
}
}
// Проверяем, была ли уже решена капча в этой сессии
try {
if (sessionStorage.getItem('endocaptcha_solved') === 'true') {
captchaSolved = true;
}
} catch(e) {}
// Перехватываем клики по кнопкам отправки формы Tilda
document.addEventListener('click', function(event) {
// Ищем кнопку отправки (разные варианты селекторов Tilda)
const submitBtn = event.target.closest('button[type="submit"], .t-submit, input[type="submit"], button:has(> .t-submit)');
if (submitBtn && !captchaSolved) {
const form = submitBtn.closest('form');
if (form) {
event.preventDefault();
event.stopPropagation();
showCaptcha(form, submitBtn);
}
}
}, true);
// Также перехватываем submit события
document.addEventListener('submit', function(event) {
const form = event.target;
const submitBtn = form.querySelector('button[type="submit"], .t-submit, input[type="submit"]');
if (submitBtn && !captchaSolved) {
event.preventDefault();
event.stopPropagation();
showCaptcha(form, submitBtn);
}
}, true);
console.log('Эндокринологическая капча загружена');
})();