var Tax = {
    hideDisabled : false,
    init: function (_newitem) {
        /* Inicio drag&drop para lista-seccion */
        $('#lista-seccion').sortable({
            items: "li:not(.ui-state-disabled), ul",
            dropOnEmpty: true,
            handle: '.handler',
            opacity: 0.75,
            update: function (event, ui) {
                Tax.guardarPos(ui.item, 'seccion');
            }
        });

        $('#lista-seccion').delegate('.showurls', 'click', function () {
            var rel = $(this).attr('rel');
            if (rel) {
                rel = rel.replace('show', '');
                Tax.showURLs(rel)
            }
            return false;
        });

        $('#lista-seccion').on('click', '.mover', function () { return false; });

        $('.mostrar').each(function () {
            if ($(this).attr('alt') == 'btn_ticket_green') {
                $(this).attr('title', 'Click para ocultar en el FID');
            } else {
                $(this).attr('title', 'Click para visibilizar en el FID');
            }
        });

        if (_newitem == 1) {
            Tax.mostrarOculto('nuevo-seccion-0');
        }

        $('.input_url').on('blur keyup', function () {
            this.value = this.value.replace(/[^a-zA-Z0-9\-\/_.]+/g, '');
        });
    },

    // -------------------------------------------------------------------------
    /* Escapea y ademas despulga. */
    escapeHTML: function (str) {
        return str.replace(/&/g, '&amp;').replace(/>/g, '').replace(/</g, '').replace(/"/g, '').replace(/'/g, '').replace('/\\/', '');
    },

    // -------------------------------------------------------------------------
    guardarPos: function (obj, entidad) {
        var id;
        var pos;

        /* Armar data. */
        var form_data = {
            "_entidad" :entidad,
            "_prontus_id" : Admin.prontus_id
        };

        $('li[id^="item-' + entidad + '"]').each(function () {
            id = ($(this).attr("id")).replace('item-' + entidad + '-', '');
            if (entidad == 'seccion') {
                pos = $(this).index() + 1;
            } else {
                pos = $(this).index();
            }
            form_data["_pos" + id] = parseInt(pos, 10);
        });


        $.ajax({
            url: '/' + Admin.dir_cgi_cpn + '/prontus_tax_guardarpos.cgi',
            type: 'POST',
            dataType: 'json',
            data: form_data,
            success: function (data) {
                if (data.status == '0') {
                    showModalAlert({
                        title: 'Error',
                        type: 'red',
                        msg: data.msg
                    });
                }
            },
            error: function () {
                showModalAlert({
                    title: 'Error',
                    type: 'red',
                    msg: 'Ocurrió un error, inténtalo nuevamente.'
                });
            }
        });
    },

    // -------------------------------------------------------------------------
    editarItem: function (entidad, id) {
        if ($('#mostrar-' + entidad + '-' + id).is(':visible')) {
            $('#mostrar-' + entidad + '-' + id).hide();
            $('#edicion-' + entidad + '-' + id).show();
        }
    },

    // -------------------------------------------------------------------------
    guardarItem: function (obj, entidad, id) {
        /* esconder botones y mostrar cargando. */
        $(obj).parent().find('a').hide();
        $(obj).parent().find('.fila_loading').show();

        /* deshabilitar inputs */
        $('#edicion-' + entidad + '-' + id).find('input[type="text"]').attr('disabled', 'disabled');

        /* armar data */
        var form_data = {
            "_entidad" :entidad,
            "_prontus_id" : Admin.prontus_id,
            "_nom" : $('input[name="_nom-' + entidad + '-' + id + '"]').val()
        };
        /* nombre del item */
        /* ver si existen vistas. */
        if ($('input[name^="_nom_vista-' + entidad + '-' + id + '-"]').length > 0) {
            $('input[name^="_nom_vista-' + entidad + '-' + id + '-"]').each(function () {
                var reg_exp = new RegExp("_nom_vista-" + entidad + "-(.*?)-", "g");
                var nom_vista = ($(this).attr('name')).replace(reg_exp, '');
                form_data["_nom-" + nom_vista] = $(this).val();
            });
        }
        /* portada */

        form_data["_port"] = $('input[name="_port-' + entidad + '-' + id + '"]').val();
        form_data["_id"] = id;

        if (entidad == 'tema') {
            form_data["_secc_id"] = ($('#item-' + entidad + '-' + id).parent().attr("id")).replace('lista-temas-', '');
        }

        if (entidad == 'subtema') {
            form_data["_tema_id"] = ($('#item-' + entidad + '-' + id).parent().attr("id")).replace('lista-subtemas-', '');
        }

        /* enviar info. */
        $.ajax({
            url: '/' + Admin.dir_cgi_cpn + '/prontus_tax_guardar.cgi',
            type: 'POST',
            dataType: 'json',
            data: form_data,
            success: function (data) {
                if (data.status == '0') {
                    showModalAlert({
                        title: 'Error',
                        type: 'red',
                        msg: data.msg
                    });
                    /* esconder cargando y mostrar botones. */
                    $(obj).parent().find('.fila_loading').hide();
                    $(obj).parent().find('a').show();
                    /* habilitar inputs. */
                    $('#edicion-' + entidad + '-' + id).find('input[type="text"]').removeAttr('disabled');

                } else {
                    /* todo ok, actualizar informacion en ram. */
                    /* nombre item */
                    $('#mostrar-' + entidad + '-' + id).find('.txt_nom').html(Tax.escapeHTML($('input[name="_nom-' + entidad + '-' + id + '"]').val()));
                    /* nombre item vistas */
                    if ($('input[name^="_nom_vista-' + entidad + '-' + id + '-"]').length > 0) {
                        $('input[name^="_nom_vista-' + entidad + '-' + id + '-"]').each(function () {
                            var reg_exp = new RegExp("_nom_vista-" + entidad + "-(.*?)-", "g");
                            var nom_vista = ($(this).attr('name')).replace(reg_exp, '');
                            if ($(this).val() == '') {
                                $('#mostrar-' + entidad + '-' + id).find('.txt_nom-' + nom_vista).html(Tax.escapeHTML($('input[name="_nom-' + entidad + '-' + id + '"]').val()));
                                $(this).val($('input[name="_nom-' + entidad + '-' + id + '"]').val());
                            } else {
                                $('#mostrar-' + entidad + '-' + id).find('.txt_nom-' + nom_vista).html(Tax.escapeHTML($(this).val()));
                            }
                        });
                    }
                    /* portada */
                    $('#mostrar-' + entidad + '-' + id).find('.txt_port').html(Tax.escapeHTML($('input[name="_port-' + entidad + '-' + id + '"]').val()) + '&nbsp;');

                    $('#edicion-' + entidad + '-' + id).hide();
                    $('#mostrar-' + entidad + '-' + id).show();

                    /* esconder cargando y mostrar botones. */
                    $(obj).parent().find('.fila_loading').hide();
                    $(obj).parent().find('a').show();
                    /* habilitar inputs. */
                    $('#edicion-' + entidad + '-' + id).find('input[type="text"]').removeAttr('disabled');

                }
            },
            error: function () {
                showModalAlert({
                    title: 'Error',
                    type: 'red',
                    msg: "Ocurrió un error, inténtalo nuevamente."
                });
                /* esconder cargando y mostrar botones. */
                $(obj).parent().find('.fila_loading').hide();
                $(obj).parent().find('a').show();
                /* habilitar inputs. */
                $('#edicion-' + entidad + '-' + id).find('input[type="text"]').removeAttr('disabled');
            }
        });

    },

    // -------------------------------------------------------------------------
    cancelarEditar: function (obj, entidad, id) {
        if ($('#edicion-' + entidad + '-' + id).is(':visible')) {
            $('#edicion-' + entidad + '-' + id).hide();
            $('#mostrar-' + entidad + '-' + id).show();
        }
    },

    // -------------------------------------------------------------------------
    guardarItemNuevo: function (obj, entidad, identif, newitem) {
        var form_data = {
            "_entidad" :entidad,
            "_prontus_id" : Admin.prontus_id
        };

        /* Mostrar imagen loading y esconder botones. */
        $(obj).parent().find('a').hide();
        $(obj).parent().find('.fila_loading').show();

        /* Obtener y armar data para el .ajax */
        var obj_nom = $('#nuevo-item-' + entidad + '-' + identif).find('.nueva-' + entidad).find('input[name="_nom"]');
        if ($(obj_nom).hasClass('input-sinpulsar') && $(obj_nom).val() == '[nombre]') {
            form_data['_nom'] = '';
        } else {
            form_data['_nom'] = $(obj_nom).val();
        }

        $('#nuevo-item-' + entidad + '-' + identif).find('.nueva-' + entidad + 'Vista').each(function () {
            let id_vista = ($(this).attr("id")).replace('vista-' + identif + '-', '');
            let obj_nom_item = $(this).find('input[name="_nom-' + id_vista + '"]');
            if ($(obj_nom_item).hasClass('input-sinpulsar') && $(obj_nom_item).val() == '[nombre]') {
                form_data['_nom-' + id_vista ] = '';
            } else {
                form_data['_nom-' + id_vista ] = $(obj_nom_item).val();
            }
        });

        var obj_url = $('#nuevo-item-' + entidad + '-' + identif).find('.nueva-' + entidad + 'Url').find('input[name="_port"]');

        if ($(obj_url).hasClass('input-sinpulsar') && $(obj_url).val() == '[url]') {
            form_data['_port'] = '';
        } else {
            form_data['_port'] = $(obj_url).val();
        }

        var id_adicional;
        if (entidad == 'tema') {
            id_adicional = ($('#nuevo-item-' + entidad + '-' + identif).parent().attr('id')).replace('lista-temas-', '');
            form_data['_secc_id'] = id_adicional;
        }

        if (entidad == 'subtema') {
            id_adicional = ($('#nuevo-item-' + entidad + '-' + identif).parent().attr('id')).replace('lista-subtemas-', '');
            form_data['_tema_id'] = id_adicional;
        }

        $.ajax({
            url: '/' + Admin.dir_cgi_cpn + '/prontus_tax_guardar.cgi',
            type: 'POST',
            dataType: 'json',
            data: form_data,
            success: function (data) {
                if (data.status == '0') {
                    showModalAlert({
                        title: 'Error',
                        type: 'red',
                        msg: data.msg
                    });
                } else {
                    var id_padre = 0;
                    if (data.id) {
                        id_padre = identif;
                        identif = data.id;
                    }
                    if (entidad == 'seccion' && identif == 0) {
                        Tax.mostrarOculto('nuevo-seccion-0');
                    } else if (entidad == 'tema') {
                        Tax.mostrarTemas(false, id_padre, newitem);
                    } else if (entidad == 'subtema') {
                        Tax.mostrarSubtemas(false, id_padre, newitem);
                    } else if (entidad == 'seccion') {
                        Tax.mostrarSecciones(false, id_padre, newitem);
                    }
                }
                $(obj).parent().find('.fila_loading').hide();
                $(obj).parent().find('a').show();
            },
            error: function () {
                showModalAlert({
                    title: 'Error',
                    type: 'red',
                    msg: "Ocurrió un error, inténtalo nuevamente."
                });
                $(obj).parent().find('.fila_loading').hide();
                $(obj).parent().find('a').show();
            }
        });

    },
    // -------------------------------------------------------------------------
    mostrarSecciones: function (obj, id, newitem) {
        if (typeof newitem === 'undefined') {
            newitem = 0;
        }

        $(obj).parent().find('a').hide();
        $(obj).parent().find('.fila_loading').show();

        /* Para solucionar problema de cache de IE, agregar un parametro X con un valor variable, en este caso
         * el time al momento de ejecutar la función.
         */
        var r = new Date().getTime();
        var url = '/' + Admin.dir_cgi_cpn + '/prontus_tax_admin.cgi?_entidad=seccion&_nueva=1&_prontus_id=' + Admin.prontus_id + "&_secc_id=" + id + '&r=' + r;

        if ($('#lista-seccion').length === 0 || obj === false) {
            if ($('#lista-seccion').length === 0) {
                $('#item-seccion-' + id).append('<ul id="lista-seccion' + '" class="hide-element list-group list-taxonomia"></ul>');
            }
            $('#lista-seccion').load(url, function (data) {
                if (obj !== false) {
                    $('#lista-seccion').slideToggle();
                }

                var current_vista = $('div[class*="vista-"]:visible').attr("data-vista");

                $('#lista-seccion-' + id).find('div[class*="txt_nom-"]').hide();
                $('#lista-seccion-' + id).find('.txt_nom-' + current_vista).show();

                $(obj).parent().find('a').show();
                $(obj).parent().find('.fila_loading').hide();
                /* Inicio drag&drop para lista-seccion */
                $('ul[id="lista-seccion"]').sortable({
                    items: "li:not(.ui-state-disabled), ul",
                    dropOnEmpty: true,
                    handle: '.handler',
                    opacity: 0.75,
                    update: function (event, ui) {
                        $(ui.item).addClass('moved');
                        Tax.guardarPos(ui.item, 'seccion');
                    }
                });
                /* Soluciona problema en explorer al arrastrar items anidados. */
                $('ul[id="lista-seccion"]').bind('mousedown', function (e) {
                    e.stopPropagation();
                });

                /* Cambia boton */
                if (obj !== false) {
                    $(obj).find('span').removeClass('fa-plus');
                    $(obj).find('span').addClass('fa-minus');
                }
                /* Si es 'guardar nuevo', abre el espacio de los inputs. */
                if (newitem == 1) {
                    Tax.mostrarOculto('nuevo-seccion-' + id)
                }
            });

        } else {
            if ($('#lista-seccion').is(':visible')) {
                $('#lista-seccion').slideToggle('slow', function () {
                    $(this).remove();
                    /* Cambia boton */
                    if (obj !== false) {
                        $(obj).find('span').removeClass('fa-minus');
                        $(obj).find('span').addClass('fa-plus');
                    }
                });
            }
        }
        $(obj).parent().find('a').show();
        $(obj).parent().find('.fila_loading').hide();
    },
    // -------------------------------------------------------------------------
    mostrarTemas: function (obj, id, newitem) {
        if (typeof newitem === 'undefined') {
            newitem = 0;
        }

        $(obj).parent().find('a').hide();
        $(obj).parent().find('.fila_loading').show();

        /* Para solucionar problema de cache de IE, agregar un parametro X con un valor variable, en este caso
         * el time al momento de ejecutar la función.
         */
        var r = new Date().getTime();
        var url = '/' + Admin.dir_cgi_cpn + '/prontus_tax_admin.cgi?_entidad=tema&_prontus_id=' + Admin.prontus_id + "&_secc_id=" + id + '&r=' + r;

        if ($('#lista-temas-' + id).length === 0 || obj === false) {
            if ($('#lista-temas-' + id).length === 0) {
                $('#item-seccion-' + id).append('<ul id="lista-temas-' + id + '" class="hide-element list-group list-taxonomia"></ul>');
            }
            $('#lista-temas-' + id).load(url, function (data) {
                if (obj !== false) {
                    $('#lista-temas-' + id).slideToggle();
                }

                var current_vista = $('div[class*="vista-"]:visible').attr("data-vista");

                $('#lista-temas-' + id).find('div[class*="txt_nom-"]').hide();
                $('#lista-temas-' + id).find('.txt_nom-' + current_vista).show();

                $(obj).parent().find('a').show();
                $(obj).parent().find('.fila_loading').hide();
                /* Inicio drag&drop para lista-temas */

                $('ul[id="lista-temas-' + id + '"]').sortable({
                    items: "li:not(.ui-state-disabled), ul",
                    dropOnEmpty: true,
                    handle: '.handler',
                    opacity: 0.75,
                    update: function (event, ui) {
                        $(ui.item).addClass('moved');
                        Tax.guardarPos(ui.item, 'tema');
                    }
                });
                /* Soluciona problema en explorer al arrastrar items anidados. */
                $('ul[id="lista-temas-' + id + '"]').bind('mousedown', function (e) {
                    e.stopPropagation();
                });

                /* Cambia boton */
                if (obj !== false) {
                    $(obj).find('span').removeClass('fa-plus');
                    $(obj).find('span').addClass('fa-minus');
                }
                /* Si es 'guardar nuevo', abre el espacio de los inputs. */
                if (newitem == 1) {
                    Tax.mostrarOculto('nuevo-tema-' + id)
                }

            });

        } else {
            if ($('#lista-temas-' + id).is(':visible')) {
                $('#lista-temas-' + id).slideToggle('slow', function () {
                    $(this).remove();
                    /* Cambia boton */
                    if (obj !== false) {
                        $(obj).find('span').removeClass('fa-minus');
                        $(obj).find('span').addClass('fa-plus');
                    }
                });
            }
        }
        $(obj).parent().find('a').show();
        $(obj).parent().find('.fila_loading').hide();
    },
    // -------------------------------------------------------------------------
    mostrarSubtemas: function (obj, id, newitem) {
        if (typeof newitem === 'undefined') {
            newitem = 0;
        }

        $(obj).parent().find('a').hide();
        $(obj).parent().find('.fila_loading').show();

        /* Para solucionar problema de cache de IE, agregar un parametro X con un valor variable, en este caso
        * el time al momento de ejecutar la función.
        */
        var r = new Date().getTime();
        var url = '/' + Admin.dir_cgi_cpn + '/prontus_tax_admin.cgi?_entidad=subtema&_prontus_id=' + Admin.prontus_id + "&_tema_id=" + id + '&r=' + r;

        if ($('#lista-subtemas-' + id).length === 0 || $('#lista-subtemas-' + id).html() === '' || obj === false) {
            if ($('#lista-subtemas-' + id).length === 0) {
                $('#item-tema-' + id).append('<ul id="lista-subtemas-' + id + '" class="hide-element list-group list-taxonomia"></ul>');
            }
            $('#lista-subtemas-' + id).load(url, function (data) {
                if (obj !== false) {
                    $('#lista-subtemas-' + id).slideToggle();
                }

                var current_vista = $('div[class*="vista-"]:visible').attr("data-vista");

                $('#lista-subtemas-' + id).find('div[class*="txt_nom-"]').hide();
                $('#lista-subtemas-' + id).find('.txt_nom-' + current_vista).show();

                $(obj).parent().find('a').show();
                $(obj).parent().find('.fila_loading').hide();
                /* Inicio drag&drop para lista-subtemas */
                $('ul[id="lista-subtemas-' + id + '"]').sortable({
                    items: "li:not(.ui-state-disabled), ul",
                    dropOnEmpty: true,
                    handle: '.handler',
                    opacity: 0.75,
                    update: function (event, ui) {
                        $(ui.item).addClass('moved');
                        Tax.guardarPos(ui.item, 'subtema');
                    }
                });
                /* Soluciona problema en explorer al arrastrar items anidados. */
                $('ul[id="lista-subtemas-' + id + '"]').bind('mousedown', function (e) {
                    e.stopPropagation();
                });

                /* Cambia boton */
                if (obj !== false) {
                    $(obj).find('span').removeClass('fa-plus');
                    $(obj).find('span').addClass('fa-minus');
                }

                /* si es 'guardar nuevo' mostrar espacio de los inputs. */
                if (newitem == 1) {
                    Tax.mostrarOculto('nuevo-subtema-' + id);
                }
            });
        } else {
            if (obj !== false) {
                $('#lista-subtemas-' + id).slideToggle('slow', function () {
                    $(this).remove();
                    /* Cambia boton */
                    if (obj !== false) {
                        $(obj).find('span').removeClass('fa-minus');
                        $(obj).find('span').addClass('fa-plus');
                    }
                });
            }
        }
        $(obj).parent().find('a').show();
        $(obj).parent().find('.fila_loading').hide();
    },
    // -------------------------------------------------------------------------
    borrarItem: function (obj, entidad, id) {
        var msg = '¿Estás seguro que quieres borrar est';
        switch (entidad) {
            case 'seccion':
                msg += 'a sección?';
                break;
            case 'tema':
                msg += 'e tema?';
                break;
            case 'subtema':
                msg += 'e subtema?';
                break;
        }

        showModalConfirm({
            msg: msg,
            type: 'red',
            icon: "glyphicon glyphicon-question-sign",
            okTitle: 'Borrar',
            btnClassOk: 'hovwhite radius15 noborder txtnextwhite pad-top-bot7 pad-lef-rig20 int-nextred nextred',
            cbBtnOK: function () {
                var form_data = {
                    "_entidad" :entidad,
                    "_prontus_id" : Admin.prontus_id,
                    '_id': id
                };

                if (entidad == 'tema') {
                    form_data['_secc_id'] = ($('#item-tema-' + id).parent().attr('id')).replace('lista-temas-', '');
                } else if (entidad == 'subtema') {
                    form_data['_tema_id'] = ($('#item-subtema-' + id).parent().attr('id')).replace('lista-subtemas-', '');
                }

                $(obj).parent().find('a').hide();
                $(obj).parent().find('.fila_loading').show();
                $.ajax({
                    url: '/' + Admin.dir_cgi_cpn + '/prontus_tax_borrar.cgi',
                    type: 'POST',
                    dataType: 'json',
                    data: form_data,
                    success: function (data) {
                        if (data.status == '0') {
                            showModalAlert({
                                title: 'Error',
                                type: 'red',
                                msg: data.msg
                            });
                            $(obj).parent().find('a').show();
                            $(obj).parent().find('.fila_loading').hide();
                        } else {
                            $('#item-' + entidad + '-' + id).fadeOut('slow', function () {
                                $(this).remove();
                            });
                        }
                    },
                    error: function () {
                        $(obj).parent().find('a').show();
                        $(obj).parent().find('.fila_loading').hide();
                    }
                });
            },
            cbBtnCancel: function () { }
        });
    },
    // -------------------------------------------------------------------------
    actualizarMostrar: function (obj, entidad, id) {
        // var img_src = $(obj).find('img').attr("src");
        // var orig_title = $(obj).find('img').attr("title");


        $(obj).parent().find('a').hide();
        $(obj).parent().find('.fila_loading').show();

        // btn_ticket_red, btn_ticket_green
        var value = 1;
        if ($(obj).find('span').hasClass('btn_ticket_green')) {
            value = 0;
            $(obj).find('span').removeClass('btn_ticket_green');
            $(obj).find('span').addClass('btn_ticket_red');
        } else {
            $(obj).find('span').removeClass('btn_ticket_red');
            $(obj).find('span').addClass('btn_ticket_green');
        }

        var form_data = {
            "_entidad" :entidad,
            "_prontus_id" : Admin.prontus_id,
            '_id': id,
            '_mostrar': value
        };

        if (entidad == 'tema') {
            form_data['_secc_id'] = ($('#item-tema-' + id).parent().attr('id')).replace('lista-temas-', '');
        } else if (entidad == 'subtema') {
            form_data['_tema_id'] = ($('#item-subtema-' + id).parent().attr('id')).replace('lista-subtemas-', '');
        }

        $.ajax({
            url: '/' + Admin.dir_cgi_cpn + '/prontus_tax_mostrar.cgi',
            type: 'POST',
            dataType: 'json',
            data: form_data,
            success: function (data) {
                if (data.status == '0') {
                    showModalAlert({
                        title: 'Error',
                        type: 'red',
                        msg: data.msg
                    });
                    Tax.cambiarColorActualizarMostrar(obj, value);
                }
                $(obj).parent().find('a').show();
                $(obj).parent().find('.fila_loading').hide();
            },
            error: function () {
                showModalAlert({
                    title: 'Error',
                    type: 'red',
                    msg: "Puerta de enlace inválida."
                });
                Tax.cambiarColorActualizarMostrar(obj, value);

                $(obj).parent().find('a').show();
                $(obj).parent().find('.fila_loading').hide();
            }
        });

    },

    cambiarColorActualizarMostrar: function (object, value) {
        if (value === 0) {
            $(object).find('span').removeClass('btn_ticket_red');
            $(object).find('span').addClass('btn_ticket_green');
        } else {
            $(object).find('span').removeClass('btn_ticket_green');
            $(object).find('span').addClass('btn_ticket_red');
        }
    },

    // -------------------------------------------------------------------------
    mostrarOculto: function (id) {
        if (!$('#' + id).is(':visible')) {
            $('#' + id).slideToggle('slow');
        }

        $('#' + id).find('input[name^="_nom"]').val('[nombre]').addClass('input-sinpulsar');
        $('#' + id).find('input[name="_port"]').val('[url]').addClass('input-sinpulsar');

        /* Quitar clase 'input-sinpulsar' a los inputs que se les hace click. */
        $('#' + id).find('input[type="text"]').click(function () {
            if ($(this).hasClass('input-sinpulsar')) {
                $(this).removeClass('input-sinpulsar');
                $(this).val('');
            }
        });
    },

    // -------------------------------------------------------------------------
    ocultar: function (id) {
        $('#' + id).slideToggle('slow');
    },
    // -------------------------------------------------------------------------
    ocultarTodo: function () {
        $('li.list-group-item .datos .showtema').each(function () {
            var span = $(this).find('span');
            if (span.hasClass('fa-minus')) {
                $(this).click();
            }
        });
    },

    // -------------------------------------------------------------------------
    ocultarDeshabilitadas: function () {
        Tax.hideDisabled = !Tax.hideDisabled;
        $('ul.list-group.ui-sortable li').each(function () {
            if ($(this).find('.datos a span.glyphicon-ok').first().hasClass('btn_ticket_red')) {
                if (Tax.hideDisabled) {
                    $(this).slideUp('slow');
                } else {
                    $(this).slideDown('slow');
                }
            }
        });
    },
    // -------------------------------------------------------------------------
    navVista: function (elemento) {
        var direccion = $(elemento).data('direccion');
        var nom_vista = $(elemento).data('vista');
        if (direccion == 'right') {
            if ($('.header.vista-' + nom_vista).next().hasClass('header')) {
                $('.vista-' + nom_vista).hide();
                $('.vista-' + nom_vista).next().show();

                $('.txt_nom-' + nom_vista).hide();
                $('.txt_nom-' + nom_vista).next().next().show();
            }
        } else if (direccion == 'left') {
            if ($('.header.vista-' + nom_vista).prev().hasClass('header')) {
                $('.vista-' + nom_vista).hide();
                $('.vista-' + nom_vista).prev().show();

                $('.txt_nom-' + nom_vista).hide();
                $('.txt_nom-' + nom_vista).prev().prev().show();
            }
        }
    },

    bindShowSeo: function () {
        $('#lista-seccion').on('click', '.show-seo', function (e) {
            e.preventDefault();

            var tipo = $(this).data('tipo');
            var id = $(this).data('elid');

            $.ajax({
                url: '/' + Admin.dir_cgi_cpn + '/seo/prontus_tax_seo.cgi?_prontus_id=' + Admin.prontus_id + '&_entidad=' + tipo + '&_id=' + id,
                type: 'GET',
                dataType: 'json',
                success: function (data) {
                    if (data.status == '0') {
                        showModalAlert({
                            title: 'Error',
                            type: 'red',
                            msg: data.msg
                        });
                    } else {
                        let template = $('#tpl_seo_modal').html();
                        template = template.replace(/__prontus_id__/g, Admin.prontus_id);
                        template = template.replace(/__label__/g, data.label);
                        template = template.replace(/__entidad__/g, data.entidad);
                        template = template.replace(/__id__/g, data.id);
                        template = template.replace(/__seo_title__/g, data.title);
                        template = template.replace(/__seo_description__/g, data.description);
                        template = template.replace(/__seo_fotofija__/g, data.fotofija);
                        template = template.replace(/__seo_multimedia_video__/g, data.multimedia_video);
                        template = template.replace(/__seo_multimedia_audio__/g, data.multimedia_audio);

                        ProntusConf.mv.forEach(function(vista) {
                            let regexp = new RegExp('__seo_title_'+ vista + '__', 'g');
                            template = template.replace(regexp, data['title_' + vista]);
                            regexp = new RegExp('__seo_description_' + vista + '__', 'g');
                            template = template.replace(regexp, data['description_' + vista]);
                        });

                        $('#modal_seo').modal();
                        $('#modal_seo_content').html(template);
                        Tax.fillCounters();
                        Tax.bindCounters();
                        Tax.bindURLCheck();
                        $('#modal_seo_content #_seo_robots option[value="' + data.robots + '"]').prop('selected', true).change();
                        $("#modal_seo_save").off("click").on("click", function (_e) {
                            _e.preventDefault();
                            Tax.guardarSeo();
                        });
                    }
                },
                error: function () {
                    showModalAlert({
                        title: 'Error',
                        type: 'red',
                        msg: 'Ocurrió un error, inténtalo nuevamente.'
                    });
                }
            });
        });
    },
    // devuelve el largo del texto ingresado en un input.
    getCounterValues: function (inputFieldID) {
        return $(inputFieldID).val().length;
    },
    // rellena los contadores de caracteres según el texto ingresado en los inputs respectivos.
    fillCounters: function () {
        let counterDisplayElement = '#tax_seo_title_charcount';
        $(counterDisplayElement).text(Tax.getCounterValues($(counterDisplayElement).parent().siblings('input, textarea')));

        counterDisplayElement = '#tax_seo_description_charcount';
        $(counterDisplayElement).text(Tax.getCounterValues($(counterDisplayElement).parent().siblings('input, textarea')));
    },
    // hace bind del evento keyup para los inputs de texto del modal SEO, para contar caracteres a medida que se tipea.
    bindCounters: function () {
        $('#tax_seo_title_charcount, #tax_seo_description_charcount').each(function () {
            let myself = this;
            let inputField = $(this).parent().siblings('input, textarea');
            $(inputField).on('keyup', function () {
                $(myself).text(Tax.getCounterValues('#' + $(this).attr('id')));
            });
        });
    },
    // enlaza el evento onchange del campo de URL a imagen|multimedia, para quitar el schema y dominio si vienen.
    bindURLCheck: function () {
        $('#_seo_fotofija,#_seo_multimedia_video,#_seo_multimedia_audio').on('change', function () {
            let urlPath = $(this).val();
            /**
            Explicación de la regex: ^(?:[a-z]+:)?//
            ^ - beginning of the string
            (?: - beginning of a non-captured group
            [a-z]+ - any character of 'a' to 'z' 1 or more times
            : - string (colon character)
            )? - end of the non-captured group. Group appearing 0 or 1 times
            // - string (two forward slash characters)
            'i' - non case-sensitive flag
             */
            let relPath = urlPath;
            let pattern = new RegExp('^(?:[a-z]+:)?//', 'i');
            if (pattern.test(urlPath)) {
                let theURL = new URL(urlPath);
                relPath = theURL.toString().substring(theURL.origin.length)
            }
            $(this).val(relPath);
        });
    },
    guardarSeo: function () {
        var dataPost = {
            _prontus_id: document.getElementById('_seo_prontus_id').value,
            id: document.getElementById('_seo_id').value,
            entidad: document.getElementById('_seo_entidad').value,
            title: document.getElementById('_seo_title').value,
            description: document.getElementById('_seo_description').value,
            robots: document.getElementById('_seo_robots').value,
            fotofija: document.getElementById('_seo_fotofija').value,
            multimedia_video: document.getElementById('_seo_multimedia_video').value,
            multimedia_audio: document.getElementById('_seo_multimedia_audio').value
        };

        ProntusConf.mv.forEach(function(vista) {
            dataPost['title_' + vista] = $('#_seo_title_' + vista).val();
            dataPost['description_' + vista] = $('#_seo_description_' + vista).val();
        });

        $.ajax({
            url: '/' + Admin.dir_cgi_cpn + '/seo/prontus_tax_seo_save.cgi',
            type: 'POST',
            dataType: 'json',
            data: dataPost,
            success: function (response) {
                if (response.status == 1) {
                    showModalAlert({
                        title: "Mensaje del servidor",
                        type: 'green',
                        msg: response.msg
                    });

                    $("#modal_seo").modal('hide');
                } else {
                    showModalAlert({
                        title: "Mensaje del servidor",
                        type: 'red',
                        msg: 'Ha ocurrido un error: ' + response.msg
                    });
                }
            },
            error: function () {
                showModalAlert({
                    title: 'Error',
                    type: 'red',
                    msg: 'Ocurrió un error, inténtalo nuevamente.'
                });
            }
        });
    },

    // -------------------------------------------------------------------------
    showURLs: function (entidad) {
        if (!$('#tp_div' + entidad).hasClass('visible' + entidad)) {
            $('#tp_div' + entidad).slideDown();
            $('#tp_div' + entidad).addClass('visible' + entidad);
        } else {
            $('#tp_div' + entidad).slideUp();
            $('#tp_div' + entidad).removeClass('visible' + entidad);
        }
    },

    modalExportTax: function () {
        var dataURL = '/cgi-cpn/prontus_tax_export.cgi?_prontus_id=' + Admin.prontus_id;
        $('#modal_taxs .modal-content').load(dataURL, function () {
            $('#modal_taxs').modal({ show: true, backdrop: 'static', keyboard: false });
            Opciones.checkStatus('/' + Admin.prontus_id + '/cpan/procs/result_tax_export.json');
        });
    },

    modalImportTax: function () {
        $('#modal_tax_import').modal({ show: true, backdrop: 'static', keyboard: false });
        $('#FILE1').filestyle();

        var file = $('#FILE1');
        var msgError = $('#form1 .msg-error');
        var fileFormatIsValid = true;

        file.on('change', function (event) {
            event.preventDefault();
            fileFormatIsValid = Tax.fileValidateFormat(file, msgError);
        });

        $('#form1').on('submit', function (e) {
            e.preventDefault();

            if (file.val() === '') {
                alert('Debe ingresar un archivo para Importar.');
                return;
            }

            var form_action = '/' + Admin.dir_cgi_cpn + '/prontus_tax_import.cgi';
            var form = $(this);
            var formdata = false;

            if (window.FormData) {
                formdata = new FormData(form[0]);
            }

            if (fileFormatIsValid) {
                $.ajax({
                    url: form_action,
                    data: formdata ? formdata : form.serialize(),
                    contentType: false,
                    processData: false,
                    type: 'POST',
                    success: function (data, textStatus, jqXHR) {
                        $('#modal_tax_import .modal-content').html(data);
                        Opciones.checkStatus('/' + Admin.prontus_id + '/cpan/procs/result_tax_import.json');
                    }
                });
            }
        });
    },

    fileValidateFormat: function (fileUpload, idMsgError) {
        idMsgError.fadeOut();
        var allowedFiles = [".xml"];
        var regex = new RegExp("([a-zA-Z0-9\s_\\.\-:\(\) ])+(" + allowedFiles.join('|') + ")$");
        if (!regex.test(fileUpload.val().toLowerCase())) {
            idMsgError.fadeIn();
            idMsgError.find('p').html('<span class="glyphicon glyphicon-remove text-danger"></span> Formato de archivo no válido');
            return false;
        }
        return true;

    }
};
