
/* Esta funcao checa se um campo do formulario foi preenchido */
function ChecaCampoVazio(nForm, nElement){
		//alert("nome2: "+document.forms[form1].elements['nome'].value);
        if (document.forms[nForm].elements[nElement].value ==''){
                document.forms[nForm].elements[nElement].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áximo'+ 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ínimo'+ 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érico.');
                                document.forms[formNum].elements[elemNum].focus();
                                document.forms[formNum].elements[elemNum].select();
                                return false;
                        }
                        i++;
                }
                while(i <= Tamanho)
        }
        return true;
}

/* 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 número real.´\nUse ponto ao invés de vírgula.');
		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(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 true;
          }
          //alert("\"" + str + "\" não é um e-mail válido."); // this is also optional
          field.focus();
          field.select();
          return false;
}

/* 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 +' carácteres.');
			return false;
		}	
	}
	else{
		if (ChecaTamanhoMaxCampo(formNum, nElemento1, nTamMaxSenha)){
			alert('Por favor, sua senha deve conter no máximo'+ nTamMaxSenha +' carácteres.');
			return false;
		}
		else{
			if (ChecaTamanhoMinxCampo(formNum, nElemento1, nTamMinSenha)){
				alert('Por favor, sua senha deve conter no mínimo'+ nTamMinSenha +' carácteres.');
				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 estão 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 dígitos.');
                document.forms[formNum].elements[nElemento].focus();
                return true;
		}if(!VerificaCNPJ(document.forms[formNum].elements[nElemento].value)){
                //alert('CNPJ inválido. Por favor, informe o CNPJ de sua EJ 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;
}

/* 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;
}

// Funcao pra autenticar CPF
function isCPF(formNum, orderField){   
		var sCPF = document.forms[formNum].elements[orderField].value; 
   		var c = sCPF.substr(0,9); 
   		var dv = sCPF.substr(9,2); 
   		var d1 = 0; 
  
   		for(i = 0; i < 9; i++){ 
     			d1 += c.charAt(i)*(10-i); 
   		} 
   		if (d1 == 0){ 
     			alert("CPF Invalido");
	 			document.forms[formNum].elements[orderField].focus();
     			return false; 
   		} 
  		d1 = 11 - (d1 % 11); 
  		if (d1 > 9){ 
     			d1 = 0;
   		}
  		if (dv.charAt(0) != d1){ 
     			alert("CPF Invalido");
	 			document.forms[formNum].elements[orderField].focus();	 
     			return false; 
   		} 
		d1 *= 2; 
		for (i = 0; i < 9; i++){ 
    			d1 += c.charAt(i)*(11-i); 
  		} 
  		d1 = 11 - (d1 % 11); 
  		if (d1 > 9){
    			d1 = 0;
  		}
  		if (dv.charAt(1) != d1){   
    			alert("CPF Invalido");
    			document.forms[formNum].elements[orderField].focus();
    			return false;  
  		}   
  		return true;   
} 


/* Esta pede certeza antes de encaminhar para uma página */
/// \fn CertezaRedireciona(codigo, sPergunta, sPagina)
/// \brief Pede certeza antes de redirecionar para uma página
/// \author Gisélia Magalhães Cruz
/// \param iCodigo Código a ser passado para a página de destino
/// \param sPergunta Pergunta mostrada com o pedido de confirmação
/// \param sPagina Página de destino
/// \return Retorna verdadeiro caso a pessoa confirme e direciona para a página 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;
        }
}
