//Validar o utilizador
function validaUsername(fld, error_field) 
{
	fld = document.getElementById(fld);
	var my_field=document.getElementById(error_field);
	var illegalChars = /\W/; // alfanuméricos e underscore
	erro = "";
	if (fld.value == "") {
		fld.style.background = '#FF9393';
		my_field.style.display = '';
		my_field.innerHTML = "O campo é obrigatório";
		erro = "O campo é obrigatório";
	} else if ((fld.value.length < 5) || (fld.value.length > 32)) {
		fld.style.background = '#FF9393';
		my_field.style.display = '';
		my_field.innerHTML = "O número de caracteres no campo é inválido";
		erro = "O número de caracteres no campo é inválido";
	} else if (illegalChars.test(fld.value)) {
		fld.style.background = '#FF9393'; 
		my_field.style.display = '';
		my_field.innerHTML = "O campo Utilizador contem caracteres ilegais<br />Deverá introduzir um nome válido, sem espaços e caracteres ocidentais";
		erro = "O campo Utilizador contem caracteres ilegais<br />Deverá introduzir um nome válido, sem espaços e caracteres ocidentais";
	} else {
		fld.style.background = 'White';
	}
	return erro;
}

//Validar o campo primeiro nome, ultimo nome
function validaNC(fld, error_field) 
{
	fld = document.getElementById(fld);
	var my_field=document.getElementById(error_field);
	var illegalChars = /\W/; // alfanuméricos e underscore
	erro = "";

	if (fld.value == "") {
		fld.style.background = '#FF9393';
		my_field.style.display = '';
		my_field.innerHTML = "O campo é obrigatório";
		erro = "A password deve conter números e letras";
	} else if ((fld.value.length < 4) || (fld.value.length > 64)) {
		fld.style.background = '#FF9393';
		my_field.style.display = '';
		my_field.innerHTML = "O comprimento da password é inválido";
		erro = "A password deve conter números e letras";
	} else {
		fld.style.background = 'White';
	}
	return erro;
}

function trim(s)
{
	return s.replace(/^\s+|\s+$/, '');
}

function validaEmail(fld, error_field) 
{
	fld = document.getElementById(fld);
var my_field=document.getElementById(error_field);
	var tfld = trim(fld.value);                        // value of field with whitespace trimmed off
	var emailFilter = /^[^@]+@[^@.]+\.[^@]*\w\w$/ ;
	var illegalChars= /[\#\$\'\(\)\<\>\,\;\:\\\"\[\]]/ ;
	erro = "";
  
	if (fld.value == "") {
		fld.style.background = '#FF9393';
		my_field.style.display = '';
		my_field.innerHTML = "Não introduzio o endereço de email";
		erro = "A password deve conter números e letras";
	} else if (!emailFilter.test(tfld)) {              //test email for illegal characters
		fld.style.background = '#FF9393';
		my_field.style.background = '#FFFFAE';
		my_field.style.display = '';
		my_field.innerHTML = "Por favor introduza um email válido";
		erro = "A password deve conter números e letras";
	} else if (fld.value.match(illegalChars)) {
		fld.style.background = '#FF9393';
		my_field.style.display = '';
		my_field.innerHTML = "O endereço de e-mail contem caracteres inválidos";
		erro = "A password deve conter números e letras";
	} else {
		fld.style.background = 'White';
	}
	return erro;
}

//Validar o campo primeiro nome, ultimo nome
function validaTelefone(fld, error_field) 
{
	fld = document.getElementById(fld);
		var my_field=document.getElementById(error_field);
	var illegalChars = /\W/; // alfanuméricos e underscore
	erro = "";
 
	if (fld.value.length > 45) {
		fld.style.background = '#FF9393';
		my_field.style.display = '';
		my_field.innerHTML = "O número de caracteres no campo é inválido";
		erro = "A password deve conter números e letras";
	} else {
		fld.style.background = 'White';
	}
	return erro;
}

function validaPassword(fld, error_field) 
{
	fld = document.getElementById(fld);
	var my_field=document.getElementById(error_field);
	var illegalChars = /[\W_]/; // allow only letters and numbers 
	erro = "";
 
	if (fld.value == "") {
		fld.style.background = '#FF9393';
		my_field.style.display = '';
		my_field.innerHTML = "Não introduzio a password";
		erro = "A password deve conter números e letras";
	} else if ((fld.value.length < 4) || (fld.value.length > 20)) {
		fld.style.background = '#FF9393';
		my_field.style.display = '';
		my_field.innerHTML = "O comprimento da password é inválido";
		erro = "A password deve conter números e letras";
	} else if (illegalChars.test(fld.value)) {
		fld.style.background = '#FF9393';
		my_field.style.display = '';
		my_field.innerHTML = "A password contem caracteres ilegais";
		erro = "A password deve conter números e letras";
	} else {
		fld.style.background = 'White';
	}
	return erro;
}

function PasswordCompara(fld, error_field, pass) 
{
	fld = document.getElementById(fld);
	var my_field=document.getElementById(error_field);
	var pass_field = document.getElementById(pass);
	var illegalChars = /[\W_]/; // allow only letters and numbers 
	erro = "";
 
	if (fld.value != pass_field.value) {
		fld.style.background = '#FF9393';
		my_field.style.display = '';
		my_field.innerHTML = "As passwords inseridas não são iguais";
		erro = "As passwords inseridas não são iguais";
	} else {
		fld.style.background = 'White';       	
	}
	return erro;
}

//Validar o campo primeiro nome, ultimo nome
function validaNIF(fld, error_field) 
{
	fld = document.getElementById(fld);
	var my_field=document.getElementById(error_field);
	var illegalChars = /\W/; // alfanuméricos e underscore
	erro = "";
 
	if (illegalChars.test(fld.value)) {
		fld.style.background = '#FF9393';
		my_field.style.display = '';
		my_field.innerHTML = "A password contem caracteres ilegais";
		erro = "A password deve conter números e letras";
	}
	return erro;
}

//Validar campos genéricos
function validaGenerico(fld, error_field,  max_char) 
{
	fld = document.getElementById(fld);
	var my_field=document.getElementById(error_field);
	erro = "";
	if (fld.value == "") {
		fld.style.background = '#FF9393';
		my_field.style.display = '';
		my_field.innerHTML = "Campo de introdução obrigatória";
		erro = "O número de caracteres no campo é inválido";
	} else if (fld.value.length > max_char) {
		fld.style.background = '#FF9393';
		my_field.style.display = '';
		my_field.innerHTML = "O número de caracteres no campo é inválido";
		erro = "O número de caracteres no campo é inválido";
	} else {
		fld.style.background = 'White';
	}
	return erro;
}

//Validar o campo primeiro nome, ultimo nome
function validaPais(fld, error_field) 
{
	fld = document.getElementById(fld);
	var my_field=document.getElementById(error_field);
	erro = "";
 
	if (fld.value == "") {
		fld.style.background = '#FF9393';
		my_field.style.display = '';
		my_field.innerHTML = "O campo é obrigatório";
		erro = "O campo é obrigatório";
	} else {
		fld.style.background = 'White';
	}
	return erro;
}

function validaCodigo(fld, error_field) 
{
	fld = document.getElementById(fld);
	var my_field=document.getElementById(error_field);
	erro = "";
	if (fld.value == "") {
		fld.style.background = '#FF9393';
		my_field.style.display = '';
		my_field.innerHTML = "Campo de introdução obrigatória";
		erro = "O número de caracteres no campo é inválido";
	} else if (fld.value.length != 10) {
		fld.style.background = '#FF9393';
		my_field.style.display = '';
		my_field.innerHTML = "Deve introduzir os 10 caracteres do código de validação";
		erro = "Deve introduzir os 10 caracteres do código de validação";
	} else {
		fld.style.background = 'White';
	}
	return erro;
}

function acordo(fld, error_field) 
{
	fld = document.getElementById(fld);
	var my_field=document.getElementById(error_field);
	erro = "";

	if (fld.checked != 1) {
		fld.style.background = '#FF9393';
		my_field.style.background = '#FFFFAE';
		my_field.style.display = '';
		my_field.innerHTML = "Têm de aceitar os termos";
		erro = "Têm de aceitar os termos";
	} else {
		fld.style.background = 'White';
	}
	return erro;
}
  
  
function captcha(fld, error_field) 
{
	fld = document.getElementById(fld);
	var my_field=document.getElementById(error_field);
	erro = "";
    
	if ((fld.value.length < 6) ||  (fld.value.length > 6)){
		fld.style.background = '#FF9393';
		my_field.style.background = '#FFFFAE';
		my_field.style.display = '';
		my_field.innerHTML = "Insira os caracteres apresentados na imagem";
		erro = "Insira os caracteres apresentados na imagem";
	} else {
		fld.style.background = 'White';
	}
	return erro;
}

//Validar Data de Nascimento
function validaDNASC(dia, mes, ano, error_field)
{
	fld_dia = document.getElementById(dia);
	fld_mes = document.getElementById(mes);
	fld_ano = document.getElementById(ano);
	var my_field=document.getElementById(error_field);
	var illegalChars = /\W/; // alfanuméricos e underscore
	erro = "";
	
	if (fld_dia.value == "") {
		fld.style.background = '#FF9393';
		my_field.style.background = '#FFFFAE';
		my_field.style.display = '';
		my_field.innerHTML = "O dia é obrigatório";
		erro = "O dia é obrigatório";
		return erro;
	}
	if (fld_mes.value == "") {
		fld.style.background = '#FF9393';
		my_field.style.background = '#FFFFAE';
		my_field.style.display = '';
		my_field.innerHTML = "O mês é obrigatório";
		erro = "O mês é obrigatório";
		return erro;
	}
	if (fld_ano.value == "") {
		fld.style.background = '#FF9393';
		my_field.style.background = '#FFFFAE';
		my_field.style.display = '';
		my_field.innerHTML = "O ano é obrigatório";
		erro = "O ano é obrigatório";
		return erro;
	}
	
	if (parseInt(fld_dia.value) == NaN) {
		fld.style.background = '#FF9393';
		my_field.style.background = '#FFFFAE';
		my_field.style.display = '';
		my_field.innerHTML = "O dia é obrigatório";
		erro = "O dia é obrigatório";
		return erro;
	}
	if (parseInt(fld_mes.value) == NaN) {
		fld.style.background = '#FF9393';
		my_field.style.background = '#FFFFAE';
		my_field.style.display = '';
		my_field.innerHTML = "O mês é obrigatório";
		erro = "O mês é obrigatório";
		return erro;
	}
	if (parseInt(fld_ano.value) == NaN) {
		fld.style.background = '#FF9393';
		my_field.style.background = '#FFFFAE';
		my_field.style.display = '';
		my_field.innerHTML = "O dia é obrigatório";
		erro = "O dia é obrigatório";
		return erro;
	}

	my_dia = parseInt(fld_dia.value);
	my_mes = parseInt(fld_mes.value);
	my_ano = parseInt(fld_ano.value);
	
	if(my_dia < 1 || my_dia > 31 ) {
		fld.style.background = '#FF9393';
		my_field.style.background = '#FFFFAE';
		my_field.style.display = '';
		my_field.innerHTML = "O dia é obrigatório";
		erro = "O dia é obrigatório";
		return erro;
	}

	if(my_mes < 1 || my_mes > 12 ) {
		fld.style.background = '#FF9393';
		my_field.style.background = '#FFFFAE';
		my_field.style.display = '';
		my_field.innerHTML = "O mês é obrigatório";
		erro = "O mês é obrigatório";
		return erro;
	}
	
	if(my_ano < 1900 || my_ano > 2010 ) {
		fld.style.background = '#FF9393';
		my_field.style.background = '#FFFFAE';
		my_field.style.display = '';
		my_field.innerHTML = "O ano é obrigatório";
		erro = "O ano é obrigatório";
		return erro;
	}
	
	fld.style.background = 'White';
	return erro;
}

function validaTodos() 
{
	reason = validaUsername('utilizador', 'form_erro');
	reason += validaNC('nome_completo', 'form_erro');
	reason += validaEmail('email', 'form_erro');
	reason += validaTelefone('contacto', 'form_erro');
	reason += validaPassword('pass', 'form_erro');
	reason += PasswordCompara('check_pass', 'form_erro', 'pass');
	reason += validaNIF('nif', 'form_erro') ;

	if (reason != "") {
		return false;
	}
	return true;
}

function validaPasso2() 
{
	reason = validaGenerico('endereco', 'form_erro', 1000);
	reason += validaGenerico('postal', 'form_erro', 32);
	reason += validaGenerico('cidade', 'form_erro', 32);

	if (reason != "") {
		return false;
	}
	return true;
}

function validaPasso3() 
{
	reason = acordo('concorda', 'form_erro');
	reason += captcha('code', 'form_erro');

	if (reason != "") {
		return false;
	}
	return true;
}  

function validar(formulario)
{
	formulario.submit();
}

$(document).ready(function() {
	$('a.confirmo').attr('href', 'javascript:void(0)');
	$('a.confirmo').click(function() {
		validar($('#registo'));
	});
	$('#utilizador').blur(function(){ validaUsername('utilizador', 'form_erro'); });
	$('#nome_completo').blur(function(){ validaNC('nome_completo', 'form_erro'); });
	$('#email').blur(function(){ validaEmail('email', 'form_erro'); });
	$('#contacto').blur(function(){ validaTelefone('contacto', 'form_erro'); });
	$('#pass').blur(function(){ validaPassword('pass', 'form_erro'); });
	$('#check_pass').blur(function(){ PasswordCompara('check_pass', 'form_erro', 'pass'); });
	$('#nif').blur(function(){ validaNIF('nif', 'form_erro'); });
	
	$('a.confirmo2').attr('href', 'javascript:void(0)');
	$('a.confirmo2').click(function() {
		validar($('#registo2'));
	});
	$('#endereco').blur(function(){ validaGenerico('endereco', 'form_erro', 1000); });
	$('#postal').blur(function(){ validaGenerico('postal', 'form_erro', 32); });
	$('#cidade').blur(function(){ validaGenerico('cidade', 'form_erro', 32); });

	$('a.confirmo3').attr('href', 'javascript:void(0)');
	$('a.confirmo3').click(function() {
		validar($('#registo3'));
	});
	
	$('#codigo').blur(function(){ validaCodigo('codigo', 'form_erro'); });
	$('a.btnactivar').attr('href', 'javascript:void(0)');
	$('a.btnactivar').click(function() {
		validar($('#activar'));
	});

	$('a.recupera').attr('href', 'javascript:void(0)');
	$('a.recupera').click(function() {
		validar($('#recuperar'));
	});
});
