/* Esta funcao checa se um campo do formulario foi preenchido */
function ChecaCampoVazio(nForm, nElement){
        if (document.forms[nForm].elements[nElement].value ==''){
                document.forms[nForm].elements[nElement].focus();
                return true;
        }
        return false;
}
/*Checa se 2 campos s� iguais*/
function ChecaCampoIgual(nForm, nElement1,nElement2){
        if (document.forms[nForm].elements[nElement1].value ==document.forms[nForm].elements[nElement2].value){
                document.forms[nForm].elements[nElement1].focus();
                return true;
        }
        return false;
}



/* Esta funcao checa o tamanho maximo de um campo */
function ChecaTamanhoMaxCampo(formNum, nElemento, nTamMAX){
        var str = document.forms[formNum].elements[nElemento].value;
        if(str.length > nTamMAX){
       /*       alert('Por favor, este campo deve conter no m�imo'+ nTamMAX +'.');*/
                document.forms[formNum].elements[nElemento].focus();
                return true;
      }else{
                return false;
        }
}

/* Esta funcao checa o tamanho minimo de um campo */
function ChecaTamanhoMinCampo(formNum, nElemento, nTamMIN){
        var str = document.forms[formNum].elements[nElemento].value;
        if(str.length < nTamMIN){
        /*      alert('Por favor, este campo deve conter no m�imo'+ nTamMIN +'.');*/
                document.forms[formNum].elements[nElemento].focus();
                return true;
      }else{
                return false;
        }
}

/* Esta funcao volta o foco para o campo se o valor dele nao  */
/* for numerico, e da um aviso para o usuario. */
function ChecaNumerico(formNum, elemNum){
        var parte;
        var str = document.forms[formNum].elements[elemNum].value;
        var i = 0;
        var re = /\d/;
        var Tamanho = str.length - 1;
        if (str != ''){
                do{
                        parte = str.substr(i,1);
                        if(parte.search(re) == -1){
                                //alert('Este campo deve ser num�ico.');
                                document.forms[formNum].elements[elemNum].focus();
                                document.forms[formNum].elements[elemNum].select();
                                return true;
                        }
                        i++;
                }
                while(i <= Tamanho)
        }
        return false;
}

/* Esta funcao volta o foco para o campo se o valor dele nao  */
/* for real, e da um aviso para o usuario. */
function ChecaNumericoFloat(formNum, elemNum){
        var str = document.forms[formNum].elements[elemNum].value;
        var strTOfloat = parseFloat(str);
        if (str != String(strTOfloat)){
      alert('Este campo deve ser um nmero real.\nUse ponto ao inves de virgula.');
      document.forms[formNum].elements[elemNum].focus();
      document.forms[formNum].elements[elemNum].select();
      return false;
   }
   document.forms[formNum].elements[elemNum].value = strTOfloat;
        return true;
}

/* Esta funcao valida um data no formato dd/mm/aaaa */
function ValidaData(nForm,sdata)
{
      day2 = sdata.substr(0,2);
      month2 = sdata.substr(3,2);
      year2 = sdata.substr(6,4);

      if ((sdata.substr(2,1) != "/") || (sdata.substr(5,1) != "/")){
            day2 = "";
             month2 = "";
            year2 = "";
      }

      var DayArray   = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
      var MonthArray = new Array("01","02","03","04","05","06","07","08","09","10","11","12");
      var inpDate    = day2 + month2 + year2;
      var filter     =/^[0-9]{2}[0-9]{2}[0-9]{4}$/;

      /* Check ddmmyyyy date supplied */
      if (! filter.test(inpDate)){
            return false;
      }
      /* Check Valid Month */
      filter=/01|02|03|04|05|06|07|08|09|10|11|12/;
      if (! filter.test(month2)){
            return false;
      }
      /* Check For Leap Year */
      var N = Number(year2);
      if ( ( N%4==0 && N%100 !=0 ) || ( N%400==0 ) ){
            DayArray[1]=29;
        }
      /* Check for valid days for month */
      for(var ctr=0; ctr<=11; ctr++){
            if (MonthArray[ctr]==month2){
                  if (day2<= DayArray[ctr] && day2 >0 ){
                        inpDate = day2 + '/' + month2 + '/' + year2;
                          return true;
                    }
                  else{
                          return false;
                    }
               }
         }
}

/* Funcao para checar se o e-mail foi preenchido corretamente */
function ChecaEmail(nForm, nElement){
        var field = document.forms[nForm].elements[nElement]; // email field
        var str = document.forms[nForm].elements[nElement].value; // email string
        var reg1 = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/; // not valid
        var reg2 = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/; // valid
        if (!reg1.test(str) && reg2.test(str)) { // if syntax is valid
            return false;
          }else{
             alert("\"" + str + "\" : e-mail invalido."); // this is also optional
                  field.focus();
          field.select();
          return true;
        }
}

/* Esta funcao valida o cadastro de uma senha */
function ValidaSenha(formNum, nElemento1, nElemento2, nTamMaxSenha, nTamMinSenha) {
   if (ChecaCampoVazio(formNum,nElemento1)){
      alert('Por favor, preencha o campo senha.');
      return false;
   }

   if (nTamMaxSenha == nTamMinSenha){
      if (ChecaTamanhoMaxCampo(formNum, nElemento1, nTamMaxSenha) || ChecaTamanhoMinCampo(formNum, nElemento1, nTamMinSenha)){
         alert('Por favor, sua senha deve conter '+ nTamMaxSenha +' caracteres.');
         return false;
      }
   }
   else{
      if (ChecaTamanhoMaxCampo(formNum, nElemento1, nTamMaxSenha)){
         alert('Por favor, sua senha deve conter no maximo'+ nTamMaxSenha +' caracteres.');
         return false;
      }
      else{
         if (ChecaTamanhoMinxCampo(formNum, nElemento1, nTamMinSenha)){
            alert('Por favor, sua senha deve conter no maximo'+ nTamMinSenha +' caracteres.');
            return false;
         }
      }
   }

   if (document.forms[formNum].elements[nElemento1].value != document.forms[formNum].elements[nElemento2].value){
      alert('Por favor, verifique a senha digitada, os campos da senha digitada estao diferentes.\n');
      return false;
   }
   return true;
}

/* Esta funcao valida o CNPJ */
function ValidaCNPJ(formNum, nElemento, nTamMAX){
        var str = document.forms[formNum].elements[nElemento].value;
        if(str.length != nTamMAX){
                alert('Por favor, informe o CNPJ de sua EJ com 14 digitos.');
                document.forms[formNum].elements[nElemento].focus();
                return true;
      }if(!VerificaCNPJ(document.forms[formNum].elements[nElemento].value)){
                alert('CNPJ invalido. Por favor, informe o CNPJ de sua empresa corretamente.');
                document.forms[formNum].elements[nElemento].focus();
                return true;
        }else{
                return false;
        }
}
      //Auxilia ValidaCNPJ
      function modulo(str) {
               soma=0;
               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
               }
      }
      //Auxilia ValidaCNPJ
      function VerificaCNPJ(valor) {
            primeiro=valor.substr(1,1);
            falso=true;
            size=valor.length;
            if (size!=14){
               return false;
            }
            size--;
            for (i=2; i<size-1; ++i){
               proximo=(valor.substr(i,1));
               if (primeiro!=proximo) {
                  falso=false
               }
            }

            if (falso){
               return;
            }

               if(modulo(valor.substring(0,valor.length - 2)) + "" + modulo(valor.substring(0,valor.length - 1)) !=valor.substring(valor.length - 2,valor.length)) {
                  return false;
               }
               return true;
      }/*Fim da validacao de CNPJ*/

/* Funcao para o selecionameto de varios checkboxes de uma unica vez */
function SelectAll(bool,formNum){
    var i;
    for (i=0;i<document.forms[formNum].length;i++){
            document.forms[formNum].elements[i].checked = bool;
        }
}

/* Funcao para verificar o selecionamento de radioboxes*/
function ChecaCheckBox(formNum, nElemento1, nElemento2){
    var i;
    for (i=nElemento1; i<=nElemento2; i++){
   if(document.forms[formNum].elements[i].checked){
      return true;
        }
    }
    return false;
}

function ChecaCampoSelecao(nForm, nElement){
        if (document.forms[nForm].elements[nElement].value =='selecione'){
                document.forms[nForm].elements[nElement].focus();
                return true;
        }
        return false;
}

/* Checa sequencia das escolhas selecionadas */
function ChecaSequenciaEscolhas(formNum, nElemento1, nElemento2){
        for(b=nElemento1; b<=nElemento2; b++){
                var str1 = document.forms[formNum].elements[b].value;
                for(a=nElemento1; a<=nElemento2; a++){
                        var str = document.forms[formNum].elements[a].value;
                        if((str==str1)&&(a!=b)){
                                return true;
                        };
                }
        }
        return false;
}

/* Esta pede certeza antes de encaminhar para uma p�ina */
/// \fn CertezaRedireciona(codigo, sPergunta, sPagina)
/// \brief Pede certeza antes de redirecionar para uma p�ina
/// \author Gis�ia Magalh�s Cruz
/// \param iCodigo C�igo a ser passado para a p�ina de destino
/// \param sPergunta Pergunta mostrada com o pedido de confirma�o
/// \param sPagina P�ina de destino
/// \return Retorna verdadeiro caso a pessoa confirme e direciona para a p�ina indicada; retorna falso caso a pessoa dessista
function CertezaRedireciona(iCodigo, sPergunta, sPagina){
   if (confirm (sPergunta)){
                 location.href = sPagina+"?codigo="+ iCodigo;
                 return true;
        }else{
                 return false;
        }
}

function valida_cpf(cpf)
      {
      var numeros, digitos, soma, i, resultado, digitos_iguais;
      digitos_iguais = 1;
      if (cpf.length < 11)
            return false;
      for (i = 0; i < cpf.length - 1; i++)
            if (cpf.charAt(i) != cpf.charAt(i + 1))
                  {
                  digitos_iguais = 0;
                  break;
                  }
      if (!digitos_iguais)
            {
            numeros = cpf.substring(0,9);
            digitos = cpf.substring(9);
            soma = 0;
            for (i = 10; i > 1; i--)
                  soma += numeros.charAt(10 - i) * i;
            resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
            if (resultado != digitos.charAt(0))
                  return false;
            numeros = cpf.substring(0,10);
            soma = 0;
            for (i = 11; i > 1; i--)
                  soma += numeros.charAt(11 - i) * i;
            resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
            if (resultado != digitos.charAt(1))
                  return false;
            return true;
            }
      else
            return false;
      }