function isValidPhone(phone) {
    const regex = /^\d{3}(?:\d{4}){2}$/;
    return regex.test(phone);
}

function isValidEmail(email) {
    const regex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
    return regex.test(email);
}

function isValidURL(url) {
    const regex = /^(ftp|http|https):\/\/[^ "]+$/;
    return regex.test(url);
}

$(function() {

    //$(".contact__error").hide();
    //$(".--error").each(function(){$(this).removeClass("--error")});

    $.post("./ajax.php", {
        action: "getToken"
    },
    function(response) {
        if (response?.token) {
            var token = response.token;
            $(".contact__form").prepend(`<input type="hidden" name="token" value="${token}" />`);
            $(".contact__form").prepend(`<input type="hidden" name="action" value="send" />`);

        }
    });

    var step = 1;

    $("#phone").change(function(e){
        var phone = $("#phone").val();
        if (phone !== '' && !isValidPhone(phone)) {
            var p = $("#phone").parents(".contact__form-items");
            $(p).addClass("--error");
            $(".contact__error", p).show();
        } else {
            var p = $("#phone").parents(".contact__form-items");
            $(p).removeClass("--error");
            $(".contact__error", p).hide();
        }
    });

    $("#email").change(function(e){
        var email = $("#email").val();
        if (!isValidEmail(email)) {
            var p = $("#email").parents(".contact__form-items");
            $(p).addClass("--error");
            $(".contact__error", p).show();
        } else {
            var p = $("#email").parents(".contact__form-items");
            $(p).removeClass("--error");
            $(".contact__error", p).hide();
        }
        $("#confirm_email").change();
    });

    $("#confirm_email").change(function(e){
        var email = $("#email").val();
        var confirm_email = $("#confirm_email").val();
        if (!isValidEmail(confirm_email) || email !== confirm_email) {
            var p = $("#confirm_email").parents(".contact__form-items");
            $(p).addClass("--error");
            $(".contact__error", p).show();
        } else {
            var p = $("#confirm_email").parents(".contact__form-items");
            $(p).removeClass("--error");
            $(".contact__error", p).hide();
        }
    });

    $("#website").change(function(e){
        var website = $("#website").val();
        if (website !== "" && !isValidURL(website)) {
            var p = $("#website").parents(".contact__form-items");
            $(p).addClass("--error");
            $(".contact__error", p).show();
        } else {
            var p = $("#website").parents(".contact__form-items");
            $(p).removeClass("--error");
            $(".contact__error", p).hide();
        }
    });

    $(".contact__checkbox input").change(function(){
        if ($(this).is(":checked")) {
            $(".contact__submit").removeClass("button--disabled");
            $(".contact__submit-input").removeAttr("disabled");
        } else {
            $(".contact__submit").addClass("button--disabled");
            $(".contact__submit-input").prop('disabled', true);
        }
    });

    $(".contact__form").submit(function(e){
        e.preventDefault();

        var hasError = false;

        var phone = $("#phone").val();
        $("#phone").change();

        var email = $("#email").val();
        $("#email").change();

        var confirm_email = $("#confirm_email").val();
        $("#confirm_email").change();

        var website = $("#website").val();
        $("#website").change();

        if (phone !== '' && !isValidPhone(phone)) { 
            console.log("Invalid phone");
            hasError = true;
        }
        if (!isValidEmail(email)) { 
            console.log("Invalid email", email);
            hasError = true; 
        }
        if (!isValidEmail(confirm_email) || email !== confirm_email) {
            console.log("Invalid confirm email");
            hasError = true;
        }

        if (website !== "" && !isValidURL(website)) {
            console.log("Invalid website");
            hasError = true;
        }

        if (hasError === true) {
            console.log("error");
            return;
        }

        /*
        if (step === 1) {

            step = 2;
            
            // Validation here

            // $('.contact__form .contact__form-items').hide();


        } else if (step === 2) {
        */

            var formData = $(this).serialize();

            $.ajax({
                type: 'POST',
                url: './ajax.php',
                data: formData,
                contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
                success: function(response) {
                    if (response?.result && response?.result === 'ok') {
                        $(".contact__form").html("<h2 style='text-align:center'>お問い合わせありがとうございます。<br/>担当者よりご登録のメールアドレスに折り返しご連絡させていただきます。<br/>しばらくお待ちください。</h2>");
                    } else if (response?.result) {
                        alert(response?.result);
                    }
                },
                error: function(xhr, status, error) {
                    console.error(xhr.responseText);
                }
            });

        // }

    });
});