// #################################
// ##### VALIDAÇÃO COM NÚMEROS #####
// #################################
function digitaNumero()
{
// 48-57 - "número de 0 à 9"
	var Tecla = window.event.keyCode;
	//alert(Tecla);
	event.cancelBubble = true;
	if(Tecla > 47 && Tecla < 58)
		event.returnValue = true;
	else
		event.returnValue = false;
}

function digitaFone()
{
// 48-57 - "número de 0 à 9"
// 45 - "-" (hífem)
// 40 - "("
// 41 - ")"
	var Tecla = window.event.keyCode;
	//alert(Tecla);
	event.cancelBubble = true;
	if(Tecla > 47 && Tecla < 58 || Tecla == 45 || Tecla == 40 || Tecla == 41)
		event.returnValue = true;
	else
		event.returnValue = false;
}

function digitaHora()
{
// 48-57 - "número de 0 à 9"
// 58 - ":"
	var Tecla = window.event.keyCode;
	//alert(Tecla);
	event.cancelBubble = true;
	if(Tecla > 47 && Tecla < 59)
		event.returnValue = true;
	else
		event.returnValue = false;
}

function digitaData()
{
// 48-57 - "número de 0 à 9"
// 47 - "/"
	var Tecla = window.event.keyCode;
	//alert(Tecla);
	event.cancelBubble = true;
	if(Tecla > 46 && Tecla < 58)
		event.returnValue = true;
	else
		event.returnValue = false;
}

// #############################################
// ##### VALIDAÇÃO DE CAMPOS DO FORMULÁRIO #####
// #############################################

function ValidaVazio(f,campo,txt) {
	//Valida Título
	if ((campo.value=="") || (campo.value.length==0) || (campo.value=="Null")) {
		alert('Você esqueceu de preencher o campo '+txt);
		campo.focus();
		return false;
	} else return true;
}

function ValidaMax(f,campo,txt,limite) {
	//Valida Título
	if (campo.value.length > limite) {
		alert('Você excedeu o tamanho do campo '+txt);
		campo.focus();
		return false;
	} else return true;
}

function ValidaMin(f,campo,txt,limite) {
	//Valida Título
	if (campo.value.length < limite) {
		alert('Você não preencheu o mínimo necessário para o campo '+txt);
		campo.focus();
		return false;
	} else return true;
}


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;
		}
	}
}

function ValidaCheck(campo, mensagem){
	var conta = 0;
	if (typeof(campo.length)!="undefined"){
		for (var i=0; i<campo.length; i++) {
			if (campo[i].checked) {
				if (campo[i].value != '') {conta++}
			}
		}
	}else{
		if (campo.checked) {conta++;}
	}
	if (conta == 0) {
		alert(mensagem);
		return false;		
	} else {
		return true;
	}
}

// #############################
// ##### 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;
}

//Valida CPF
function isCPF(st) {
if (st == "")
return (false);
l = st.length;
//aleterado para se usuário não digitar os zeros na frente do CPF, completar sozinho
if ((l == 9) || (l == 8))
{
for (i = l ; i < 10; i++)
{
st = '0' + st
}
}
l = st.length;
st2 = "";
for (i = 0; i < l; i++) {
caracter = st.substring(i,i+1);
if ((caracter >= '0') && (caracter <= '9'));
st2 = st2 + caracter;
}
if ((st2.length > 11) || (st2.length < 10))
return (false);
if (st2.length==10)
st2 = '0' + st2;
digito1 = st2.substring(9,10);
digito2 = st2.substring(10,11);
digito1 = parseInt(digito1,10);
 digito2 = parseInt(digito2,10);
 sum = 0; mul = 10;
 for (i = 0; i < 9 ; i++) {
 digit = st2.substring(i,i+1);
 tproduct = parseInt(digit ,10) * mul;
 sum += tproduct;
 mul--;
 }
 dig1 = ( sum % 11 );
 if ( dig1==0 || dig1==1 )
 dig1=0;
 else
 dig1 = 11 - dig1;
 if (dig1!=digito1)
 return (false);
 sum = 0;
 mul = 11;
 for (i = 0; i < 10 ; i++) {
 digit = st2.substring(i,i+1);
 tproduct = parseInt(digit ,10)*mul;
 sum += tproduct;
 mul--;
 }
 dig2 = (sum % 11);
 if ( dig2==0 || dig2==1 )
 dig2=0;
 else
 dig2 = 11 - dig2;
 if (dig2 != digito2)
 return (false);
 return (true);
 }
 
 
 /************************************************
* function ValidaHora
* Verifica se a hora foi digitada corretamente
* Input: Hora a ser verificado
************************************************/
function ValidaHora(campo, txt) {
	var timeStr = campo.value;
	var timePat = /^(\d{1,2}):(\d{2})(:(\d{2}))?(\s?(AM|am|PM|pm))?$/;
	var matchArray = timeStr.match(timePat);
	if (matchArray == null) {
		alert("O campo " + txt + " está incorreto. O formato deve ser hh:mm");
		campo.focus();
		return false;
	}

	hour = matchArray[1];
	minute = matchArray[2];
	second = matchArray[4];
	ampm = matchArray[6];

	if (second=="") { second = null; }
	if (ampm=="") { ampm = null; }

	if (hour < 0  || hour > 23) {
		alert("A hora do campo " + txt + " deve estar entre 0 e 23.");
		campo.focus();
		return false;
	}
	if (minute<0 || minute > 59) {
		alert ("Os minutos do campo " + txt + " devem estar entre 0 e 59.");
		campo.focus();
		return false;
	}
	return true;
}

/****************************************************************************
* function ValidaIntervalo
* Verifica se o horário final é maior que o horário inicial digitado
* Input: Hora inicio , Hoa Fim
****************************************************************************/
function ValidaIntervalo(campo1,campo2){
	HoraIni = campo1.value;
	HoraFim = campo2.value;
    if (HoraIni.length == 5) {
	    if (parseInt(HoraIni.substring(0,2)) < 10)
		   HoraIni = HoraIni.substring(1,2) + HoraIni.substring(3);
    }

    if (HoraFim.length == 5) {
	    if (parseInt(HoraFim.substring(0,2)) < 10)
		   HoraFim = HoraFim.substring(1,2) + HoraFim.substring(3);
    }

	var intHoraIni = parseInt(HoraIni.replace(":",""));
	var intHoraFim = parseInt(HoraFim.replace(":",""));
	if (intHoraFim <= intHoraIni) {
		alert("O horário final deve ser maior que o horário inicial.")
		campo2.focus();
		return false;
	}
	else 
		return true;
}