/**
 * @author Agência Interagir - Departamento de Programação
 */

//Todas as funções de validação retornam boolean

/*
 * 
 * Função que substitui todas as ocorrências de um caracter em uma string
 * Forma de chamar:
 * replaceAll(string,caractere_a_procurar,caractere_novo)
 * Retorna uma string
 * 
 */
function replaceAll(string, token, newtoken) {
	string += "";
	
	while (string.indexOf(token) != -1) {
 		string = string.replace(token, newtoken);
	}
	
	return string;
}

/*
 * 
 * Função para validar uma data nos padrões brasileiros
 * Forma de chamar: 
 * eData(dia, mes, ano)
 * Lembrando que os 3 parâmetros devem ser numéricos e inteiros
 * 
 */
function eData(dia, mes, ano){
	dia = "" + dia;
	mes = "" + mes;
	ano = "" + ano;
	
	if(isNaN(dia) || isNaN(mes) || isNaN(ano))
		return false;
	
	if(ano.length != 4 || mes.length == 0 || mes.length > 2 || mes > 12 || mes < 1 || dia.length == 0 || dia.length > 2)
		return false;
	
	if(mes == 1 || mes == 3 || mes == 5 || mes == 7 || mes == 8 || mes == 10 || mes == 12)
		if(dia > 31 || dia < 1)
			return false;
	else
		if(mes == 4 || mes == 6 || mes == 9 || mes == 11)
			if(dia > 30 || dia < 1)
				return false;
		else
			if(dia > (ano%4==0?29:28))
				return false;
	
	return true;
}

/*
 * 
 * Função que valida se uma string está vazia
 * Forma de chamar:
 * eVazio(string)
 * 
 */
function eVazio(str){
	return str == "";
}

/*
 * 
 * Função que valida uma string como hora
 * Formatos aceitos: HH:mm, H:mm, HH:mm:ss e H:mm:ss
 * Forma de chamar:
 * eHora(string)
 * 
 */
function eHora(str){
	var bool = true;
	var i;
	
	if(eVazio(str))
		return false;
	
	if(isNaN(replaceAll(str, ":", "")))
		return false;
	var tmp;	
	tmp  = str.split(":");
	
	if(tmp.length < 2 ||tmp.length > 3)
		return false;
		
	for(i = 0; i < tmp.length; i++){
		
		if(tmp[i].length == 1 || tmp[i].length == 2)
			if(i==0)
				if(eval(tmp[i]) > 23)
					bool = false;
			else
				if(eval(tmp[i]) > 59)
					bool = false;
		else
			bool = false;
	
	}
	return bool;
}

/*
 * 
 * Função que valida como número os caracteres que formam a hora, exceto o ":"
 * Forma de chamar:
 * eHoraVazia(string)
 * 
 */
function eHoraVazia(str){
	return !isNaN(replaceAll(str, ":", ""));
}
