// 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, anoI, anoF)
{ // valida o campo ano
	limpaEspacos(nCampo);
	var campo = document.getElementById(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>anoF || ano<anoI) {
		alert("Por favor, verifique o ano introduzido.\nSó pode pesquisar entre " + anoI + " e " + anoF + "!")
		return(false);
	}
	return(true);
}
// Existe uma idêntica em comumpb.js
function validaData(nCampo, dataI, dataF)
{ // Funcão para verificar os formatos das datas e formatá-las aaaa-mm-dd
	limpaEspacos(nCampo);
	var campo = document.getElementById(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(dataF<dataValue || dataValue<dataI)
	{ // verifica se o intervalo de pesquisa está dentro dos limites autorizados
		alert("Por favor, verifique a data introduzida\nSó pode pesquisar de " + dataI + " até " + dataF + "!");
		return(false);
	}
	return(true);
}
// Compara os anos nos vários campos do formulário
function checkAnos(form)
{
	if (form=='ima1s')
	{ // pesquisa de imagens de 1.ª Série
		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);
		}
	}
	else if (form=='ima2s')
	{ // pesquisa de imagens de 2.ª Série
		if (document.getElementById('v08').value>0 && document.getElementById('v05').value!='' && document.getElementById('v08').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 Apêndice não é coerente com a data indicada!");
			return(false);
		}
	if (document.getElementById('v03').value>0 && document.getElementById('v08').value>0 && document.getElementById('v03').value!=document.getElementById('v08').value)
		{ // Verifica se o ano do Diário é coerente com a data indicada
			alert("Por favor, verifique a sua pesquisa.\nO ano do Apêndice não é coerente o ano do Diário!");
			return(false);
		}
	}
	if (form=='ima3s')
	{ // pesquisa de imagens de 3.ª Série
		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 ou Apêndice não é coerente com a data indicada!");
			return(false);
		}
	}
	return(true);
}
function testesCampo(form, nCampo, dataI, dataF)
{
	var campo = document.getElementById(nCampo);

	if (nCampo=='v02' && campo.value.indexOf("-")<0)
		if (!validaNum(nCampo)) return(false);
	if (nCampo=='v03' || nCampo=='v08') {
		if (!validaAno(form,nCampo,left(dataI,4),left(dataF,4))) return(false);
		if (!checkAnos(form)) return(false);
	}
	if (nCampo=='v05')
		if (validaData(nCampo,dataI,dataF)) return(checkAnos(form));
	if (nCampo=='v07' && !soLetras(campo.value)) {
		alert("Por favor, verifique o valor introduzido como letra do apêndice.\nEste campo só permite letras.");
		return(false);
	}
	return(true);
}
function validaForm(form, dataI, dataF)
{ // Faz a validação da form antes do submit
	if (form=='ima1s')
	{ // pesquisa de imagens de 1.ª Série
		if (document.getElementById('v02').value=='' && document.getElementById('v03').value=='' && document.getElementById('v05').value=='') {
			alert("A pesquisa não é válida.\nTem 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("A pesquisa não é válida.\nTem de indicar o número do Diário da República.");
			return(false);
		}
		if (document.getElementById('v02').value!='' && document.getElementById('v03').value=='') {
			alert("A pesquisa não é válida.\nTem de indicar o ano do Diário da República.");
			return(false);
		}
	}
	else if (form=='ima2s')
	{ // pesquisa de imagens de 2.ª Série
		if (document.getElementById('v05').value=='' && document.getElementById('v02').value=='' && document.getElementById('v06').value=='') {
			alert("Tem de identificar o Diário da República, o Apêndice ou a data de publicação!");
			return(false);
		}
		if (document.getElementById('v03').value!='' && document.getElementById('v02').value=='' && document.getElementById('v06').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=='' && document.getElementById('v06').value=='') {
			alert("Tem de indicar o ano do Diário da República!");
			return(false);
		}
		if (document.getElementById('v06').value!='' && document.getElementById('v08').value=='') {
			alert("Tem de indicar o ano do Apêndice!");
			return(false);
		}
		if (!validaAno(form,'v08',left(dataI,4),left(dataF,4))) return(false);
	}
	else if (form=='ima3')
	{ // pesquisa de imagens de 1.ª Série
		if (document.getElementById('v05').value=='' && document.getElementById('v02').value=='' && document.getElementById('v06').value=='') {
			alert("Tem de identificar o Diário da República, o Apêndice ou a data de publicação!");
			return(false);
		}
		if (document.getElementById('v02').value!='' && document.getElementById('v06').value!='') {
			alert("Não pode pesquisar simultaneamente por Diário e por Apêndice!");
			return(false);
		}
		if (!validaData('v05',dataI,'2006-06-30')) return(false);
		if ((document.getElementById('v02').value!='' || document.getElementById('v06').value!='') && document.getElementById('v03').value=='') {
			alert("Tem de indicar o ano de publicação!");
			return(false);
		}
// se nº de diario procurado for superior à data de 30-06-2006
		if ((Number(document.getElementById('v02').value) >= Number('126') && Number(document.getElementById('v03').value) >= Number('2006')) || document.getElementById('v03').value>='2007') {
			alert("Não existem Diários da República da 3.ª Série, publicados após 30-06-2006.");
			return(false);
		}
	}
	if (!validaData('v05',dataI,dataF)) return(false);
	if (!validaAno(form,'v03',left(dataI,4),left(dataF,4))) return(false);
	if (!checkAnos(form)) return(false);
	if (!validaNum('v02')) return(false);
	if (!validaNum('v04')) return(false);
	return(true);
}
