const profilepicInput = document.getElementById('profile_picture');
const previewContainer = document.getElementById('profile_preview_container'); 
let previewImg = document.getElementById('profile_preview');
const placeholderSVG = document.getElementById('placeholder_svg');

//pārbaude, vai eksistē preview container un file input
if (previewContainer && profilepicInput) {

    //click event listener priekš preview container (kad noklikšķina uz preview container, tas aktivizē file input)
    previewContainer.addEventListener('click', () => {
        //simulē click uz paslēpto file input
        profilepicInput.click();
    });

    //change event listener priekš file input (kad lietotājs izvēlas failu)
    profilepicInput.addEventListener('change', function() {
        //mainīgais file ir izvēlētais fails
        const file = this.files[0];
        //ja ir izvēlēts fails
        if (file) {
            //izveido FileReader objektu - tas ļauj lasīt augšupielādētā faila saturu
            const reader = new FileReader();
            //kad fails ir nolasīts, tiek palaista šī funkcija
            reader.onload = function(e) {
                //ja preview attēls vēl neeksistē (ja šis ir jauns lietotājs, kuram tiek uzrādīts svg nevis attēls), izveido attēlu
                if (!previewImg) {
                    previewImg = document.createElement('img');
                    previewImg.id = 'profile_preview';
                    previewImg.alt = 'Profile Preview';
                    previewContainer.appendChild(previewImg);
                }
                
                previewImg.src = e.target.result; //iestata preview attēla avotu uz nolasīto failu
                previewImg.style.display = 'block'; //parāda preview attēlu
                
                //ja SVG eksistē, tas tiek paslēpts
                if (placeholderSVG) {
                    placeholderSVG.style.display = 'none';
                }
            }
            //nolasa failu
            reader.readAsDataURL(file);
        } else {
            //ja fails nav izvēlēts, notīra preview attēlu
            if (previewImg) {
                previewImg.src = '';
                previewImg.style.display = 'none';
            }
            //ja SVG eksistē, tas tiek parādīts
            if (placeholderSVG) {
                placeholderSVG.style.display = 'block';
            }
        }
    });
};

//reģistrācijas funkcija
function signup () {
    //mainīgais form ir reģistrācijas forma
    const form = document.getElementById('signup_form');
    //izveido FormData objektu, kas satur visus lietotāja ievadītos datus
    const formData = new FormData(form);

    //iegūst epasta adresi
    const email = formData.get('email');
    //pieņemamie augšējā līmeņa domēni
    const acceptableTLDs = ['.com', '.lv', '.net', '.org', '.eu', '.info', '.biz', '.co', '.io', '.me', '.online', '.xyz', '.uk', '.de', '.fr', '.ca', '.au', '.jp', '.in', '.br', '.it', '.nl', '.edu', '.gov', '.int', '.mil', '.arpa', '.asia', '.cat', '.jobs', '.mobi', '.name', '.pro', '.tel', '.travel'];
    //pārbauda vai epasts satur '@' un beidzas ar kādu no pieņemamajiem TLD
    const hasAtSymbol = email.includes('@');
    const endsWithAcceptableTLD = acceptableTLDs.some(tld => email.toLowerCase().endsWith(tld));

    //ja epasts neatbilst prasībām, tiek parādīts paziņojums
    if (!hasAtSymbol || !endsWithAcceptableTLD) {
        alert('Please enter a valid e-mail address.');
        return;
    }

    //nosūta datus uz signup.php ar POST metodi
    fetch('signup.php', {
        method: 'POST',
        body: formData
    })
    //atbilde no php faila tiek pārvērsta par tekstu
    .then(response => response.text())
    //tiek apstrādāta saņemtā atbilde
    .then(result => {
        //ja php atgriež 'fields_missing'
        if (result === 'fields_missing') {
            //šī tiek parādīta ziņa lietotājam
            alert('Please fill in all fields.');
            //funkcija tiek pārtraukta
            return;
        } else if (result === 'password_criteria_not_met') {
            alert('Password does not meet the safety criteria.');
            return;
        } else if (result === 'password_mismatch') {
            alert('Passwords do not match.');
            return;
        } else if (result === 'email_exists') {
            alert('E-mail already in use.');
            return;
        } else if (result === 'success') {
            //ja php atgriež 'success', lietotājs tiek novirzīts uz profila lapu
            window.location.href = 'profile.php';
        } else if (result === 'signup_failed') {
            alert('Signup failed. Please try again.');
            return;
        }
    })
    //ja notiek kļūda saziņā ar serveri
    .catch(() => {
            //tiek parādīts kļūdas paziņojums
            alert('Server error. Please try again.');
        });
};

//pieteikšanās funkcija
function login () {
    //mainīgais form ir pieteikšanās forma
    const form = document.getElementById('login_form');
    //izveido FormData objektu, kas satur visus lietotāja ievadītos datus
    const formData = new FormData(form);

    //nosūta datus uz login.php ar POST metodi
    fetch('login.php', {
        method: 'POST',
        body: formData
    })
    //atbilde no php faila tiek pārvērsta par tekstu
    .then(response => response.text())
    //tiek apstrādāta saņemtā atbilde
    .then(result => {
        //ja php atgriež 'fields_missing'
        if (result === 'fields_missing') {
            //šī ziņa tiek parādīta lietotājam
            alert ('Please fill in all fields.');
            //funkcija tiek pārtraukta
            return;
        } else if (result === 'no_user') {
            alert('No account found with that email.');
            return;
        } else if (result === 'wrong_password') {
            alert('Incorrect password.');
            return;
        } else if (result === 'success') {
            //ja php atgriež 'success', lietotājs tiek novirzīts uz sākumlapu
            window.location.href = 'index.php';
        }
    })
    //ja notiek kļūda saziņā ar serveri
    .catch(() => {
        //tiek parādīts kļūdas paziņojums
        alert('Server error. Please try again.');
    });
}

//izrakstīšanās funkcija
function logout() {
    //ja lietotājs apstiprina izrakstīšanos
    if (confirm('Are you sure you want to log out?')) {
        //novirza uz logout.php
        window.location.href = 'logout.php';
    };
}

//jauna piedāvājuma izveides funkcija
function createPost() {
    //mainīgais form ir jauna piedāvājuma izveides forma
    const form = document.getElementById('create_post_form');
    //izveido FormData objektu, kas satur visus lietotāja ievadītos datus
    const formData = new FormData(form);

    //nosūta datus uz create_post.php ar POST metodi
    fetch('create_post.php', {
        method: 'POST',
        body: formData
    })
    //atbilde no php faila tiek pārvērsta par tekstu
    .then(response => response.text())
    //tiek apstrādāta saņemtā atbilde
    .then(result => {
        //ja php atgriež 'fields_missing'
        if (result === 'fields_missing') {
            //šī ziņa tiek parādīta lietotāja ievadītos datus
            alert('Please fill in all fields.');
            return;
        } else if (result === 'no_category') {
            alert('Please select a category.');
            return;
        } else if (result === 'images_missing') {
            alert('Please upload all 3 images.');
            return;
        } else if (result === 'upload_failed') {
            alert('Failed to upload images. Please try again.');
            return;
        } else if (result === 'success') {
            //ja php atgriež 'success', lietotājs tiek novirzīts uz profila lapu
            window.location.href = 'profile.php';
        }
    })
    //ja notiek kļūda saziņā ar serveri
    .catch(() => {
        //tiek parādīts kļūdas paziņojums
        alert('Server error. Please try again.');
    });
}

//parbauda paroli reģistrācijas formā
const passwordInput = document.getElementById('signup_password');

if (passwordInput) {
    passwordInput.addEventListener('input', function() {
        //iegūst ievadīto paroli
        const password = this.value;
        //iegūst elementu, kurā tiks parādīti paroles kritēriji
        const criteria = document.getElementById('password_criteria');
        
        //izveido tukšu mainīgo html
        let html = '';

        //pievieno kritēriju sarakstu
        html += 'Password must match this criteria:<br>';

        html += password.length >= 9 ? '✔' : '<span style="color: #601b1b;">✘</span>';
        html += ' At least 9 characters long<br>';
    
        html += /[A-Z]/.test(password) ? '✔' : '<span style="color: #601b1b;">✘</span>';
        html += ' At least one uppercase letter<br>';
    
        html += /[a-z]/.test(password) ? '✔' : '<span style="color: #601b1b;">✘</span>';
        html += ' At least one lowercase letter<br>';
    
        html += /[0-9]/.test(password) ? '✔' : '<span style="color: #601b1b;">✘</span>';
        html += ' At least one number<br>';
    
        html += /[\W_]/.test(password) ? '✔' : '<span style="color: #601b1b;">✘</span>';
        html += ' At least one special character';
    
        //kritēriji tiek parādīti lapā
        criteria.innerHTML = html;
    });
};

//piedāvājuma dzēšanas funkcija
function deletePost(event, id) {
    event.stopPropagation();
    //ja lietotājs apstiprina pedāvājuma dzēšanu
    if (confirm('Are you sure you want to delete this offer?')) {
        //novirza uz delete_post.php
        window.location.href = 'delete_post.php?id=' + id;
    };
}
