function setMode(mode) { const voucherMode = document.getElementById('voucher-mode'); const memberMode = document.getElementById('member-mode'); const infoMode = document.getElementById('info-mode'); const tabs = document.querySelectorAll('.tab-btn'); const loginBtn = document.getElementById('login-btn'); const checkBtn = document.getElementById('check-btn'); const form = document.login; // Reset visibility [voucherMode, memberMode, infoMode, loginBtn, checkBtn].forEach(el => { if (el) el.classList.add('hidden'); }); tabs.forEach(t => t.classList.remove('active')); if (mode === 'voucher') { if (voucherMode) voucherMode.classList.remove('hidden'); if (loginBtn) loginBtn.classList.remove('hidden'); tabs[0].classList.add('active'); if (form) { const code = document.getElementById('voucher-input').value; form.username.value = code; form.password.value = document.getElementById('voucher-pass').value || code; } } else if (mode === 'member') { if (memberMode) memberMode.classList.remove('hidden'); if (loginBtn) loginBtn.classList.remove('hidden'); tabs[1].classList.add('active'); if (form) { form.username.value = document.getElementById('member-user').value; form.password.value = document.getElementById('member-pass').value; } } else if (mode === 'info') { if (infoMode) infoMode.classList.remove('hidden'); if (checkBtn) checkBtn.classList.remove('hidden'); tabs[2].classList.add('active'); } // Update login button text based on mode (only for voucher/member) if (loginBtn && (mode === 'voucher' || mode === 'member')) { const lang = localStorage.getItem('twinpath_lang') || 'en'; const key = mode === 'voucher' ? 'login_voucher' : 'login_member'; loginBtn.setAttribute('data-i18n', key); if (typeof translations !== 'undefined' && translations[lang] && translations[lang][key]) { loginBtn.innerText = translations[lang][key]; } } } function doLogin() { const form = document.login; const mode = document.querySelector('.tab-btn.active').innerText.toLowerCase(); // Sync inputs based on mode if (mode === 'voucher') { const code = document.getElementById('voucher-input').value; form.username.value = code; form.password.value = code; // Voucher usually uses same code for user/pass or just user with empty pass (depends on config) // Note: Check your hotspot config. Often Vouchers are "Username = Password" } else { form.username.value = document.getElementById('member-user').value; form.password.value = document.getElementById('member-pass').value; } // Handle CHAP security if available // Note: This relies on variables injected by TwinpathNet (Mikrotik) into the HTML/JS context // We assume 'hexMD5' is available from md5.js /* TwinpathNet usually puts this logic in the