
function verifica_caracteres(in_string, in_tipo){
	//definir melhor a expressão regular.
	//var patLogin=/(-|[a-z]|[A-Z]|[0-9]|_]){4,15}/; // permitir também 0-9 _ -
	var patLogin=/(\w){4,15}/; // permitir também 0-9 _ -
	//var patNotallowed=/(\\\"\#\$\%\&\/\(\)\=\?\»\«\'\}\]\[\{\§\£\@\!\|\<\>\;\.\~\^\ª\º\ç\Ç\´\`\*\+)+/; 
	var patNotallowed=/(\W)+/; 
	var patNome=/((\w)|( )){3,50}/; // permitir só caracteres e espaços.
	var patCodpostal=/(\d){4}(-)(\d){3}/;    // na forma 0000-000
	var patEmail=/^([-a-zA-Z0-9._]+@[-a-zA-Z0-9.]+(\.[-a-zA-Z0-9]+)+)*$/;    // na forma lala@lala.xx
	var patMorada=/([a-zA-Z0-9\.\-\º\ª ]){3,50}/;  // permitir º ª . - a-zA-Z0-9  espaço

	if (in_tipo == "login"){
		var preg= new RegExp(patLogin);
		var preg0= new RegExp(patNotallowed);
		var p=preg.test(in_string);
		var p0=preg0.test(in_string);		
		if ((!p && p0) || (p && p0)) { return false; }
		else { return true; }
	}

	if (in_tipo == "nome"){
		var preg= new RegExp(patNome);
		var p=preg.test(in_string);
		//var p=patNome.exec(in_string);
		if (!p) { return false; }
		else { return true; }
	}
	
	if (in_tipo == "codpostal"){
		var preg= new RegExp(patCodpostal);
		var p=preg.test(in_string);
		//var p=patCodpostal.exec(in_string);
		if (!p) { return false; }
		else { return true; }
	}
	
	if (in_tipo == "email"){
		var preg= new RegExp(patEmail);
		var p=preg.test(in_string);
		//var p=patEmail.exec(in_string);
		if (!p) { return false; }
		else { return true; }
	}
	
	if (in_tipo == "morada"){
		var preg= new RegExp(patMorada);
		var p=preg.test(in_string);
		//var p=patMorada.exec(in_string);
		if (!p) { return false; }
		else { return true; }
	}
}

// Funções para validar o login
function valida_form_login(in_login){
	
	if (in_login.value == "" ){
		alert ('Deve indicar o login que pretende!');
		in_login.focus();	
		in_login.select();	
		return false;
	}else{
		if (in_login.value.length < 4  || in_login.value.length > 15  ){
			alert ('O Login tem poucos caracteres!');
			in_login.focus();
			in_login.select();
			return false;
		}
		// Validar os caracteres permitidos para o login
		if (verifica_caracteres(in_login.value, "login")==false) { 
			alert('Deve introduzir caracteres válidos no login!');
			in_login.focus();
			in_login.select();
			return false; 
		}	
	}
	return true;

}


function valida_form_pwd(in_pwd, in_pwd_cnf){
	
	if (in_pwd.value == ""){
		alert ('Deve indicar a palavra-passe de acesso!');
		in_pwd.focus();
		in_pwd.select();
		return false;
	}
	
	if (in_pwd_cnf.value == ""){
		alert ('Deve confirmar a palavra-passe de acesso!');
		in_pwd.focus();
		in_pwd.select();
		return false;
	}

	if (in_pwd.value != in_pwd_cnf.value){
		alert ('A palavra passe deve ser idêntica à da confirmação!');
		in_pwd.focus();
		in_pwd.select();
		return false;		
	}
	
	if (in_pwd.value.length < 4  || in_pwd.value.length > 15  ){
			alert ('A palavra-passe tem poucos caracteres!');
			in_pwd.focus();
			in_pwd.select();
			return false;
	}	
	return true;
}

function valida_form_nome(in_nome){
	
	if (in_nome.value == ""){
		alert ('Deve indicar o seu nome!');
		in_nome.focus();
		in_nome.select();		
		return false;
	}
	
	if (in_nome.value.length < 3 ){
			alert ('O seu nome tem poucos caracteres!');
			in_nome.focus();
			in_nome.select();
			
			return false;
	}	
	
	if ( in_nome.value.length > 50 ){
		alert ('O seu nome tem demasiados caracteres!');
		in_nome.focus();
		in_nome.select();
		
		return false;	
	}
	
	if (verifica_caracteres(in_nome.value, "nome")==false) { 
		alert('Deve introduzir caracteres válidos no seu nome!');
		in_nome.focus();
		in_nome.select();
		
		return false; 
	}	
	return true;	
}


function valida_form_morada(in_morada){
	
	if (in_morada.value == ""){
		alert ('Deve indicar a sua morada!');
		in_morada.focus();
		in_morada.select();
		
		return false;
	}
	
	if (in_morada.value.length < 3 ){
			alert ('A sua morada tem poucos caracteres!');
			in_morada.focus();
			in_morada.select();
			
			return false;
	}	
	
	if ( in_morada.value.length > 50 ){
		alert ('A sua morada tem demasiados caracteres!');
		in_morada.focus();
		in_morada.select();
		
		return false;	
	}
	
	if (!verifica_caracteres(in_morada.value, "morada")) { 
		alert('Deve introduzir caracteres válidos na sua morada!');
		in_morada.focus();
		in_morada.select();
		
		return false; 
	}	
	return true;	
}


function valida_form_codpostal(in_codpostal){
	
	if (in_codpostal.value == ""){
		alert ('Deve indicar o seu Código Postal!');
		in_codpostal.focus();
		in_codpostal.select();
		
		return false;
	}
	
	if (in_codpostal.value.length < 4 || in_codpostal.value.length > 8){
		alert('O seu código postal contem um número incorrecto de caracteres!');
		in_codpostal.focus();
		in_codpostal.select();
		
		return false;
	}
	
	// validar se tem a forma 0000-000	
	if (!verifica_caracteres(in_codpostal.value, "codpostal")) { 
		alert('Introduza correctamente o seu código Postal!');
		in_codpostal.focus();
		in_codpostal.select();
		
		return false; 
	}

}


function valida_form_localidade(in_localidade){
	
	if (in_localidade.value == ""){
		in_localidade.focus();
		in_localidade.select();
		alert ('Deve indicar a sua localidade!');
		return false;
	}
	
	if (in_localidade.value.length < 3 ){
			in_localidade.focus();
			in_localidade.select();
			alert ('A sua localidade tem poucos caracteres!');
			return false;
	}	
	
	if ( in_localidade.value.length > 50 ){
		in_localidade.focus();
		in_localidade.select();
		alert ('A sua localidade tem demasiados caracteres!');
		return false;	
	}
	
	if (verifica_caracteres(in_localidade.value, "nome")==false) { 
		in_localidade.focus();
		in_localidade.select();
		alert('Deve introduzir caracteres válidos na sua localidade!');
		return false; 
	}	
	return true;	
}


function valida_form_email(in_email){
	
	if (in_email.value == ""){
		in_email.focus();
		in_email.select();	
		alert ('Deve indicar o seu email!');
		return false;
	}
	
	if (in_email.value.length < 3 ){
			in_email.focus();
			in_email.select();	
			alert ('O seu email tem poucos caracteres!');
			return false;
	}	
	
	if ( in_email.value.length > 50 ){
		in_email.focus();
		in_email.select();	
		alert ('O seu email tem demasiados caracteres!');
		return false;	
	}
	
	if (verifica_caracteres(in_email.value, "email")==false) { 
		in_email.focus();
		in_email.select();	
		alert('Deve introduzir caracteres válidos no seu email!');
		return false; 
	}	
	return true;	
}

function valida_form_telf_tlm(in_val){	
	if (isNaN(in_val)){ return false;}
	return true;
}


function valida_formulario_reg(form){

	if (!valida_form_login(form.txt_login)){ return false; }
	if (!valida_form_pwd(form.txt_pwd, form.txt_pwd_cnf)){ return false; }
	if (!valida_form_nome(form.txt_nome)){ return false; }
	if (!valida_form_morada(form.txt_morada)){ return false; }
	//if (!valida_form_codpostal(form.txt_codpostal)){ return false; }
	if (!valida_form_localidade(form.txt_localidade)){ return false; }
	if (!valida_form_email(form.txt_email)){ return false; }
	if (form.txt_telefone.value.length >= 0){
		if (!valida_form_telf_tlm(form.txt_telefone.value)) { alert ('Número de telefone preenchido incorrectamente!'); return false; }
	}
	if (form.txt_telemovel.value.length >= 0){
		if (!valida_form_telf_tlm(form.txt_telemovel.value)) { alert ('Número de telemovel preenchido incorrectamente!');return false; }
	}	
	
	return true;

}


function valida_form_informacao(form){

	if (!valida_form_email(form.txt_email)){ return false; }
	if (form.txt_telefone.value.length >= 0){
		if (!valida_form_telf_tlm(form.txt_telefone.value)) { alert ('Número de telefone preenchido incorrectamente!'); return false; }
	}
	if (form.txt_telemovel.value.length >= 0){
		if (!valida_form_telf_tlm(form.txt_telemovel.value)) { alert ('Número de telemovel preenchido incorrectamente!');return false; }
	}	
	
	var x=form.txt_info.value;	
	if (x.length ==0){
		alert('O seu pedido de informação deve conter dados');
		return false;
	}
	
	return true;

}
