﻿function alert(caption, msg, fn) {
    Ext.MessageBox.alert(caption, msg, fn);
}
function getCmp(id) {
    el = Ext.getCmp("ctl00_ContentPlaceHolder1_" + id);
    if (el != null)
        return el;
    el = Ext.getCmp(id);
    if (el != null)
        return el;
    var el = document.getElementById(id);
    if (el != null)
        return el;
    var id = "ctl00_ContentPlaceHolder1_" + id;
    el = document.getElementById(id);
    if (el != null)
        return el;
    var lst = document.getElementsByName(id);
    if (lst.length > 0)
        return lst[0];
    return null;
}
function $frame(id) {
    var moz = !(document.all);
    var el = null;
    if (moz && getCmp(id + '_IFrame') != null)
        el = getCmp(id + '_IFrame').contentWindow;
    else if (frames["ctl00_ContentPlaceHolder1_" + id + "_IFrame"] == null)
        el = parent.frames["ctl00_ContentPlaceHolder1_" + id + "_IFrame"];
    else
        el = frames["ctl00_ContentPlaceHolder1_" + id + "_IFrame"];

    if (el != null)
        return el;
    return null;
}
function validate(id) {
    var cmp = Ext.getCmp(id);
    if (cmp.items && cmp.items.items.length > 0) {
        for (var i = 0; i < cmp.items.items.length; i++) {
            if (cmp.items.items[i].items && cmp.items.items[i].items.length > 0)
                validate(cmp.items.items[i].id);
            else if (cmp.items.items[i].validate && !cmp.items.items[i].validate())
                return false;
        }
    }
    else if (cmp.validate && !cmp.validate())
        return false;
    return true;
}
function createW(id, title, width, height, maximizable, minimizable, resizable, buttonsFunc, buttonsText, buttonsIcon, isButtonDefault, fnSave, url, args, closable) {
    if (args && args.length > 0) {
        for (var i = 0; i < args.length; i++) {
            url += i == 0 ? '?' : '&';
            url += 'args' + i + '=' + args[i];
        }
    }

    var diretorio = document.location.pathname;

    var redir = url;
    var pastas = diretorio.split('/');
    
    if (pastas.length > 2 && redir.substring(0, 2) != '..') {
        redir = '../' + url;
    }

    var win = new Ext.Window({ renderTo: Ext.getBody(),
        constrain: false,
        title: title,
        height: height,
        width: width,
        maximizable: maximizable,
        minimizable: minimizable,
        resizable: resizable,
        modal: true,
        frame: true,
        closable: closable,
        id: 'ctl00_ContentPlaceHolder1_' + id,
        buttons: isButtonDefault ? getButtonsWindowPadrao(id, fnSave) : getButtonsWindow(buttonsFunc, buttonsText, buttonsIcon),
        autoLoad: { maskMsg: "Carregando...", showMask: true, mode: "iframe", url: redir }
    });
    win.show();
}

function getButtonsWindowPadrao(id, fnSave) {
    var fnClose = function () { getCmp(id).close(); };
    var btn1 = { id: 'ctl00_ContentPlaceHolder1_salvar1', text: 'Salvar', handler: fnSave, xtype: 'button' };
    var btn2 = { id: 'ctl00_ContentPlaceHolder1_cancelar1', text: 'Cancelar', handler: fnClose, xtype: 'button' };
    return [btn1, btn2];
}

function getButtonsWindow(arrayFunc, arrayText, arrayIcon) {
    if (!arrayFunc)
        return null;
    var array = [];
    for (var i = 0; i < arrayFunc.length; i++) {
        if(arrayIcon)
            var btn = { text: arrayText[i], handler: arrayFunc[i], iconCls: "icon-" + arrayIcon[i], xtype: 'button' };
        else
            var btn = { text: arrayText[i], handler: arrayFunc[i], xtype: 'button' };
        array[i] = btn;
    }
    return array;
} 
function getQS(name) {
    var qs = new Array();
    var values = location.search.replace(/\x3F/, "").replace(/\x2B/g, " ").split("&");
    if (values != "")
        for (var i = 0; i < values.length; i++) {
            var nvar = values[i].split("=");
            qs[nvar[0]] = unescape(nvar[1]);
        }
    return qs[name];
}

// Mascaras

function maskFone(obj) {
    var v = obj.getValue();
    v = v.replace(/\D/g, "")
    v = v.replace(/^(\d\d)(\d)/g, "($1) $2")
    v = v.replace(/(\d{4})(\d)/, "$1-$2")
    obj.setValue(v);
}
function maskData(obj) {
    var v = obj.getValue();
    v = v.replace(/\D/g, "")
    v = v.replace(/(\d{2})(\d)/, "$1/$2")
    v = v.replace(/(\d{2})(\d)/, "$1/$2")
    v = v.replace(/(\d{4})(\d)/, "$1/$2")
    obj.setValue(v);
}
function maskCpf(obj) {
    var v = obj.getValue();
    v = v.replace(/\D/g, "")
    v = v.replace(/(\d{3})(\d)/, "$1.$2")
    v = v.replace(/(\d{3})(\d)/, "$1.$2")
    v = v.replace(/(\d{3})(\d{1,2})$/, "$1-$2")
    obj.setValue(v);
}

function maskCep(obj) {
    var v = obj.getValue();
    v = v.replace(/D/g, "")
    v = v.replace(/^(\d{5})(\d)/, "$1-$2")
    obj.setValue(v);
}

function maskCnpj(obj) {
    var v = obj.getValue();
    v = v.replace(/\D/g, "")
    v = v.replace(/^(\d{2})(\d)/, "$1.$2")
    v = v.replace(/^(\d{2})\.(\d{3})(\d)/, "$1.$2.$3")
    v = v.replace(/\.(\d{3})(\d)/, ".$1/$2")
    v = v.replace(/(\d{4})(\d)/, "$1-$2")
    obj.setValue(v);
}
function formatacaoMonetaria(campo) {
    //Formatação limita pra máximo 999.999.999.999,99
    var obj = Ext.getDom(campo.id);
    v = obj.value;
    isNegativo = v.indexOf('-') >= 0;
    v = v.replace(/\D/g, "");
    v = v.replace(/(\d{1})(\d{14})$/, "$2");
    v = v.replace(/(\d{1})(\d{11})$/, "$1.$2");
    v = v.replace(/(\d{1})(\d{8})$/, "$1.$2");
    v = v.replace(/(\d{1})(\d{5})$/, "$1.$2");
    v = v.replace(/(\d{1})(\d{1,2})$/, "$1,$2");
    if (isNegativo)
        v = '-' + v;
    obj.value = v;
    obj.maxLength = 18;
}
function cboBeforeQuery(a, array) {
    var q = Ext.isEmpty(a.query) ? '' : a.query;
    var cbo = a.combo;
    q = a.query;
    forceAll = a.forceAll;
    if (forceAll === true || (q.length >= cbo.minChars)) {
        if (cbo.lastQuery !== q) {
            cbo.lastQuery = q;
            if (cbo.mode == 'local') {
                cbo.selectedIndex = -1;
                if (forceAll) {
                    cbo.store.clearFilter();
                } else {
                    for (var i = 0; i < array.length; i++) {
                        cbo.store.filter(array[i], q, true, false);
                    }
                }
                cbo.onLoad();
            } else {
                cbo.store.baseParams[cbo.queryParam] = q;
                cbo.store.load({
                    params: cbo.getParams(q)
                });
                cbo.expand();
            }
        } else {
            cbo.selectedIndex = -1;
            cbo.onLoad();
        }
    }
}
function abrirWindowLogin() {
    var fnLogin = function () {
        var frm = $frame("winLogin");
        frm.login();
    };

    var arrayHandler = [fnLogin, function () { window.location = 'Login.aspx'; } ];
    var arrayText = ['Login', 'Cancelar'];
    var arrayIcons = ['lock', 'cancel'];
    createW('winLogin', 'Login', 300, 150, false, false, false, arrayHandler, arrayText, arrayIcons, false, null, 'LoginPaginaInterna.aspx', null);
}
function openMenu(btn) {
    btn.showMenu();
}
function showWindow() {
    window.open('BaseRelatorio.aspx', 'Titulo');
}
function formataCpfParaBranco(str) {
    str = str.replaceAll('.', '');
    str = str.replaceAll('/', '');
    str = str.replaceAll('-', '');
    str = str.replaceAll('_', '');
    str = str.replaceAll('\\', '');
    return '' + str;
}
function formataCnpjParaBranco(str) {
    str = str.replaceAll('.', '');
    str = str.replaceAll('/', '');
    str = str.replaceAll('-', '');
    str = str.replaceAll('_', '');
    return '' + str;
}
String.prototype.replaceAll = function (de, para) {
    var str = this;
    var pos = str.indexOf(de);
    while (pos > -1) {
        str = str.replace(de, para);
        pos = str.indexOf(de);
    }
    return (str);
}

function identificaNavegador() {
    var browserAgent = navigator.userAgent.toLowerCase();
    var browserName = navigator.appName.toLowerCase();

    if ((browserAgent.indexOf('chrome') > -1) || (browserName.indexOf('chrome') > -1))
        return 1;
    else if ((browserAgent.indexOf('firefox') > -1) || (browserName.indexOf('firefox') > -1))
        return 2;
    else if ((browserAgent.indexOf('microsoft') > -1) || (browserName.indexOf('microsoft') > -1))
        return 3;
    else if ((browserAgent.indexOf('safari') > -1) || (browserName.indexOf('safari') > -1))
        return 4;
    else if ((browserAgent.indexOf('opera') > -1) || (browserName.indexOf('opera') > -1))
        return 5;
    else
        return -1;
}

function valida_cpf(cpf) {
    var numeros, digitos, soma, i, resultado, digitos_iguais;
    digitos_iguais = 1;
    if (cpf.length < 11)
        return false;
    for (i = 0; i < cpf.length - 1; i++)
        if (cpf.charAt(i) != cpf.charAt(i + 1)) {
            digitos_iguais = 0;
            break;
        }
    if (!digitos_iguais) {
        numeros = cpf.substring(0, 9);
        digitos = cpf.substring(9);
        soma = 0;
        for (i = 10; i > 1; i--)
            soma += numeros.charAt(10 - i) * i;
        resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
        if (resultado != digitos.charAt(0))
            return false;
        numeros = cpf.substring(0, 10);
        soma = 0;
        for (i = 11; i > 1; i--)
            soma += numeros.charAt(11 - i) * i;
        resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
        if (resultado != digitos.charAt(1))
            return false;
        return true;
    }
    else
        return false;
}

function valida_cnpj(cnpj) {
    var numeros, digitos, soma, i, resultado, pos, tamanho, digitos_iguais;
    digitos_iguais = 1;
    if (cnpj.length < 14 && cnpj.length < 15)
        return false;
    for (i = 0; i < cnpj.length - 1; i++)
        if (cnpj.charAt(i) != cnpj.charAt(i + 1)) {
            digitos_iguais = 0;
            break;
        }
    if (!digitos_iguais) {
        tamanho = cnpj.length - 2
        numeros = cnpj.substring(0, tamanho);
        digitos = cnpj.substring(tamanho);
        soma = 0;
        pos = tamanho - 7;
        for (i = tamanho; i >= 1; i--) {
            soma += numeros.charAt(tamanho - i) * pos--;
            if (pos < 2)
                pos = 9;
        }
        resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
        if (resultado != digitos.charAt(0))
            return false;
        tamanho = tamanho + 1;
        numeros = cnpj.substring(0, tamanho);
        soma = 0;
        pos = tamanho - 7;
        for (i = tamanho; i >= 1; i--) {
            soma += numeros.charAt(tamanho - i) * pos--;
            if (pos < 2)
                pos = 9;
        }
        resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
        if (resultado != digitos.charAt(1))
            return false;
        return true;
    }
    else
        return false;

}

function digita_num(evento) {
    var tecla = (evento.keyCode ? evento.keyCode : evento.which ? evento.which : evento.charCode)
    if (((tecla < 48) || (tecla > 57)) && tecla != 9 && tecla != 8 && tecla != 46 && (tecla < 37 || tecla > 40)) {
        evento.returnValue = false;
        return false;
    }
    return true;
}

String.prototype.trim = function () {
    return this.replace(/^\s+|\s+$/g, "");
}
String.prototype.ltrim = function () {
    return this.replace(/^\s+/, "");
}
String.prototype.rtrim = function () {
    return this.replace(/\s+$/, "");
}

function ltrim(str) {
    for (var k = 0; k < str.length && isWhitespace(str.charAt(k)); k++);
    return str.substring(k, str.length);
}
function rtrim(str) {
    for (var j = str.length - 1; j >= 0 && isWhitespace(str.charAt(j)); j--);
    return str.substring(0, j + 1);
}
function trim(str) {
    return ltrim(rtrim(str));
}

function isWhitespace(charToCheck) {
    var whitespaceChars = " \t\n\r\f";
    return (whitespaceChars.indexOf(charToCheck) != -1);
}
