﻿function $ExtValue(id) {
    return Ext.getCmp(id).getValue();
}
/* Argumentos do Callback*/
function getArgs() {
    var args = {
        acao: $("ctl00_hfAcao").value,
        Srk: Ext.getCmp("grd").selModel.selections.length == 0 ? 0 : Ext.getCmp("grd").selModel.selections.items[0].data["Srk"]
    };
    return args;
}

/* Ação Botão Novo */
function acaoNovo() {
    if (!validarNovo())
        return;
    Ext.getWin("FLWindow1").show();
    var lst = getControles();
    for (var x = 0; x < lst.length; x++)
        Ext.getCmp(lst[x]).reset();
    configureNovo();
    $("ctl00_hfAcao").value = "1";
}

/* Ação Botão Editar */
function acaoEditar() {
    var data = Ext.getCmp('grd').getSelectedKeys();
    if (data.length > 1) {
        Ext.MessageBox.alert("Itens", "Selecione apenas um item...");
        return;
    }
    var id = getSelectedData("grd", "Srk");
    if (id == undefined)
        return;
    if (!validarEditar())
        return;
    Ext.getWin("FLWindow1").show();
    var lst = getControles();
    var args = { Srk: id };
    var fn = function (rs) {
        for (var x = 0; x < lst.length; x++)
            Ext.getCmp(lst[x]).setValue(rs[lst[x]]);
        configureEditar(rs);
    };
    Ext.getAjax("FLAjaxEditar").callback({ args: args, fn: fn });
    $("ctl00_hfAcao").value = "2";
}

/* Ação Botão Remover */
function acaoRemover() {
    var id = getSelectedData("grd", "Srk");
    if (id == undefined)
        return;
    if (!validarRemover())
        return;
    Ext.MessageBox.confirm("Remover item", "Deseja remover?", function (btn) {
        if (btn == 'yes') {
            var fn = function (rs) {
                configureRemover(rs);
                if (rs["msg"] != undefined) {
                    Ext.MessageBox.alert(rs["title"], rs["msg"]);
                    return;
                }
                if (rs["erroRemover"] != undefined) {
                    Ext.MessageBox.alert("Remover", rs["erroRemover"]);
                    return;
                }
                if (typeof (buscar) == "function")
                    buscar();
                else
                    Ext.getCmp("grd").callback();
            };
            var args = { Srk: id };
            Ext.getAjax("FLAjaxRemover").callback({ args: args, fn: fn });
        }
    });
}

/* Ação Botão Remover Id */
function acaoRemoverId() {
    var id = getSelectedData("grd", "Id");
    if (id == undefined)
        return;
    if (!validarRemover())
        return;
    Ext.MessageBox.confirm("Remover item", "Deseja remover?", function (btn) {
        if (btn == 'yes') {
            var fn = function (rs) {
                configureRemover(rs);
                if (rs["msg"] != undefined) {
                    Ext.MessageBox.alert(rs["title"], rs["msg"]);
                    return;
                }
                if (rs["erroRemover"] != undefined) {
                    Ext.MessageBox.alert("Remover", rs["erroRemover"]);
                    return;
                }
                if (typeof (buscar) == "function")
                    buscar();
                else
                    Ext.getCmp("grd").callback();
            };
            var args = { Id: id };
            Ext.getAjax("FLAjaxRemover").callback({ args: args, fn: fn });
        }
    });
}

/* Ação Botão Salvar */
function acaoSalvar(idFlWindow, url) {
    var lst = getControles();
    if (!validarSalvar())
        return;
    if (!Ext.getCmp(idFlWindow).validate())
        return;
    var values = getArgs();
    for (var x = 0; x < lst.length; x++) {
        var value = Ext.getCmp(lst[x]).getValue();
        if (value && value.format)
            values[lst[x]] = value.format("d/m/Y");
        else
            values[lst[x]] = value;
    }
    var fn = function (rs) {
        if (rs["msg"] != undefined) {
            Ext.MessageBox.alert(rs["titulo"], rs["msg"]);
            return;
        }
        configureSalvar(rs);
        buscar();
        filter();
        Ext.getWin(idFlWindow).close();
    };
    Ext.getAjax("FLAjaxSalvar").callback({ args: values, url: url, fn: fn });
}

/* Selecionar Item */
function getSelectedData(grd, data) {
    try {
        var data = Ext.getCmp(grd).selModel.selections.items[0].data[data];
        return data;
    } catch (ex) {
        //Ext.MessageBox.alert("Itens", "Selecione um item da lista...");
        return;
    }
}

/* Buscar pelo ID */

function $(id) {
    var el = document.getElementById(id);
    if (el != null)
        return el;

    var mpId = "ctl00_body_" + id;
    el = document.getElementById(mpId);
    if (el != null)
        return el;

    var lst = document.getElementsByName(id);
    if (lst.length > 0)
        return lst[0];
    return null;
}

/* Load Grid - Params */
function loadGridParams(args, grd) {
    var selected = grd.getSelectedKey();
    if (selected != undefined) {
        var fn = function () {
            var rows = grd.getKeys();
            for (i in rows) {
                if (typeof (rows[i]) != 'object' || rows[i][0] != selected[0])
                    continue;
                grd.selModel.selectRow(i);
                grd.view.focusRow(parseInt(i));
                break;
            }
        };
        grd.callback({ args: args, fn: fn });
    }
    else
        grd.callback({ args: args });
}
/* Load Grid */

/* Validações */
function validarNovo() { return true; };
function validarGravar() { return true; };
function validarSalvar() { return true; };
function validarEditar() { return true; };
function validarRemover() { return true; };

/* Configurações Especiais */
function configureNovo() { };
function configureGravar(rs) { };
function configureSalvar(rs) { };
function configureEditar(rs) { };
function configureRemover(rs) { };
function configureVisualizar(rs) { };

/* Habilitar/Desabilitar Botões */
function setEnabled(controlsArray, permission, selectionRequired) {
    var selected = !selectionRequired || (Ext.getCmp("grd").selModel.selections.length > 0);
    for (var x = 0; x < controlsArray.length; x++)
        Ext.getCmp(controlsArray[x]).setDisabled(!selected || permission == "0");
}

function collapseSearch() {
    Ext.getCmp("pnlBusca").collapse();
}

function logoff() {
    Ext.MessageBox.confirm('LogOff', 'Sair do Sistema?', function (btn) {
        if (btn == 'yes') {
            window.location = '/Acesso/Logoff.aspx';
        }
    });
}

String.prototype.replaceAll = function (de, para) { // adicionando metodo na string
    var str = this;
    var pos = str.indexOf(de);
    while (pos > -1) {
        str = str.replace(de, para);
        pos = str.indexOf(de);
    }
    return (str);
}
