/*****************************************************************************************************
'Nome........: mdc_string.js
'Descricao...: Contém função em JavaScript para validar strings.
'
'Contém......: VerificaString - Verifica se string é válida com base nos caracteres da lista.
'              IsAlfa - Verifica a string é alfa.
******************************************************************************************************/
/*
 * Nome:        VerificaString
 * Autor:       NaBoa Solutions - Marcela Pimenta
 * Data:        06/08/2003
 * Descrição:   Verifica se string é válida com base nos caracteres da lista
 * Entrada:     strDado - string que será verificada
 *              strListaCaracter - lista de caracteres
 *              strTipoLista - apenas informa 'VAL' (válidos) ou 'INV' (invál.)
 *                      quando VAL a Lista de Caracteres possui os caracteres
 *                              válidos, assim sendo, todos os caracteres do
 *                              strDado devem estar contidos nesta lista
 *                      quando INV a Lista de Caracteres possui os caracteres
 *                              inválidos, assim sendo, todos os caracteres do
 *                              strDado não podem estar contidos nesta lista
 *              strCaseSensitive - apenas informar 'i' (minúsculo) ou 'vazio'
 *                      quando i não é case sensitive
 *                      quando vazio é case sensitive
 * Saída:       Caso o strListaCaracter é uma lista de caracteres VÁLIDOS
 *   TRUE  - se todos os caracteres do strDado pertencem ao strListaCaracter
 *   FALSE - se algum dos caracteres do strDado não pertence ao strListaCaracter
 *              Caso o strListaCaracter é uma lista de caracteres INVÁLIDOS
 *   TRUE  - se nenhum dos caracteres do strDado pertencem ao strListaCaracter
 *   FALSE - se algum dos caracteres do strDado pertence ao strListaCaracter
 * Exemplo:     VerificaString( "SÃO", "áàãäâ", "INV", "i" ) ==> False
 *              VerificaString( "234,56", "0123456789,", "VAL", "" ) ==> True
 * Observação:  1.) No strListaCaracter para trabalhar com a lista de caracteres
 *                      abaixo é necessário colocar a barra invertida (\) na
 *                      frente de cada caracter.
 *                      \  |  [  ]  (  )  .  ?  $  +  * -
 *             VerificaString( "2.1.9-69", "0123456789\.\-", "VAL", "" ) => True
 *             VerificaString( "2.1.9-69", "\.\-", "INV", "" ) ==> False
 */
function VerificaString(strDado, strListaCaracter, strTipoLista
        , strCaseSensitive) {

    var strExpressao;  // Expressão que será utilizada
    var strDadoAux;    // Armazena o strDado após a substituição dos caracteres

    /* 
     * Expressão regular onde:
     * new RegExp - declaração da expressão
     * [...] - procura por cada caracter da lista 'strListaCaracter'
     * g - procura em toda a string (global)
     * strIgnoreCase - se 'i' procura sem diferenciar maiúsculas e minúsculas
     */
    strExpressao = new RegExp("[" + strListaCaracter + "]", "g"
            + strCaseSensitive);

    // Substitui todos os caracteres da lista por nada
    strDadoAux = strDado.replace(strExpressao, "");

    // Lista de Caracteres VÁLIDOS
    if (strTipoLista.toUpperCase() == "VAL") {
        // Tamanho do strDado após replace igual a zero ...
        if (strDadoAux.length == 0) {
            // ... indica que todos os caracteres são válidos (foram 
            // substituidos)
            return true;
        // Tamanho do strDado após replace diferente de zero ...
        } else {
            // ... indica que algum dos caracteres é inválido (não foi
            // sustituido)
            return false;
        }
    // Lista de Caracteres INVÁLIDOS
    } else {
        // Tamanho do strDado após replace igual Tamanho do strDado antes do
        // replace ...
        if (strDadoAux.length == strDado.length) {
           // ... indica que nenhum dos caracteres é inválido (foi substituido)
            return true;
        // Tamanho do strDado após replace diferente Tamanho do strDado antes
        // do replace ...
        } else {
            // ... indica que algum dos caracteres é inválido (foi substituido)
            return false;
        }
    }
}

/*
 * Nome:        IsAlfa
 * Autor:       NaBoa Solutions - Marcela Pimenta
 * Data:        06/08/2003
 * Descrição:   Verifica a string é alfa, ou seja, possui apenas caracteres 
 *                      de a à z e A à Z.
 * Entrada:     strDado - string que será validada
 * Saída:       True (só alfa) ou false (algum não alfa)
 */
function IsAlfa (strDado) {
    var strExpressao;

    if (strDado == "") {
        return false;
    }

    /* 
     * Expressão regular onde:
     * new RegExp - declaração da expressão
     * [...] - procura por cada caracter da lista
     * ^ - para indicar que a busca será feita por todos os caracteres EXCETO os da lista
     * g - procura em toda a string (global)
     * i - procura sem diferenciar maiúsculas e minúsculas
     */
    strExpressao = new RegExp("[^a-z]", "gi");

    return !strExpressao.test(strDado);
}


/*
 * Nome:        Trim
 * Autor:       NaBoa Solutions - Marcela Pimenta
 * Data:        06/08/2003
 * Descrição:   Retira brancos à esquerda  e à direita da string informada
 * Entrada:     strDado - Dado que será formatado
 *                                                  
 * Saída:       uma string sem os espaços em branco à esquerda e à direita
 */
function Trim(strDado) {
    return strDado.replace (/^\s+/,'').replace (/\s+$/,'');
}

/*
 * Nome:        Trim
 * Autor:       NaBoa Solutions - Marcela Pimenta
 * Data:        06/08/2003
 * Descrição:   Verifica se o dado contém caracteres especiais, exceto "*."
 * Entrada:     strDado - Dado que será formatado
 *                                                  
 * Saída:       True/False
 */
function ValidaNome (strDado) {
    var strExpressao;

    strExpressao = new RegExp("[^a-z0-9*. ]", "gi");
    return !strExpressao.test(strDado);
}
