$(document).ready(function () {
    $('#loginEmail').on('input', checkEmail);
    $('#loginPassword').on('input', checkPass);

    $('#loginSubmit').click(function (e) {
        e.preventDefault();

        const isEmailValid = checkEmail();
        const isPassValid = checkPass();


          if (isEmailValid && isPassValid) {
            $("#loginMessage").html("");
            const form = $('#loginForm')[0];
            const data = new FormData(form);

            $.ajax({
                type: "POST",
                url: "authenticate.php",
                data: data,
                processData: false,
                contentType: false,
                cache: false,
                async: false,
                beforeSend: function () {
                    $('#loginSubmit').html('<i class="fa-solid fa-spinner fa-spin"></i>');
                    $('#loginSubmit').attr("disabled", true);
                    $('#loginSubmit').css({ "border-radius": "50%" });
                },
                success: function (data) {
                    $('#loginMessage').html(data);
                },
                complete: function () {
                    setTimeout(function () {
                        $('#loginForm').trigger("reset");
                        $('input').removeClass('is-valid is-invalid');
                        $('#loginSubmit').html('Submit');
                        $('#loginSubmit').attr("disabled", false);
                        $('#loginSubmit').css({ "border-radius": "4px" });
                    }, 200);
                }
            });
        } else {
            //$("#loginMessage").html(`<div class="alert alert-warning">Te rugăm să completezi corect toate câmpurile.</div>`);
            $("#loginMessage").html(`<div class="alert alert-danger border-0 d-flex align-items-center" role="alert">
              <div class="bg-danger me-3 icon-item"><span class="fas fa-times-circle text-white fs-6"></span></div>
              <p class="mb-0 flex-1">Te rugăm să completezi corect toate câmpurile</p></div>`);
              // Ascunde automat după 4 secunde (4000ms)
              setTimeout(function () {
                  $('#loginMessage').fadeOut('slow', function () {
                    $(this).html('').show(); // Golește conținutul și reafișează containerul pentru folosire ulterioară
                  });
                }, 4000);
        }
    });
});

function setValidationState(inputSelector, isValid, errorSelector, errorMessage = "") {
    if (isValid) {
        $(inputSelector).removeClass("is-invalid").addClass("is-valid");
        $(errorSelector).html('');
    } else {
        $(inputSelector).removeClass("is-valid").addClass("is-invalid");
        $(errorSelector).html(errorMessage);
    }
}

function checkEmail() {
    const email = $('#loginEmail').val().trim();
    const pattern = /^[\w.-]+@([\w-]+\.)+[\w-]{2,4}$/;

    if (email === "") {
        setValidationState('#loginEmail', false, '#loginEmail_err', 'Câmpul email este obligatoriu.');
        return false;
    } else if (!pattern.test(email)) {
        setValidationState('#loginEmail', false, '#loginEmail_err', 'Adresa de email nu este validă.');
        return false;
    } else {
        setValidationState('#loginEmail', true, '#loginEmail_err');
        return true;
    }
}

function checkPass() {
    const pass = $('#loginPassword').val();
    const pattern = /^(?=.*\d)(?=.*[!@#$%^&*])(?=.*[a-z])(?=.*[A-Z]).{8,}$/;

    if (pass === "") {
        setValidationState('#loginPassword', false, '#loginPassword_err', 'Parola nu poate fi goală.');
        return false;
    } else if (!pattern.test(pass)) {
        setValidationState('#loginPassword', false, '#loginPassword_err', 'Parola trebuie să conțină minim 8 caractere, o literă mare, una mică, un număr și un caracter special.');
        return false;
    } else {
        setValidationState('#loginPassword', true, '#loginPassword_err');
        return true;
    }
}

function checkCpass() {
    const pass = $('#password').val();
    const cpass = $('#cpassword').val();

    if (cpass === "") {
        setValidationState('#cpassword', false, '#cpassword_err', 'Confirmarea parolei este obligatorie.');
        return false;
    } else if (pass !== cpass) {
        setValidationState('#cpassword', false, '#cpassword_err', 'Parolele nu coincid.');
        return false;
    } else {
        setValidationState('#cpassword', true, '#cpassword_err');
        return true;
    }
}

function checkMobile() {
    const mobile = $('#mobile').val();

    if (!$.isNumeric(mobile)) {
        setValidationState('#mobile', false, '#mobile_err', 'Doar cifre sunt permise.');
        return false;
    } else if (mobile.length !== 10) {
        setValidationState('#mobile', false, '#mobile_err', 'Numărul de telefon trebuie să conțină exact 10 cifre.');
        return false;
    } else {
        setValidationState('#mobile', true, '#mobile_err');
        return true;
    }
}




function password_show_hide() {
    console.log('ok');
    const passwordInput = document.getElementById("loginPassword");
    const eyeIcon = document.getElementById("loginEyeIcon");

    if (passwordInput.type === "password") {
      passwordInput.type = "text";
      eyeIcon.classList.remove("bi-eye");
      eyeIcon.classList.add("bi-eye-slash");
    } else {
      passwordInput.type = "password";
      eyeIcon.classList.remove("bi-eye-slash");
      eyeIcon.classList.add("bi-eye");
    }
}
