//-------------------------------------------------------------------------------
//Função ValidaCampo(str, tipo, tamanho, indativo)
// Campos: Servir de referência para a construção de formulários de solicitação
//			form: nome do formulário
//			campo: valor do campo que se quer testar
//			tipo: tipo do dado do campo "str"
//			tamanho: quantidade maxima de caracteres aceitáveis
//			indativo: variavel que indica se o campo é obrigatório
//
// Data: 11/08/2000 16:34:46
// Ultima modificação: 21/08/2000 16:27
//-------------------------------------------------------------------------------


function ValidaCampo(theForm, campo, tipo, tamanho, indativo) {

// Testa excesso de caracteres
if (campo.value.length > tamanho) {
		alert("Caracteres demais para o campo \"" + campo.name + "\"");
		eval(theForm.name + "." + campo.name + ".focus();");
		return false;
}

// Testa se o número de caracteres é suficiente
if ((indativo == true)	 && (campo.value.length == 0)) {
		alert("Favor preencher o campo \"" + campo.name + "\"");
		eval(theForm.name + "." + campo.name + ".focus();");
		return false;
}

// Testa se o usuário entrou com algum dado para o campo atual
if (campo.value.length > 0) {

	switch(tipo) {
	
	case "data" :

		//define o padrão e compara
		var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;
		var matchArray = campo.value.match(datePat);

		//checagem básica
		if (matchArray == null) {
			alert("Data em formato inválido. \nPor favor, informe a data no formato dd/mm/yyyy");
			eval(theForm.name + "." + campo.name + ".focus();");
			return false;
		}

		// trata partes da expressão como sendo variáveis
		month = matchArray[3]; 
		day = matchArray[1];
		year = matchArray[4];

		// checa faixa de meses
		if (month < 1 || month > 12) { 
			alert("O mês deve ser um valor entre 1 e 12!");
			eval(theForm.name + "." + campo.name + ".focus();");
			return false;
		}

		// checa faixa de dias
		if (day < 1 || day > 31) {
			alert("O dia deve ser um valor entre 1 e 31!");
			eval(theForm.name + "." + campo.name + ".focus();");
			return false;
		}

		// checa qtde de dias num mês
		if ((month==4 || month==6 || month==9 || month==11) && day==31) {
			alert("O mês "+month+" não tem 31 dias!");
			eval(theForm.name + "." + campo.name + ".focus();");
			return false;
		}

		// checa se o ano é bissexto
		if (month == 2) { 
			var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
			if (	day>29 || (day==29 && !isleap)) {
				alert("Fevereiro " + year + " não tem " + day + " dias!");
				eval(theForm.name + "." + campo.name + ".focus();");
				return false;
			}
		}

		// checa se o ano é válido
		if (year < 1900 || year > 2100) {
			alert("O ano indicado é inválido!");
			eval(theForm.name + "." + campo.name + ".focus();");
			return false;
		}

		break;

		} // end switch

	}// end if
		return true;			
								
} // end function
function FormataData(Campo,teclapres) {
	var tecla = teclapres.keyCode;
	vr = Campo.value;
	vr = vr.replace( ".", "" );
	vr = vr.replace( "/", "" );
	vr = vr.replace( "/", "" );
	vr = vr.replace( "/", "" );
	tam = vr.length + 1;

	if ( tecla != 9 && tecla != 8 ){
		if ( tam > 2 && tam < 5 )
			Campo.value = vr.substr( 0, tam - 2  ) + '/' + vr.substr( tam - 2, tam );
		if ( tam >= 5 && tam <= 10 )
			Campo.value = vr.substr( 0, 2 ) + '/' + vr.substr( 2, 2 ) + '/' + vr.substr( 4, 4 ); 
	}
}// end function


function ClearAll () {

	history.go(0);
	return false;

}
