function getForm(formName) {
   // Test if is IE or Netscape (document.layers)
    if(document.all)
        return eval(formName);
    else
        return document.forms[formName];
}

function erro(){
	var regform= getForm("frm_registo");
	alert("O username escolhido já existe. Por favor escolha outro");
	regform.username.focus();
}

function password(){
	var regform= getForm("frm_password");
	if(regform.user.value==""){
		alert("Escreva o seu username");
		regform.user.focus();
		return false;
	/*}else{
		populateform(8);*/
	}	
}

function generatepass(plength){	
var keylist="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP123456789"
var temp='';
	temp='';
	for (i=0;i<plength;i++)
		temp+=keylist.charAt(Math.floor(Math.random()*keylist.length))
	return temp
}

function populateform(enterlength){
	var regform= getForm("frm_password");
	regform.output.value=generatepass(enterlength);	
}

//validar form registo
function validate_registo(){
		
	var regform= getForm("frm_registo");
	var resemail=false;
	var resuser=false;
	var msg="";
	var msg1="";
	var msg2="";
	var sexo=0;
	var datanasc=0;
    var fieldfocus="";
					
	reg = /^[\w-]+(\.[\w-]+)*@(([\w-]{2,63}\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/;
	regnum = new RegExp('[0-9]{4}');	
	regnl = new RegExp('([a-zA-Z0-9\\_]+)'+'([a-zA-Z])');
	//regnl = /[^a-zA-Z0-9\\_]/;
	regtelef = /[^0-9\s]/;
		
	if(regform.autorizacao.checked){
		regform.hautorizacao.value="1";
	}else{
		regform.hautorizacao.value="0";
	}		

	if(regform.mailing.checked){
		regform.hmailing.value="1";		
	}else{
		regform.hmailing.value="0";
	}

	if(regform.nome.value == ""){
		msg=msg+"- nome\n";
		if(fieldfocus=="") 
			fieldfocus="nome";
	}
		
								
	//validate field sexo
	for(var i=0;i<regform.sexo.length;i++)
	{						
		if(regform.sexo[i].checked)
			sexo=1;			
	}
	
	
	if(sexo == 0){
		msg=msg+"- sexo\n";
		if(fieldfocus=="") 
			fieldfocus="sexo";
	}
	
	//validate field data nascimento
	if(regform.dia.options[regform.dia.selectedIndex].value != "" && regform.mes.options[regform.mes.selectedIndex].value !="" && regform.ano.value!="Ano"){	
		if(regform.dia.options[regform.dia.selectedIndex].value >= 1){
			if(regform.mes.options[regform.mes.selectedIndex].value >= 1){
				if(regform.ano.value != "Ano" && (regform.ano.value.length == 4) && (regnum.test(regform.ano.value)==true)){
					regform.datanasc.value=regform.ano.value+"-"+regform.mes.options[regform.mes.selectedIndex].value+"-"+regform.dia.options[regform.dia.selectedIndex].value;
				}else{
					msg1=msg1+"- data de nascimento\n";	
					if(fieldfocus=="") 
						fieldfocus="dia";
				}
			}		
		}
	}else{
		msg=msg+"- data de nascimento\n";
		if(fieldfocus=="") 
			fieldfocus="dia";
	}
	//validate field email
	if(regform.email.value){
		var email=regform.email.value;
		resemail = (reg.test(email));
		if(resemail==false){
			msg1=msg1+"- email\n";
			if(fieldfocus=="") 
				fieldfocus="email";
		}		
	}else{
		msg=msg+"- email\n";
		if(fieldfocus=="") 
			fieldfocus="email";
	}
	
	//validate telefone	
	if(regform.contacto1.value.length != 0 && (regtelef.test(regform.contacto1.value) || regform.contacto1.value.length < 9)){
		msg1=msg1+"- telefone (é um campo numérico composto por 9 digitos)\n";
		if(fieldfocus=="") 
			fieldfocus="contacto1";
	}
	
	if(regform.contacto2.value.length != 0 && (regtelef.test(regform.contacto2.value) || regform.contacto2.value.length < 9)){
		msg1=msg1+"- telemóvel (é um campo numérico composto por 9 digitos)\n";
		if(fieldfocus=="") 
			fieldfocus="contacto2";
	}
	
	//validate username	
	//resuser = (regnl.test(regform.username.value));	
	if(regform.username.value == "" ){
		msg=msg+"- username\n";
		if(fieldfocus=="")
			fieldfocus="username";
	}else{
		var user=regform.username.value;
		resuser = (regnl.test(user));
		if(resuser == false){
			msg1=msg1+"- username (deve ser preenchido com caracteres alfanuméricos)\n";
			if(fieldfocus=="") 
				fieldfocus="username";
		}
		
		for(var i=0;i<user.length;i++)
				{
				if(user.charAt(i) == " "){
					msg2="- Não poderá existir espaços no campo de username\n";
					if(fieldfocus=="") 
						fieldfocus="username";
					
				}
		}
	}


	//validate password
	if(regform.password.value == ""){
		msg=msg+"- password\n";
		if(fieldfocus=="") 
			fieldfocus="password";
	}else if(regform.confirm_password.value != regform.password.value){
		msg1=msg1+"- os campos password e confirmação da password têm que ser iguais\n";
		if(fieldfocus=="") 
			fieldfocus="password";
	}
	
		
	//validate confirm password
	if(regform.confirm_password.value == ""){
		msg=msg+"- confirmação da password\n";
		if(fieldfocus=="") 
			fieldfocus="confirm_password";
	}
	

	//validate pergunta de segurança
	if(regform.pergunta.value == ""){
		msg=msg+"- pergunta de segurança\n";
		if(fieldfocus=="") 
			fieldfocus="pergunta";
	}

	//validate resposta de segurança
	if(regform.resposta.value == ""){
		msg=msg+"- resposta\n";
		if(fieldfocus=="") 
			fieldfocus="resposta";
	}else if(regform.confirm_resposta.value != regform.resposta.value){
		msg1=msg1+"- os campos resposta e confirmação da resposta têm que ser iguais\n";
		if(fieldfocus=="") 
			fieldfocus="resposta";
	}
		
	//validate confirmação da resposta de segurança
	if(regform.confirm_resposta.value == ""){
		msg=msg+"- confirmação da resposta\n";
		if(fieldfocus=="") 
			fieldfocus="confirm_resposta";
	}

	if(regform.termos.checked){
		regform.htermos.value="1";		
	}else{
		msg=msg+"- termos de utilização\n";		
		fieldfocus="termos";
		regform.htermos.value="0";
	}
	
	if(msg !=""){
		msg="Os campos seguintes são de preenchimento obrigatório:\n"+msg;
	}
	
	if(msg1 !=""){
		msg=msg+"\nOs campos seguintes não estão correctamente preenchidos:\n"+msg1;
	}
	
	if(msg2 !=""){
			msg=msg+msg1+msg2;
		}	
	
	if(msg !=""){
		alert(msg);
		
		if (fieldfocus == "sexo"){
			document.location.href = "/registo/index.jsp#sexo";
		}else{
			fld=eval("regform."+fieldfocus);
			fld.focus();
		}
		return false;		
	}               					
}

//validar form registo2(mais informacoes)
function validate_registo2(){
	var regform= getForm("frm_registo2");
	var msg="";
	var msg1="";
	var fieldfocus="";
	regcodpostal = /[^0-9\s]/;
	regnumerico = /[^0-9\s]/;
	
	
	if(regform.morada.value== ""){
		msg=msg+"- morada\n";
		if(fieldfocus=="") 
			fieldfocus="morada";
	}	
		

	if(regform.codpostal.value== ""){
		msg=msg+"- código postal\n";
		if(fieldfocus=="") 
			fieldfocus="codpostal";
	}	
	
	if(regcodpostal.test(regform.codpostal.value) || regform.codpostal.value.length <4){
		msg1=msg1+"- código postal (é um campo numérico composto por 4 digitos)\n";
		if(fieldfocus=="") 
			fieldfocus="codpostal";
	}	
	
	if((regform.codpostal_1.value != "" && regcodpostal.test(regform.codpostal_1.value)) || regform.codpostal.value.length <3){
		msg1=msg1+"- código postal (é um campo numérico composto por 3 digitos)\n";
		if(fieldfocus=="") 
			fieldfocus="codpostal_1";
	}
	
	if(regform.codpostal.value != "" && regform.codpostal_1.value != "")
		regform.hcodpostal.value=regform.codpostal.value+"-"+regform.codpostal_1.value;
	else
		regform.hcodpostal.value=regform.codpostal.value;
		
	if(regform.localidade.value== ""){
		msg=msg+"- localidade (código postal)\n";
		if(fieldfocus=="") 
			fieldfocus="localidade";	
	}	
	if(regform.pais.selectedIndex == 0){
		msg=msg+"- país\n";
		if(fieldfocus=="") 
			fieldfocus="pais";
	}
	regform.hpais.value=regform.pais.options[regform.pais.selectedIndex].text;	


	if(regform.num_contribuinte.value!= "" && regnumerico.test(regform.num_contribuinte.value)){
		msg=msg+"- numero de contribuinte (é um campo numérico com 9 digitos)\n";
		if(fieldfocus=="") 
			fieldfocus="num_contribuinte";
	}
	if(regform.num_cliente_cgd.value!= "" && regnumerico.test(regform.num_cliente_cgd.value)){
		msg=msg+"- numero de cliente CGD (é um campo numérico)\n";
		if(fieldfocus=="") 
			fieldfocus="num_cliente_cgd";
	}
	if(regform.num_conta_cgd.value!= "" && regnumerico.test(regform.num_conta_cgd.value)){
		msg=msg+"- numero de conta CGD (é um campo numérico com 13 digitos)\n";
		if(fieldfocus=="") 
			fieldfocus="num_conta_cgd";
	}


	if(msg !=""){
		msg="Os campos seguintes são de preenchimento obrigatório:\n"+msg;
	}
	
	if(msg1 !=""){
		msg=msg+"\nOs campos seguintes não estão correctamente preenchidos:\n"+msg1;
	}	
					
	if(msg !=""){
        alert(msg);
		fld=eval("regform."+fieldfocus);
		fld.focus();
        return false;
	}   		
}	

//validar form registo3(dados)
function validate_registo3(){

	var regform= getForm("frm_registo3");
	var msg="";
	var msg1="";
	var fieldfocus="";
	regcodpostal = /[^0-9\s]/;
	reg = /^[\w-]+(\.[\w-]+)*@(([\w-]{2,63}\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/;
	regnum = new RegExp('[0-9]{4}');
	regnl = /[^a-zA-Z0-9]/;
	regtelef = /[^0-9\s]/;
	regnumerico = /[^0-9\s]/;

	//validate password
	if(regform.new_password.value!="" || regform.confirm_password.value!=""){	
		if(regform.confirm_password.value != regform.new_password.value){
			msg1=msg1+"- os campos password e confirmação da password têm que ser iguais\n";
			if(fieldfocus==""){ 
				fieldfocus="new_password";
			}
		}else{
			if(regform.actual_password.value == ""){
				msg=msg+"- password actual vazia\n";
				if(fieldfocus=="") {
					fieldfocus="actual_password";
				}
			}	
		}
	}	

	//validate pergunta de segurança
	if(regform.pergunta.value == ""){
		msg=msg+"- pergunta de segurança\n";
		if(fieldfocus=="") 
			fieldfocus="pergunta";
	}

	//validate resposta de segurança
	if(regform.resposta.value != "" || regform.confirm_resposta.value != ""){
		if(regform.resposta.value != regform.confirm_resposta.value){
			msg=msg+"- os campos resposta e confirmação de resposta têm que ser iguais\n";
			if(fieldfocus==""){ 
				fieldfocus="resposta";
			}	
		}else{
			if(regform.actual_password.value == ""){
				msg=msg+"- password actual vazia\n";
				if(fieldfocus=="") {
					fieldfocus="actual_password";
				}
			}	
		}	
	}			
	
	if(regform.nome.value == ""){
		msg=msg+"- nome\n";
		if(fieldfocus=="") 
			fieldfocus="nome";
	}
								
	//validate field sexo
	for(var i=0;i<regform.sexo.length;i++)
	{						
		if(regform.sexo[i].checked)
			sexo=1;			
	}
	
	if(sexo == 0){
		msg=msg+"- sexo\n";
		if(fieldfocus=="") 
			fieldfocus="sexo";
 	}
	
	//validate field data nascimento
	if(regform.dia.options[regform.dia.selectedIndex].value != "" && regform.mes.options[regform.mes.selectedIndex].value !="" && regform.ano.value!="Ano"){	
		if(regform.dia.options[regform.dia.selectedIndex].value >= 1){
			if(regform.mes.options[regform.mes.selectedIndex].value >= 1){
				if(regform.ano.value != "Ano" && (regform.ano.value.length == 4) && (regnum.test(regform.ano.value)==true)){
					regform.datanasc.value=regform.ano.value+"-"+regform.mes.options[regform.mes.selectedIndex].value+"-"+regform.dia.options[regform.dia.selectedIndex].value;
				}else{
					msg1=msg1+"- data de nascimento\n";	
					if(fieldfocus=="") 
						fieldfocus="dia";
				}
			}		
		}
	}else{
		msg=msg+"- data de nascimento\n";
		if(fieldfocus=="") 
			fieldfocus="dia";
	}

//alert("dif " + (regform.email.value != regform.hemail.value));
//alert("password vazia" + (regform.actual_password.value == ""));					
	//validate field email
	if(regform.email.value != ""){
		var email=regform.email.value;
		resemail = (reg.test(email));
		if(resemail==false){
			msg1=msg1+"- email\n";
			if(fieldfocus=="") 
				fieldfocus="email";
		} else if (regform.actual_password.value.length == 0 && (regform.email.value != regform.hemail.value)){ 		
			msg=msg+"- password actual vazia\n";
			if(fieldfocus=="") 
				fieldfocus="email";
		}
	}
	
	//validate telefone	
	if(regform.contacto1.value.length != 0 && (regtelef.test(regform.contacto1.value) || regform.contacto1.value.length < 9)){		
		msg1=msg1+"- telefone (é um campo numérico composto por 9 digitos)\n";
		if(fieldfocus=="") 
			fieldfocus="contacto1";
	}

	//validate telemovel	
	try{
		if(regform.contacto2.value.length != 0 && (regtelef.test(regform.contacto2.value) || regform.contacto2.value.length < 9)){
			msg1=msg1+"- telemóvel (é um campo numérico composto por 9 digitos)\n";
			if(fieldfocus=="") 
				fieldfocus="contacto2";
		}
	}catch(e){}

	if(regform.morada.value== ""){
		msg=msg+"- morada\n";
		if(fieldfocus=="") 
			fieldfocus="morada";
	}	
		

	if(regform.codpostal.value== ""){
		msg=msg+"- código postal\n";
		if(fieldfocus=="") 
			fieldfocus="codpostal";
	}	
	
	if(regcodpostal.test(regform.codpostal.value) || regform.codpostal.value.length <4){
		msg1=msg1+"- código postal (é um campo numérico composto por 4 + 3 digitos)\n";
		if(fieldfocus=="") 
			fieldfocus="codpostal";
	}	
	
	if((regform.codpostal_1.value != "" && regcodpostal.test(regform.codpostal_1.value)) || regform.codpostal_1.value.length <3){
		msg1=msg1+"- código postal (é um campo numérico composto 4 + 3 digitos)\n";
		if(fieldfocus=="") 
			fieldfocus="codpostal_1";
	}
	
	if(regform.codpostal.value != "" && regform.codpostal_1.value != "")
		regform.hcodpostal.value=regform.codpostal.value+"-"+regform.codpostal_1.value;
	else
		regform.hcodpostal.value=regform.codpostal.value;
		
	if(regform.localidade.value== ""){
		msg=msg+"- localidade (código postal)\n";
		if(fieldfocus=="") 
			fieldfocus="localidade";	
	}	
		
	if(regform.pais.options[regform.pais.selectedIndex].value == ""){
		msg=msg+"- país\n";
		if(fieldfocus=="") 
			fieldfocus="pais";
	}
	regform.hpais.value=regform.pais.options[regform.pais.selectedIndex].text;	

	if(regform.num_contribuinte.value!= "" && regnumerico.test(regform.num_contribuinte.value)){
		msg=msg+"- numero de contribuinte (é um campo numérico com 9 digitos)\n";
		if(fieldfocus=="") 
			fieldfocus="num_contribuinte";
	}
	if(regform.num_cliente_cgd.value!= "" && regnumerico.test(regform.num_cliente_cgd.value)){
		msg=msg+"- numero de cliente CGD (é um campo numérico)\n";
		if(fieldfocus=="") 
			fieldfocus="num_cliente_cgd";
	}
	if(regform.num_conta_cgd.value!= "" && regnumerico.test(regform.num_conta_cgd.value)){
		msg=msg+"- numero de conta CGD (é um campo numérico com 13 digitos)\n";
		if(fieldfocus=="") 
			fieldfocus="num_conta_cgd";
	}



	if(msg !=""){
		msg="Os campos seguintes são de preenchimento obrigatório:\n"+msg;
	}
	
	if(msg1 !=""){
		msg=msg+"\nOs campos seguintes não estão correctamente preenchidos:\n"+msg1;
	}	
					
	if(msg !=""){
        alert(msg);
		fld=eval("regform."+fieldfocus);
		fld.focus();
        return false;
	}   		
	
}


