// 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
	{	
		campo = campo.replace(/[\D\(\)\.\,\-\ ]/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;
}

function ValidarFormulario(registo)
{
	var errors = '';
	var nome = registo.nome.value;
	var telefone = registo.telefone.value;
	var email = registo.email.value;
	var assunto = registo.assunto.value;
	var mensagem = registo.mensagem.value;

	errors += Validar(nome, "O Nome");
	errors += ValidarNum(telefone, "O Telefone", 9, 1);
	errors += ValidarEmail(email, "O E-mail", 0);
	errors += Validar(assunto, "O Assunto");
	errors += Validar(mensagem, "A Mensagem");

	if (errors)
	{
	  alert('Ocorreram os seguintes erros:\n\n'+errors);
	  return false;
	}
	else return true;
}

