/* Métodos Disponiveis
    
    // Retira os espacos da string
    trim ( string )
    
    // Retira os espacos à esquerda da string
    ltrim( string )
    
    // Retira os espaços à direita da string
    rtrim( string )
    
    // Deleta todos os caracteres da string
    deleteAll( string, caracter )
    
    // Substitui todas as ocorrencias da string
    function replaceAll( sText, sValorOld, sValorNew ) {

    // Adiciona o token com o separador retornando o resultado
    function add( sText, sValor, sSep )
    
    // Remove o token com o separador retornando o resultado
    function remove( sText, sValor, sSep )
    
    // Verifica se o campo está preenchido somente com números
    eh_numerico( numero )
    
    // Verifica se o campo está preenchido
    preenchido( campo, msg, bOk )
    
    // Realiza a verificacao do valor do campo de acordo com o operador passado
    verifica_valor( operador, campo, valor, msg, bOk )
    
    // Verifica se a data é valida
    data_valida( campo, msg, bOk )
    
    // Verifica se a hora é valida
    hora_valida( campo, msg, bOK )
    
    // Verifica se a data_hora é valida
    data_hora_valida( campo, opcao, msg, bOk )
    
    // Verifica se a string é valida
    string_valida( campo, msg, bOk )
    
    // Verifica se o número é um inteiro válido
    inteiro_valido( campo, msg, bOK )
    
    // Verifica se o número é um inteiro positivo valido
    inteiro_positivo_valido( campo, msg, bOk )  
    
    // Verifica se o campo é um inteiro ou float
    numero_valido( campo, msg, bOk )

    // Rotina retirada de formata.js de autoria de Sérgio Vicente
    // Mascara em campo tipo data ou hora
    function mascara( formato, keypress, objeto )

    // Rotina retirada do site www.supersuporte.com.br
    // Formata campos numéricos
    function formata_valor( campo, tammax, teclapres )

    // Retorna o indice do elemento do form 
    function indice_elem( frm, nome )
    
    // Verifica se o cpf é válido
    function cpf_valido( campo, msg, bOk )
    
    // Verifica se o cnpj é válido
    function cnpj_valido( campo, msg, bOk ) 

    // Verifica se o cei é válido
    function cei_valido( campo, msg, bOk )  
        
    // Exemplo de funcao de validacao em javascript 
    function valida_form( ) {
        var bOk
        bOk = true;
            
        bOk = preenchido   ( frm.nm_demanda       , 'Preencha o título da demanda.'   , bOk );
        bOk = data_valida  ( frm.dt_prev_ini      , 'Data Prevista Inicial inválida.' , bOk );
        bOk = numero_valido( frm.vl_custo_inicial , 'Custo inicial inválido.'         , bOk );
        bOk = numero_valido( frm.vl_custo_previsto, 'Custo previsto inválido.'        , bOk );
        
        if( bOk )
            document.frm.submit( );

        return bOk;
    }
    
*/

    // String com carateres inválidos
    var strChrInvalidos = "'\"";
    var strMsgStringInvalida = "Presença de Caracter inválido [ ' , \" ]. ";

    // Retira os espacos da string
    function trim( str ) { 
        
        if( str == null )
            return "";
            
        var strAux = str; 
        strAux = lTrim( strAux ); 
        strAux = rTrim( strAux ); 
        
        return strAux; 
    } 

    // Retira os espacos à esquerda da string
    function lTrim( str ) { 

        var i = 0; 
        var bAchou = false; 
        while ( i < str.length && !bAchou ) { 

            if( str.charAt( i ) != '' && str.charAt( i ) != ' ' ) 
                bAchou = true; 
            else     
                i++; 
        } 
        
        if( str == null || str == '' ) return "";
        if( str.length == 0 ) return "";        

        return str.substring( i, str.length ); 
    }

    // Retira os espaços à direita da string
    function rTrim( str ) { 

        var i = str.length-1; 
        var bAchou = false; 
        while ( i >= 0 && !bAchou ) { 
            if( str.charAt( i ) != '' && str.charAt( i ) != ' ' ) 
                bAchou = true; 
            else 
                i--; 
        } 

        return str.substring( 0, i+1 ); 
    }

    // Deleta todos os caracteres c da string
    function deleteAll( str, c ) { 
        var i; 
        var strAux = ""; 
        for( i = 0; i < str.length; i++ ) { 
            if( str.charAt( i ) != c ) 
                strAux = strAux + str.charAt( i ); 
        } 
        return strAux; 
    } 

    // Substitui todas as ocorrências da string pela outra
    function replaceAll( sText, sValorOld, sValorNew ) {
        var sTextAux = sText;
        while ( sTextAux.search( sValorOld ) >= 0 )
            sTextAux = sTextAux.replace( sValorOld, sValorNew );
        return sTextAux;
    }
    
    // Adiciona o token com o separador retornando o resultado
    function add( sText, sValor, sSep ) {
        if ( sText.search( sValor + sSep ) < 0 )
            return sText + sValor + sSep;
        return sText;
    }
    
    // Remove o token com o separador retornando o resultado
    function remove( sText, sValor, sSep ) {
        if ( sText.search( sValor + sSep ) >= 0 )
            return sText.replace( sValor + sSep, "" );
        return sText;
    }

    // Retorna o indice do objeto com o nome fornecido
    function indice_elem( frm, nome ) {
        for( var i = 0; i < frm.length; i++ ) {
            if( frm[ i ].name == nome ) return i;       
        }
        return -1;
    }

    // Módulo do CPF
    function modulo( str ) {
        var soma=0;
        var ind=2;
        
        for ( pos = str.length - 1; pos > -1; pos = pos - 1 ) {
                soma = soma + ( parseInt( str.charAt( pos ) ) * ind );
                ind++;
                if( str.length > 11 ) {
                    if( ind > 9 ) ind = 2;
                }
        }
        resto = soma - ( Math.floor( soma / 11 ) * 11 );
        if( resto < 2 )
                return 0;
        else
            return 11 - resto;
    }
    
    // Valida o CPF 
    function cpf_valido( campo, msg, bOk ) {
        if( !bOk ) return false;
        if( !campo ) return true; // caso o campo não exista desconsidera a validação
        
        var valor = trim( campo.value );
        valor = deleteAll( valor, "." );
        valor = deleteAll( valor, "-" );
            
        var cpf = "" + valor;
        
        if( cpf.length != 11 ) {
            if( msg != "" ) alert( msg );
            campo.focus( );
            return false;           
        }
        if( modulo( cpf.substring( 0, cpf.length - 2 ) ) + "" +
            modulo( cpf.substring( 0, cpf.length - 1 ) ) !=
            cpf.substring( cpf.length - 2, cpf.length ) ) {
            if( msg != "" ) alert( msg );
            campo.focus( );
            return false;
        }
        return true;
    }

    // Valida o CGC
    function cnpj_valido( campo, msg, bOk ) {
        if( !bOk ) return false;
        if( !campo ) return true; // caso o campo não exista desconsidera a validação

        var valor = trim( campo.value );
        valor = deleteAll( valor, "." );
        valor = deleteAll( valor, "-" );
        valor = deleteAll( valor, "/" );

        //alert( valor);
        
        var VALIDO   = true;
        var cgc      = "" + valor;
        var soma     = 0;
        var digito1  = 0;
        var digito2  = 0;
    
        if( cgc == "" ) {
            return true;
        }
        
        if( cgc != "" ) {
            if ( cgc.length < 14 ) {
                VALIDO = false;
            }
    
            if ( VALIDO && cgc.length == 14 ) {
                for( var i = 0; i < 11; i++ ) {
                    if( cgc.charAt( i ) < "0" || cgc.charAt( i ) > "9" ) {
                        VALIDO = false;
                    }
                }
            }
            else {
                VALIDO = false;
            }
            // Teste dos digitos verificadores
            if ( VALIDO ) {
    
                    // Primeiro digito
                for (var i = 0; i < 12; i++) {
                    if ( i < 4 ) {
                        soma += ( parseInt( cgc.charAt( i ) ) ) * ( 6 + i );
                    }
                    else {
                        soma += ( parseInt( cgc.charAt( i ) ) ) * ( i - 2 );
                    }
                    }
                digito1 = soma % 11;
                if (digito1 > 9){
                    digito1 = 0;
                }
    
                soma = 0;
    
                // Segundo digito
                for (var i = 0; i < 13; i++){
                    if (i < 5){
                        soma += (parseInt(cgc.charAt(i)))*(5+i);
                    }
                    else{
                        soma += (parseInt(cgc.charAt(i)))*(i-3);
                    }
                }
                
                digito2 = soma % 11;
                
                if (digito2 == 10){
                    digito2 = 0;
                }
                if (parseInt(cgc.charAt(12))  != digito1 ||
                    parseInt(cgc.charAt(13))  != digito2   ){
                    VALIDO = false;
                }
            }
        
            if (!VALIDO) {
                if( msg != "" ) alert( msg );
                campo.focus( );
                return false;
            }
        }
        return true;
    }

    function cei_valido( campo, msg, bOk ) {

        if( !bOk ) return false;
        if( !campo ) return true; // caso o campo não exista desconsidera a validação

        var cei = trim( campo.value );
        cei = deleteAll( cei, "-" );
                
        var cNumero  = cei.substring(0,11);                                                                
        var nDv      = cei.substring(11,12);                                                                  
        var nSoma    = 0;                                                                                  
        var cMat     = " ";                                                                                   
        var matriz   = "74185216374";                                                                      
        var nTam     = 0;                                                                                     
        for (var i = 0;i <= 10; i++)                                                                       
        {                                                                                                  
            nSoma = nSoma + (cNumero.substring(i,i+1) * matriz.substring(i,i+1));                             
        }                                                                                                  
        nSoma = nSoma + "";                                                                                
        nTam = nSoma.length;                                                                               
        var nAux = (nSoma.substring(0,nTam-1) * 1) + (nSoma.substring(nTam-1,nTam) * 1);                   
        nAux = nAux + "";                                                                                  
        nTam = nAux.length;                                                                                
        if (nTam == 1)                                                                                     
        {                                                                                                  
            var nUnidade = nAux.substring(0,1);                                                               
        }                                                                                                  
        else                                                                                               
        {                                                                                                  
            var nUnidade = nAux.substring(1,2);                                                               
        }                                                                                                  
    
        nDvCalc = 10 - (nUnidade * 1);
        if (nDvCalc > 9) {
            nDvCalc = 0;
        }
        
        if (nDvCalc == nDv)                                                                                
        {                                                                                                  
            return true;                                                                                         
        }                                                                                                  
        else                                                                                               
        {                                                                                                  
            if( msg != "" ) alert( msg );
            campo.focus( );
            return false;
        }                                                                                                  
      }                                                                      

    
    // Verifica se a string só é composta de numeros sem nenhum sinal
    function eh_numerico( str ) {       
        var bNum; 
        for( i = 0; i < str.length; i++ ) { 
            bNum = str.charAt( i ) >= '0' && str.charAt( i ) <= '9'; 
            if( !bNum ) {
                return false; 
            }
        } 
        return true; 
    } 
 
    // Dado o campo verifica se ele está preenchido, caso não exibe a mensagem
    function preenchido( campo, msg, bOk ) {        
        if( !bOk ) return false;        
        if( !campo ) return true; // caso o campo não exista desconsidera a validação

        var valor = campo.value;
        if( trim( valor ) == "" || valor == null ) {
            if( msg != "" ) alert( msg );
            campo.focus( );
            return false;
        }
        return true;
    }
    
    // Dado o campo verifica se ele está preenchido, caso não exibe a mensagem
    // Não seta o foco no campo
    function preenchido_sem_focus( campo, msg, bOk ) {
        if( !bOk ) return false;        
        if( !campo ) return true; // caso o campo não exista desconsidera a validação       

        var valor = campo.value;
        if( trim( valor ) == "" || valor == null ) {
            if( msg != "" ) alert( msg );           
            return false;
        }
        return true;
    }

    // Verifica se pelo menos 1 radio button com o nome no formulário está preenchido
    function radio_preenchido( frm, nome, msg, bOk ) {
        if( !bOk ) return false;
        if( indice_elem( frm, nome ) < 0 ) return true; // caso o campo não exista desconsidera a validação
        
        for ( var i=0; i < frm.length; i++ ) {
            if ( frm.elements[ i ].name == nome )
                if ( frm.elements[ i ].checked )
                    return true;
        }
        if( msg != "" ) alert( msg );
        return false;
    }

    // Verifica se o radio que contem o valor está marcado
    function radio_marcado( frm, nome, valor, msg, bOk ) {
        if ( !bOk ) return false;
        if( indice_elem( frm, nome ) < 0 ) return true; // caso o campo não exista desconsidera a validação

        for ( var i=0; i < frm.length; i++ ) {
            if ( frm.elements[ i ].name == nome )               
                if ( frm.elements[ i ].checked )
                    if ( frm.elements[ i ].value == valor )
                        return true;
        }
        if( msg != "" ) alert( msg );
        return false;
    }

    // Verifica se o radio que contem o valor e o marca
    function marca_radio( frm, nome, valor, msg, bOk ) {
        if( !bOk ) return false;
        if( indice_elem( frm, nome ) < 0 ) return true; // caso o campo não exista desconsidera a validação

        for ( var i=0; i < frm.length; i++ ) {

            if ( frm.elements[ i ].name == nome ) {
                if ( frm.elements[ i ].value == valor ) {
                    //alert( frm.elements[ i ].value + ' checked ' );
                    frm.elements[ i ].checked = true;
                }
                else {
                    //alert( frm.elements[ i ].value + ' not checked ' );               
                    frm.elements[ i ].checked = false;
                }
            }
        }
        if( msg != "" ) alert( msg );
        return false;
    }   
    
    // Dado um operador o campo e o valor a ser comparado realiza a operação
    // verificando se o campo contem aquele valor
    function verifica_valor( operador, campo, valor, msg, bOk ) {       
        if( !bOk ) return false;        
        if( !campo ) return true; // caso o campo não exista desconsidera a validação

        var valorCampo = campo.value;
        if(
          ( operador == "="  && valor != valorCampo ) ||
          ( operador == "<>" && valor == valorCampo ) ||
          ( operador == ">"  && valor <= valorCampo ) ||
          ( operador == "<"  && valor >= valorCampo ) ||
          ( operador == ">=" && valor <  valorCampo ) ||
          ( operador == "<=" && valor >  valorCampo ) ) 
        {
            if( msg != "" ) alert( msg );
            campo.focus( );
            return false;
        }
        return true;
    }

    // Converte a data no formado dd/mm/yyyy para data
    function string_to_date( strData )
    {
        strData = trim( strData );
        if ( strData == "" ) return "";

        var j = strData.indexOf( " " );
        if ( j < 0 ) j = strData.length;
        strData = strData.substring( 0, j );

        var dia = "";
        var mes = "";
        var ano = "";
        var pos = 0; 

        for ( var i = 0; i < strData.length; i++ ) { 
            c = strData.charAt( i ); 
            if ( c == '/' )  
                pos = pos + 1; 
            else if ( c >= '0' && c <= '9' ) { 
                if ( pos == 0 ) 
                    dia = dia + c; 
                else if ( pos == 1 ) 
                    mes = mes + c; 
                else if ( pos == 2 ) 
                    ano = ano + c; 
                else {                  
                    return "";
                }
            }
            else {              
                return "";
            }
        }

        if ( pos != 2 || dia == "" || mes == "" || ano == "" ) {            
            return "";
        }

        if ( ano.length < 4 ) {         
            return "";
        }

        var nDia = parseFloat( dia ); 
        var nMes = parseFloat( mes ); 
        var nAno = parseFloat( ano );
        
        nMes = nMes - 1
    
        return( new Date( nAno, nMes, nDia ) );
    }   

    // Verifica se a data é valida e está no formato DD/MM/YYYY
    function data_valida( campo, msg, bOk ) {       
        if( !bOk ) return false;        
        if( !campo ) return true; // caso o campo não exista desconsidera a validação       
        
        var strData = trim( campo.value );

        if ( strData == "" ) return true;

        var j = strData.indexOf( " " );
        if ( j < 0 ) j = strData.length;
        strData = strData.substring( 0, j );

        var dia = "";
        var mes = "";
        var ano = "";
        var pos = 0; 

        for ( var i = 0; i < strData.length; i++ ) { 
            c = strData.charAt( i ); 
            if ( c == '/' )  
                pos = pos + 1; 
            else if ( c >= '0' && c <= '9' ) { 
                if ( pos == 0 ) 
                    dia = dia + c; 
                else if ( pos == 1 ) 
                    mes = mes + c; 
                else if ( pos == 2 ) 
                    ano = ano + c; 
                else { 
                    if( msg != "" ) alert( msg );
                    campo.focus( );
                    return false;
                }
            }
            else {
                if( msg != "" ) alert( msg );       
                campo.focus( );
                return false;
            }
        }

        if ( pos != 2 || dia == "" || mes == "" || ano == "" ) {  
            if( msg != "" ) alert( msg );           
            campo.focus( );
            return false;  
        } 

        if ( ano.length < 4 ) {
            if( msg != "" ) alert( msg );           
            campo.focus( );
            return false;
        }

        var nDia = parseFloat( dia ); 
        var nMes = parseFloat( mes ); 
        var nAno = parseFloat( ano ); 
        
        if ( nDia < 1 || nDia > 31 ||  
            nMes < 1  || nMes > 12 ||  
            nAno < 0  || nAno > 9999 ) {  
            if( msg != "" ) alert( msg );           
            campo.focus( );
            return false;  
        } 

        if ( nMes == 4 || nMes == 6 || nMes == 9 || nMes == 11 ) {  
            if ( nDia > 30 ) {
                if( msg != "" ) alert( msg );           
                campo.focus( );
                return false; 
            } 
        }

        var bBissexto = false;
        if ( nMes == 2 ) { 
        
            if ( nAno % 4 == 0 )
                bBissexto = true;
            if ( nAno % 100 == 0 && nAno % 400 != 0 )
                bBissexto = false;
                
            if ( bBissexto ) {
                if ( nDia > 29 ) {
                    if( msg != "" ) alert( msg );           
                    campo.focus( );
                    return false; 
                }
            }
            else {          
                if ( nDia > 28 ) {
                    if( msg != "" ) alert( msg );           
                    campo.focus( );
                    return false;
                }
            }                   
        }

        return true;
    }

    // Verifica se a data está no intervalo
    // Para informar intervalos maior ou menor, use null ou branco nas datas
    function is_date_between( campo, strData1, strData2, msg, bOk ) {       
        if( !bOk ) return false;
        if( !campo ) return true; // caso o campo não exista desconsidera a validação       
        
        var strData = trim( campo.value );
        if( strData == "" ) return true;
        
        var data = string_to_date( strData );
        
        if( isNaN( data ) ) return false;
        
        if( strData1 != "" && strData1 != null ) {
            var data1 = string_to_date( strData1 );
            if( data < data1 ) {
                if( msg != "" ) alert( msg );           
                campo.focus( );
                return false;
            }
        }
        
        if( strData2 != "" && strData2 != null ) {
            var data2 = string_to_date( strData2 );
            if( data > data2 ) {
                if( msg != "" ) alert( msg );           
                campo.focus( );
                return false;
            }
        }
        
        return true;
    }

    // Verifica se a hora fornecida é valida
    function hora_valida( campo, msg, bOk ) { 
        if( !bOk ) return false;        
        if( !campo ) return true; // caso o campo não exista desconsidera a validação

        strData = trim( campo.value ); 

        if ( strData == '' ) return true; 

        var hora    = '';
        var minuto  = '';
        var segundo = '';
        var pos     = 0;

        for ( var i = 0; i < strData.length; i++ ) { 
            c = strData.charAt( i ); 
            if ( c == ':' )  
                pos = pos + 1; 
            else if ( c >= '0' && c <= '9' ) { 
                if ( pos == 0 ) 
                    hora = hora + c; 
                else if ( pos == 1 ) 
                    minuto = minuto + c; 
                else if ( pos == 2 ) 
                    segundo = segundo + c; 
                else { 
                    if( msg != "" ) alert( msg );       
                    campo.focus( );
                    return false; 
                } 
            } 
            else { 
                if( msg != "" ) alert( msg );       
                campo.focus( );
                return false; 
            } 
        } 

        var nHora = parseFloat( hora    ); 
        var nMin  = parseFloat( minuto  ); 
        var nSeg  = parseFloat( segundo ); 

        if( hora.length > 2 || hora.length < 1 ) { 
            if( msg != "" ) alert( msg );       
            campo.focus( );     
            return false; 
        } 

        if( minuto.length > 2 || minuto.length < 1 ) { 
            if( msg != "" ) alert( msg );       
            campo.focus( );     
            return false; 
        } 

        if( pos < 1 ) { 
            if( msg != "" ) alert( msg );       
            campo.focus( );         
            return false; 
        } 

        if( nHora < 0 || nHora > 23 ) { 
            if( msg != "" ) alert( msg );       
            campo.focus( );     
            return false; 
        } 

        if( nMin < 0 || nMin > 59 ) { 
            if( msg != "" ) alert( msg );       
            campo.focus( );     
            return false; 
        } 

        if( nSeg < 0 || nSeg > 59 ) { 
            if( msg != "" ) alert( msg );       
            campo.focus( );
            return false; 
        } 

        return true;
    } 

    // Verifica se a data + hora é válida DD/MM/YYYY hh:mm:ss mmm
    // se opção é dh ( verifica data e hora ) se opção é d verifica só a data
    function data_hora_valida( campo, strOpcao, msg, bOk ) 
    {
        if( !bOk ) return false;        
        if( !campo ) return true; // caso o campo não exista desconsidera a validação

        var strDataHora = trim( campo.value ); 

        var bData = strDataHora.indexOf( '/' ) >= 0; 
        var bHora = strDataHora.indexOf( ':' ) >= 0; 
        var i     = strDataHora.indexOf( ' ' ); 

        var strData; 
        var strHora; 

        if( strOpcao == 'dh' ) { 
            if( i < 0 ) {
                if( msg != "" ) alert( msg );       
                campo.focus( );         
                return false;   
            }
            if( !bData || !bHora ) {
                if( msg != "" ) alert( msg );       
                campo.focus( );     
                return false; 
            }
            strData = strDataHora.substring( 0, i ); 
            strHora = strDataHora.substring( i + 1 ); 
            return data_valida( campo, msg, bOk ) && hora_valida( campo, msg, bOk ); 
        }
        else if( strOpcao == 'd' ) { 
            if( !bData ) {
                if( msg != "" ) alert( msg );       
                campo.focus( );         
                return false; 
            }
            if( bHora ) {
                if( i < 0 ) {
                    if( msg != "" ) alert( msg );       
                    campo.focus( );                     
                    return false; 
                }
                strData = strDataHora.substring( 0, i ); 
                strHora = strDataHora.substring( i + 1 ); 
                return data_valida( campo, msg, bOk ) && hora_valida( campo, msg, bOk ); 
            } 
            else { 
                strData = strDataHora; 
                return data_valida( campo, msg, bOk ); 
            } 
        } 
        else if( strOpcao == 'h' ) { 
            if( !bHora ) {
                if( msg != "" ) alert( msg );       
                campo.focus( );                     
                return false; 
            }
            if( bData ) { 
                if( i < 0 ) {
                    if( msg != "" ) alert( msg );       
                    campo.focus( );                     
                    return false; 
                }
                strData = strDataHora.substring( 0, i ); 
                strHora = strDataHora.substring( i + 1 ); 
                return data_valida( campo, msg, bOk ) && hora_valida( campo, msg, bOk ); 
            } 
            else { 
                strHora = strDataHora; 
                return hora_valida( campo, msg, bOk ); 
            }
        }
    }

    // Verifica se a string só contem caracteres validos
    function string_valida( campo, msg, bOk ) 
    { 
        if( !bOk ) return false;
        if( !campo ) return true; // caso o campo não exista desconsidera a validação
        
        var strString = trim( campo.value );
        
        if ( strString == "" ) return true;
        
        var i;
        for( i = 0; i < strChrInvalidos.length; i++ ) { 
            if( strString.indexOf( strChrInvalidos.charAt( i ) ) >= 0 ) { 
                if( msg != "" ) alert( msg );
                campo.focus( );
                return false; 
            } 
        }

        return true; 
    } 

    // Verifica se é inteiro
    function inteiro_valido( campo, msg, bOk ) { 
        if( !bOk ) return false;
        if( !campo ) return true; // caso o campo não exista desconsidera a validação
        
        var strString = trim( campo.value );
        
        if( strString == "" ) return true; 

        strString = deleteAll( strString, '.' ); 

        if( strString.charAt( 0 ) == '+' || 
            strString.charAt( 0 ) == '-' ) 
            strString = strString.substring( 1, strString.length ); 

        if( eh_numerico( strString ) ) {
            return true;
        }
        
        if( msg != "" ) alert( msg );       
        campo.focus( );
        return false; 
    } 

    // Verifica se é um inteiro positivo
    function inteiro_positivo_valido( campo, msg, bOk ) {
        if( !bOk ) return false;
        if( !campo ) return true; // caso o campo não exista desconsidera a validação

        var strString = trim( campo.value )
        
        if( strString.indexOf( '-' ) >= 0 || strString == '0' ) { 
            if( msg != "" ) alert( msg );       
            campo.focus( );
            return false; 
        } 

        return inteiro_valido( campo, msg, bOk );
    } 

    // Verifica se é um numero podendo ser float
    function numero_valido( campo, msg, bOk ) { 
        if( !bOk ) return false;
        if( !campo ) return true; // caso o campo não exista desconsidera a validação

        var strString = trim( campo.value )

        if( strString == "" ) return true; 

        strString = deleteAll( strString, '.' ); 

        if( strString.charAt( 0 ) == '+' || 
            strString.charAt( 0 ) == '-' ) 
            strString = strString.substring( 1, strString.length ); 

        var j = strString.indexOf( "," ); 
        if( j >= 0 ) { 
            var str1 = strString.substring( 0, j ); 
            var str2 = strString.substring( j+1, strString.length ); 
            if( eh_numerico( str1 ) && eh_numerico( str2 ) ) 
                return true; 
            if( msg != "" ) alert( msg );       
            campo.focus( );
            return false; 
        } 
        else { 
            if( eh_numerico( strString ) ) 
                return true; 
            if( msg != "" ) alert( msg );       
            campo.focus( );
            return false; 
        } 
        return true; 
    } 
        
    // Rotina retirada de formata.js de autoria de Sérgio Vicente
    // Mascara em campo tipo data ou hora
    function mascara( formato, keypress, objeto )
    {
        campo = eval( objeto );
        
        // Mascara para data dd/mm/aaaa
        if ( formato == 'data' ) {
            caracteres = '1234567890';
            separacoes = 2
            separacao1 = '/';
            separacao2 = '/';
            conjunto1 = 2;
            conjunto2 = 2;
            conjunto3 = 4;
        
            if ( ( ( keypress >= 48 ) && ( keypress <= 57 ) ) 
                && campo.value.length < ( conjunto1 + conjunto2 + conjunto3 + separacoes ) ) 
            {           
                if ( campo.value.length > 8 ) {
                    //colocar aqui o campo seguinte que sera focado apos digitar a data, ou comenta-lo
                    //document.frm.nome.focus( );
                }
                if ( campo.value.length == conjunto1 )
                    campo.value = campo.value + separacao1;
                if ( campo.value.length == conjunto1 + conjunto2 + 1 )
                    campo.value = campo.value + separacao2;
            }
            else
                event.returnValue = false;
        }

        // Mascara para hora hh:mm
        if ( formato == 'hora' ) {
            caracteres = '1234567890';
            separacoes = 1
            separacao1 = ':';
            conjunto1 = 2;
            conjunto2 = 2;
            
            if ( ( ( keypress >= 48 ) && ( keypress <= 57 ) ) 
                && campo.value.length < ( conjunto1 + conjunto2 + separacoes ) )
            {
                if ( campo.value.length > 4 ) {
                    //colocar aqui o campo seguinte que sera focado apos digitar a hora, ou comenta-lo
                    //document.frm.nome.focus( );
                }
                if ( campo.value.length == conjunto1 )
                    campo.value = campo.value + separacao1;
            }
            else 
                event.returnValue = false;
        }
    }

    // Formata a hora
    // onKeyDown="formata_hora( this, event )"
    function formata_hora_minuto( campo )
    {
        if( !campo ) return true; // caso o campo não exista desconsidera a validação
        var tecla = event.keyCode;
        
        var caracteres = '1234567890';
        var separacoes = 1;
        var separacao1 = ':';
        var conjunto1 = 2;
        var conjunto2 = 2;

        //    && campo.value.length < ( conjunto1 + conjunto2 + separacoes ) ) 
        
        if( 
            ( ( tecla >= 48 && tecla <= 57  && !event.shiftKey ) || 
              ( tecla >= 96 && tecla <= 105 && !event.shiftKey ) ) 
            && campo.value.length < ( conjunto1 + conjunto2 + separacoes ) )
        {
            if ( campo.value.length > 4 ) {
                //colocar aqui o campo seguinte que sera focado apos digitar a hora, ou comenta-lo
                //document.frm.nome.focus( );
            }
            if ( campo.value.length == conjunto1 )
                campo.value = campo.value + separacao1;
        }
        else {
            // event.returnValue = false;
            
            var teclaVolta   = 8;
            var teclaDelete  = 46;
            var teclaTab     = 9;
            var teclaSetaEsq = 37;
            var teclaSetaDir = 39;
            
            if( event.keyCode != teclaVolta && 
                event.keyCode != teclaDelete && 
                event.keyCode != teclaTab &&
                event.keyCode != teclaSetaDir &&
                event.keyCode != teclaSetaEsq ) 
                event.keyCode = 39;
        }
    }
    
    // Formata um campo do tipo telefone
    function formata_telefone( campo )
    {   
        if( !campo ) return true; // caso o campo não exista desconsidera a validação
        var tecla = event.keyCode;
        var p = campo.value;
        var p1 = campo;
        
        if( ( tecla >= 48 && tecla <= 57  && !event.shiftKey ) || 
            ( tecla >= 96 && tecla <= 105 && !event.shiftKey ) ) {
              
            if( tecla > 57 )
                event.keyCode = event.keyCode - 48;
                
            if( p.length == 2 ) {
                pp = p;
                d4 = p.indexOf( '(' );
                d5 = p.indexOf( ')' );
                if( d4 == -1 ) {
                    pp = "(" + pp;
                }
                if( d5 == -1 ) {
                    pp = pp + ")";
                }
                p1.value = "";
                p1.value = pp;
            }
            
            if( p.length > 2 ) {
                d1 = p.indexOf( '(' )
                d2 = p.indexOf( ')' )
                if ( d2 == -1 ) {
                    p30 = p.length;
                    p30 = p.substring( 0, 4 );
                    //alert(p30);
                    p30 = p30 + ")"
                    p31 = p.substring( 4, l30 );
                    pp = p30 + p31;
                    //alert(p31);
                    p1.value = "";
                    p1.value = pp;
                }
            }
            
            if( p.length > 5 ) {
                p11 = p.substring( d1 + 1, d2 );
                if( p11.length > 3 ) {
                    p12 = p11;
                    l12 = p12.length;
                    l15 = p.length;
                    //l12=l12-3
                    p13 = p11.substring( 0, 3   );
                    p14 = p11.substring( 3, l12 );
                    p15 =   p.substring( d2 + 1, l15 );
                    p1.value = "";
                    pp = "(" + p13 + ")" + p14 + p15;
                    p1.value = pp;
                    //obj1.value="";
                    //obj1.value=pp;
                }
                
                l16 = p.length;
                p16 = p.substring( d2 + 1, l16 );
                l17 = p16.length;
                if( l17 > 3 && p16.indexOf( '-' ) == -1 ) {
                    p17 = p.substring( d2 + 1, d2 + 5 );
                    p18 = p.substring( d2 + 5, l16 );
                    p19 = p.substring( 0, d2 + 1 );
                    //alert(p19);
                    pp = p19 + p17 + "-" + p18;
                    p1.value = "";
                    p1.value = pp;
                    //obj1.value="";
                    //obj1.value=pp;
                }
            }
            
        }
        else {
            var teclaVolta   = 8;
            var teclaDelete  = 46;
            var teclaTab     = 9;
            var teclaSetaEsq = 37;
            var teclaSetaDir = 39;
                
            if( tecla != teclaVolta && 
                tecla != teclaDelete && 
                tecla != teclaTab &&
                tecla != teclaSetaDir &&
                tecla != teclaSetaEsq ) 
                event.keyCode = 39;
        }
    }
    
    // Formata a data
    // onKeyDown="formata_data( this, event )"
    function formata_data( campo )
    {
        if( !campo ) return true; // caso o campo não exista desconsidera a validação
        var tecla = event.keyCode;
            
        // var whichCode = (window.Event) ? event.which : event.keyCode;
        // alert( "You have pressed the character " + String.fromCharCode(whichCode));      
        
        if( ( tecla >= 48 && tecla <= 57  && !event.shiftKey ) || 
            ( tecla >= 96 && tecla <= 105 && !event.shiftKey ) ) {
            if( tecla > 57 )
                event.keyCode = event.keyCode - 48;
            if( campo.value.length == 1 || 
                campo.value.length == 4 ) {
                campo.value += String.fromCharCode( event.keyCode ) + '/';
                event.keyCode = 39;
            }
        }
        else {
            var teclaVolta   = 8;
            var teclaDelete  = 46;
            var teclaTab     = 9;
            var teclaSetaEsq = 37;
            var teclaSetaDir = 39;
            
            if( tecla != teclaVolta && 
                tecla != teclaDelete && 
                tecla != teclaTab &&
                tecla != teclaSetaDir &&
                tecla != teclaSetaEsq ) 
                event.keyCode = 39;
        }
    }
    
    // Rotina retirada do site www.supersuporte.com.br
    // Formata campos numéricos
    // Exemplo de utilização da formata valor no html
    // onKeyDown="formata_valor( this, 10, event )"
    function formata_valor( campo, tammax )
    {       
        if( !campo ) return true; // caso o campo não exista desconsidera a validação
        var tecla = event.keyCode;
                  
        vr = campo.value;
        vr = vr.replace( "/", "" );
        vr = vr.replace( "/", "" );
        vr = vr.replace( ",", "" );
        vr = vr.replace( ".", "" );
        vr = vr.replace( ".", "" );
        vr = vr.replace( ".", "" );
        vr = vr.replace( ".", "" );
        tam = vr.length;

        if ( tam <  tammax && tecla != 8 ) {
            tam = vr.length + 1 ;
        }

        if ( tecla == 8 ) { 
            tam = tam - 1 ; 
        }
               
        if ( tecla == 8 || tecla >= 48 && tecla <= 57 || tecla >= 96 && tecla <= 105 )
        with( campo ) {
            if ( tam <= 2 ) {
                value = vr ; 
            }
            if ( (tam > 2) && (tam <= 5) ) {
                value = vr.substr( 0, tam - 2 ) + ',' + vr.substr( tam - 2, tam ) ; 
            }
            if ( (tam >= 6) && (tam <= 8) ) {
                value = vr.substr( 0, tam - 5 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ) ; 
            }
            if ( (tam >= 9) && (tam <= 11) ) {
                value = vr.substr( 0, tam - 8 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ) ; 
            }
            if ( (tam >= 12) && (tam <= 14) ) {
                value = vr.substr( 0, tam - 11 ) + '.' + vr.substr( tam - 11, 3 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ) ; 
            }
            if ( (tam >= 15) && (tam <= 17) ) {
                value = vr.substr( 0, tam - 14 ) + '.' + vr.substr( tam - 14, 3 ) + '.' + vr.substr( tam - 11, 3 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ) ;
            }
        }    
        else 
            if ( tecla != 188 && tecla != 189 ) {               
                event.returnValue = false;
            }
    }
    