/* funções genéricas para validar dados
autor: Hugo Maia
data de criação: 05/04/2004
*/

//validacao de email

function validmail(str){
                if (window.RegExp){
                        var reg1str = "(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)";
                        var reg2str = "^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$";
                        var reg1 = new RegExp(reg1str);
                        var reg2 = new RegExp(reg2str);

                        if (!reg1.test(str) && reg2.test(str))        return true;
                        else return false;
                }
                else if(str.indexOf("@") >= 0)        return true;
                else return false;
}

//outra função de validação de email(na minha opnião mais eficiente).

function isMail(mailField){
  strMail = mailField.value;
  var re = new RegExp;
  re = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
  var arr = re.exec(strMail);
  if (arr == null)
    return(false);
  else
    return(true);
}
function validmail(str){
                if (window.RegExp){
                        var reg1str = "(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)";
                        var reg2str = "^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$";
                        var reg1 = new RegExp(reg1str);
                        var reg2 = new RegExp(reg2str);

                        if (!reg1.test(str) && reg2.test(str))        return true;
                        else return false;
                }
                else if(str.indexOf("@") >= 0)        return true;
                else return false;
}

//validacao de CNPJ

function Valida_CNPJ(strCNPJ)
{
        strCNPJ = strCNPJ.replace(".","")
        strCNPJ = strCNPJ.replace(".","")
        strCNPJ = strCNPJ.replace("-","")
        strCNPJ = strCNPJ.replace("/","")

        if (strCNPJ == ""){
                return false;
        }

        var
                strDV = strCNPJ.substr(12, 2),
                intSoma,
                intDigito = 0,
                strControle = "",
                strMultiplicador = "543298765432";
        strCNPJ = strCNPJ.substr(0, 12);
        for(var j = 1; j <= 2; j++)
        {
                intSoma = 0;
                for(var i = 0; i <= 11; i++)
                {
                        intSoma += (parseInt(strCNPJ.substr(i, 1), 10) * parseInt(strMultiplicador.substr(i, 1), 10))
                }
                if(j == 2){intSoma += (2 * intDigito)}
                intDigito = (intSoma * 10) % 11;
                if(intDigito == 10){intDigito = 0}
                strControle += intDigito.toString();
                strMultiplicador = "654329876543";
        }
        return(strControle == strDV);

}

// validacao de data

function ValidarData(sString) {

        var ddata = (sString);
        if (ddata == null)
                return false;

        var LenData = ddata.length;

        if( LenData == 0 )
                return false;

        var d = new Date( ddata );

        if ( d.toLocaleString() == 'NaN' )
                return false;

        var xano = ddata.substr(ddata.lastIndexOf("/")+1,ddata.length - ddata.lastIndexOf("/")+1)
        if ( xano.length < 4 )
                return false;

        var xmes = ddata.substring(ddata.indexOf("/")+1, ddata.lastIndexOf("/"))
        var xdia = ddata.substring(0,ddata.indexOf("/"))

        if ( String(xano).length == 3 || String(xano).length > 4 || String(xano).length == 1 ){
                return (false);
        }

        if (parseInt(xmes) > 12) {
                return (false);
        }

        switch (parseInt(xmes)) {
                case 1  :
                        if         (xdia > 31 && parseInt(xmes) == 1) {
                                return (false);
                                break;
                                 }
                case 2  :
                        if         (xdia > lastDayFeb(xano) && parseInt(xmes) == 2) {
                                return (false);
                                break;
                                 }
                case 3  :
                        if         (xdia > 31 && parseInt(xmes) == 3) {
                                return (false);
                                break;
                                 }
                case 4  :
                        if         (xdia > 30 && parseInt(xmes) == 4) {
                                return (false);
                                break;
                                 }
                case 5  :
                        if         (xdia > 31 && parseInt(xmes) == 5) {
                                return (false);
                                break;
                                 }
                case 6  :
                        if         (xdia > 30 && parseInt(xmes) == 6) {
                                return (false);
                                break;
                                 }
                case 7  :
                        if         (xdia > 31 && parseInt(xmes) == 7) {
                                return (false);
                                break;
                                 }
                case 8  :
                        if         (xdia > 31 && parseInt(xmes) == 8) {
                                return (false);
                                break;
                                 }
                case 9  :
                        if         (xdia > 30 && parseInt(xmes) == 9) {
                                return (false);
                                break;
                                 }
                case 10 :
                        if         (xdia > 31 && parseInt(xmes) == 10) {
                                return (false);
                                break;
                                 }
                case 11 :
                        if         (xdia > 30 && parseInt(xmes) == 11) {
                                return (false);
                                break;
                                 }
                case 12 :
                        if         (xdia > 31 && parseInt(xmes) == 12) {
                                return (false);
                                break;
                                 }
        }
        return (true);
}

// validacao campo numerico

function isNum(str)
{
      var VBlnIsNum;
      VIntTam = str.length;
      VBlnIsNum = true;
      if (VIntTam == 0)
      {
                  return false;
        }
      else
      {
                  for (i=0; i < VIntTam; i++)
                  {
                                 if (str.substring(i,i+1) < '0' || str.substring(i,i+1) >
'9')
                                 {
                                             VBlnIsNum = false;
                                 }
                   }
                     return VBlnIsNum;
      }
}

//Função de validação de CPF
function isCPF(st) {
if ((st == "") || (st.length != 11))
{
  return (false);
}

l = st.length;

//aleterado para se usuário não digitar os zeros na frente do CPF, completar sozinho
if ((l == 9) || (l == 8))
{
            for (i = l ; i < 10; i++)
            {
                        st = '0' + st
            }
}
l = st.length;
st2 = "";
for (i = 0; i < l; i++) {
  caracter = st.substring(i,i+1);
  if ((caracter >= '0') && (caracter <= '9'));
     st2 = st2 + caracter;
}
if ((st2.length > 11) || (st2.length < 10))
   return (false);
if (st2.length==10)
   st2 = '0' + st2;
digito1 = st2.substring(9,10);
digito2 = st2.substring(10,11);
digito1 = parseInt(digito1,10);
digito2 = parseInt(digito2,10);
sum = 0; mul = 10;
for (i = 0; i < 9 ; i++) {
    digit = st2.substring(i,i+1);
    tproduct = parseInt(digit ,10) * mul;
    sum += tproduct;
    mul--;
}
dig1 = ( sum % 11 );
if ( dig1==0 || dig1==1 )
   dig1=0;
else
  dig1 = 11 - dig1;
if (dig1!=digito1)
  return (false);
sum = 0;
mul = 11;
for (i = 0; i < 10 ; i++) {
    digit = st2.substring(i,i+1);
    tproduct = parseInt(digit ,10)*mul;
    sum += tproduct;
    mul--;
}
dig2 = (sum % 11);
if ( dig2==0 || dig2==1 )
  dig2=0;
else
  dig2 = 11 - dig2;
if (dig2 != digito2)
  return (false);
return (true);
}

//validacao de campo com espaço em branco

function verifica_branco(nome_do_campo,mensagem)
{        //Funcionalidade: Verificar se foi digitado algum caracter diferente de Branco
        //nome_do_campo: campo a ser verificado
        //mensagem: mensagem que irá aparecer para o usuário caso esteja em branco

        var parametro;
        parametro = eval("document.forms[0]." + nome_do_campo + ".value");
        teste_parametro = "false"; //variavel para teste de espacos em branco
        tamanho_parametro = parametro.length;
        if (tamanho_parametro != 0)
        {
                for (i = 0; i < tamanho_parametro; i++)
                        {if (parametro.charAt(i) != " ")
                                {
                                        teste_parametro = "true"; /*existe caracter diferente de branco*/
                                }
                        }
                if (teste_parametro == "false")  //todos os caracteres digitados são brancos
                {
                        alert(mensagem);
                        eval("document.forms[0]." + nome_do_campo + ".focus();");
                        return true;//retorna se estiver vazio
                }
                else
                {
                        return false;
                }
        }
        else
        {
                alert(mensagem);
                eval("document.forms[0]." + nome_do_campo + ".focus();");
                return true;//retorna se estiver vazio
        }

}

/*
desenvolvedor: antonio benedito
data: 28/11/2001
objetivo:
mascarar de acordo com a mascara passada
caracteres: # - caracter a ser mascarado
           | - separador de mascaras
modos (exemplos):
mascara simples: "###-####"                         mascara utilizando a mascara passada
mascara composta: "###-####|####-####"       mascara de acordo com o tamanho (length) do valor passado
mascara dinâmica: "[###.]###,##"             multiplica o valor entre colchetes de acordo com o length
                                                                                         do valor para que a mascara seja dinâmica ex: ###.###.###.###,##
utilizar no onkeyup do objeto
tratar o maxlength do objeto na página (a função não trata isso)
*/

function mascara_global(mascara, valor){

        var mascara_utilizar;
        var mascara_limpa;
        var temp;
        var i;
        var j;
        var caracter;
        var separador;
        var dif;
        var validar;
        var mult;
        var ret;
        var tam;
        var tvalor;
        var valorm;
        var masct;
        tvalor = "";
        ret = "";
        caracter = "#";
        separador = "|";
        mascara_utilizar = "";
        valor = trim(valor);
        if (valor == "")return valor;
        temp = mascara.split(separador);
        dif = 1000;

        valorm = valor;
        //tirando mascara do valor já existente
        for (i=0;i<valor.length;i++){
                if (!isNaN(valor.substr(i,1))){
                        tvalor = tvalor + valor.substr(i,1);
                }
        }
        valor = tvalor;

        //formatar mascara dinamica
        for (i = 0; i<temp.length;i++){
                mult = "";
                validar = 0;
                for (j=0;j<temp[i].length;j++){
                        if (temp[i].substr(j,1) == "]"){
                                temp[i] = temp[i].substr(j+1);
                                break;
                        }
                        if (validar == 1)mult = mult + temp[i].substr(j,1);
                        if (temp[i].substr(j,1) == "[")validar = 1;
                }
                for (j=0;j<valor.length;j++){
                        temp[i] = mult + temp[i];
                }
        }


        //verificar qual mascara utilizar
        if (temp.length == 1){
                mascara_utilizar = temp[0];
                mascara_limpa = "";
                for (j=0;j<mascara_utilizar.length;j++){
                        if (mascara_utilizar.substr(j,1) == caracter){
                                mascara_limpa = mascara_limpa + caracter;
                        }
                }
                tam = mascara_limpa.length;
        }else{
                //limpar caracteres diferente do caracter da máscara
                for (i=0;i<temp.length;i++){
                        mascara_limpa = "";
                        for (j=0;j<temp[i].length;j++){
                                if (temp[i].substr(j,1) == caracter){
                                        mascara_limpa = mascara_limpa + caracter;
                                }
                        }

                        if (valor.length > mascara_limpa.length){
                                if (dif > (valor.length - mascara_limpa.length)){
                                        dif = valor.length - mascara_limpa.length;
                                        mascara_utilizar = temp[i];
                                        tam = mascara_limpa.length;
                                }
                        }else if (valor.length < mascara_limpa.length){
                                if (dif > (mascara_limpa.length - valor.length)){
                                        dif = mascara_limpa.length - valor.length;
                                        mascara_utilizar = temp[i];
                                        tam = mascara_limpa.length;
                                }
                        }else{
                                mascara_utilizar = temp[i];
                                tam = mascara_limpa.length;
                                break;
                        }
                }
        }

        //validar tamanho da mascara de acordo com o tamanho do valor
        if (valor.length > tam){
                valor = valor.substr(0,tam);
        }else if (valor.length < tam){
                masct = "";
                j = valor.length;
                for (i = mascara_utilizar.length-1;i>=0;i--){
                        if (j == 0) break;
                        if (mascara_utilizar.substr(i,1) == caracter){
                                j--;
                        }
                        masct = mascara_utilizar.substr(i,1) + masct;
                }
                mascara_utilizar = masct;
        }

        //mascarar
        j = mascara_utilizar.length -1;
        for (i = valor.length - 1;i>=0;i--){
                if (mascara_utilizar.substr(j,1) != caracter){
                        ret = mascara_utilizar.substr(j,1) + ret;
                        j--;
                }
                ret = valor.substr(i,1) + ret;
                j--;
        }
        return ret;
}







//tirar os espaços das extremidades do valor passado
function trim(valor){
        for (i=0;i<valor.length;i++){
                if(valor.substr(i,1) != " "){
                        valor = valor.substr(i);
                        break;
                }
                if (i == valor.length-1){
                        valor = "";
                }
        }
        for (i=valor.length-1;i>=0;i--){
                if(valor.substr(i,1) != " "){
                        valor = valor.substr(0,i+1);
                        break;
                }
        }
        return valor;
}

//bloquear não numérico

function bloqueia_nao_numerico(){
        if (event.keyCode < 48 || event.keyCode > 57) {
                event.keyCode = 0;
        }
}
/**************************************************************************************

Exemplo de uso das funções

function validaForm(Form){
    if (Form.txtNomeProduto.value==''){
                alert('Você deve preencher o campo "Nome do Produto e marca" para que seus dados sejam enviados corretamente.');
                Form.txtNomeProduto.focus();
                return false;
        }else if (Form.txtDtFabricao.value=='' && Form.naoConstadtFab.checked== false){
                alert('Você deve preencher o campo "Fabricado em" para que seus dados sejam enviados corretamente.');
                Form.txtDtFabricao.focus();
                return false;
        //}else if (!ValidarData(Form.txtDtFabricao.value)){
                //alert('Você digitou uma data inválida, por favor, corrija-a.');
                //Form.txtDtFabricao.focus();
                //Form.txtDtFabricao.select();
                //return false;
        }else if (Form.txtRazaoSocial.value==''){
                alert('Você deve preencher o campo "Razão Social/Nome" para que seus dados sejam enviados corretamente.');
                Form.txtRazaoSocial.focus();
                return false;
                }else if (Form.txtOcorrencia.value==''){
                alert('Você deve preencher o campo "Ocorrência" para que seus dados sejam enviados corretamente.');
                Form.txtOcorrencia.focus();
                return false;
                }else if (Form.txtNomeComunicante.value==''){
                alert('Você deve preencher o campo "Nome do comunicante" para que seus dados sejam enviados corretamente.');
                Form.txtNomeComunicante.focus();
                return false;
                }else if (Form.lsFormaContato.value==''){
                alert('Você deve selecionar a "Forma de Contato" para que seus dados sejam enviados corretamente.');
                Form.lsFormaContato.focus();
                return false;
                }else if (Form.txtFormaContato.value==''){
                alert('Você deve preencher o campo  "Forma de Contato" para que seus dados sejam enviados corretamente.');
                Form.txtFormaContato.focus();
                return false;
                }else if ((Form.lsFormaContato.value=='e-mail') && (!validmail(Form.txtFormaContato.value)) ){
                alert('Você digitou um e-mail inválido, por favor, corrija-o.');
                Form.txtFormaContato.focus();
                return false;
                }else if (Form.lsTipoIdentificacao.value==''){
                alert('Você deve preencher o Tipo de identificação para que seus dados sejam enviados corretamente.');
                Form.txtFormaContato.focus();
                return false;
                }else if (Form.txtCpfComunicante.value==''){
                alert('Você deve preencher o campo "31"  para que seus dados sejam enviados corretamente.');
                Form.txtCpfComunicante.focus();
                return false;
                }else if ((Form.lsTipoIdentificacao.value=='CPF') && (!isCPF(Form.txtCpfComunicante.value)) ){
                alert('Você digitou um CPF inválido, por favor, corrija-o.');
                Form.txtCpfComunicante.focus();
                return false;
                }
                return true;
}

**********************************************************************************************************/
//termina aqui