$(document).ready(function () {
    $('#username').on('input', checkUser);
    $('#loginEmail').on('input', checkEmail);
    $('#loginPassword').on('input', checkPass);
    $('#cpassword').on('input', checkCpass);
    $('#mobile').on('input', checkMobile);

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

        //const isUserValid = checkUser();
        const isEmailValid = checkEmail();
      //  const isPassValid = checkPass();
      //  const isCpassValid = checkCpass();
      //  const isMobileValid = checkMobile();

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

            $.ajax({
                type: "POST",
                url: "process.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) {
                    $('#message').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 {
            $("#message").html(`<div class="alert alert-warning">Te rugăm să completezi corect toate câmpurile.</div>`);
        }
    });
});

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

function checkUser() {
    const user = $('#username').val().trim();
    const pattern = /^[A-Za-z0-9]+$/;

    if (user.length < 4) {
        setValidationState('#username', false, '#username_err', 'Numele de utilizator trebuie să aibă cel puțin 4 caractere.');
        return false;
    } else if (!pattern.test(user)) {
        setValidationState('#username', false, '#username_err', 'Numele trebuie să conțină doar litere și cifre.');
        return false;
    } else {
        setValidationState('#username', true, '#username_err');
        return true;
    }
}

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

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

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

    if (pass === "") {
        setValidationState('#password', false, '#password_err', 'Parola nu poate fi goală.');
        return false;
    } else if (!pattern.test(pass)) {
        setValidationState('#password', false, '#password_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('#password', true, '#password_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");
    }
}
