/* *********************************************************** */
/*  Ficheiro com funções comuns a todos os códigos javascript  */
/* *********************************************************** */

function escreveCalendario(tipo) {
// escreve a imagem do calendário e respetivo link
	if (tipo=='fixa')
		document.write('<a href="javascript:cal_fixa.popup();"><img src="/comum/img/cal.gif" alt="Selecionar uma data" /></a>');
	else if (tipo=='data_fixa')
		document.write('<a href="javascript:cal_fixa.popup();"><img src="/comum/img/cal.gif" onkeypress="javascript:opData(\'data fixa\');" onclick="javascript:opData(\'data fixa\');" alt="Selecionar uma data" /></a>');
	else if (tipo=='data_inicio')
		document.write('<a href="javascript:cal_di.popup();" onkeypress="javascript:opData(\'entre datas\');" onclick="javascript:opData(\'entre datas\');"><img src="/comum/img/cal.gif" alt="Selecionar uma data inicial" /></a>');
	else if (tipo=='data_fim')
		document.write('<a href="javascript:cal_df.popup();" onkeypress="javascript:opData(\'entre datas\');" onclick="javascript:opData(\'entre datas\');"><img src="/comum/img/cal.gif" alt="Selecionar uma data final" /></a>');
}
function escreveLista(tipo) {
// escreve a imagem das listas de emissores e diplomas
	if (tipo=='dip1s')
		document.write('<a href="javascript:janela(\'/comum/html/janelas/dip1s_ltipos.html\',600,560);"><img src="/comum/img/lista.gif" alt="Listagem de Tipos de Diplomas" /></a>');
	else if (tipo=='dip2s')
		document.write('<a href="javascript:janela(\'/comum/html/janelas/dip2s_ltipos.html\',600,560);"><img src="/comum/img/lista.gif" alt="Listagem de Tipos de Diplomas" /></a>');
	else if (tipo=='aco_emi')
		document.write('<a href="javascript:janela(\'/comum/html/janelas/le_sta.html\',600,560)"><img src="/comum/img/lista.gif" alt="Listagem de Tipos de Emissores" /></a>');
	else if (tipo=='dr1q_emi')
		document.write('<a href="javascript:janela(\'/comum/html/janelas/dr1s_lemi.html\',600,420)"><img src="/comum/img/lista.gif" alt="Listagem de Tipos de Emissores" /></a>');
	else if (tipo=='dr1q_dip')
		document.write('<a href="javascript:janela(\'/comum/html/janelas/dr1s_ltipos.html\',600,560)"><img src="/comum/img/lista.gif" alt="Listagem de Tipos de Diplomas" /></a>');
	else if (tipo=='dr2q_dip')
		document.write('<a href="javascript:janela(\'/comum/html/janelas/dr2s_ltipos.html\',600,560)"><img src="/comum/img/lista.gif" alt="Listagem de Tipos de Diplomas" /></a>');
	else if (tipo=='dr2q_partes')
		document.write('<a href="javascript:janela(\'/comum/html/janelas/dr2s_lpartes.html\',800,560)"><img src="/comum/img/lista.gif" alt="Listagem de Tipos de Diplomas" /></a>');
}

function janela(endereco, largura, altura)
{ // Função para abrir uma nova janela com as dimensões e características especificadas
	window.open(endereco,"displayWindow","toolbar=no,width=" + largura + ",height=" + altura + ",directories=no,status=no,scrollbars=yes,resizable=yes,menubar=no")
}

function selTxt(texto, campo, ano)
{ // Função para passar texto de uma janela para a outra
	window.opener.escreveTexto(texto, campo, ano);
	window.close();
}
function getCalendarDate() {
	var months = new Array(13);
	months[0]  = '01';
	months[1]  = '02';
	months[2]  = '03';
	months[3]  = '04';
	months[4]  = '05';
	months[5]  = '06';
	months[6]  = '07';
	months[7]  = '08';
	months[8]  = '09';
	months[9]  = '10';
	months[10] = '11';
	months[11] = '12';

	var now = new Date();
	var monthnumber = now.getMonth();
	var monthname = months[monthnumber];
	var monthday = now.getDate();
	var year = now.getYear();

	if(year < 2000) { year = year + 1900; }
	if (monthday.toString.length == 1) 
	var dateString = year  + '-' + monthname + '-' + monthday;
	return dateString;
}
function escreveTexto(texto, campo, ano)
{ // Função para passar o texto selecionado das lista de diplomas e emissores para o formulário de pesquisa
	var calendarDate = getCalendarDate();
	with (new Date()) x = String(getFullYear());
	document.getElementById(campo).value = texto.replace(/\\/g,'');

	if (campo=='v13' && ano!='') {
		opData('entre datas');
		document.getElementById('v03').value=ano+'-01-01';
		if (x==ano)
			document.getElementById('v04').value=''+calendarDate;
		else
			document.getElementById('v04').value=ano+'-12-31';
	}
}
function lCase(texto)
{ // Função para passar o texto todo a minúsculas
	return(texto.toString().toLowerCase());
}
function uCase(texto)
{ // Função para passar o texto todo a maiúsculas
	return(texto.toString().toUpperCase());
}
function left(texto, num)
{ // Função que devolve os x caracteres à esquerda da string
	if (num>texto.length)
		return(texto);
	else
		return(texto.substr(0,num));
}
function right(texto, num)
{// Função que devolve os x caracteres à direita da string
	if (num>texto.length)
		return(texto);
	else
		return(texto.substr(texto.length-num,num));
}
function trim(texto)
{ // Função para limpar espaços antes e depois do texto
	while (texto.charAt(texto.length-1)==' ')
		texto=texto.substring(0,texto.length-1);
  	while (texto.charAt(0)==' ')
		texto=texto.substring(1,texto.length);
	return(texto);
}
function rTrim(texto)
{ // Função para limpar os espaços à direita
	while (texto.charAt(texto.length-1)==' ')
		texto = texto.substring(0,texto.length-1);
	return(texto);
}
function lTrim(texto)
{ // Função para limpar os espaços à esquerda
	while (texto.charAt(0)==' ')
		texto = texto.substring(1,texto.length);
	return(texto);
}
function limpaEspacos(nCampo)
{ // Função para limpar todos os espaços do campo em causa
	var nTexto='';
	var campo=document.getElementById(nCampo);
	var texto=campo.value;
	for(var i=0; i<texto.length; i++)
		if (texto.substring(i,i+1)!=' ') nTexto=nTexto+texto.substring(i,i+1);
	campo.value=nTexto;
}
function limpaTracos(campo)
{ // Função para limpar todos os tracos do campo em causa
	var nTexto='';
	var campo=document.getElementById(nCampo);
	var texto=campo.value;
	for(var i=0; i<texto.length; i++)
		if (texto.substring(i,i+1)!='-') nTexto=nTexto+texto.substring(i,i+1);
	campo.value=nTexto;
}
function soNumeros(valor)
{ // Função para verificar se o texto indicado tem caracteres diferentes de números
	var algarismos='0123456789';
	for (var i=0; i<valor.length; i++)
		if (algarismos.indexOf(valor.substr(i,1))<0) return(false);
	return(true);
}
function soLetras(texto)
{ // Função para verificar se o texto indicado só tem letras
	var letras="abcdefghijklmnopqrstuvwxyz";
	texto=lCase(texto);
	for (var i=0; i<texto.length; i++)
		if (letras.indexOf(texto.substr(i,1))<0) return(false);
	return(true);
}
function soLetrasNumeros(texto)
{ // Função para verificar se o texto indicado só tem letras
	var letras="abcdefghijklmnopqrstuvwxyz1234567890";
	texto=lCase(texto);
	for (var i=0; i<texto.length; i++)
		if (letras.indexOf(texto.substr(i,1))<0) return(false);
	return(true);
}
function temChar(texto, caracteres)
{ // Função para verificar se o texto indicado os caracteres indicados
	for (var i=0; i<texto.length; i++)
		if (caracteres.indexOf(texto.substr(i,1))>=0) return(true);
	return(false);
}
function validaPlicas(nCampo, caracteres)
{ // Função para colocar plicas no início e no fim da string de pesquisa no caso de serem encontrados os caracteres indicados
	campo = document.getElementById(nCampo);
	if (temChar(campo.value,'-+,/') && !temChar(campo.value,'\''))	{
		campo.value = '\'' + campo.value + '\'';
	}
}
function validaInput(caracteres) {

	var inputs = document.getElementsByTagName("input");
	var message='Existem caracteres não permitidos num dos campos. Não é possível submeter os seus dados.';
  var texto = "";
	
	for (var i=0; i < inputs.length; i++) {
		if (inputs[i].getAttribute('type') == 'text')
		{
			texto = lCase(inputs[i].value);

			if (temChar(texto,caracteres)) {
				alert(message);
				return(false)
			}

			if (texto.indexOf('&gt;')>=0 || texto.indexOf('&lt;')>=0) {
				alert(message);
				return(false)
			}

			if (texto.indexOf('%3e')>=0 ||texto.indexOf('%3c')>=0) {
				alert(message);
				return(false)
			}
		}
	}
	return(true);
}
