const loginForm = document.getElementById('login-form'); const useridInput = document.getElementById('userid'); const passwordInput = document.getElementById('password'); const errorMessageDiv = document.getElementById('login-error-message'); const successMessageDiv = document.getElementById('login-success-message'); const submitButton = loginForm.querySelector('.login-submit-btn'); const togglePassword = document.querySelector('.toggle-password'); if (togglePassword && passwordInput) { togglePassword.addEventListener('click', function () { const type = passwordInput.getAttribute('type') === 'password' ? 'text' : 'password'; passwordInput.setAttribute('type', type); const icon = this.querySelector('i'); icon.classList.toggle('fa-eye'); icon.classList.toggle('fa-eye-slash'); }); } document.getElementById('current-year').textContent = new Date().getFullYear(); if (loginForm) { loginForm.addEventListener('submit', function(e) { e.preventDefault(); const userid = useridInput.value.trim(); const password = passwordInput.value; if (!userid || !password) { errorMessageDiv.textContent = 'User ID dan password tidak boleh kosong.'; errorMessageDiv.style.display = 'flex'; successMessageDiv.style.display = 'none'; return; } submitButton.disabled = true; submitButton.innerHTML = ' Sedang memproses...'; errorMessageDiv.style.display = 'none'; successMessageDiv.style.display = 'none'; const formData = new FormData(); formData.append('userid', userid); formData.append('password', password); fetch('api/user_login', { method: 'POST', body: formData }) .then(response => { if (!response.ok) { return response.json().catch(() => { throw new Error(`Error ${response.status}: ${response.statusText}`); }); } return response.json(); }) .then(data => { if (data.status === 'success') { successMessageDiv.textContent = data.message || 'Login berhasil!'; successMessageDiv.style.display = 'flex'; errorMessageDiv.style.display = 'none'; setTimeout(() => { window.location.href = 'dashboard/'; }, 1500); } else { errorMessageDiv.textContent = data.message || 'Terjadi kesalahan saat login.'; errorMessageDiv.style.display = 'flex'; successMessageDiv.style.display = 'none'; submitButton.disabled = false; submitButton.innerHTML = ' Login'; } }) .catch(error => { console.error('Login Fetch Error:', error); errorMessageDiv.textContent = error.message || 'Tidak dapat terhubung ke server. Coba lagi nanti.'; errorMessageDiv.style.display = 'flex'; successMessageDiv.style.display = 'none'; submitButton.disabled = false; submitButton.innerHTML = ' Login'; }); }); }