/*****************************************************************************************************
'Nome........: tran_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:       7COMm/Fábrica de softwares - Juliana Ferris
 * Data:        09/01/2002
 * 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

 * Autor:       7COMm/Fábrica de softwares - Renato C. Castelo
 * Data:        13/11/2002
 * Descrição:   Adequação ao novo padrão e testes.
 */
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:       7COMm/Fábrica de softwares - Juliana Ferris
 * Data:        13/01/2002
 * 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)

 * Autor:       7COMm/Fábrica de softwares - Renato C. Castelo
 * Data:        13/11/2002
 * Descrição:   Adequação ao novo padrão e testes.
 */
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:       7COMm/Fábrica de Softwares - Autor: Fabrica
 * Data:        19/07/2000
 * 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
 *        
 * Autor:       7COMm/Fábrica de Softwares - Autor: Juliana Ferris
 * Data:        04/01/2002
 * Descrição:   Revisão de Padrões e Testes
       
 * Autor:       7COMm/Fábrica de Softwares - Autor: Fernando Vieira
 * Data:        13/11/2002
 * Descrição:   Revisão de Padrões e Testes
 */
function Trim(strDado) {
    return strDado.replace (/^\s+/,'').replace (/\s+$/,'');
}


/*******************************************************************************
' Nome........: TrocaListaCaracterPorString
'
' Objetivo....: Dentro da string 'strDado' troca todas as ocorrências de cada 
'               caracter informado na 'strListaCaracter' pela string 'strPor'
'
' Entrada.....: strDado - string que será verificada
'      strListaCaracter - lista de caracteres que serão substituídos
'                strPor - string que será colocada no local de cada caracter de
'                         'strListaCaracter'
'      strCaseSensitive - apenas informar 'i' (minúsculo) ou 'vazio'
'                         quando i não é case sensitive
'                         quando vazio é case sensitive
'
' Retorno.....: String strDado após substituir cada caracter de strListaCaracter
'               por strPor
'
' Exemplo.....:
'      TrocaListaCaracterPorString( "testeTESTE", "te", "", "i" ) ==> sS
'      TrocaListaCaracterPorString( "testeTESTE", "te", "", "" ) ==> sTESTE
'
' Observação..: 
'     1.) No strListaCaracter para trabalhar com a lista de caracteres abaixo é 
'         necessário colocar a barra invertida (\) na frente de cada caracter.
'                   \  |  [  ]  (  )  .  ?  $  +  * -
'
'     Ex.: TrocaListaCaracterPorString( "1.234,56", "\.,", "", "" ) ==> 123456
'          TrocaListaCaracterPorString( "1.23+45", "\.\+", "", "" ) ==> 12345
'
'     2.) No strListaCaracter podemos utilizar a lista de caracteres especiais
'         abaixo.
'         \f   Form Feed
'         \n   Line Feed
'         \r   Carriage Return
'         \t   Tabulação Horizontal
'         \v   Tabulação Vertical
'         \r\n é o 'enter' em alguns editores de texto
'
'     3.) Quando querebos trocar todos os caracteres da string (strDado) EXCETO
'         aqueles informados na lista (strListaCaracter) basta iniciar a lista
'         com o caracter ^ sem a barra invertida na frente.
'
'     Ex.: TrocaListaCaracterPorString( "1.2/3-4", "^01234", "", "" ) ==> 1234
'          TrocaListaCaracterPorString( "1^2-3", "^\^\-", "", "" ) ==> ^-
'
' Atualizações: [00]   Data: 08/01/2002   Autor: Juliana Ferris - Fábrica
*******************************************************************************/
function TrocaListaCaracterPorString( strDado, strListaCaracter, strPor, strCaseSensitive )
{
    var strExpressao;

    /* 
     * 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 ) ;

    return strDado.replace( strExpressao, strPor );
}

/*****************************************************************************************************
' Nome........: ValidaComandosSQL
' Descricao...: Valida comandos sql digitados nos campos.
' Paramentros.: strComandos: lista de comandos a para pesquisa concatenados por pipe.(Ex. UPDATE||INSERT)
'               strTexto   : Texto a ser validado (Ex. Meu nome é Update da Silva)
' Retorno.....: TRUE  - Caso os comandos sejam encontrados no texto
'               FALSE - Caso não tenha cido encontrado os comandos no texto.
' Funções Uti.: Trim().
' Autor.......: [00] Data: 10/02/2004   Autor: Anderson Agustinho - Fábrica de Softwares
******************************************************************************************************/
function ValidaComandosSQL(strTexto, strComandos){                            
var arrComandos = new Array();  //Array para comandos
var intCont;      //Contador auxiliar
    
    //Se não veio comandos
    if(Trim(strComandos) == ""){
        return false;
    }
    
    //Se não veio texto
    if(Trim(strTexto) == ""){
        return false;
    }
       
    //Transforma comandos e textos em maísculo
    strComandos = strComandos.toUpperCase();
    strTexto = strTexto.toUpperCase();
            
    //Se veio mais de um comando
    if(strComandos.indexOf("|") != -1){        
        arrComandos = strComandos.split("||");        
        for(intCont=0;intCont<=arrComandos.length;intCont++){
            if(strTexto.indexOf(arrComandos[intCont]) != -1){
                return true;
            }
        }    
    } else {
        if(strTexto.indexOf(strComandos) != -1){
            return true;
        }
    }
    
    return false;
}

/*****************************************************************************************************
' Nome........: QuebraString
' Descricao...: Quebra uma string que contenha || como separador.
' Parametros..: strComandos: lista de comandos a para pesquisa concatenados por pipe.(Ex. UPDATE||INSERT)
'               Str   : String a ser quebrada
'               Pos   : Bloco da string a ser retornado
' Retorno.....: String do bloco especificado
' Funções Uti.: Trim().
' Autor.......: [00] Data: 04/03/2000   Autor: AQ - Fabrica
******************************************************************************************************/
function QuebraString(Str,Pos){
   var iQuebras = 0
   var iPosIni = 0
   var iPosAux = 1    //Define a posicao atual do bloco
   
   Str = Str + " "
   //Verifica quantos || (quebras) possui a string
   for (i=0; i<Str.length; i++){
      if (Str.charAt(i) == "|")
         iQuebras++
   }

   //Verifica se o bloco especificado está fora do limite
   if (Pos > iQuebras + 1)
      return ("")
      
   //Percorre caracter por caracter da string em busca da quebra
   for (i=0; i < Str.length; i++){

      //Haverá quebra se for encontrado ||, ou o fim da string
      if ((Str.charAt(i) == "|") || i == Str.length-1){
         if (iPosAux == Pos){
            StrAux = Str.substring(iPosIni,i)
            return StrAux
         }
         else{
            iPosIni = i+2
            i++
         }
         iPosAux++
      }
   }

   StrAux = ""
   return StrAux
}

 

