Current File : /home/getxxhzo/app.genicards.com/resources/assets/js/custom/phone-number-country-code.js
// document.addEventListener("turbo:load", loadPhoneNumberCountryCodeData);
document.addEventListener("DOMContentLoaded", loadPhoneNumberCountryCodeData);

function loadPhoneNumberCountryCodeData() {
    loadPhoneNumberCountryCode();
    userCreateForm();
    userEditForm();
    vcardEditForm();
    createSetting();
    loadAlternativePhoneNumber();
}

function loadPhoneNumberCountryCode() {
    if (!$("#phoneNumber").length) {
        return false;
    }

    let input = document.querySelector("#phoneNumber"),
        errorMsg = document.querySelector("#error-msg"),
        validMsg = document.querySelector("#valid-msg");

    let errorMap = [
        Lang.get("js.invalid_number"),
        Lang.get("js.invalid_country_number"),
        Lang.get("js.too_short"),
        Lang.get("js.too_long"),
        Lang.get("js.invalid_number"),
        Lang.get("js.invalid_number"),
    ];

    // initialise plugin
    let intl = window.intlTelInput(input, {
        initialCountry: defaultCountryCodeValue,
        separateDialCode: true,
        geoIpLookup: function (success, failure) {
            $.get("https://ipinfo.io", function () {}, "jsonp").always(
                function (resp) {
                    var countryCode = resp && resp.country ? resp.country : "";
                    success(countryCode);
                }
            );
        },
        utilsScript: "../../public/assets/js/inttel/js/utils.min.js",
    });

    let reset = function () {
        input.classList.remove("error");
        errorMsg.innerHTML = "";
        errorMsg.classList.add("d-none");
        validMsg.classList.add("d-none");
    };

    if (mobileValidation == 1) {
        input.addEventListener("blur", function () {
            reset();
            if (input.value.trim()) {
                if (intl.isValidNumber()) {
                    validMsg.classList.remove("d-none");
                } else {
                    input.classList.add("error");
                    var errorCode = intl.getValidationError();
                    errorMsg.innerHTML = errorMap[errorCode];
                    errorMsg.classList.remove("d-none");
                }
            }
        });
    }

    // on keyup / change flag: reset
    input.addEventListener("change", reset);
    input.addEventListener("keyup", reset);

    if (typeof phoneNo != "undefined" && phoneNo !== "") {
        setTimeout(function () {
            $("#phoneNumber").trigger("change");
        }, 500);
    }

    $("#phoneNumber").on("blur keyup change countrychange", function () {
        if (typeof phoneNo != "undefined" && phoneNo !== "") {
            intl.setNumber("+" + phoneNo);
            phoneNo = "";
        }
        let getCode = intl.selectedCountryData["dialCode"];
        $("#prefix_code").val(getCode);

        let phoneNumber = $(this).val();
        phoneNumber = phoneNumber.replace(/-/g, "");
        $(this).val(phoneNumber);
    });

    let getCode = intl.selectedCountryData["dialCode"];
    $("#prefix_code").val(getCode);

    let getPhoneNumber = $("#phoneNumber").val();
    let removeSpacePhoneNumber = getPhoneNumber.replace(/\s/g, "");
    $("#phoneNumber").val(removeSpacePhoneNumber);

    $("#phoneNumber").focus();
    $("#phoneNumber").trigger("blur");
}
function loadAlternativePhoneNumber() {
    if (!$("#alternativePhone").length) {
        return false;
    }

    let input = document.querySelector("#alternativePhone"),
        errorMsg = document.querySelector("#alter-error-msg"),
        validMsg = document.querySelector("#alter-valid-msg");

    let errorMap = [
        Lang.get("js.invalid_number"),
        Lang.get("js.invalid_country_number"),
        Lang.get("js.too_short"),
        Lang.get("js.too_long"),
        Lang.get("js.invalid_number"),
    ];

    // initialise plugin
    let intl = window.intlTelInput(input, {
        initialCountry: defaultCountryCodeValue,
        separateDialCode: true,
        geoIpLookup: function (success, failure) {
            $.get("https://ipinfo.io", function () {}, "jsonp").always(
                function (resp) {
                    var countryCode = resp && resp.country ? resp.country : "";
                    success(countryCode);
                }
            );
        },
        utilsScript: "../../public/assets/js/inttel/js/utils.min.js",
    });

    let reset = function () {
        input.classList.remove("error");
        errorMsg.innerHTML = "";
        errorMsg.classList.add("d-none");
        validMsg.classList.add("d-none");
    };

    if (mobileValidation == 1) {
        input.addEventListener("blur", function () {
            reset();
            if (input.value.trim()) {
                if (intl.isValidNumber()) {
                    validMsg.classList.remove("d-none");
                } else {
                    input.classList.add("error");
                    var errorCode = intl.getValidationError();
                    errorMsg.innerHTML = errorMap[errorCode];
                    errorMsg.classList.remove("d-none");
                }
            }
        });
    }

    // on keyup / change flag: reset
    input.addEventListener("change", reset);
    input.addEventListener("keyup", reset);

    if (typeof phoneNo != "undefined" && phoneNo !== "") {
        setTimeout(function () {
            $("#alternativePhone").trigger("change");
        }, 500);
    }

    $("#alternativePhone").on("blur keyup change countrychange", function () {
        if (typeof phoneNo != "undefined" && phoneNo !== "") {
            intl.setNumber("+" + phoneNo);
            phoneNo = "";
        }
        let getCode = intl.selectedCountryData["dialCode"];
        $("#alternative_prefix_code").val(getCode);

        let alterphoneNumber = $(this).val();
        alterphoneNumber = alterphoneNumber.replace(/-/g, "");
        $(this).val(alterphoneNumber);
    });

    let getCode = intl.selectedCountryData["dialCode"];
    $("#alternative_prefix_code").val(getCode);

    let getPhoneNumber = $("#alternativePhone").val();
    let removeSpacePhoneNumber = getPhoneNumber.replace(/\s/g, "");
    $("#alternativePhone").val(removeSpacePhoneNumber);

    $("#alternativePhone").focus();
    $("#alternativePhone").trigger("blur");
}

function userCreateForm() {
    if (!$("#userCreateForm").length) {
        return false;
    }
    if (mobileValidation == 1) {
        $("#userCreateForm").submit(function () {
            if ($("#error-msg").text() !== "") {
                $("#phoneNumber").focus();
                return false;
            }
        });
    }
}

function vcardEditForm() {
    if (!$("#editForm").length) {
        return false;
    }
    if (mobileValidation == 1) {
        $("#editForm").submit(function () {
            if ($("#error-msg").text() !== "") {
                $("#phoneNumber").focus();
                $("#alternativePhone").focus();
                return false;
            }
        });
    }
}

function createSetting() {
    if (!$("#createSetting").length) {
        return false;
    }
    if (mobileValidation == 1) {
        $("#createSetting").submit(function () {
            if ($("#error-msg").text() !== "") {
                $("#phoneNumber").focus();
                return false;
            }
        });
    }
}

function userEditForm() {
    if (!$("#userEditForm").length) {
        return false;
    }
    if (mobileValidation == 1) {
        $("#userEditForm").submit(function () {
            if ($("#error-msg").text() !== "") {
                $("#phoneNumber").focus();
                return false;
            }
        });
    }
}