<!--
// chamada no submit: onSubmit="if(!validar(frm)){return false;};return validar_tipo(frm);"
// Funcao que aceita apenas valores inteiros
function valor_inteiro(e)
{
   if (document.all) // Internet Explorer
   		var tecla = event.keyCode;
   else if(document.layers) // Nestcape
		var tecla = e.which;
		if (tecla > 47 && tecla < 58) // numeros de 0 a 9
			return true;
		else
			{
				if (tecla != 8) // backspace
					event.keyCode = 0;
					//return false;
				else
					return true;
			}
} // fim funcao valor_inteiro(e)

//Funcao que retorna se a data está correta
function isDate(sdata)
{
  arraydata = sdata.split('/');
  day2 = arraydata[0];
  month2 = arraydata[1];
  year2 = arraydata[2]; 
  if((!day2)||(!month2)||(!year2)){
    return false;
    exit;
  }
  if((day2.length>2)||(month2.length>2)||(year2.length>4)){
    return false;
    exit;
  }
  while(day2.length<2){
    day2='0'+day2;
  }
  while(month2.length<2){
    month2='0'+month2;
  }
  if(year2.length!=4){
    return false;
    exit;
  }
  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}$/;
  if(! filter.test(inpDate)){
    return false;
    exit;  
  }
  filter=/01|02|03|04|05|06|07|08|09|10|11|12/;
  if(! filter.test(month2)){
    return false;
    exit;
  }
  var N = Number(year2);
  if( ( N%4==0 && N%100 !=0 ) || ( N%400==0 ) ){
    DayArray[1]=29;
  }
  for(var ctr=0; ctr<=11; ctr++){
    if (MonthArray[ctr]==month2){ 
      if (day2<= DayArray[ctr] && day2 >0 ){
        inpDate = day2 + '/' + month2 + '/' + year2;
        return true;
        exit;
      }
      else{
        return false;
        exit;
      }
    }
  }
} // fim funcao isDate

//Funcao que limpa os espaços em branco de uma string
function limparstring(s)
{
while (s.search(" ")!=-1){
s=s.replace(" ","");
}
return(s);
}// fim funcao limparstring(s)

//Funcao de validacao de campos obrigatorios
function validar(fr) {
//Define as variáveis que serão utilizadas nesta função
var a;
var s=new String;
var resp;
a=0;
//Limpa a região de mensagens de erro
//erro.innerHTML="";
resp=true;
//Faz um laço através dos Inputs contidos no FORM. (coleção Elements) 
for(a=0;a<fr.elements.length;a++)
{ 
//Verifica se o INPUT é obrigatório. Observe o acesso a um parâmetro criado por nós
if (fr.elements[a].obrigatorio=="1")
{
//Verifca se a caixa em questão é um INPUT ou uma COMBO
if(fr.elements[a].tagName!="SELECT"){
//Se for um INPUT faz a validação para INPUTs que consistem em ... 
s=fr.elements[a].value;
//Limpar a string e verificar se seu tamanho (depois de limpa) é 0. Se for, ela só tinha espaços em branco
s=limparstring(s);
if (s.length==0) {
//No caso da falta de campo obrigatório, exibe a mensagem de erro
//Observe a concatenação constante no objeto erro (garantindo a exibição da mensagem para várias caixas
// e a utilização do parâmetro Descricao, definido por nós.
//erro.innerHTML=erro.innerHTML + fr.elements[a].Descricao + " &eacute; informa&ccedil;&atilde;o obrigat&oacute;ria<br>"
alert(fr.elements[a].descricao + ' obrigatório.')
fr.elements[a].focus();
resp=false;
return false;
}
} else
{ 
//Caso a caixa seja uma COMBO seu valor é comparado a -99 para saber se está ou não preenchida
// A exibição da mensagem de erro é igual
if (fr.elements[a].item(fr.elements[a].selectedIndex).value==-99) {
//erro.innerHTML=erro.innerHTML + fr.elements[a].Descricao + " &eacute; informa&ccedil;&atilde;o obrigat&oacute;ria<br>"
alert(fr.elements[a].descricao + ' obrigatório.')
fr.elements[a].focus();
resp=false;
return false;
}
}
}
} 
// Se algum erro ocorreu, resp contém false e o formulário não será enviado
return(resp);
}

// Função de validação por tipo de dados
// Tipos: IN - inteiro
// F - float
// MAIL - email
// CP - cpf
// NOM - nome e sobrenome
// Proximos tipos: CAR - cartao de credito, CN - cnpj, DA - data, NU - qtde de caracteres no campo
// L - apenas letras
function validar_tipo(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=="IN")
		{
			// Se o tipo for inteiro, faz a validação de valores
			s=fr.elements[a].value;
			s=limparstring(s);
			if (fr.elements[a].obrigatorio=="1" || 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>";
					alert(fr.elements[a].descricao +' deve conter um número inteiro.');
					fr.elements[a].focus();
					fr.elements[a].select();
					return false;
				}
			}
		}
		if (fr.elements[a].tipo=="F") {
			//Se o tipo for Float faz a validação
			s=fr.elements[a].value;
			s=limparstring(s);
			if (fr.elements[a].obrigatorio=="1" || 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>";
					alert(fr.elements[a].descricao + ' deve conter um número real positivo.');
					fr.elements[a].focus();
					fr.elements[a].select();
					return false;
				}
			}
		}
		if (fr.elements[a].tipo=="DA") {
			//Se o tipo for Float faz a validação
			s=fr.elements[a].value;
			s=limparstring(s);
			if (fr.elements[a].obrigatorio=="1" || s.length>0) {
				// A validação só é feita se o campo for obrigatório OU se estiver preenchido
				temp=fr.elements[a].value;
				// verifica se uma data válida
				if(!isDate(temp)) {
					alert(fr.elements[a].descricao + ' data inválida.'); 
					fr.elements[a].focus();
					fr.elements[a].select();
					return false;
				}
			}
		}
		if (fr.elements[a].tipo=="NOM") {
			s=fr.elements[a].value;
			s=limparstring(s);
			if (fr.elements[a].obrigatorio=="1" || s.length>0) {
				// A validação só é feita se o campo for obrigatório OU se estiver preenchido
				temp=fr.elements[a].value;
				// Verifica a existencia de espaço para saber se nome e sobrenome foram preenchidos
				if (temp.indexOf(" ")==-1)
				{
					resp=false;
					//erro.innerHTML=erro.innerHTML + fr.elements[a].descricao + " deve conter nome e sobrenome<br>";
					alert(fr.elements[a].descricao + ' deve conter nome e sobrenome.');
					fr.elements[a].focus();
					fr.elements[a].select();
					return false;
				}
			}
		}
		if (fr.elements[a].tipo=="MAIL") {
			s=fr.elements[a].value;
			s=limparstring(s);
			if (fr.elements[a].obrigatorio=="1" || s.length>0) {
			// A validação só é feita se o campo for obrigatório OU se estiver preenchido
			temp=fr.elements[a].value;
			// Verifica a existência de @ e . para validar o e-mail
				if (temp.indexOf("@")==-1 || temp.indexOf(".")==-1)
				{
				resp=false;
					//erro.innerHTML=erro.innerHTML + fr.elements[a].descricao + " deve conter um e-mail válido<br>";
					alert(fr.elements[a].descricao + ' deve conter um e-mail válido.');
					fr.elements[a].focus();
					fr.elements[a].select();
					return false;
				}
			}
		}
		// Verifica o campo obrigatório para uma COMBO BOX
		if(fr.elements[a].tagName=="SELECT")
		{			
			//Caso a caixa seja uma COMBO seu valor é comparado a -99 para saber se está ou não preenchida
			// A exibição da mensagem de erro é igual
			if (fr.elements[a].item(fr.elements[a].selectedIndex).value==-99) {
				//erro.innerHTML=erro.innerHTML + fr.elements[a].descricao + " &eacute; informa&ccedil;&atilde;o obrigat&oacute;ria<br>"
				resp=false;
				alert(fr.elements[a].descricao + ' selecione um valor válido.');
				fr.elements[a].focus();
				//fr.elements[a].select();
				return false;				
				alert('passou pelo return');
			}
		}

		// valida o CPF
		if (fr.elements[a].tipo=="CP") {
			s=fr.elements[a].value;
			s=limparstring(s);
			if (fr.elements[a].obrigatorio=="1" || s.length>0) {
				// A validação só é feita se o campo for obrigatório OU se estiver preenchido
				temp=fr.elements[a].value;
				var i;
				s = temp;
				var c = s.substr(0,9);
				var dv = s.substr(9,2);
				var d1 = 0;

				for (i = 0; i < 9; i++)
				{
					d1 += c.charAt(i)*(10-i);
				}
				if (d1 == 0){
					alert(fr.elements[a].descricao+' inválido.');
					fr.elements[a].focus();
					fr.elements[a].select();
					return false;
				}

				d1 = 11 - (d1 % 11);
				if (d1 > 9) d1 = 0;
				if (dv.charAt(0) != d1)
				{
                    alert(fr.elements[a].descricao+' inválido.');
					fr.elements[a].focus();
					fr.elements[a].select();
					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(fr.elements[a].descricao+' inválido.');
					fr.elements[a].focus();
					fr.elements[a].select();				}
					return false;
			    }
		} // fim validacao tipo CP


	} // fim do for
	//Se algo foi inválido, resp contém false
	return(resp);
}// fim de validar_tipo(fr)
-->
