function validartipos(fr)
{
	//Define as variáveis utilizadas na função
	var resp;
	var a=0;
	var temp;
	var s;
	resp=true;
	//Limpa o objeto de erro
	erro.innerHTML="";
	// Faz o laço através de todos os elementos do form
	for(a=0;a<fr.elements.length;a++)
	{ 
		if (fr.elements[a].Tipo=="integer")
		{
			// Se o tipo for inteiro, faz a validação de valores
	    	s=fr.elements[a].value;
	    	s=limparstring(s);
			if (s.length>0) 
			{
				// A validação só é feita se o campo for obrigatório OU se estiver preenchido
	  			temp=fr.elements[a].value;
				// Utiliza a função isNaN para verificar se é um número e parseInt para verificar se é inteiro
	  			if (isNaN(parseInt(temp)))
	   			{ 
					resp=false;
	     			erro.innerHTML=erro.innerHTML + fr.elements[a].Descricao + " deve conter um número inteiro<br>";
	     		}
			}
		}
		if (fr.elements[a].Tipo=="float") 
		{
			//Se o tipo for Float faz a validação
	    	s=fr.elements[a].value;
	    	s=limparstring(s);
			if (s.length>0) 
			{
				// A validação só é feita se o campo for obrigatório OU se estiver preenchido
	  			temp=fr.elements[a].value;
				//Utiliza a função isNaN para verificar se é um número e parseFloat para verificar se é Float
      			if (isNaN(parseFloat(temp)) || parseFloat(temp)<=0)
	   			{ 
					resp=false;
	     			erro.innerHTML=erro.innerHTML + fr.elements[a].Descricao + " deve conter um número real positivo<br>";
	     		}
			}
		}
		if (fr.elements[a].Tipo=="date") 
		{
			//Se o tipo for date faz a validação
	    	s=fr.elements[a].value;
	    	s=limparstring(s);
			if (s.length>0) 
			{
				resp= validadata(fr.elements[a],0);
			}
		}
		if (fr.elements[a].Tipo=="email")
		{
			//Se o tipo for date faz a validação
	    	s=fr.elements[a].value;
	    	s=limparstring(s);
			if (s.length>0) 
			{
				if( validarEmail(fr.elements[a].value, fr.elements[a].Descricao) == false)
				{
					resp=false;
				}
			}
		}
	}
	//Se algo foi inválido, resp contém false
	return(resp); 
}

/// ************************************************************************************* '
// Função Valida_Dadta(obj, int)
// Verifica se a data informada pelo usário é valida
// Retorno nenhum
//************************************************************************************* '
function validadata(vObjeto, vDataDif)
{ 
  var now = new Date();
  var vDia     = parseInt(now.getDate());
  var vMes     = parseInt(now.getMonth() + 1);
  var vAno     = parseInt(now.getYear());
  
  if(vObjeto.value.length == 0) { return true; }	
  if(vObjeto.value.length == 9) { vObjeto.value = "0" + vObjeto.value; }
	
  dia = vObjeto.value.substring(0,2);
  mes = vObjeto.value.substring(3,5);
  ano = vObjeto.value.substring(6,10);
  
  barra1 = vObjeto.value.substring(2,3);  
  barra2 = vObjeto.value.substring(5,6);
  if (barra1 != "/")
  {
	erro.innerHTML=erro.innerHTML +  "O formato da data está inválido! Exemplo: dd/mm/aaaa<br>";	
	return(false); 
  }
  if (barra2 != "/") 
  {
	erro.innerHTML=erro.innerHTML +  "O formato da data está inválido! Exemplo: dd/mm/aaaa<br>";	
	return(false);  
  } 
  if (isNaN(dia))
  {
	erro.innerHTML=erro.innerHTML +  "A data (dia) contém caracteres inválidos<br>";
	return(false);
  } 
  if (isNaN(mes))
  {
  	erro.innerHTML=erro.innerHTML +  "A data (mês) contém caracteres inválidos<br>";	
	return(false); 
  }  
  if (isNaN(ano))
  {
  	erro.innerHTML=erro.innerHTML +  "A data (ano) contém caracteres inválidos<br>";	
	return(false); 
  } 
  if (vObjeto.value.length != 10)
  {
  	erro.innerHTML=erro.innerHTML +  "O formato da data está inválido! Exemplo: dd/mm/aaaa<br>";	
	vObjeto.focus();	
	return false;  
  }  
  quociente = (eval(ano) % 4);  
  if (quociente == 0)
  {
  	biss = true;
  }  
  else
  {
  	biss = false;
  }  
  if (mes < 1 || mes > 12)
  {
  	erro.innerHTML=erro.innerHTML +  "O mês da data é inválido<br>";	
	return(false);
  }  
  if (dia < 1 || dia > 31) 
  {
  	erro.innerHTML=erro.innerHTML +  "O dia da data é inválido<br>";	
	return(false);  
  }
  if (ano < 1950)
  {	
  	erro.innerHTML=erro.innerHTML +  "Ano menor que 1950<br>";	
	vObjeto.focus();	
	return(false);  
  }
  if (mes == 2)
  {   
  	if (dia == 29)
	{	
		if (biss == false)
		{
			erro.innerHTML=erro.innerHTML +  "O dia é inválido pois o ano não é bissexto<br>";
			return(false);		
		}  
	 }
	 if (dia >= 30)   
	 {
		erro.innerHTML=erro.innerHTML +  "O dia é inválido para o mês de Fevereiro<br>";		
		return(false);
	 }  
  }  
  if (dia == 31)  
  {	
  	if (mes == 2)	
	{
		erro.innerHTML=erro.innerHTML +  "O dia é inválido para o mês de Fevereiro<br>";		
		return(false);
	}	
	if (mes == 4)	
	{
		erro.innerHTML=erro.innerHTML +  "O dia é inválido para o mês de Abril<br>";
		return(false);	
	}
	if (mes == 6)
	{		
			erro.innerHTML=erro.innerHTML +  "O dia é inválido para o mês de Junho<br>";
		    return(false);	
	}	
	if (mes == 9)
	{
		erro.innerHTML=erro.innerHTML +  "O dia é inválido para o mês de Setembro<br>";		
		return(false);	
	}	
	if (mes == 11)	
	{
		erro.innerHTML=erro.innerHTML +  "O dia é inválido para o mês de Novembro<br>";
		return(false);	
	} 
  }
  if( vDataDif == "1" )
  {
	if(( ano <= vAno ) && ( mes < vMes ) ||(( ano <= vAno ) && ( mes <= vMes ) && ( dia < vDia )) || (( ano <= vAno ) && ( mes < vMes ) && ( dia <= vDia )) )
	{
		erro.innerHTML=erro.innerHTML +  "A data não pode ser inferior a data atual.<br>";
		return(false);	
	}		  
  }
  return(true);
 }
 
function validarEmail(valor, descricao) {
  if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(valor)){
    return (true)
  } else {
    erro.innerHTML=erro.innerHTML +  descricao + " não é um endereço válido.<br>";
    return (false);
  }
}
