// JavaScript Document
<!-- //requires de javaScript/formValidationAux.js

/*//DEBUG INFO - para colocar na função validar a seguir a var camposObrigatorios 
var str = new String();
	for (i = 0; i<  form.elements.length; i++)
	str = str  + ' \r\n[' + i + ']' + form.elements[i].name + '=' + form.elements[i].required;
	alert (str);
 */
function validar(form,lang){
	
	var contaErros = 0;
	var today = new Date();
	
	var dd = today.getDay().toString();
	var mm = today.getMonth().toString();
	var yyyy = today.getYear().toString();	
		
	var minDateNasc = dd + '/' + mm + '/' + (yyyy - 18 - 88);
	var maxDateNasc = dd + '/' + mm + '/' + (yyyy - 18);
	
	var minDataIni = dd + '/' + mm + '/' + yyyy;
	var maxDataIni = dd + '/' + mm  + '/' + (yyyy  - (-2));
	var maxDataFim = dd + '/' + (mm - (-2)) + '/' + (yyyy - (-2));
	
	
	if (form.btn_cancelar_pressed.value == 1)
		return true;

	//certifica q esta função só é chamada uma vez
	if (!form.elements[0].required)
		setRequired(form);

		
	//despoleta(mostra) as mensagens de erro no ecrã
	contaErros = setErrorAlert(form) + 
				 hasMinLenght(form.nome, 3) + 0;
				 (setErroConditional(!isDate(form.dataNasc.value, lang),form.dataNasc,'error_msgDataNasc') ||
				 setErroConditional(!isDateBetween(form.dataNasc.value, minDateNasc, maxDateNasc, lang),form.dataNasc,'error_msgDataNasc')) + 
				 (setErrorIsInteger (form.bi, 'error_msgBi') || setErrorMinMax (9999999,99999999, form.bi, 'error_msgBi')) + 
				 hasMinLenght(form.morada, 10) +	
  				 setErrorAtLeastOne(form.telefone, form.telemovel, 'error_msgTelefoneOrTelemovel') + 
				 setErroConditional(!isValidPhone(form.telefone.value), form.telefone, 'error_msgTelefone') + 
				 setErroConditional(!isValidPhone(form.telemovel.value), form.telemovel, 'error_msgTelemovel') + 
				 setErrorEmail(form.email, 'error_msgEmail') + 
 				 setErroConditional(!isValidPhone(form.telefone.value), form.telefone, 'error_msgTelefone') + 
				 setErrorJustOne(form.adultos, form.grupos, 'error_msgAdultosGrupos') + 
				 (setErroConditional(!isDate(form.dataIni.value, lang), form.dataIni, 'error_msgDataIni') || 
				 setErroConditional(!isDateBetween(form.dataIni.value, minDataIni, maxDataIni, lang),form.dataIni,'error_msgDataIni')) + 
				 (setErroConditional(!isDate(form.dataFim.value,lang),form.dataFim,'error_msgDataFim') || 
				 setErroConditional(!isDateBetween(form.dataFim.value, form.dataIni.value, maxDataFim, lang),form.dataFim,'error_msgDataFim'));

	//certifica que desactiva a visualizacao das mensagens de erro lançadas pelo php, uma vez q o javaScript está activo.
	if (document.getElementById("error_msgPhp").style.display == 'block') 
		document.getElementById("error_msgPhp").style.display ='none'; 
	
	//mostra a mensagem 'Preencha os campos em falta caso existam erros' 
	setError_msgCondicional(contaErros, 'error_msgMissingFields');
	//setErrorAlertFieldConditional(contaErros, 'div_camposObrigatorios');

	return !contaErros;
}

/**
 * Inicia os campos obrigatórios e não obrigatórios do formulário
 */

function setRequired(form) {
	
	form.nome.required = 1;	
	form.dataNasc.required = 1;	
	form.bi.required = 1;	
	form.morada.required = 1;	
	form.pais.required = 1;	
	form.profissao.required = 1;
	form.telefone.required =  form.telemovel.value ? 0 : 1;
	form.telemovel.required = form.telefone.value ? 0 : 1;
	form.email.required = 1;
	form.adultos.required =  form.grupos.value ? 0 : 1;;
	form.criancas.required = 0;
	form.grupos.required =  form.adultos.value ? 0 : 1;;
	form.dataIni.required = 1;
	form.dataFim.required = 1;
	form.restaurante.required = 1;
	form.observacoes.required = 0;	
}
