﻿/* ------------------------------------------------------------------------------
** -- Campo Cartão Uppercred 
** ------------------------------------------------------------------------------ */
/* Função blurCartaoUppercred(Objeto)
Verifica se o cartão esta no formato 9999.9999.9999.9999 */
function blurCartaoUpperCred(Objeto) {
    var strValor = passaDominio(Objeto.value, "0123456789");
    if (strValor != "") {
        if (strValor.length < 16) {
            window.alert('Cartão inválido!');
            LimparFoco(Objeto);
            return false;
        }
        Objeto.value = FormatarCartaoUpperCred(strValor);
    }
    return true;
}

/* Função FormatarCartaoUppercred(strDado) 
Formata o Cartão em 9999.9999.9999.9999 */
function FormatarCartaoUpperCred(strDado) {
    var strResult = passaDominio(strDado, "0123456789");
    var intTamanho = strResult.length;
    if ((intTamanho >= 4) && (intTamanho < 8))
        strResult = strDado.substr(0, 4) + '.' + strDado.substr(4, 4);
    if ((intTamanho >= 8) && (intTamanho < 12))
        strResult = strDado.substr(0, 4) + '.' + strDado.substr(4, 4) + '.' + strDado.substr(8, 4);
    if (intTamanho >= 12)
        strResult = strDado.substr(0, 4) + '.' + strDado.substr(4, 4) + '.' + strDado.substr(8, 4) + '.' + strDado.substr(12, 4);
    return strResult;
}

/* Função keyPressCartaoUppercred(Evento, Objeto)
Aplica uma mascara 9999.9999.9999.9999 em um campo de cartão */
function keyPressCartaoUpperCred(Evento, Objeto) {
    if (!keyNumber(Evento, Objeto))
        return true;
    if (Selecionar(Objeto))
        return true;
    if (Objeto.value.length >= 19) {
        CancelarDigitacao(Evento);
        return true;
    }
    if (position(Objeto) != Objeto.value.length)
        return true;
    Objeto.value = passaDominio(Objeto.value, "0123456789");
    Objeto.value = FormatarCartaoUpperCred(Objeto.value, true);
    return true;
}


/* ------------------------------------------------------------------------------
** -- Campo CEP 
** ------------------------------------------------------------------------------ */
/* Função blurCEP(Objeto)
Verifica se o Cep esta no formato 99999-999 */
function blurCEP(Objeto) {
    var strValor = passaDominio(Objeto.value, "0123456789");
    if (strValor != "") {
        if (strValor.length < 8) {
            window.alert('Cep inválido!');
            LimparFoco(Objeto);
            return false;
        }
        Objeto.value = FormatarCEP(strValor);
    }
    return true;
}

/* Função FormatarCEP(strDado) 
Formata o CEP em 99999-999 */
function FormatarCEP(strDado) {
    var strResult = strDado;
    var intTamanho = strDado.length;
    if (intTamanho >= 5)
        strResult = strDado.substr(0, 5) + '-' + strDado.substr(5, 3);
    return strResult;
}

/* Função keyPressCEP(Evento, Objeto)
Aplica uma mascara 99999-999 em um campo de cep */
function keyPressCEP(Evento, Objeto) {
    if (!keyNumber(Evento, Objeto))
        return true;
    if (Selecionar(Objeto))
        return true;
    if (Objeto.value.length >= 9) {
        CancelarDigitacao(Evento);
        return true;
    }
    if (position(Objeto) != Objeto.value.length)
        return true;
    Objeto.value = passaDominio(Objeto.value, "0123456789");
    Objeto.value = FormatarCEP(Objeto.value);
    return true;
}


/* ------------------------------------------------------------------------------
** -- Campo Número do Plano de Contas
** ------------------------------------------------------------------------------ */
/* Função blurNumeroPlanoConta(Objeto)
Verifica se o cartão esta no formato 9.9.9.99.99.999 */
function blurNumeroPlanoConta(Objeto) {
    Objeto.value = passaDominio(Objeto.value, "0123456789");
    Objeto.value = FormatarNumeroPlanoConta(Objeto.value, false);
    return true;
}

/* Função FormatarNumeroPlanoConta(strDado) 
Formata o Numero do plano de contas em 9.9.9.99.99.999 */
function FormatarNumeroPlanoConta(strDado) {
    var strResult = passaDominio(strDado, "0123456789");
    var intTamanho = strResult.length;
    if ((intTamanho >= 1) && (intTamanho < 2))
        strResult = strDado.substr(0, 1) + '.' + strDado.substr(1, 1);
    else if ((intTamanho >= 2) && (intTamanho < 3))
        strResult = strDado.substr(0, 1) + '.' + strDado.substr(1, 1) + '.' + strDado.substr(2, 1);
    else if ((intTamanho >= 3) && (intTamanho < 5))
        strResult = strDado.substr(0, 1) + '.' + strDado.substr(1, 1) + '.' + strDado.substr(2, 1) + '.' + strDado.substr(3, 2);
    else if ((intTamanho >= 5) && (intTamanho < 7))
        strResult = strDado.substr(0, 1) + '.' + strDado.substr(1, 1) + '.' + strDado.substr(2, 1) + '.' + strDado.substr(3, 2) + '.' + strDado.substr(5, 2);
    else if (intTamanho >= 7)
        strResult = strDado.substr(0, 1) + '.' + strDado.substr(1, 1) + '.' + strDado.substr(2, 1) + '.' + strDado.substr(3, 2) + '.' + strDado.substr(5, 2) + '.' + strDado.substr(7, 3);
    return strResult;
}

/* Função keyPressNumeroPlanoConta(Evento, Objeto)
Aplica uma mascara 9.9.9.99.99.999 em um campo customizado */
function keyPressNumeroPlanoConta(Evento, Objeto) {
    if (!keyNumber(Evento, Objeto))
        return true;
    if (Selecionar(Objeto))
        return true;
    if (Objeto.value.length >= 15) {
        CancelarDigitacao(Evento);
        return true;
    }
    if (position(Objeto) != Objeto.value.length)
        return true;
    Objeto.value = passaDominio(Objeto.value, "0123456789");
    Objeto.value = FormatarNumeroPlanoConta(Objeto.value, true);
    return true;
}

/* ------------------------------------------------------------------------------
** -- Campo CNPJ
** ------------------------------------------------------------------------------ */
/* Função blurCNPJ(Objeto)
Valida um CNPJ no formato 99.999.999/9999-99 */
function blurCNPJ(Objeto) {
    if (!ValidarCNPJ(Objeto.value)) {
        window.alert('CNPJ inválido!');
        LimparFoco(Objeto);
        return false;
    }
    Objeto.value = passaDominio(Objeto.value, "0123456789");
    Objeto.value = FormatarCNPJ(Objeto.value);
    return true;
}

/* Função FormatarCNPJ(strDado, bolValidoNull) 
Formata o CNPJ em 99.999.999/9999-99 */
function FormatarCNPJ(strDado) {
    var strResult = strDado;
    var intTamanho = strDado.length;
    if ((intTamanho > 1) && (intTamanho < 5))
        strResult = strDado.substr(0, 2) + '.' + strDado.substr(2, 3);
    if ((intTamanho >= 5) && (intTamanho < 8))
        strResult = strDado.substr(0, 2) + '.' + strDado.substr(2, 3) + '.' + strDado.substr(5, 3);
    if ((intTamanho >= 8) && (intTamanho < 12))
        strResult = strDado.substr(0, 2) + '.' + strDado.substr(2, 3) + '.' + strDado.substr(5, 3) + '/' + strDado.substr(8, 4);
    if (intTamanho >= 12)
        strResult = strDado.substr(0, 2) + '.' + strDado.substr(2, 3) + '.' + strDado.substr(5, 3) + '/' + strDado.substr(8, 4) + '-' + strDado.substr(12, 2);
    return strResult;
}


/* Função keyPressCNPJ(Objeto)
Aplica uma mascara 99.999.999/9999-99 em um campo de cnpj */
function keyPressCNPJ(Evento, Objeto) {
    if (!keyNumber(Evento, Objeto))
        return true;
    if (Selecionar(Objeto))
        return true;
    if (Objeto.value.length >= 18) {
        CancelarDigitacao(Evento);
        return true;
    }
    if (position(Objeto) != Objeto.value.length)
        return true;
    Objeto.value = passaDominio(Objeto.value, "0123456789");
    Objeto.value = FormatarCNPJ(Objeto.value);
    return true;
}


/* Função ValidarCNPJ(strDado)
Verifica se um numero de cnpj é valido 99.999.999/9999-99 */
function ValidarCNPJ(strDado) {
    if (strDado == "")
        return true;
    var strCNPJ = passaDominio(strDado, "0123456789");
    if (strCNPJ.length != 14)
        return false;
    var strNum = "";
    var intSoma = 0;
    var intMult = 5;
    var intResultado = 0;
    for (i = 0; i < 12; i++) {
        strNum = (strCNPJ.substr(i, 1));
        intSoma += (parseInt(strNum) * intMult--);
        if (intMult == 1)
            intMult = 9;
    }
    intResultado = (11 - (intSoma % 11));
    if (intResultado >= 10)
        intResultado = 0;
    var intRest1 = intResultado;
    intSoma = 0;
    intMult = 6;
    for (i = 0; i < 13; i++) {
        strNum = (strCNPJ.substr(i, 1));
        intSoma += (parseInt(strNum) * intMult--);
        if (intMult == 1)
            intMult = 9;
    }
    intResultado = (11 - (intSoma % 11));
    if (intResultado >= 10)
        intResultado = 0;
    var intRest2 = intResultado;
    var intDigito1 = parseInt(strCNPJ.substr(12, 1));
    var intDigito2 = parseInt(strCNPJ.substr(13, 1));
    return ((intRest1 == intDigito1) && (intRest2 == intDigito2));
}


/* ------------------------------------------------------------------------------
** -- Campos CNPJ ou CPF
** ------------------------------------------------------------------------------ */
/* Função blurCPFCNPJ(Objeto)
Valida um cpf/cnpj nos formatos 999.999.999-99 e 99.999.999/9999-99 */
function blurCPFCNPJ(Objeto) {
    if ((!ValidarCPF(Objeto.value)) && (!ValidarCNPJ(Objeto.value))) {
        window.alert('CPF / CNPJ inválido!');
        LimparFoco(Objeto);
        return false;
    }
    if (ValidarCPF(Objeto.value)) {
        Objeto.value = passaDominio(Objeto.value, "0123456789");
        Objeto.value = FormatarCPF(Objeto.value);
    }
    else if (ValidarCNPJ(Objeto.value)) {
        Objeto.value = passaDominio(Objeto.value, "0123456789");
        Objeto.value = FormatarCNPJ(Objeto.value);
    }
    return true;
}


/* ------------------------------------------------------------------------------
** -- Campo CPF
** ------------------------------------------------------------------------------ */
/* Função blurCPF(Objeto)
Valida um cpf no formato 999.999.999-99 */
function blurCPF(Objeto) {
    if (!ValidarCPF(Objeto.value)) {
        window.alert('CPF inválido!');
        LimparFoco(Objeto);
        return false;
    }
    Objeto.value = passaDominio(Objeto.value, "0123456789");
    Objeto.value = FormatarCPF(Objeto.value);
    return true;
}

/* Função FormatarCPF(Objeto)
Fomata um cpf no formato 999.999.999-99 */
function FormatarCPF(strDado) {
    var strResult = strDado;
    var intTamanho = strDado.length;
    if ((intTamanho > 2) && (intTamanho < 6))
        strResult = strDado.substr(0, 3) + '.' + strDado.substr(3, 3);
    if ((intTamanho >= 6) && (intTamanho < 9))
        strResult = strDado.substr(0, 3) + '.' + strDado.substr(3, 3) + '.' + strDado.substr(6, 3);
    if (intTamanho >= 9)
        strResult = strDado.substr(0, 3) + '.' + strDado.substr(3, 3) + '.' + strDado.substr(6, 3) + '-' + strDado.substr(9, 2);
    return strResult;
}

/* Função keyPressCPF(Objeto)
Aplica uma mascara 999.999.999-99 em um campo de cpf */
function keyPressCPF(Evento, Objeto) {
    if (!keyNumber(Evento, Objeto))
        return true;
    if (Selecionar(Objeto))
        return true;
    if (Objeto.value.length >= 14) {
        CancelarDigitacao(Evento);
        return true;
    }
    if (position(Objeto) != Objeto.value.length)
        return true;
    Objeto.value = passaDominio(Objeto.value, "0123456789");
    Objeto.value = FormatarCPF(Objeto.value);
    return true;
}

/* Função FormatarCPF(Objeto)
Verifica se o cpf é um numero válido */
function ValidarCPF(strDado) {
    if (strDado == "")
        return true;
    var strCPF = passaDominio(strDado, "0123456789");
    if ((strCPF.length != 11) ||
        (strCPF == "00000000000") || (strCPF == "11111111111") || (strCPF == "22222222222") ||
		(strCPF == "33333333333") || (strCPF == "44444444444") || (strCPF == "55555555555") ||
		(strCPF == "66666666666") || (strCPF == "77777777777") || (strCPF == "88888888888") ||
		(strCPF == "99999999999")) {
        return false;
    }
    var intSoma = 0;
    for (i = 0; i < 9; i++)
        intSoma += parseInt(strCPF.charAt(i)) * (10 - i);
    var intResto = 11 - (intSoma % 11);
    if (intResto == 10 || intResto == 11)
        intResto = 0;
    if (intResto != parseInt(strCPF.charAt(9)))
        return false;
    intSoma = 0;
    for (i = 0; i < 10; i++)
        intSoma += parseInt(strCPF.charAt(i)) * (11 - i);
    intResto = 11 - (intSoma % 11);
    if (intResto == 10 || intResto == 11)
        intResto = 0;
    if (intResto != parseInt(strCPF.charAt(10)))
        return false;
    return true;
}


/* ------------------------------------------------------------------------------
** -- Campo Data
** ------------------------------------------------------------------------------ */
/* Função blurData(Objeto)
Valida uma data no formato dd/mm/yyyy */
function blurData(Objeto) {
    if (Objeto.value == "")
        return true;
    strData = passaDominio(Objeto.value, "0123456789");
    strData = FormatarData(strData);
    var intDia = parseInt(strData.substr(0, 2), 10);
    var intMes = parseInt(strData.substr(3, 5), 10);
    var intAno = parseInt(strData.substr(6, 10), 10);
    if ((intDia <= 31) && (intMes <= 12) && (intAno >= 1000)) {
        if ((strData.substring(0, 1) == '0') && (strData.substring(1, 2) != '0') || (strData.substring(0, 1) != '0')) {
            if (strData.substring(2, 3) == '/') {
                if ((strData.substring(3, 4) == '0') && (strData.substring(4, 5) != '0') || (strData.substring(3, 4) != '0')) {
                    if (strData.substring(5, 6) == '/') {
                        if ((strData.substring(6, 7) == '0') || (strData.substring(6, 7) == '') && (strData.substring(7, 8) != '0')) {
                            window.alert('Ano inválido!');
                            LimparFoco(Objeto);
                            return false;
                        }
                        else {
                            if (intMes == 2) {
                                if ((intDia > 0) && (intDia <= 29)) {
                                    if (intDia == 29) {
                                        if ((intAno % 4) == 0) {
                                            Objeto.value = passaDominio(Objeto.value, "0123456789");
                                            Objeto.value = FormatarData(Objeto.value);
                                            return true;
                                        } else {
                                            window.alert('Dia inválido!');
                                            LimparFoco(Objeto);
                                            return false;
                                        }
                                    }
                                } else {
                                    window.alert('Dia inválido!');
                                    LimparFoco(Objeto);
                                    return false;
                                }
                            }
                            if ((intMes == 4) || (intMes == 6) || (intMes == 9) || (intMes == 11)) {
                                if ((intDia > 0) && (intDia <= 30)) {
                                    Objeto.value = passaDominio(Objeto.value, "0123456789");
                                    Objeto.value = FormatarData(Objeto.value);
                                    return true;
                                } else {
                                    window.alert('Dia inválido');
                                    LimparFoco(Objeto);
                                    return false;
                                }
                            }
                            if ((intMes == 1) || (intMes == 3) || (intMes == 5) || (intMes == 7) || (intMes == 8) || (intMes == 10) || (intMes == 12)) {
                                if ((intDia > 0) && (intDia <= 31)) {
                                    Objeto.value = passaDominio(Objeto.value, "0123456789");
                                    Objeto.value = FormatarData(Objeto.value);
                                    return true;
                                } else {
                                    window.alert('Dia inválido!');
                                    LimparFoco(Objeto);
                                    return false;
                                }
                            }
                        }
                    }
                    else {
                        window.alert('Formato da data deve ser (dd/mm/aaaa)!');
                        LimparFoco(Objeto);
                        return false;
                    }
                } else {
                    window.alert('Mês inválido!');
                    LimparFoco(Objeto);
                    return false;
                }
            } else {
                window.alert('Formato da data deve ser (dd/mm/aaaa)!');
                LimparFoco(Objeto);
                return false;
            }
        } else {
            window.alert('Dia inválido!');
            LimparFoco(Objeto);
            return false;
        }
    } else {
        window.alert('Data inválida!');
        LimparFoco(Objeto);
        return false;
    }
    Objeto.value = passaDominio(Objeto.value, "0123456789");
    Objeto.value = FormatarData(Objeto.value);
    return true;
}

/* Função FormatarData(Objeto)
Formata uma data em dd/mm/yyyy */
function FormatarData(strDado) {
    var strResult = strDado;
    var intTamanho = strDado.length;
    if ((intTamanho > 1) && (intTamanho < 4))
        strResult = strDado.substr(0, 2) + '/' + strDado.substr(2, 2);
    if (intTamanho >= 4)
        strResult = strDado.substr(0, 2) + '/' + strDado.substr(2, 2) + '/' + strDado.substr(4, 4);
    return strResult;
}

/* Função keyPressData(Objeto)
Aplica uma mascara dd/mm/yyyy em um campo de data */
function keyPressData(Evento, Objeto) {
    if (!keyNumber(Evento, Objeto))
        return true;
    if (Selecionar(Objeto))
        return true;
    if (Objeto.value.length >= 10) {
        CancelarDigitacao(Evento);
        return true;
    }
    if (position(Objeto) != Objeto.value.length)
        return true;
    Objeto.value = passaDominio(Objeto.value, "0123456789");
    Objeto.value = FormatarData(Objeto.value);
    return true;
}


/* ------------------------------------------------------------------------------
** -- Campo Data e Hora
** ------------------------------------------------------------------------------ */
/* Função blurDateTime(Objeto)
Valida uma data no formato dd/mm/yyyy hh:mm:ss*/
function blurDateTime(Objeto) {
    if (Objeto.value == "")
        return true;
    strData = passaDominio(Objeto.value, "0123456789");
    strData = FormatarDateTime(strData);
    var intDia = parseInt(strData.substr(0, 2), 10);
    var intMes = parseInt(strData.substr(3, 5), 10);
    var intAno = parseInt(strData.substr(6, 10), 10);
    var intHora = parseInt(strData.substr(11, 2), 10);
    var intMinuto = parseInt(strData.substr(14, 2), 10);
    var intSegundo = parseInt(strData.substr(17, 2), 10);
    if (strData.substr(17, 2).length < 2) {
        window.alert('Data inválida!');
        LimparFoco(Objeto);
        return false;
    }
    if ((intDia <= 31) && (intMes <= 12) && (intAno >= 1000) && (intHora <= 23) && (intMinuto <= 59) && (intSegundo <= 59)) {
        if ((strData.substring(0, 1) == '0') && (strData.substring(1, 2) != '0') || (strData.substring(0, 1) != '0')) {
            if (strData.substring(2, 3) == '/') {
                if ((strData.substring(3, 4) == '0') && (strData.substring(4, 5) != '0') || (strData.substring(3, 4) != '0')) {
                    if (strData.substring(5, 6) == '/') {
                        if ((strData.substring(6, 7) == '0') || (strData.substring(6, 7) == '') && (strData.substring(7, 8) != '0')) {
                            window.alert('Ano inválido!');
                            LimparFoco(Objeto);
                            return false;
                        } else {
                            if (intMes == 2) {
                                if ((intDia > 0) && (intDia <= 29)) {
                                    if (intDia == 29) {
                                        if ((intAno % 4) == 0) {
                                            Objeto.value = passaDominio(Objeto.value, "0123456789");
                                            Objeto.value = FormatarDateTime(Objeto.value);
                                            if ((intHora > 23) && (intMinuto > 59) && (intSegundo > 59)) {
                                                window.alert('Hora inválida!');
                                                LimparFoco(Objeto);
                                                return false;
                                            }
                                            return true;
                                        } else {
                                            window.alert('Dia inválido!');
                                            LimparFoco(Objeto);
                                            return false;
                                        }
                                    }
                                } else {
                                    window.alert('Dia inválido!');
                                    LimparFoco(Objeto);
                                    return false;
                                }
                            }
                            if ((intMes == 4) || (intMes == 6) || (intMes == 9) || (intMes == 11)) {
                                if ((intDia > 0) && (intDia <= 30)) {
                                    if ((intHora > 23) || (intMinuto > 59) || (intSegundo > 59)) {
                                        window.alert('Hora inválida!');
                                        LimparFoco(Objeto);
                                        return false;
                                    }
                                    Objeto.value = passaDominio(Objeto.value, "0123456789");
                                    Objeto.value = FormatarDateTime(Objeto.value);
                                    return true;
                                } else {
                                    window.alert('Dia inválido');
                                    LimparFoco(Objeto);
                                    return false;
                                }
                            }
                            if ((intMes == 1) || (intMes == 3) || (intMes == 5) || (intMes == 7) || (intMes == 8) || (intMes == 10) || (intMes == 12)) {
                                if ((intDia > 0) && (intDia <= 31)) {
                                    if ((intHora > 23) || (intMinuto > 59) || (intSegundo > 59)) {
                                        window.alert('Hora inválida!');
                                        LimparFoco(Objeto);
                                        return false;
                                    }
                                    Objeto.value = passaDominio(Objeto.value, "0123456789");
                                    Objeto.value = FormatarDateTime(Objeto.value);
                                    return true;
                                } else {
                                    window.alert('Dia inválido!');
                                    LimparFoco(Objeto);
                                    return false;
                                }
                            }
                        }
                    } else {
                        window.alert('Formato da data deve ser (dd/mm/aaaa hh:mm:ss)!');
                        LimparFoco(Objeto);
                        return false;
                    }
                } else {
                    window.alert('Mês inválido!');
                    LimparFoco(Objeto);
                    return false;
                }
            } else {
                window.alert('Formato da data deve ser (dd/mm/aaaa hh:mm:ss)!');
                LimparFoco(Objeto);
                return false;
            }
        } else {
            window.alert('Dia inválido!');
            LimparFoco(Objeto);
            return false;
        }
    } else {
        window.alert('Data inválida!');
        LimparFoco(Objeto);
        return false;
    }
    if ((intHora > 23) || (intMinuto > 59) || (intSegundo > 59)) {
        window.alert('Hora inválida!');
        LimparFoco(Objeto);
        return false;
    }
    Objeto.value = passaDominio(Objeto.value, "0123456789");
    Objeto.value = FormatarDateTime(Objeto.value);
    return true;
}

/* Função FormatarDateTime(Objeto)
Formata uma data em dd/mm/yyyy hh:MM:ss */
function FormatarDateTime(strDado) {
    var strResult = strDado;
    var intTamanho = strDado.length;
    if ((intTamanho > 1) && (intTamanho < 4))
        strResult = strDado.substr(0, 2) + '/' + strDado.substr(2, 2);
    if ((intTamanho >= 4) && (intTamanho < 8))
        strResult = strDado.substr(0, 2) + '/' + strDado.substr(2, 2) + '/' + strDado.substr(4, 4)
    if ((intTamanho == 8) || (intTamanho == 9))
        strResult = strDado.substr(0, 2) + '/' + strDado.substr(2, 2) + '/' + strDado.substr(4, 4) + " " + strDado.substr(8, 2);
    if ((intTamanho >= 10) && (intTamanho <= 11))
        strResult = strDado.substr(0, 2) + '/' + strDado.substr(2, 2) + '/' + strDado.substr(4, 4) + " " + strDado.substr(8, 2) + ":" + strDado.substr(10, 2);
    if (intTamanho >= 12)
        strResult = strDado.substr(0, 2) + '/' + strDado.substr(2, 2) + '/' + strDado.substr(4, 4) + " " + strDado.substr(8, 2) + ":" + strDado.substr(10, 2) + ":" + strDado.substr(12, 2);
    return strResult;
}

/* Função keyPressDateTime(Objeto)
Aplica uma mascara dd/mm/yyyy hh:mm:ss em um campo de data */
function keyPressDateTime(Evento, Objeto) {
    if (!keyNumber(Evento, Objeto))
        return true;
    if (Selecionar(Objeto))
        return true;
    if (Objeto.value.length >= 19) {
        CancelarDigitacao(Evento);
        return true;
    }
    if (position(Objeto) != Objeto.value.length)
        return true;
    Objeto.value = passaDominio(Objeto.value, "0123456789");
    Objeto.value = FormatarDateTime(Objeto.value);
    return true;
}


/* ------------------------------------------------------------------------------
** -- Campo Decimal
** ------------------------------------------------------------------------------ */
/* Função blurDecimal(Objeto)
Valida um decimal permitindo apenas caracteres numéricos */
function blurDecimal(Objeto, intQtdeCasasDecimais, NegativeNumber) {
    if (NegativeNumber)
        Objeto.value = passaDominio(Objeto.value, "-0123456789");
    else
        Objeto.value = passaDominio(Objeto.value, "0123456789");
    Objeto.value = FormatarDecimal(Objeto.value, parseInt(intQtdeCasasDecimais), true);
    return true;
}

/* Função FormatarDecimal(Objeto)
Formata uma string em um decimal */
function FormatarDecimal(strDado, intQtdeCasasDecimais, bolValidoNull) {
    if ((bolValidoNull) && (strDado == ""))
        return "";
    var strResult = "";
    var intCount = 0;
    if (strDado.length > parseInt(intQtdeCasasDecimais)) {
        while ((strDado.substr(0, 1) == "0") && (strDado.length > (parseInt(intQtdeCasasDecimais) + 1)))
            strDado = strDado.substr(1);
    }
    else {
        while (strDado.length <= parseInt(intQtdeCasasDecimais))
            strDado = "0" + strDado;
    }
    for (i = strDado.length - 1; i > -1; i--) {
        if (strDado.substr(i, 1) == "-")
            continue;
        if ((intCount == parseInt(intQtdeCasasDecimais)) &&
            (((bolValidoNull) && (parseInt(intQtdeCasasDecimais) > 0)) ||
             ((!bolValidoNull) && (parseInt(intQtdeCasasDecimais) > -1))))
            strResult = "," + strResult;
        if ((intCount > parseInt(intQtdeCasasDecimais)) &&
            (((intCount - parseInt(intQtdeCasasDecimais)) % 3) == 0))
            strResult = "." + strResult;
        strResult = strDado.substr(i, 1) + strResult;
        intCount++;
    }
    if (strDado.substr(0, 1) == "-")
        return "-" + strResult;
    else
        return strResult;
}

/* Função keyPressDecimal(Objeto)
Aplica uma mascara para permitir apenas caracteres numéricos com um limite para casas decimais */
function keyPressDecimal(Evento, Objeto, intCasasDecimais, bolAceitarNegativo) {
    if (((!bolAceitarNegativo) || (Evento.keyCode != 45)) && (!keyNumber(Evento, Objeto)))
        return true;
    if (Selecionar(Objeto))
        return true;
    if ((bolAceitarNegativo) && (Evento.keyCode == 45)) {
        if (position(Objeto) != 0)
            CancelarDigitacao(Evento);
        return true;
    }
    if (position(Objeto) != Objeto.value.length)
        return true;
    if (bolAceitarNegativo) {
        Objeto.value = passaDominio(Objeto.value, "-0123456789");
    } else {
        Objeto.value = passaDominio(Objeto.value, "0123456789");
    }
    Objeto.value = FormatarDecimal(Objeto.value, parseInt(intCasasDecimais) - 1, false);
    return true;
}


/* ------------------------------------------------------------------------------
** -- Campo E-mail
** ------------------------------------------------------------------------------ */
/* Função blurEmail(Objeto)
Valida um e-mail num formato válido */
function blurEmail(Objeto) {
    if (Objeto.value == "")
        return true;
    var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    if (filter.test(Objeto.value)) {
        Objeto.value = Objeto.value.toLowerCase();
        return true;
    } else {
        window.alert('E-mail inválido!');
        LimparFoco(Objeto);
        return false;
    }
}

/* Função keyPressEmail(Objeto)
Aplica uma mascara para caracteres minúsculos em um campo de e-mail */
function keyPressEmail(Evento, Objeto) {
    if (!keyLower(Evento, Objeto))
        return true;
    return true;
}


/* ------------------------------------------------------------------------------
** -- Campo Fone
** ------------------------------------------------------------------------------ */
/* Função blurFone(Objeto)
Valida um telefone no formato (99)9999-9999 */
function blurFone(Objeto) {
    var str = passaDominio(Objeto.value, "0123456789");
    if (Objeto.value != "") {
        if (str.length != 10) {
            window.alert('Telefone inválido!');
            LimparFoco(Objeto);
            return false;
        }
        Objeto.value = FormatarFone(str, false);
    }
    return true;
}

/* Função FormatarFone(strDado, bolValidoNull) 
Formata o Telefone em (99)9999-9999 */
function FormatarFone(strDado, bolValidoNull) {
    var strResult = strDado;
    var intTamanho = strDado.length;
    var intVazio = 0;
    if (bolValidoNull)
        intVazio = -1;
    if ((intTamanho > intVazio) && (intTamanho < 2))
        strResult = '(' + strDado.substr(0, 2);
    if ((intTamanho >= 2) && (intTamanho < 6))
        strResult = '(' + strDado.substr(0, 2) + ')' + strDado.substr(2, 4);
    if (intTamanho >= 6)
        strResult = '(' + strDado.substr(0, 2) + ')' + strDado.substr(2, 4) + '-' + strDado.substr(6, 4);
    return strResult;
}


/* Função keyPressFone(Objeto)
Aplica uma mascara (99)9999-9999 em um campo de telefone */
function keyPressFone(Evento, Objeto) {
    if (!keyNumber(Evento, Objeto))
        return true;
    if (Selecionar(Objeto))
        return true;
    if (Objeto.value.length >= 13) {
        CancelarDigitacao(Evento);
        return true;
    }
    if (position(Objeto) != Objeto.value.length)
        return true;
    Objeto.value = passaDominio(Objeto.value, "0123456789");
    Objeto.value = FormatarFone(Objeto.value, true);
    return true;
}


/* ------------------------------------------------------------------------------
** -- Campo Lower (Minusculo)
** ------------------------------------------------------------------------------ */
/* Função blurLower(Objeto)
Valida uma expressão minúscula num formato válido */
function blurLower(Objeto) {
    Objeto.value = Objeto.value.toLowerCase();
    return true;
}

/* Função keyPressLower(Objeto)
Aplica uma mascara para caracteres minúsculos */
function keyPressLower(Evento, Objeto) {
    if (!keyLower(Evento, Objeto))
        return true;
    return true;
}


/* ------------------------------------------------------------------------------
** -- Campo Number (apenas numeros)
** ------------------------------------------------------------------------------ */
/* Função blurNumber(Objeto)
Valida um número permitindo apenas caracteres numéricos */
function blurNumber(Objeto) {
    Objeto.value = passaDominio(Objeto.value, "0123456789");
    return true;
}

/* Função keyPressNumber(Objeto)
Aplica uma mascara para permitir apenas caracteres numéricos */
function keyPressNumber(Evento, Objeto) {
    if (!keyNumber(Evento, Objeto))
        return true;
    return true;
}


/* ------------------------------------------------------------------------------
** -- Campo PISPASEP
** ------------------------------------------------------------------------------ */
/* Função blurPISPASEP(Objeto)
Valida um pis/pasep no formato 999.99999.99-9 */
function blurPISPASEP(Objeto) {
    if (!ValidarPISPASEP(Objeto.value)) {
        window.alert('PIS/PASEP inválido!');
        LimparFoco(Objeto);
        return false;
    }
    Objeto.value = passaDominio(Objeto.value, "0123456789");
    Objeto.value = FormatarPISPASEP(Objeto.value);
    return true;
}

/* Função FormatarPISPASEP(Objeto)
Formata o numnero no formato do PIS 999.99999.99-9 */
function FormatarPISPASEP(strDado) {
    var strResult = strDado;
    var intTamanho = strDado.length;
    if ((intTamanho > 2) && (intTamanho < 8))
        strResult = strDado.substr(0, 3) + '.' + strDado.substr(3, 5);
    if ((intTamanho >= 8) && (intTamanho < 10))
        strResult = strDado.substr(0, 3) + '.' + strDado.substr(3, 5) + '.' + strDado.substr(8, 2);
    if (intTamanho >= 10)
        strResult = strDado.substr(0, 3) + '.' + strDado.substr(3, 5) + '.' + strDado.substr(8, 2) + '-' + strDado.substr(10, 1);
    return strResult;
}

/* Função keyPressPISPASEP(Objeto)
Aplica uma mascara 999.99999.99-9 em um campo de pis/pasep */
function keyPressPISPASEP(Evento, Objeto) {
    if (!keyNumber(Evento, Objeto))
        return true;
    if (Selecionar(Objeto))
        return true;
    if (Objeto.value.length >= 14) {
        CancelarDigitacao(Evento);
        return true;
    }
    if (position(Objeto) != Objeto.value.length)
        return true;
    Objeto.value = passaDominio(Objeto.value, "0123456789");
    Objeto.value = FormatarPISPASEP(Objeto.value);
    return true;
}

/* Função ValidarPISPASEP(Objeto)
Verifica se é um numnero de PIS válido */
function ValidarPISPASEP(strDado) {
    if (strDado == "")
        return true;
    var strPISPASEP = passaDominio(strDado, "0123456789");
    if ((strPISPASEP.length != 11) ||
        (strPISPASEP == "00000000000") || (strPISPASEP == "11111111111") || (strPISPASEP == "22222222222") ||
		(strPISPASEP == "33333333333") || (strPISPASEP == "44444444444") || (strPISPASEP == "55555555555") ||
		(strPISPASEP == "66666666666") || (strPISPASEP == "77777777777") || (strPISPASEP == "88888888888") ||
		(strPISPASEP == "99999999999")) {
        return false;
    }
    var intSoma = 0;
    for (i = 0; i < 10; i++)
        intSoma = intSoma + (strPISPASEP.substr(i, 1) * "3298765432".substr(i, 1));
    var intResto = (intSoma % 11);
    if (intResto != 0)
        intResto = 11 - intResto;
    if ((intResto == 10) || (intResto == 11))
        intResto = intResto.substr(1, 1);
    return (intResto == (strPISPASEP.substr(10, 1)));
}


/* ------------------------------------------------------------------------------
** -- Campo Hora
** ------------------------------------------------------------------------------ */
/* Função blurTime(Objeto)
Valida uma data no formato hh:mm:ss*/
function blurTime(Objeto) {
    if (Objeto.value == "")
        return true;
    strData = passaDominio(Objeto.value, "0123456789");
    strData = FormatarTime(strData);
    var intHora = parseInt(strData.substr(0, 2), 10);
    var intMinuto = parseInt(strData.substr(3, 5), 10);
    var intSegundo = parseInt(strData.substr(6, 8), 10);
    if (strData.substr(6, 2).length < 2) {
        window.alert('Hora inválida!');
        LimparFoco(Objeto);
        return false;
    }
    if ((intHora > 23) || (intMinuto > 59) || (intSegundo > 59)) {
        window.alert('Hora inválida!');
        LimparFoco(Objeto);
        return false;
    }
    Objeto.value = passaDominio(Objeto.value, "0123456789");
    Objeto.value = FormatarTime(Objeto.value);
    return true;
}

/* Função FormatarTime(Objeto)
Formata a hora no formato hh:MM:ss */
function FormatarTime(strDado) {
    var strResult = strDado;
    var intTamanho = strDado.length;
    if (intTamanho > 1)
        strResult = strDado.substr(0, 2) + ':' + strDado.substr(2, 2);
    if (intTamanho > 3)
        strResult = strDado.substr(0, 2) + ':' + strDado.substr(2, 2) + ':' + strDado.substr(4, 4);
    return strResult;
}

/* Função keyPressTime(Objeto)
Aplica uma mascara hh:mm:ss em um campo de data */
function keyPressTime(Evento, Objeto) {
    if (!keyNumber(Evento, Objeto))
        return true;
    if (Selecionar(Objeto))
        return true;
    if (Objeto.value.length >= 8) {
        CancelarDigitacao(Evento);
        return true;
    }
    if (position(Objeto) != Objeto.value.length)
        return true;
    Objeto.value = passaDominio(Objeto.value, "0123456789");
    Objeto.value = FormatarTime(Objeto.value);
    return true;
}


/* ------------------------------------------------------------------------------
** -- Campo UF
** ------------------------------------------------------------------------------ */
/* Função blurUF(Objeto)
Valida um uf num formato válido */
function blurUF(Objeto) {
    Objeto.value = Objeto.value.toUpperCase();
    return true;
}

/* Função keyPressUF(Objeto)
Aplica uma mascara para caracteres maiúsculos em um campo de uf */
function keyPressUF(Evento, Objeto) {
    if (Objeto.value.length >= 2) {
        CancelarDigitacao(Evento);
        return true;
    }
    if (!keyChar(Evento, Objeto))
        return true;
    if (!keyUpper(Evento, Objeto))
        return true;
    return true;
}


/* ------------------------------------------------------------------------------
** -- Campo Upper (Maiusculo)
** ------------------------------------------------------------------------------ */
/* Função blurUpper(Objeto)
Valida uma expressão maiúscula num formato válido */
function blurUpper(Objeto) {
    Objeto.value = Objeto.value.toUpperCase();
    return true;
}

/* Função keyPressUpper(Objeto)
Aplica uma mascara para caracteres maiúsculos */
function keyPressUpper(Evento, Objeto) {
    if (!keyUpper(Evento, Objeto))
        return true;
    return true;
}


/* ------------------------------------------------------------------------------
** -- Campo WebSite
** ------------------------------------------------------------------------------ */
/* Função blurWebSite(Objeto)
Valida um e-mail num formato válido */
function blurWebSite(Objeto) {
    if (Objeto.value == "")
        return true;
    var filter = /^\w+([-+.]\w*)*[.]\w+([-+.]\w+)*[.]\w+([-+.]\w+)*$/;
    if (filter.test(Objeto.value)) {
        Objeto.value = Objeto.value.toLowerCase();
        return true;
    } else {
        window.alert('Web site inválido!');
        LimparFoco(Objeto);
        return false;
    }
}

/* Função keyPressWebSite(Objeto)
Aplica uma mascara para caracteres minúsculos em um campo de e-mail */
function keyPressWebSite(Evento, Objeto) {
    if (!keyLower(Evento, Objeto))
        return true;
    return true;
}
