/*
 * Arquivo java script que contém funcionalidades específicas de
 * formatação de campos html.
 *
 * Por formatação de um campo html neste js, se entende:
 * - Receber um novo caracter
 * - Validá-lo
 * - Mascarar o campo com os dados existente mais o novo caracter
 * 
 * Todas as funções de formatação de campo possui o prefixo FormatarCampo.
 *
 * Caso exitir funções neste arquivo com outro prefixo, então são funções internas
 * que não devem ser chamadas externamente.
 *
 * ****************************************************************************
 * JS NECESSÁRIOS
 * ****************************************************************************
 * - leitor.js
 * - verificador.js
 *
 ******************************************************************************
 *
 * @autor Rodrigo Lopes
 * @data 21/07/2009
 * @versão 1.0
 *
 */

/*
 * Valida o caracter digitado em um campo de código de parte de consulta.
* @author Rodrigo Lopes
 */
function formatarCampoAlfanumerico(e) {

    var presskeyCode = getKeyCode(e);

    if (isTeclasNavegacao(presskeyCode)) {
        return true;
    }

    if (isBakspace(presskeyCode)) {
        return true;
    }

    if (isNum(presskeyCode)) {
        return true;
    }

    if (isCaracterAlfa(presskeyCode)) {
        return true;
    }

    if (isEnter(presskeyCode)) {
        return true;
    }

    return false;
}

/*
 * Formata um campo números validando se o caracter digitado é válido
 * para este campo.
* @author Rodrigo Lopes
 */
function formatarCampoNumerico(e) {

    var presskeyCode = getKeyCode(e);

    if (isTeclasNavegacao(presskeyCode)) {
        return true;
    }

    if (isBakspace(presskeyCode)) {
        return true;
    }

    if (isNum(presskeyCode)) {
        return true;
    }

    if (isEnter(presskeyCode)) {
        return true;
    }
    
    return false;
}

/*
 * Formata um campo para nome validando se o caracter é válido para este
 * tipo de campo
* @author Rodrigo Lopes
 */
function formatarCampoAlfa(e) {

    var presskeyCode = getKeyCode(e);

    if (isTeclasNavegacao(presskeyCode)) {
        return true;
    }

    if (isBakspace(presskeyCode)) {
        return true;
    }

    if (isCaracterAlfa(presskeyCode)) {
        return true;
    }

    if (isEnter(presskeyCode)) {
        return true;
    }

    return false;
    
}

/*
 * Formata um campo efetuando validação e mascaração de um campo cep
 * Este processamento envolver em validar o caracter e
 * mascarar o campo cep.
 * @param campo campo a formatar
 * @param e evento de tecla
 * @author Rodrigo Lopes
 */
function formatarCampoCep(campo, e) {

    var presskeyCode = getKeyCode(e);

    if (isTeclasNavegacao(presskeyCode)) {
        return true;
    }

    if (isBakspace(presskeyCode)) {
        return true;
    }

    if (isEnter(presskeyCode)) {
        return true;
    }
    
    if (!isNum(presskeyCode)) {
        return false;
    }

    mascarar(campo, e, '##.###-####');
    return true;

}

/*
 * Formata um campo efetuando validação e mascaração de um campo telefone
 * Este processamento envolver em validar o caracter e
 * mascarar o campo telefone.
 * @param campo campo a formatar
 * @param e evento de tecla
 * @author Rodrigo Lopes
 */
function formatarCampoTelefone(campo, e) {

    var presskeyCode = getKeyCode(e);

    if (isTeclasNavegacao(presskeyCode)) {
        return true;
    }

    if (isBakspace(presskeyCode)) {
        return true;
    }

    if (isEnter(presskeyCode)) {
        return true;
    }
    
    if (!isNum(presskeyCode)) {
        return false;
    }

    // Se o inputtex possuir mais de 14 caracteres, é um cpf
    // inválido
    if (campo.value.length >= 13) {
        return false;
    }

    mascarar(campo, e, '(##)####-####');
    return true;

}

/*
 * Formata um campo efetuando validação e mascaração de um campo telefone
 * Este processamento envolver em validar o caracter e
 * mascarar o campo telefone.
 * @param campo campo a formatar
 * @param e evento de tecla
 * @author Rodrigo Lopes
 */
function formatarCampoMonetarioAteCentena(campo, e) {

    var presskeyCode = getKeyCode(e);

    if (isTeclasNavegacao(presskeyCode)) {
        return true;
    }

    if (isBakspace(presskeyCode)) {
        return true;
    }

    if (isEnter(presskeyCode)) {
        return true;
    }

    if (!isNum(presskeyCode)) {
        return false;
    }

    // Se o inputtex possuir mais de 14 caracteres, é um cpf
    // inválido
    if (campo.value.length >= 6) {
        return false;
    }

    mascarar(campo, e, '###,##');
    return true;

}

function formatarCampoTexToEnvioRequest(campoText){
    var valueCampo = campoText.value;
    valueCampo = valueCampo.replace(/\s+$/,"");
    campoText.value = valueCampo;
}