// #############################################
// ##### VALIDAÇÃO DE CAMPOS DO FORMULÁRIO #####
// #############################################

/* ########## Função para verificação de radiobox */
function validaRadio(elemento, texto) {
	var marcado = false;
	for (i = 0; i < elemento.length; i++){
		if (elemento[i].checked == 1){
			marcado = true;
			break;
		}
	}
	if (!marcado){
		alert(texto);
		elemento[0].focus();
		return false;
	}else{
		return true;
	}
}


function ValidaNumero(campo,txt) {
	//Valida campos inteiros
	if (campo.value=="") {
		alert('Você esqueceu de preencher o campo '+txt);
		//alert('Você esqueceu de preencher o campo '+campo.name);
		campo.focus();
		return false;
	} else {
		if (!isnumer(campo.value)){
			alert('Informe um valor válido para o campo'+txt);
			campo.focus();
			return false;
		} else {
			return true;
		}
	}
}

function ValidaVazio(campo,txt) {
	//Valida Título
	if ((campo.value=="") || (campo.value.length==0) || (campo.value=="Null")) {
		alert('Você esqueceu de preencher o campo '+txt);
		//alert('Você esqueceu de preencher o campo '+campo.name);
		campo.focus();
		return false;
	} else return true;
}

//Valida Combo box
function ValidaComboBox(campo,txt) {
	if ((campo[campo.selectedIndex].value == "") || (campo[campo.selectedIndex].value == "0"))  {
		alert('Você esqueceu de selecionar o campo '+txt);
			campo.focus();
		return false;	
		} else return true;
}

function ValidaMax(campo,txt,limite) {
	//Valida Título
	if (campo.value.length > limite) {
		alert('Você excedeu o tamanho do campo '+txt);
		//alert('Você excedeu o tamanho do campo '+campo.name);
		campo.focus();
		return false;
	} else return true;
}

/* ####### Função para verificação de selects em formulários */
function ValidaSelect(elemento, texto, tipo) {
// o Tipo define o que é esperado
	if (elemento.value == "0"){
		alert("Informe "+ texto);
		elemento.focus();
		return false;
	}
  return true;
}


function isnumer(numero){
//Função para verificar se o um valor digitado é número ou não
	var i;
	var letra = 0; //integer para verificar quantas letras achou
	for (i = 0; i < numero.length; i++) {   
	        var ch = numero.charAt(i);
	        if ((ch < "0" || ch > "9")) {
				letra = letra + 1;
	        }
		}
		if (letra == 0 ) {
			return(true);
		}else {
			return(false);
		}
}



function testaEmail(txtInput) {
	email = txtInput.value;
	if (email == "") {
		return true;
	} else {
  		if ((email.indexOf('@') == email.lastIndexOf('@')) &&	// só tem um @
  			(email.indexOf('@') > 0) &&							// existe @ e não é prim
  			(email.charAt(email.length-1) != '@') &&			// @ não é o último
  			(email.indexOf(' ') == -1) &&						// não existe espaços
  			(email.lastIndexOf('.') > email.indexOf('@')) &&	// existe . após @
  			(email.charAt(email.indexOf('@') + 1) != '.') &&	// sem . logo após @
  			(email.charAt(email.indexOf('@') - 1) != '.') &&	// sem . logo antes @
  			(email.indexOf('.') > 0) &&							// existe . e não é prim
			(email.charAt(email.length-1) != '.')) {			// . não é o último
				
			// verifica se não há pontos seguidos
			sub = email.substring(email.indexOf('.')+1, email.length);
			while (sub.indexOf('.') != -1) {
				if (sub.charAt(0) == '.') {
					alert("Formato de e-mail incorreto!");
					txtInput.focus();
					return false;
				} else {
					sub = sub.substring(sub.indexOf('.')+1, sub.length);
				}
			}
			return true;
			
		} else {
			alert("Formato de e-mail incorreto!");
			txtInput.focus();
			return false;
		}
	}
}

//Testa se pelo menos um checkbox ou radio foi selecionado
function testaCheck(campo, mensagem){
	if (typeof(campo.length)!="undefined"){
		for (var i=0; i<campo.length; i++) {
			if (campo[i].checked) {
				if (campo[i].value != '') {return true;}
			}
		}
	}else{
		if (campo.checked) {return true;}
	}
	alert(mensagem);
	return false;		
}

function removeLetraEspaco(texto)  { 
	while (texto.indexOf(" ") > -1) {
		texto = texto.replace(" ","");
	}
	return texto;
} 

// #############################
// ##### VALIDAÇÃO DE DATA #####
// #############################
var diasMes = new Array(12);
diasMes[1] = 31;
diasMes[2] = 29;
diasMes[3] = 31;
diasMes[4] = 30;
diasMes[5] = 31;
diasMes[6] = 30;
diasMes[7] = 31;
diasMes[8] = 31;
diasMes[9] = 30;
diasMes[10] = 31;
diasMes[11] = 30;
diasMes[12] = 31;

function diasFevereiro (ano) {  
    return ( ((ano % 4 == 0) && ( (!(ano % 100 == 0)) || (ano % 400 == 0) ) ) ? 29 : 28 );
}

function dataValida(data) {
  var i;  
  if ((barra1 = data.value.indexOf('/')) < 1) {
	data.focus();
	alert('Data inválida');
  	return false;
  }
  if ((barra2 = data.value.substring(barra1+1, data.value.length).indexOf('/')) < 1) {
	data.focus();
	alert('Data inválida');
  	return false;
  }
  if (barra2+barra1+1 != data.value.lastIndexOf('/')) {
	data.focus();
	alert('Data inválida');
  	return false;
  }
  dia = data.value.substring(0,barra1);
  mes = data.value.substring(barra1+1, barra2+barra1+1);
  ano = data.value.substring(barra2+barra1+2, data.value.length);
  var dataTemp = dia + mes + ano;
  for (i = 0; i < dataTemp.length; i++) {   
        var ch = dataTemp.charAt(i);
        if ((ch < "0" || ch > "9")) {
			data.focus();
			alert('Data inválida');
		  	return false;
		}
  }
  if ((mes == 2) && (dia > diasFevereiro(ano))) {
	data.focus();
	alert('Data inválida');
  	return false;
  }
  if ((dia>diasMes[parseFloat(mes)]) || (dia<1) || (mes<1) || (mes>12) || (ano<1900) || (ano>2078)) {
	data.focus();
	alert('Data inválida');
  	return false;
  }
  return true;
}

function testaCPF(cpf, cpf2){
	valorTotal = 0;
	digitos = "";
	for(i = 0; i < 9; i++){
		valorTotal += parseInt(cpf.substring(i, i+1))*(10-i);
	}	
	valorTotal = valorTotal%11;
	if(valorTotal < 2)
		valorTotal = 0;
	else
		valorTotal = 11 - valorTotal;
	digitos += valorTotal.toString();
	valorTotal = 0;
	cpfInc = cpf+digitos;
	for(i = 0; i < 10; i++){
		valorTotal += parseInt(cpfInc.substring(i, i+1))*(11-i);
	}	
	valorTotal = valorTotal%11;
	if(valorTotal < 2)
		valorTotal = 0;
	else
		valorTotal = 11 - valorTotal;

	digitos += valorTotal.toString();
	if(digitos == cpf2)
		return true;
	else
		return false;
}

function digitaHora()
{
// 48-57 - "número de 0 à 9"
// 58 - ":"
// 13 - <ENTER>
	var Tecla = window.event.keyCode;
	//alert(Tecla);
	event.cancelBubble = true;
	if(Tecla > 47 && Tecla < 59 || Tecla == 13)
		event.returnValue = true;
	else
		event.returnValue = false;
}

function digitaData()
{
// 48-57 - "número de 0 à 9"
// 47 - "/"
// 13 - <ENTER>
	var Tecla = window.event.keyCode;
	//alert(Tecla);
	event.cancelBubble = true;
	if(Tecla > 46 && Tecla < 58 || Tecla == 13)
		event.returnValue = true;
	else
		event.returnValue = false;
}

function digitaNumero()
{
// 48-57 - "número de 0 à 9"
// 13 - <ENTER>
	var Tecla = window.event.keyCode;
	//alert(Tecla);
	event.cancelBubble = true;
	if(Tecla > 47 && Tecla < 58 || Tecla == 13)
		event.returnValue = true;
	else
		event.returnValue = false;
}

function digitaCPF() {
// 48-57 - "número de 0 à 9"
// 45 - "-" (hífem)
// 46 - "." (ponto)
// 13 - <ENTER>
	var Tecla = window.event.keyCode;
	event.cancelBubble = true;
	if(Tecla > 47 && Tecla < 58 || Tecla == 45 || Tecla == 46 || Tecla == 13)
		event.returnValue = true;
	else
		event.returnValue = false;
}

function ValidaCPF(campo){
	if (campo.value.length != 14) {
		alert("CPF inválido!");
		campo.focus();
		return false;
	}
	if ( !isNumero(campo.value.charAt(0))	||
		!isNumero(campo.value.charAt(1))	||
		!isNumero(campo.value.charAt(2))	||
		campo.value.charAt(3) != "."		||
		!isNumero(campo.value.charAt(4))	||
		!isNumero(campo.value.charAt(5))	||
		!isNumero(campo.value.charAt(6))	||
		campo.value.charAt(7) != "."		||
		!isNumero(campo.value.charAt(8))	||
		!isNumero(campo.value.charAt(9))	||
		!isNumero(campo.value.charAt(10))	||
		campo.value.charAt(11) != "-"		||
		!isNumero(campo.value.charAt(12))	||
		!isNumero(campo.value.charAt(13))) {
		alert("CPF inválido!");
		campo.focus();
		return false;
	} else {
		return true;
	}
}

function isNumero(numero){
//Função para verificar se o um valor digitado é número ou não
	var i;
	var letra = 0; //integer para verificar quantas letras achou
	for (i = 0; i < numero.length; i++) {   
	        var ch = numero.charAt(i);
	        if ((ch < "0" || ch > "9")) {
				letra = letra + 1;
	        }
		}
		if (letra == 0 ) {
			return(true);
		}else {
			return(false);
		}
}

function validaTipoArquivo(objfile, extensions){
   var strfile = new String(objfile.value.toLowerCase());
   var arrext  = extensions.split(",");
   var test    = false;
	alert("Essa função deve ser acertada na linha debaixo, para pegar o extensão pelo . e não por 3 caracteres")
	strfile     = strfile.substr((strfile.length-3), 3);
   //alert(strfile)
   for (i=0;i<arrext.length;i++){
   	   //alert(arrext[i].length)
       if ( parseInt( strfile.search(arrext[i]) ) != -1){
         test = true;
		 //alert(parseInt( strfile.search(arrext[i]) ))
         break;
       }   
   }

   return test;
}



netscape = "";
ver = navigator.appVersion; len = ver.length;
for(iln = 0; iln < len; iln++) if (ver.charAt(iln) == "(") break;
netscape = (ver.charAt(iln+1).toUpperCase() != "C");

function FormataCampo(campo,mascara) { 
	var Texto,OldValue,j
	
	Texto = '';
	OldValue = campo.value;
	
	OldValue = RemoveMascara(OldValue);
	
	// Determina quando é Netscape ou Internet Explorer
	k = (netscape) ? DnEvents.which : window.event.keyCode;
				
	if (mascara.length == OldValue.length  ||  ((k < 48) || (k > 57)) ) {
		if (netscape) 
			DnEvents.which = 0 ;
		else
			window.event.keyCode = 0;
		return;	
	}
	
	campo.value = "";
	Texto = "";
	j = -1;
	
	for(var i=0; i < mascara.length;i++) {
			if (mascara.substr(i,1) != '#' &&
			   mascara.substr(i,1) != 'd' &&
			   mascara.substr(i,1) != 'M' &&
			   mascara.substr(i,1) != 'y' &&
			   Texto.length == mascara.substr(0,i).length ) {
					Texto = Texto + mascara.substr(i,1);
				}	
			else {
				j++;
				Texto = Texto + OldValue.substr(j,1);
			}
				
			
	}
	campo.value = Texto;

}

function RemoveMascara(Texto){
	var j,Car

	j = 0;
	//
	//Remove caracteres especiais da mascara
	//
	while (j < Texto.length) {
		Car = Texto.substr(j,1)
		if (Car >= 0 && Car <= 9) {
		   j++;
		}
		else {
			Texto = Texto.replace(Car, "" );
		}
	}
	return Texto;
}