document.getElementById('uploadProfilePhotoForm').addEventListener('submit', async function(e) {
    e.preventDefault();
    const form = e.target;
    const formData = new FormData(form);
    const messageDiv = document.getElementById('photoUploadMessage');
    const profileImg = document.querySelector('section img'); // Ambil elemen img profil

    messageDiv.textContent = ''; // Clear previous messages

    try {
        const response = await fetch('upload_profile_photo.php', {
            method: 'POST',
            body: formData,
        });

        const data = await response.json();

        if (data.success) {
            messageDiv.textContent = 'Foto profil berhasil diperbarui!';
            messageDiv.classList.remove('text-red-500');
            messageDiv.classList.add('text-green-600');
            // Perbarui src gambar profil tanpa reload halaman
            profileImg.src = data.new_photo_url + '?' + new Date().getTime(); // Tambah timestamp untuk force refresh cache
            setTimeout(closeModal, 1500); // Tutup modal setelah sukses
        } else {
            messageDiv.textContent = data.message || 'Gagal mengunggah foto profil.';
            messageDiv.classList.remove('text-green-600');
            messageDiv.classList.add('text-red-500');
        }
    } catch (error) {
        console.error('Error:', error);
        messageDiv.textContent = 'Terjadi kesalahan jaringan atau server.';
        messageDiv.classList.remove('text-green-600');
        messageDiv.classList.add('text-red-500');
    }
});

document.getElementById('changePasswordForm').addEventListener('submit', async function(e) {
    e.preventDefault();
    const form = e.target;
    const messageDiv = document.getElementById('passwordMessage');
    messageDiv.textContent = '';

    const oldPassword = form.old_password.value;
    const newPassword = form.new_password.value;
    const confirmPassword = form.confirm_password.value;

    if (newPassword !== confirmPassword) {
        messageDiv.textContent = 'Kata sandi baru dan konfirmasi tidak cocok.';
        return;
    }
    if (newPassword.length < 6) { // Contoh minimal 6 karakter
        messageDiv.textContent = 'Kata sandi baru minimal 6 karakter.';
        return;
    }

    try {
        const response = await fetch('change_password.php', {
            method: 'POST',
            headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
            body: new URLSearchParams({
                old_password: oldPassword,
                new_password: newPassword
            })
        });
        const data = await response.json();

        if (data.success) {
            messageDiv.textContent = data.message;
            messageDiv.classList.remove('text-red-500');
            messageDiv.classList.add('text-green-600');
            form.reset(); // Bersihkan form
            setTimeout(closeModal, 1500);
        } else {
            messageDiv.textContent = data.message || 'Gagal mengganti kata sandi.';
            messageDiv.classList.remove('text-green-600');
            messageDiv.classList.add('text-red-500');
        }
    } catch (error) {
        console.error('Error:', error);
        messageDiv.textContent = 'Terjadi kesalahan jaringan atau server.';
    }
});

// Fungsi untuk memuat status awal toggle
async function loadTrackingSettings() {
    try {
        const response = await fetch('get_tracking_settings.php'); // Buat file ini
        const data = await response.json();
        if (data.success) {
            document.getElementById('trackMessageToggle').checked = data.lacak_pesan == 1;
            document.getElementById('trackLocationToggle').checked = data.lacak_lokasi == 1;
            updateToggleText('trackMessageToggle', 'messageStatusText');
            updateToggleText('trackLocationToggle', 'locationStatusText');
        } else {
            console.error('Gagal memuat pengaturan pelacakan:', data.message);
        }
    } catch (error) {
        console.error('Error memuat pengaturan pelacakan:', error);
    }
}

// Fungsi pembantu untuk update teks toggle
function updateToggleText(toggleId, textId) {
    const toggle = document.getElementById(toggleId);
    const textElement = document.getElementById(textId);
    textElement.textContent = toggle.checked ? 'Aktif' : 'Nonaktif';
}

// Fungsi untuk memperbarui pengaturan pelacakan
async function updateTrackingSetting(settingName, isChecked) {
    const status = isChecked ? 1 : 0;
    const messageDivId = settingName === 'lacak_pesan' ? 'messageTrackingMessage' : 'locationTrackingMessage';
    const messageDiv = document.getElementById(messageDivId);
    messageDiv.textContent = ''; // Clear previous message
    messageDiv.classList.remove('text-red-500', 'text-green-600');

    try {
        const response = await fetch('update_tracking_settings.php', {
            method: 'POST',
            headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
            body: new URLSearchParams({
                setting: settingName,
                status: status
            })
        });
        const data = await response.json();

        if (data.success) {
            messageDiv.textContent = 'Pengaturan berhasil diperbarui.';
            messageDiv.classList.add('text-green-600');
            updateToggleText(settingName === 'lacak_pesan' ? 'trackMessageToggle' : 'trackLocationToggle', settingName === 'lacak_pesan' ? 'messageStatusText' : 'locationStatusText');
        } else {
            messageDiv.textContent = data.message || 'Gagal memperbarui pengaturan.';
            messageDiv.classList.add('text-red-500');
        }
    } catch (error) {
        console.error('Error:', error);
        messageDiv.textContent = 'Terjadi kesalahan jaringan atau server.';
        messageDiv.classList.add('text-red-500');
    }
}

// Panggil saat modal pelacakan pesan/lokasi dibuka untuk memuat status awal
document.addEventListener('DOMContentLoaded', () => {
    // Memuat pengaturan saat halaman dimuat (atau bisa juga saat modal dibuka)
    loadTrackingSettings();
});


function toggleSection(id, iconId) {
    const section = document.getElementById(id);
    const icon = document.getElementById(iconId);
    section.classList.toggle('hidden');
    icon.classList.toggle('rotate-90');
}

function openModal(contentId) {
    const modal = document.getElementById('modal');
    const allContents = document.querySelectorAll('.modal-content');
    allContents.forEach(c => c.classList.add('hidden'));
    document.getElementById(contentId).classList.remove('hidden');
    modal.classList.remove('hidden');
}

function closeModal() {
    document.getElementById('modal').classList.add('hidden');
}

function openCardModal() {
    document.getElementById('atmModal').classList.add('active');
}

function closeCardModal() {
    const atmModal = document.getElementById('atmModal');
    atmModal.classList.remove('active');
    // Reset kartu ke posisi depan
    const atmCard = document.getElementById('atmCard');
    atmCard.classList.remove('flipped');
}

// ... (Kode JS sebelumnya) ...
const atmModal = document.getElementById('atmModal');
const atmCard = document.getElementById('atmCard');
const flipSound = document.getElementById('flipSound');

// Buka modal kartu saat tombol "Tampilkan Kartu Pelajar Virtual" diklik
if (document.querySelector('button[onclick="openCardModal()"]')) {
    document.querySelector('button[onclick="openCardModal()"]').addEventListener('click', () => {
        atmModal.classList.add('active');
    });
}

// Tutup modal jika klik di luar kartu
if (atmModal) {
    atmModal.addEventListener('click', (e) => {
        if (e.target === atmModal) {
            closeCardModal();
        }
    });
}

// Flip kartu saat diklik + mainkan suara
if (atmCard) {
    atmCard.addEventListener('click', () => {
        atmCard.classList.toggle('flipped');
        // Pastikan flipSound ada sebelum mencoba memainkannya
        if (flipSound) {
             flipSound.currentTime = 0;
             flipSound.play();
        }
    });
}


let currentAction = ''; // 'lokasi' atau 'pesan'

function openParentPasswordModal(action) {
    currentAction = action;
    document.getElementById('parentPasswordModal').style.display = 'flex';
}

function closeParentPasswordModal() {
    document.getElementById('parentPasswordModal').style.display = 'none';
    document.getElementById('passwordError').style.display = 'none';
    document.getElementById('parentPasswordInput').value = '';
}

function verifyParentPassword() {
    const password = document.getElementById('parentPasswordInput').value;
    fetch('verify_parent_password.php', {
        method: 'POST',
        headers: {'Content-Type': 'application/json'},
        body: JSON.stringify({password: password})
    })
    .then(res => res.json())
    .then(data => {
        if(data.success){
            closeParentPasswordModal();
            openTrackingModal(currentAction); // buka modal lokasi/pesan
        } else {
            document.getElementById('passwordError').style.display = 'block';
        }
    });
}

// Modal tracking: Sekarang menggunakan fungsi openModal() untuk menampilkan modal yang benar
function openTrackingModal(action) {
    if(action === 'lokasi') {
        // Panggil fungsi openModal yang Anda definisikan di atas
        openModal('contentLokasi'); 
    } else if(action === 'pesan') {
        // Panggil fungsi openModal yang Anda definisikan di atas
        openModal('contentPesan');
    }
}

// Update status tracking
function updateTrackingStatus(action, status) {
    fetch('update_tracking.php', {
        method: 'POST',
        headers: {'Content-Type': 'application/json'},
        body: JSON.stringify({action: action, status: status})
    }).then(res => res.json()).then(data=>{
        console.log(data.message);
    });
}

function openParentPasswordModal(action) {
    currentAction = action;
    // Menggunakan classList.remove('hidden')
    document.getElementById('parentPasswordModal').classList.remove('hidden'); 
}

function closeParentPasswordModal() {
    // Menggunakan classList.add('hidden')
    document.getElementById('parentPasswordModal').classList.add('hidden');
    document.getElementById('passwordError').classList.add('hidden'); // Sembunyikan pesan error
    document.getElementById('parentPasswordInput').value = '';
}

function verifyParentPassword() {
    const password = document.getElementById('parentPasswordInput').value;
    const passwordError = document.getElementById('passwordError');
    passwordError.classList.add('hidden'); // Sembunyikan error dulu

    fetch('verify_parent_password.php', {
        method: 'POST',
        headers: {'Content-Type': 'application/json'},
        body: JSON.stringify({password: password})
    })
    .then(res => res.json())
    .then(data => {
        if(data.success){
            closeParentPasswordModal();
            openTrackingModal(currentAction); // Membuka modal Pelacakan Pesan/Lokasi yang sebenarnya
        } else {
            passwordError.classList.remove('hidden'); // Tampilkan pesan error
        }
    })
    .catch(error => {
        console.error('Error verifikasi:', error);
        passwordError.textContent = 'Terjadi kesalahan jaringan.';
        passwordError.classList.remove('hidden');
    });
}
// === FUNGSI KHUSUS MODAL HAPUS PERANGKAT ===
const hapusPerangkatModal = document.getElementById('HapusPerangkat');
const hapusPerangkatInput = document.getElementById('hapusPerangkatInput');
const hapusPerangkatError = document.getElementById('hapusPerangkatError');
const hapusPerangkatSubmitBtn = hapusPerangkatModal.querySelector('button[onclick="submitHapusPerangkatVerification()"]');


/**
 * 1. Membuka Modal Hapus Perangkat.
 * Ini adalah logika yang hilang.
 */
function openHapusPerangkat(locationData) {
    // Reset input dan pesan error
    if (hapusPerangkatInput) hapusPerangkatInput.value = '';
    if (hapusPerangkatError) hapusPerangkatError.classList.add('hidden');

    // Tampilkan modal (hapus class 'hidden')
    if (hapusPerangkatModal) {
        hapusPerangkatModal.classList.remove('hidden');
        if (hapusPerangkatInput) hapusPerangkatInput.focus();
    }
}

/**
 * 2. Menutup Modal Hapus Perangkat.
 */
function closeHapusPerangkatModal() {
    if (hapusPerangkatModal) {
        hapusPerangkatModal.classList.add('hidden');
    }
}

/**
 * 3. Mengirim password ke server untuk verifikasi Hapus Perangkat.
 */
async function submitHapusPerangkatVerification() {
    const password = hapusPerangkatInput.value.trim();

    if (password.length === 0) {
        hapusPerangkatError.textContent = "Kata sandi tidak boleh kosong.";
        hapusPerangkatError.classList.remove('hidden');
        hapusPerangkatInput.focus();
        return;
    }

    // Sembunyikan pesan error saat mencoba verifikasi
    hapusPerangkatError.classList.add('hidden');
    
    // Nonaktifkan tombol
    hapusPerangkatSubmitBtn.disabled = true;
    hapusPerangkatSubmitBtn.textContent = 'Memproses...';

    try {
        // Ganti 'verify_parent_password.php' dengan endpoint Anda
        const response = await fetch('verify_parent_password.php', {
            method: 'POST',
            headers: { 'Content-Type': 'application/json' },
            body: JSON.stringify({ password: password })
        });

        const data = await response.json();

        if (data.success) {
            // VERIFIKASI BERHASIL: Alihkan langsung ke proses logout/cleanup
            window.location.href = 'keluarujicoba.php'; 

        } else {
            // VERIFIKASI GAGAL
            hapusPerangkatError.textContent = data.message || "Kata sandi orang tua salah.";
            hapusPerangkatError.classList.remove('hidden');
            hapusPerangkatInput.focus();
        }

    } catch (error) {
        console.error('Error saat verifikasi password:', error);
        hapusPerangkatError.textContent = "Terjadi kesalahan koneksi server.";
        hapusPerangkatError.classList.remove('hidden');
    } finally {
        hapusPerangkatSubmitBtn.disabled = false;
        hapusPerangkatSubmitBtn.textContent = 'Submit';
    }
}

// Tambahkan event listener ESCAPE untuk semua modal
document.addEventListener('keydown', (event) => {
    if (event.key === 'Escape') {
        closeModal(); // Modal Umum
        closeCardModal(); // Modal Kartu
        closeParentPasswordModal(); // Modal Verifikasi Generik
        closeHapusPerangkatModal(); // Modal Hapus Perangkat
    }
});