// JavaScript Document
function validaData(str) { 

	dia = (str.value.substring(0,2)); 
    mes = (str.value.substring(3,5)); 
	ano = (str.value.substring(6,10)); 

	cons = true; 
	
	// verifica se foram digitados números
	if (isNaN(dia) || isNaN(mes) || isNaN(ano)){
		alert("Preencha a data somente com números."); 
		str.value = "";
		str.focus(); 
		return false;
	}
		
    // verifica o dia valido para cada mes 
    if ((dia < 01)||(dia < 01 || dia > 30) && 
		(mes == 04 || mes == 06 || 
		 mes == 09 || mes == 11 ) || 
		 dia > 31) { 
    	cons = false; 
	} 

	// verifica se o mes e valido 
	if (mes < 01 || mes > 12 ) { 
		cons = false; 
	} 

	// verifica se e ano bissexto 
	if (mes == 2 && ( dia < 01 || dia > 29 || 
	   ( dia > 28 && 
	   (parseInt(ano / 4) != ano / 4)))) { 
		cons = false; 
	} 
    
	if (cons == false) { 
		alert("A data inserida não é válida: " + str.value); 
		str.value = "";
		str.focus(); 
		return false;
	} 
}

// colocar no evento onKeyUp passando o objeto como parametro
function formataData(val)
{
   	var pass = val.value;
	var expr = /[0123456789]/;
		
	for(i=0; i<pass.length; i++){
		// charAt -> retorna o caractere posicionado no índice especificado
		var lchar = val.value.charAt(i);
		var nchar = val.value.charAt(i+1);
	
		if(i==0){
		   // search -> retorna um valor inteiro, indicando a posição do inicio da primeira
		   // ocorrência de expReg dentro de instStr. Se nenhuma ocorrencia for encontrada o método retornara -1
		   // instStr.search(expReg);
		   if ((lchar.search(expr) != 0) || (lchar>3)){
			  val.value = "";
		   }
		   
		}else if(i==1){
			   
			   if(lchar.search(expr) != 0){
				  // substring(indice1,indice2)
				  // indice1, indice2 -> será usado para delimitar a string
				  var tst1 = val.value.substring(0,(i));
				  val.value = tst1;				
 				  continue;			
			   }
			   
			   if ((nchar != '/') && (nchar != '')){
				 	var tst1 = val.value.substring(0, (i)+1);
				
					if(nchar.search(expr) != 0) 
						var tst2 = val.value.substring(i+2, pass.length);
					else
						var tst2 = val.value.substring(i+1, pass.length);
	
					val.value = tst1 + '/' + tst2;
			   }

		 }else if(i==4){
			
				if(lchar.search(expr) != 0){
					var tst1 = val.value.substring(0, (i));
					val.value = tst1;
					continue;			
				}
		
				if	((nchar != '/') && (nchar != '')){
					var tst1 = val.value.substring(0, (i)+1);

					if(nchar.search(expr) != 0) 
						var tst2 = val.value.substring(i+2, pass.length);
					else
						var tst2 = val.value.substring(i+1, pass.length);
	
					val.value = tst1 + '/' + tst2;
				}
   		  }
		
		  if(i>=6){
			  if(lchar.search(expr) != 0) {
					var tst1 = val.value.substring(0, (i));
					val.value = tst1;			
			  }
		  }
	 }
	
     if(pass.length>10)
		val.value = val.value.substring(0, 10);
	 	return true;
}
function formataTelefone(val){
   	var pass = val.value;
	var expr = /[0123456789() -]/;
		
	for(i=0; i<pass.length; i++){
		var lchar = val.value.charAt(i);
		if(i==0){
		   if ((lchar.search(expr) != 0))
			  val.value = "";
		   else
		   	if(lchar != "(") val.value = "(" + lchar;
		}else{
			if(lchar.search(expr) != 0){
				var tst1 = val.value.substring(0,(i));
				val.value = tst1;				
				continue;			
			}
			if(lchar != ")" && i==3) val.value = val.value.substring(0,i) + ") " + lchar;
			if(lchar != "-" && i==9) val.value = val.value.substring(0,i) + "-" + lchar;
		 }
	}
	if(pass.length>14)
		val.value = val.value.substring(0, 14);
	 	return true;
}
function formataCEP(val){
   	var pass = val.value;
	var expr = /[0123456789-]/;
		
	for(i=0; i<pass.length; i++){
		var lchar = val.value.charAt(i);
		if(i==0){
		   if ((lchar.search(expr) != 0)) val.value = "";
		}else{
			if(lchar.search(expr) != 0){
				var tst1 = val.value.substring(0,(i));
				val.value = tst1;				
				continue;			
			}
			if(lchar != "-" && i==5) val.value = val.value.substring(0,i) + "-" + lchar;
		 }
	}
	if(pass.length>9)
		val.value = val.value.substring(0, 9);
	return true;	
}
function formataCPF(val)
{
   	var pass = val.value;
	var expr = /[0123456789]/;
		
	for(i=0; i<pass.length; i++){
		// charAt -> retorna o caractere posicionado no índice especificado
		var lchar = val.value.charAt(i);
		var nchar = val.value.charAt(i+1);
	
		if(i==0){
		   // search -> retorna um valor inteiro, indicando a posição do inicio da primeira
		   // ocorrência de expReg dentro de instStr. Se nenhuma ocorrencia for encontrada o método retornara -1
		   // instStr.search(expReg);
		   if ((lchar.search(expr) != 0)){
			  val.value = "";
		   }
		   
		}else if(i==2 || i==6 || i==10){
			   
			   if(lchar.search(expr) != 0){
				  // substring(indice1,indice2)
				  // indice1, indice2 -> será usado para delimitar a string
				  var tst1 = val.value.substring(0,(i));
				  val.value = tst1;				
 				  continue;			
			   }
			   
			   if ((nchar != '/') && (nchar != '')){
				 	var tst1 = val.value.substring(0, (i)+1);
				
					if(nchar.search(expr) != 0) 
						var tst2 = val.value.substring(i+2, pass.length);
					else
						var tst2 = val.value.substring(i+1, pass.length);
					if(i == 10)
						val.value = tst1 + '-' + tst2;
					else
						val.value = tst1 + '.' + tst2;
			   }

		 }
	}
	if(pass.length>14)
		val.value = val.value.substring(0, 14);
	 	return true;
}
function validaCPF(cpf) {
		 var valor_cpf = cpf.replace(".","");
		 valor_cpf = valor_cpf.replace(".","");
		 valor_cpf = valor_cpf.replace("-","");
         d = document.frm1;
         erro = new String;

         var flag=1;

         if(valor_cpf == ""){
              erro +="O campo CPF deve ser preenchido!\n";
              flag=0;
         } else {
             if (isNaN(valor_cpf)){
                 flag=0;
                 erro+="A verificacao de CPF suporta apenas numeros! \n";
             }else{
                if (d.cpf.length < 11){
                    erro+="Sao necessarios 11 digitos para verificacao do CPF! \n";
                    flag=0;
                }
                if (valor_cpf == "00000000000" || valor_cpf == "11111111111" || valor_cpf == "22222222222" || valor_cpf == "33333333333" || valor_cpf == "44444444444" || valor_cpf == "55555555555" || valor_cpf == "66666666666" || valor_cpf == "77777777777" || valor_cpf == "88888888888" || valor_cpf == "99999999999"){
                    erro+="Numero de CPF invalido!\n";
                    flag=0;
                }
                var a = [];
                var b = new Number;
                var c = 11;
                for (i=0; i<11; i++){
                a[i] = valor_cpf.charAt(i);
                if (i < 9)
                b += (a[i] *  --c);
                }
                if ((x = b % 11) < 2) {
                   a[9] = 0
                } else {
                   a[9] = 11-x
                }
                b = 0;
                c = 11;
                for (y=0; y<10; y++){
                  b += (a[y] *  c--);
                }
                if ((x = b % 11) < 2) {
                  a[10] = 0;
                } else {
                  a[10] = 11-x;
                }
                if ((valor_cpf.charAt(9) != a[9]) || (valor_cpf.charAt(10) != a[10])){
                   erro+="Digito verificador do CPF com problema!\n";
                   flag=0;
                }
             }
         }
         if (flag == 0){
            return erro;
         }else{
            return true;
         }

}

// Valida quantidade para somente números

function somenteNumeros(val){
    var pass = val.value;
 var expr = /[0123456789]/;
 for(i=0; i<pass.length; i++){
  var lchar = val.value.charAt(i);
  var nchar = val.value.charAt(i+1);
  if(lchar.search(expr) != 0){
   var tst1 = val.value.substring(0,(i));
   val.value = tst1;    
   continue;   
  }
 }
 return true;
}

function formataMoeda(campo,tammax,teclapres) {
	var tecla = teclapres.keyCode;

	vr = document.frm1[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; 
	
	if (tecla == 8 )
		tam = tam - 1; 
	if ( tecla == 8 || tecla >= 48 && tecla <= 57 || tecla >= 96 && tecla <= 105 )
	{
		if ( tam <= 2 )
			document.frm1[campo].value  = vr; 
	
		if ( (tam > 2) && (tam <= 5) )
			document.frm1[campo].value  = vr.substr( 0, tam - 2 ) + ',' + vr.substr( tam - 2, tam ); 

		if ( (tam >= 6) && (tam <= 8) )
			document.frm1[campo].value  = vr.substr( 0, tam - 5 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ); 
	
		if ( (tam >= 9) && (tam <= 11) )
			document.frm1[campo].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) )
			document.frm1[campo].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) )
			document.frm1[campo].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 );
	}
}

var reEmail = /^[\w!#$%&'*+\/=?^`{|}~-]+(\.[\w!#$%&'*+\/=?^`{|}~-]+)*@(([\w-]+\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/;

function validaEmail(pStr) {
 if(pStr == ""){
  alert("O campo E-mail deve ser preenchido!");
  return false;
 }
 if(reEmail.test(pStr)){
  return true;
 }else{
  alert ("O campo E-mail deve se conter um endereco eletronico!");
  return false;
 }
 return true;
}

function validaForm(){
	try{
		var d = document.frm1;
		if(!validaEmail(d.email.value)){ return false; }
		if(d.cpf.value.length == 0){ alert("Digite seu CPF"); return false; }
		if(validaCPF(d.cpf.value) != true){ alert(validaCPF(d.cpf.value)); return false;	}
		if(d.senha.value.length == 0){ alert("Digite a senha do Questionário"); return false; }
		return true;
	}catch(e){
		alert("ERRO:" + e);
		return false;
	}
}

