// JavaScript Document

// ValidarObrigatorio()
// Valida se um campo obrigatório está preenchido
function Validar(campo, extenso)
{
	if (campo.length == 0) // se a string está vazia
		return extenso +' é um dado necessário.\n\n';
	else return '';
}

// ValidarNum
// Função que valida um número com n algarismos
// campo - variável representando o valor do campo a ser validado
// extenso - string com a descrição do campo
// digitos - nº de algarismos que o número deve ter
// necessário - indica se o campo é necessário (1) ou não (0)
// retorna "" se correcto, ou uma string com o erro, se errado
function ValidarNum(campo, extenso, digitos, necessario)
{
	var msg = "";
	if (campo.length == 0) // se a string está vazia
	{
		if (necessario)
			msg = extenso +' é um dado necessário.\n\n';
	}
	else // se a string não está vazia, valida o conteúdo
	{	
		filtro = new RegExp("^[0-9]{digitos}$");
		if (filtro.test(campo)) // se a string resultante não for um numero, gera erro
//		campo = campo.replace(/[\(\)\.\,\-\ ]/g, ''); // expressao regular para eliminar caracteres nao numericos
//		if (isNaN(parseInt(campo))) // se a string resultante não for um numero, gera erro
				msg = extenso +' deve conter um número.\n\n';
		else // se o campo contiver um número
			if ( campo.length == digitos )// verifica se o número de algarismos está correcto
				msg = ""; 
			else
				msg = extenso +' deve conter ' + digitos + ' algarismos.\n\n';
	}
	return msg;
}

// ValidarEmail () - faz uma validação simples de endereços de email
// retorna a mensagem de erro
function ValidarEmail(campo,extenso,necessario)
{
	var msg = "";
	if (campo.length == 0 && necessario) // se é um campo necessário mas está vazio gera mensagem de erro
		msg += extenso +' é um dado necessário.\n\n';
	if (campo.length != 0)
	{
		var emailFilter=/^.+@.+\..{2,4}$/; // o top domain pode ter de 2 a 4 caracteres ( ex.: .pt, .com, .info )
		if (!(emailFilter.test(campo))) // se não obedecer ao padrão dá mensagem de erro
			msg += extenso + ' está errado.\n\n';
		var illegalChars= /[\(\)\<\>\,\;\:\\\/\"\[\]]/
		if (campo.match(illegalChars))
			msg += 'extenso contém caracteres ilegais.\n\n';
	}
	return msg;
}

// ValidarCodpostal () - Função que valida o Código Postal
// retorna a mensagem de erro
function ValidarCodpostal(codigo, suplementar, zona, extenso, necessario)
{ 
	var msg = "";
	
	function ValidarZona ()
	{ 
		if (zona == '' && necessario ==1)
			return 'A zona postal é um dado necessário\n\n';
		else return '';
	}
	
	if (necessario == 1)
	{
		msg += ValidarNum (codigo, "O código postal " + extenso, 4, necessario);
		if (msg.length == 0) // só valida os campos seguintes se não der erro no campo actual
		{
			msg += ValidarNum (suplementar, "O código postal " + extenso + " suplementar ", 3, necessario);
			if (msg.length == 0) // só valida os campos seguintes se não der erro no campo actual
			{
				msg += ValidarZona ();
			}
		}
	}
	else
	{
		if (codigo.length != 0)
			msg += ValidarNum (codigo, "O código postal " + extenso, 4, necessario);
		if (suplementar.length != 0)
			msg += ValidarNum (suplementar, "O código postal " + extenso + " suplementar ", 3, necessario);
	}
	return msg;
}

// ValidarSenha () - Teste de Senhas
// retorna a mensagem de erro
function ValidarSenha (senha, contraSenha, char_min, char_max)
{
	var msg = "";
	var senhaLen = senha.replace(/ /g, '').length;
	var contraSenhaLen = contraSenha.replace(/ /g, '').length;
	if (senhaLen == 0)
	  msg = 'A Senha é um dado necessário.\n\n';
	else
		if (senha.length > senhaLen)
			msg = 'A senha não deve conter espaços.\n\n';
		else
  		if (senhaLen < char_min || senhaLen > char_max)
				msg = 'A Senha deve ter entre ' + char_min + ' e ' + char_max + ' caracteres.\n\n';
  		else
    		if (contraSenhaLen == 0)
      		msg = 'É necessária a confirmação da Senha.\n\n';
    		else
      		if (senha != contraSenha) 
						msg = 'As senhas não coincidem.\n\n';
	return msg;
}