function validateFamily(moduleId, familyId, parentFamilyId = null) {
    if (SubmitFamilyOnAjax == 'True') {
        var values = {};
        values['id_' + moduleId] = familyId;

        $.ajax({
            url: "/API/" + Family_ModuleID + "/AjaxSubmit",
            data: values,
            type: "PATCH",
            datatype: "json/application",
            success: function (data) {
                console.log('Successful Ajax submission');

                $.ajax({
                    url: "/SAPI/CMS0000000/GetRefreshableModules",
                    type: "POST",
                    data: {
                        moduleId: Family_ModuleID,
                    },
                    success: function (data) {
                        $(".loading-component").fadeIn();
                        $.each(data, function (index, item) {
                            var article = $('#module_' + item);

                            $.ajax({
                                url: "/API/" + item + "/" + article.data('action'),
                                type: "POST",
                                success: function (data) {
                                    article.html(data.content);
                                },
                                complete: function () {
                                    if (article.attr('class') != undefined) {
                                        var articleClass = article.attr('class').split(' ');
                                        var extensionClass = "";
                                        for (var i = 0; i < articleClass.length; i++) {
                                            var name = articleClass[i];
                                            if (name.startsWith("extension_")) {
                                                extensionClass = name;
                                                break;
                                            }
                                        }
                                    
                                        var method_prefix = "ready_";
                                        var articleReady = window[method_prefix + extensionClass];
                                        if (typeof articleReady != "undefined") {
                                            articleReady();
                                        }
                                    }
                                }
                            });
                        });
                    },
                    complete: function () {
                        $('ul#strucTab').find('li.active').addClass('stepComplete');
                        // OnePage swith d'étape
                        if ($('#module_' + moduleId).closest('.step').length == 1 && $('#module_' + moduleId).closest('.step').data('navigation') == "False") {
                            nextStep($('#module_' + moduleId));
                        }
                        $(".loading-component").fadeOut();
                    }
                });
            },
            error: function (data) {
                console.log('AJAXError on submit date');
            },
        });
    }
    else {
        $('#id_' + moduleId).val(familyId);
        $('#id_parent_' + moduleId).val(parentFamilyId);
        $('#family-form_' + moduleId).trigger('submit');
    }
};
