var ProfileAdmin = {
    init: function () {
        $('#fichaNuevoPerfil, .cargarFicha').off('click').on('click', function (e) {
            var profile_id = $(this).attr("data-profileid");
            e.preventDefault();
            ProfileAdmin.cargarFicha(profile_id);
            return false;
        });

        $('.borrarPerfil').off('click').on('click', function (e) {
            var profile_id = $(this).attr("data-profileid");
            e.preventDefault();

            ProfileAdmin.borrar(profile_id);
        });

    },

    initFicha: function () {
        $('#guardarFicha').off('click').on('click', function (e) {
            e.preventDefault();

            ProfileAdmin.guardarFicha();
        });
        $('#selectAccessAll').off('click').on('click', function (e) {
            e.preventDefault();

            document.querySelectorAll('[name^=profile_grupos_asignados]').forEach(function (item) {
                item.checked = "checked";
            });
        });
        $('#selectAccessNone').off('click').on('click', function (e) {
            e.preventDefault();

            document.querySelectorAll('[name^=profile_grupos_asignados]').forEach(function (item) {
                item.checked = "";
            });
        });
    },
    cargarFicha: function (profile_id) {
        var url = '/' + Admin.dir_cgi_cpn + '/prontus_profile_ficha.cgi?_prontus_id=' + Admin.prontus_id;
        var title = "Agregar Nuevo Perfil";

        if (typeof profile_id != 'undefined') {
            url += '&profile_id=' + profile_id;
            title = "Editar Perfil";
        }

        $('#modalPerfilContenido').load(url, function (responseText, textStatus, req) {
            if (textStatus == 'error') {
                showModalAlert({
                    title: 'Error de servidor',
                    type: 'red',
                    msg: responseText
                });
            } else {
                $('#modalPerfilLabel').html(title);
                $('#modalPerfil').modal();

                // Marcar los checkbox de los permisos asignados.
                var grupos = ($('#profile_grupos').val()).split(',');

                $('input[name="profile_grupos_asignados[]"]').each(function () {
                    var items = ($(this).val()).split(',');
                    var counter = 0;
                    for (var x = 0; x < items.length; x++) {
                        if ($.inArray(items[x], grupos) > -1) {
                            counter++;
                        }
                    }

                    if (items.length == counter) {
                        $(this).attr("checked", "checked");
                    }

                });
                ProfileAdmin.initFicha(profile_id);
            }
        });
    },

    guardarFicha: function () {
        var configAjax = {
            formSelector: '#frmProfileFicha',
            actionURL: '/' + Admin.dir_cgi_cpn + '/prontus_profile_sbmit.cgi?_prontus_id='+Admin.prontus_id
        };

        // Armar string con permisos.
        var grupos = '';

        $('input[name="profile_grupos_asignados[]"]:checked').each(function () {
            var value = $(this).val();
            if (grupos != '') grupos += ',';
            grupos += value;
        });

        $('#profile_grupos').val(grupos);

        var optsAjax = {
            success: function (json) {
                if (json.status == 0) {
                    showModalAlert({
                        title: 'Mensaje del servidor',
                        type: 'red',
                        msg: json.msg
                    });
                } else {
                    showModalAlert({
                        title: 'Resultado',
                        type: 'green',
                        msg: json.msg,
                        cbBtnOK: function () {
                            window.location.reload();
                        }
                    });
                }
            }, // success
            complete: function () {
                /* Cargando... */
            },
            error: function(xhr, ajaxOptions, thrownError) {
                showModalAlert({
                    title: 'Error de servidor',
                    type: 'red',
                    msg: thrownError
                });
            }
        };

        SubmitForm.submitGenericAjax(configAjax, optsAjax);
    },
    borrar: function (id) {
        var msg = '¿Estás seguro de borrar este perfil?';
        showModalConfirm({
            'title':'Borrar Perfil',
            'msg': msg,
            type: "orange",
            icon: "glyphicon glyphicon-exclamation-sign",
            cbBtnOK: function() {
                $.ajax({
                    url: '/' + Admin.dir_cgi_cpn + '/prontus_profile_borrar.cgi',
                    type: 'POST',
                    dataType: 'json',
                    data: 'profile_id=' + id + '&_prontus_id=' + Admin.prontus_id,
                    success: function (data) {
                        if (data.status == '0') {
                            showModalAlert({
                                title: 'Error de servidor',
                                type: 'red',
                                msg: data.msg
                            });
                        } else {
                            $('#item-profile-' + id).fadeOut('slow', function () {
                                $(this).remove();
                            });
                        }
                    },
                    error: function () {
                        showModalAlert({
                            title: 'Error de servidor',
                            type: 'red',
                            msg: 'Ocurrió un error, inténtalo nuevamente.'
                        });
                    }
                });
            }
        });
    }
};

$(document).ready(function () {
    ProfileAdmin.init();
});
