﻿var nuccategoria = "uccategoria";
var nlscategorias = "lscategorias_";
var nlstodascateg = "lstodascateg_";
var nlssubcateg = "lssubcategorias_";
var ndadoscategoria = "dadoscategoria_";

function categorias_mostratreeview() {
    $('#trtreecategorias').toggle();
}

$.loadcategorias = function(idTipo, nome) {
    $('.trevents_tipo').hide();
    $('#trTipo_' + idTipo).show();
    var uc = $.jCache.getItem(nuccategoria);
    if (uc == null) {
        $.exec(urlwscategoria + "/RetornaUcCategoria", null, false, function(dados) {
            uc = dados.d;
            $.jCache.setItem(nuccategoria, uc);
        });
    }
    if (uc != null) {
        $(divcoluna1).html(uc);
        $('#idTipoCategoria').val(idTipo);
        $('#nomeTipoCategoria').val(nome);
        $.listacategoria(idTipo, nome);
    }
}
$.listacategoria = function(id, nomeTipo) {
    $(divcoluna2).empty();
    $(divcoluna3).empty();
    $.cancelacategoria();

    var ls = $.jCache.getItem(nlscategorias + id);
    if (ls == null) {
        $.exec(urlwscategoria + "/CarregaCategoria", "{id:\"" + id + "\"}", false, function(dados) {
            ls = (typeof dados.d) == "string" ? eval("(" + dados.d + ")") : dados.d;
            $.jCache.setItem(nlscategorias + id, ls);
        });
    }
    $('#browser').empty();
    if (ls != null) {
        if (ls.length > 0) {
            var branches;
            var subls;
            var tmp = "<li><span class='folder'>" + nomeTipo + "</span><ul>";
            for (var i = 0; i < ls.length; i++) {
                subls = ls[i].SubCategorias;
                if(subls != null) if (subls.length > 0) {
                    tmp = tmp + "<li><span class='folder'><a onclick=\"$.loadconteudo('" + ls[i].Id + "');\">" + ls[i].Nome + "</a></span><ul>";
                    for (var ii = 0; ii < subls.length; ii++) tmp = tmp + $.montatree(subls[ii]);
                    tmp = tmp + "</ul></li>";
                } else tmp = tmp + "<li><span class='file'><a onclick=\"$.loadconteudo('" + ls[i].Id + "');\">" + ls[i].Nome + "</a></span></li>";
            }
            tmp = tmp + "</ul></li>";
            branches = $(tmp).appendTo("#browser");
            $("#browser").treeview({ add: branches });
        }
    }
}
$.montatree = function(categ) {
    var rs = "";
    if (categ != null) {
        var subls = categ.SubCategorias;
        if (subls != null) if (subls.length > 0) {
            rs = "<li><span class='folder'><a onclick=\"$.loadconteudo('" + categ.Id + "');\">" + categ.Nome + "</a></span><ul>";
            for (var i = 0; i < subls.length; i++)
                rs = rs + $.montatree(subls[i]);
            rs = rs + "</ul></li>";
        } else rs = "<li><span class='file'><a onclick=\"$.loadconteudo('" + categ.Id + "');\">" + categ.Nome + "</a></span></li>";
    }
    return rs;
}
$.listasubcategoria = function(id) {
    var ls = $.jCache.getItem(nlssubcateg + id);
    if (ls == null) {
        $.exec(urlwscategoria + "/CarregaCategoriaParent", "{id:\"" + id + "\"}", false, function(dados) {
            ls = (typeof dados.d) == 'string' ? eval('(' + dados.d + ')') : dados.d;
            $.jCache.setItem(nlssubcateg + id, ls);
        });
    }
    return ls;
}
$.cancelacategoria = function() {
    $('#dvedtcategoria').hide();
    $('#lkNovaCateg').show();
}
$.carregacategoria = function(id) {
    var retorno = $.jCache.getItem(ndadoscategoria + id);
    if (retorno == null) {
        $.exec(urlwscategoria + "/CarregaCategoria", "{id:\"" + id + "\"}", false, function(dados) {
            retorno = (typeof dados.d) == 'string' ? eval('(' + dados.d + ')') : dados.d;
            $.jCache.setItem(ndadoscategoria + id, retorno);
        });
    }
    return retorno;
}
$.salvacategoria = function() {
    var parentId = -1;
    var valor = $('#dpSubCategoria').val();
    if (valor != '') {
        valor = valor.split('|');
        if (valor[1] == 'prid')
            parentId = valor[0];
    }

    var nome = $('#txtNomeCategoria').val();
    var descricao = $('#txtDescricaoCategoria').val();
    var url = $('#txtUrlCategoria').val();
    var mostraresumo = true;
    if ($('#ckMostraResumo').attr('checked')) mostraresumo = true;
    else mostraresumo = false;
    var mostranomenu = true;
    if ($('#ckMostrarNoMenu').attr('checked')) mostranomenu = true;
    else mostranomenu = false;

    var idTipoCategoria = $('#idTipoCategoria').val();
    var nomeTipoCategoria = $('#nomeTipoCategoria').val();

    var ok = false;
    if (nome == '') {
        $.show('Informe o nome do tipo de categoria.');
        ok = false;
    } else {
        if (valor == '') {
            $.show('Informe a subcategoria para a categoria.');
            ok = false;
        } else {
            if (descricao == '') {
                $.show('Informe a descrição da categoria.');
                ok = false;
            } else ok = true;
        }
    }

    if (ok) {
        $.exec(urlwscategoria + "/SalvarCategoria", "{idTipoCategoria:\"" + idTipoCategoria + "\", parentId:\"" + parentId +
            "\", nome: \"" + nome + "\", descricao:\"" + descricao + "\", url: \"" + url + "\", mostraresumo: \"" + mostraresumo + "\",mostranomenu:\"" + mostranomenu + "\"}", false, function () {
            $.jCache.setItem(nlscategorias + idTipoCategoria, null);
            $.listacategoria(idTipoCategoria, nomeTipoCategoria);
        });
    }
}
$.alteracategoria = function() {
    var Id = $('#IdCategoria').val();

    var parentId = -1;
    var valor = $('#dpSubCategoria').val();
    if (valor != '') {
        valor = valor.split('|');
        if (valor[1] == 'prid') parentId = valor[0];
    }

    var nome = $('#txtNomeCategoria').val();
    var descricao = $('#txtDescricaoCategoria').val();
    var url = $('#txtUrlCategoria').val();
    var mostraresumo = true;
    if ($('#ckMostraResumo').attr('checked')) mostraresumo = true;
    else mostraresumo = false;
    var mostranomenu = true;
    if ($('#ckMostrarNoMenu').attr('checked')) mostranomenu = true;
    else mostranomenu = false;

    var idTipoCategoria = $('#idTipoCategoria').val();
    var nomeTipoCategoria = $('#nomeTipoCategoria').val();

    var ok = false;
    if (nome == '') $.show('Informe o nome do tipo de categoria.');
    else if (valor == '') $.show('Informe a subcategoria para a categoria.');
    else if (descricao == '') $.show('Informe a descrição da categoria.');
    else if (parentId == Id) $.show('Categoria não pode ser subcategoria dela mesma.');
    else ok = true;

    if (ok) {
        $.exec(urlwscategoria + "/AlteraCategoria", "{id:\"" + Id + "\", parentId:\"" + parentId + "\", nome: \"" + nome + "\", descricao:\"" + descricao + "\", url:\"" + url + "\", mostraresumo: \"" + mostraresumo + "\",mostranomenu:\"" + mostranomenu + "\"}", false, function () {
            $.jCache.setItem(nlscategorias + idTipoCategoria, null);
            $.jCache.setItem(ndadoscategoria+Id,null);
            $.listacategoria(idTipoCategoria, nomeTipoCategoria);
        });
    }
}
$.excluicategoria = function() {
    var id = $('#IdCategoria').val();
    var idTipo = $('#idTipoCategoria').val();       
    var nome = $('#nomeTipoCategoria').val();
    $.prompt(perguntareg, { submit: function(v, m, f) {
        if (v) $.removecategoria(id,idTipo,nome);
    }, buttons: { Sim: true, Não: false }, focus: 1
    });
}
$.sobecategoria = function() {
    var idTipoCategoria = $('#idTipoCategoria').val();
    var idTipo = idTipoCategoria;
    var valor = $('#dpSubCategoria').val();
    if (valor != '') {
        valor = valor.split('|');
        if (valor[1] == 'prid') idTipo = valor[0];
    }

    var id = $('#IdCategoria').val();
    var nomeTipoCategoria = $('#nomeTipoCategoria').val();
    var parentId = $('#parentId').val();
    $.exec(urlwscategoria + "/SobeCategoria", "{id:\"" + id + "\",idTipo:\"" + idTipo + "\",parentID:" + parentId + "}", false, function() {
        $.jCache.setItem(nlscategorias + idTipoCategoria, null);      
        $.listacategoria(idTipoCategoria, nomeTipoCategoria);
        $.loadconteudo(id);
    });
}
$.descecategoria = function() {
    var idTipoCategoria = $('#idTipoCategoria').val();
    var idTipo = idTipoCategoria;
    var valor = $('#dpSubCategoria').val();
    if (valor != '') {
        valor = valor.split('|');
        if (valor[1] == 'prid') idTipo = valor[0];
    }

    var id = $('#IdCategoria').val();
    var nomeTipoCategoria = $('#nomeTipoCategoria').val();
    var parentId = $('#parentId').val();

    $.exec(urlwscategoria + "/DesceCategoria", "{id:\"" + id + "\",idTipo:\"" + idTipo + "\",parentID:" + parentId + "}", false, function() {
        $.jCache.setItem(nlscategorias + idTipoCategoria, null);
        $.listacategoria(idTipoCategoria, nomeTipoCategoria);
        $.loadconteudo(id);
    });
}
$.removecategoria = function(id, idTipo, nome) {
    $.exec(urlwscategoria + "/RemoveCategoria", "{id:\"" + id + "\"}", false, function() {
        $.jCache.setItem(nlscategorias + idTipo, null);
        $.jCache.setItem(ndadoscategoria + id, null);
        $.listacategoria(idTipo, nome);
    });
}
$.montaselect = function (categ, nomeSelect) {
    if (categ != null) {
        $(nomeSelect).addOption(categ.Id + "|prid", categ.Nome, false);
        var subls = categ.SubCategorias;
        if (subls != null) if (subls.length > 0) {
            for (var i = 0; i < subls.length; i++)
                $.montaselect(subls[i], nomeSelect); 
        }
    }
}
$.listatodascategoria = function (id, nomeSelect) {
    var ls = $.jCache.getItem(nlscategorias + id);
    if (ls == null) {
        $.exec(urlwscategoria + "/CarregaCategoria", "{id:\"" + id + "\"}", false, function (dados) {
            ls = (typeof dados.d) == "string" ? eval("(" + dados.d + ")") : dados.d;
            $.jCache.setItem(nlscategorias + id, ls);
        });
    }

    $(nomeSelect).attr('disabled', true).removeOption(/./);
    $(nomeSelect).attr('disabled', false).addOption($('#idTipoCategoria').val() + "|tpCat", $('#nomeTipoCategoria').val());

    if (ls != null) {
        if (ls.length > 0) {
            for (var i = 0; i < ls.length; i++) {
                subls = ls[i].SubCategorias;
                if (subls != null) if (subls.length > 0) {
                    $(nomeSelect).addOption(ls[i].Id + "|prid", ls[i].Nome, false);
                    for (var ii = 0; ii < subls.length; ii++) {
                        $.montaselect(subls[ii], nomeSelect); 
                    }
                } else $(nomeSelect).addOption(ls[i].Id + "|prid", ls[i].Nome, false);
            }
        }
    }
}
$.novacategoria = function() {
    var id = $('#idTipoCategoria').val();
    $.listatodascategoria(id, "#dpSubCategoria");
    $('#dvedtcategoria').show();

    $('#txtNomeCategoria').val("");
    $('#txtDescricaoCategoria').val("");
    $('#txtUrlCategoria').val("");
    
    $('#lkDesceCateg').hide();
    $('#lkSobeCateg').hide();

    $('#lkInsCateg').show();
    $('#lkAltCateg').hide();
    $('#lkDelCateg').hide();
    $('#lkCansCateg').show();
}
$.editacategoria = function(id) {
    var idTipo = $('#idTipoCategoria').val();
    $.listatodascategoria(idTipo, "#dpSubCategoria");
    var dados = $.carregadadoscategoria(id);
    $('#dvedtcategoria').show();
    $('#IdCategoria').val(dados.Id);
    $('#txtNomeCategoria').val(dados.Nome);
    $('#txtDescricaoCategoria').val(dados.Descricao);
    $('#txtUrlCategoria').val(dados.UrlSite);
    if (dados.MostraResumo) $('#ckMostraResumo').attr('checked', 'checked');
    else $('#ckMostraResumo').removeAttr('checked');
    if (dados.ParentId > 0) {
        $('#dpSubCategoria').val(dados.ParentId + "|prid");
        $('#parentId').val("true");
    } else $('#parentId').val("false");
    if (dados.MostrarNoMenu) $('#ckMostrarNoMenu').attr('checked', 'checked');
    else $('#ckMostrarNoMenu').removeAttr('checked');

    $('#lkAltCateg').show();
    $('#lkDelCateg').show();
    $('#lkDesceCateg').show();
    $('#lkSobeCateg').show();
    $('#lkInsCateg').hide();
    $('#lkCansCateg').hide();
}
$.carregadadoscategoria = function(id) {
    var retorno = $.jCache.getItem(ndadoscategoria + id);
    if (retorno == null) {
        $.exec(urlwscategoria + "/CarregaDadosCategoria", "{id:\"" + id + "\"}", false, function(dados) {
            retorno = (typeof dados.d) == 'string' ? eval('(' + dados.d + ')') : dados.d;
            $.jCache.setItem(ndadoscategoria + id, retorno);
        });
    }
    return retorno;
}
