// Estas funções são usadas pelas pesquisas de Imagens de 1ª, 2ª e 3ª, datas de distribuição
// quer do portal normal quer do portal acessivel
// Evoca funções dos ficheiros comum.js

// Existe uma idêntica em comumpb.js
function validaNum(nCampo)
{
	limpaEspacos(nCampo);
	var campo = document.getElementById(nCampo);
	if (campo.value=='') return(true);

	if (!soNumeros(campo.value)) {
		alert("Por favor, verifique o número introduzido.\nEste campo é do tipo numérico!")
		return(false);
	}
	return(true);
}
// Existe uma idêntica em comumpb.js
function validaAno(form, nCampo, anoInicio, anoHoje)
{
	var campo = document.getElementById(nCampo);
	limpaEspacos(nCampo);
	if (campo.value=='') return(true);

	var ano=campo.value;
	if (ano.length!=4) {
		alert("Por favor, verifique o ano introduzido.\nTem de introduzir o ano com 4 d&iacute;gitos!");
		return(false);
	}
	if (!soNumeros(ano)) {
		alert("Por favor, verifique o ano introduzido.\nO campo ano é do tipo numérico!")
		return(false);
	}
	if (ano>anoHoje || ano<anoInicio) {
		alert("Por favor, verifique o ano introduzido.\nSó pode pesquisar entre " + anoInicio + " e " + anoHoje + "!")
		return(false);
	}
	return(true);
}
// Existe uma idêntica em comumpb.js
function validaData(nCampo, dataInicio, dataHoje)
{ // Funcão para verificar os formatos das datas e formatá-las aaaa-mm-dd
	var campo = document.getElementById(nCampo);
	limpaEspacos(nCampo);
	if (campo.value=='') return(true);

	var dataValue=campo.value;
	// transforma todas as barras em h&iacute;phen
	while(dataValue.indexOf("/")>=0)
		dataValue=dataValue.substring(0,dataValue.indexOf("/")) + "-" + dataValue.substring(dataValue.indexOf("/")+1,dataValue.lenght)
	if (dataValue.indexOf("-")!=4)
	{ // Verifica se nos primeiros 4 caracteres existe algum h&iacute;phen
		alert("Por favor, verifique a data introduzida.\nA data deve ser introduzida com o formato aaaa-mm-dd!")
		return(false);
	}
	//Transforma o mês e o dia no formato mm e dd
	if (dataValue.length==9 && dataValue.charAt(6)=="-" )
		dataValue=left(dataValue,5) + "0" + dataValue.substr(5,4);
	else if (dataValue.length==9 && dataValue.charAt(7)=="-")
		dataValue=left(dataValue,8) + "0" + dataValue.charAt(8);
	else if (dataValue.length==8 && dataValue.charAt(6)=="-")
		dataValue=left(dataValue,5) + "0" + dataValue.substr(5,2) + "0" + dataValue.charAt(7);
	// Verificação do ano, mês e dia
	var ano=left(dataValue,4);
	var mesValue=dataValue.substr(5,2);
	var diaValue=dataValue.substr(8,2);
	if (!soNumeros(ano + mesValue + diaValue))
	{ // Verifica se o ano, o mês e o dia contêm apenas algarismos
		alert("Por favor, verifique a data introduzida.\nA data deve ser introduzida com o formato aaaa-mm-dd!")
		return(false);
	}
	// Aplica a formatação correcta ao valor introduzido no campo
	campo.value=dataValue;
	if (mesValue<1 || mesValue>12 || diaValue<1 || diaValue>31)
	{ // verifica se o mês está entre 1 e 12 e se o dia está entre 1 e 31
		alert("Por favor, verifique a data introduzida.\nA data introduzida não é válida!")
		return(false);
	}
	if (mesValue==2)
	{ // Verificação do mês de fevereiro
		var anoBissexto=false;
		if (ano%4==0 || ano%100==0 || ano%400==0) anoBissexto=true;
		if (diaValue>29 || (!anoBissexto && diaValue>28)) {
			alert("Por favor, verifique a data introduzida.\nA data introduzida não é válida!")
			return(false);
		}
	}
	else
	{ // Verificação dos restantes meses
		if (diaValue>30 && (mesValue=="04" || mesValue=="06" || mesValue=="09" || mesValue=="11")) {
			alert("Por favor, verifique a data introduzida.\nA data introduzida não é válida!")
			return(false);
		}
	}
	if(dataHoje<dataValue || dataValue<dataInicio)
	{ // verifica se o intervalo de pesquisa está dentro dos limites autorizados
		alert("Por favor, verifique a data introduzida\nSó pode pesquisar de " + dataInicio + " até " + dataHoje + "!");
		return(false);
	}
	return(true);
}
// Compara os anos nos vários campos do formulário
function checkAnos(form)
{
	if (document.getElementById('v03').value>0 && document.getElementById('v05').value!='' && document.getElementById('v03').value!=left(document.getElementById('v05').value,4))
	{ // Verifica se o ano do Diário é coerente com a data indicada
			alert("Por favor, verifique a sua pesquisa.\nO ano do Diário não é coerente com a data indicada!");
			return(false);
	}
	return(true);
}
function testesCampo(form, nCampo, dataInicio, dataHoje)
{
	var campo = document.getElementById(nCampo);
	if (nCampo=='v02') {
		if (campo.value.indexOf("-")<0)
			if (!validaNum(nCampo)) return(false);
	}
	if (nCampo=='v03')
		if (validaAno(form,nCampo,left(dataInicio,4),left(dataHoje,4))) return(checkAnos(form));
	if (nCampo=='v05')
		if (validaData(nCampo,dataInicio,dataHoje)) return(checkAnos(form));
	return(true);
}
function validaForm(form, dataInicio, dataHoje)
{ // Faz a validação da form antes do submit

	if (document.getElementById('v02').value=='' && document.getElementById('v03').value=='' && document.getElementById('v05').value=='') {
		alert("Tem de indicar o número e o ano do Diário da República ou a sua data de publicação!");
		return(false);
	}
	if (document.getElementById('v03').value!='' && document.getElementById('v02').value=='') {
		alert("Tem de indicar o número do Diário da República!");
		return(false);
	}
	if (document.getElementById('v02').value!='' && document.getElementById('v03').value=='') {
		alert("Tem de indicar o ano do Diário da República!");
		return(false);
	}
	if (!validaData('v05',dataInicio,dataHoje)) return(false);
	if (!validaAno(form,'v03',left(dataInicio,4),left(dataHoje,4))) return(false);
	if (!checkAnos(form)) return(false);
	//if (!validaNum('v02')) return(false);
	if (!validaNum('v04')) return(false);
	return(true);
}