function checkmod(num) {
      val=0;
      for (pos=0; pos<num.length-1; ++pos) {
        val += (1 * num.charAt(pos)) * (9 - pos);
      }
      ctl = val % 11 ? (11 - val % 11) % 10 : 0;

      return ctl == (1 * num.charAt(pos));
    }

function validanif(num) {
      var erro="";
      if(num.length != 9) erro = "[Contribuinte] inválido!\n";
      if (!checkmod(num)) erro = "[Contribuinte] inválido!\n";
      return (erro);
    }

function verifica_numero(campo,nome) {
	var erroi = "";
    var re = /^\d+(\.\d+)?$/;
  	if (!re.test(campo)) erroi = "[" + nome + "] inválido! Foram detectados caracteres inválidos\n";
    return(erroi);
}

function verifica_contacto(campo,nome) {
	var erroi = "";
    var re = /^\d+(\.\d+)?$/;
  	if (!re.test(campo)) erroi = "[" + nome + "] inválido! Foram detectados caracteres inválidos\n";
    if (campo.length<8) erroi = "[" + nome + "] inválido! O " + nome + " deve ter no mínimo 8 caracteres\n";
    return(erroi);
}

//Newsletter
	function verifica_email(campo) {
        var erroi = "";
		var emailFilter=/^.+@.+\..{2,3}$/;
		if (!(emailFilter.test(campo))) erroi = "[E-Mail] inválido!\n";
        var illegalChars= /[\(\)\<\>\,\;\:\\\/\"\[\]]/
		if ((campo.match(illegalChars)) && (erroi=="")) erroi = "[E-Mail] inválido!\n";
        return(erroi);
    }

function submeter_pa() {
      var erro = "";

      if (document.formulario.preco_desde.value!="")  erro = erro + verifica_numero(document.formulario.preco_desde.value,'Preço desde');

      if (document.formulario.preco_ate.value!="")  erro = erro + verifica_numero(document.formulario.preco_ate.value,'Preço até');

      if (erro!="") {
        window.alert("ERROS DETECTADOS NO FORMULÁRIO:\n\n" + erro);
      } else document.formulario.submit();
}


function submeter() {
      var erro = "";

      if (document.formulario.nome.value=="")  erro = erro + "Tem que introduzir o Nome!\n";

      if (document.formulario.mensagem.value=="")  erro = erro + "Tem que introduzir a mensagem!\n";

      if (document.formulario.email.value!="") erro = erro + verifica_email(document.formulario.email.value);

      if (erro!="") {
        window.alert("ERROS DETECTADOS NO FORMULÁRIO:\n\n" + erro);
      } else document.formulario.submit();
}

function submeter_news() {
      var erro = "";

      if (document.nl.email.value=="") erro = erro + "Tem que introduzir o email!\n";
      	else erro = erro + verifica_email(document.nl.email.value);

      if (erro!="") {
        window.alert("ERROS DETECTADOS NO FORMULÁRIO:\n\n" + erro);
      } else document.nl.submit();
}

	function submeter_recuperar() {
      var erro = "";

      if (document.subrec.email_rec.value=="") erro = erro + "[E-Mail] obrigatório!\n";
      	else erro = erro + verifica_email(document.subrec.email_rec.value);

	  if (erro!="") {
        window.alert("ERROS DETECTADOS NO FORMULÁRIO:\n\n" + erro);
      } else document.subrec.submit();
	}


function submeter_registo() {
      var erro = "";

      if (document.registo_cliente.tipo[1].checked==true) {
	      if (document.registo_cliente.responsavel.value=="")  erro = erro + "Tem que introduzir o nome do responsável!\n";

	      if (document.registo_cliente.nome.value=="")  erro = erro + "Tem que introduzir o nome da Empresa!\n";

	      if (document.registo_cliente.morada.value=="")  erro = erro + "Tem que introduzir a Morada!\n";

	      if ((document.registo_cliente.cp1.value=="") || (document.registo_cliente.cp2.value=="") || (document.registo_cliente.cp3.value=="") || (document.registo_cliente.cp1.value.length!=4) || (document.registo_cliente.cp2.value.length!=3)) {erro = erro + "O Código Postal está errado!\n";}

   		  if (document.registo_cliente.email.value=="") erro = erro + "Tem que introduzir o E-Mail!\n"; else erro = erro + verifica_email(document.registo_cliente.email.value);

    	  if ((document.registo_cliente.telefone.value=="") && (document.registo_cliente.telemovel.value=="")) erro = erro + "Tem que introduzir pelo menos um contacto telefónico!\n";

    	  if (document.registo_cliente.telefone.value!="") erro = erro + verifica_contacto(document.registo_cliente.telefone.value,'Telefone');

    	  if (document.registo_cliente.fax.value!="") erro = erro + verifica_contacto(document.registo_cliente.fax.value,'Fax');

    	  if (document.registo_cliente.telemovel.value!="") erro = erro + verifica_contacto(document.registo_cliente.telemovel.value,'Telemóvel');

	      if (document.registo_cliente.contribuinte.value=="") erro = erro + "[Contribuinte] obrigatório!\n";
    	  	else erro = erro + validanif(document.registo_cliente.contribuinte.value);
	  } else {
	      if (document.registo_cliente.xnome.value=="")  erro = erro + "Tem que introduzir o seu nome!\n";

	      if (document.registo_cliente.xmorada.value=="")  erro = erro + "Tem que introduzir a Morada!\n";

	      if ((document.registo_cliente.xcp1.value=="") || (document.registo_cliente.xcp2.value=="") || (document.registo_cliente.xcp3.value=="") || (document.registo_cliente.xcp1.value.length!=4) || (document.registo_cliente.xcp2.value.length!=3)) erro = erro + "O Código Postal está errado!\n";

   		  if (document.registo_cliente.xemail.value=="") erro = erro + "Tem que introduzir o E-Mail!\n"; else erro = erro + verifica_email(document.registo_cliente.xemail.value);

    	  if ((document.registo_cliente.xtelefone.value=="") && (document.registo_cliente.xtelemovel.value=="")) erro = erro + "Tem que introduzir pelo menos um contacto telefónico!\n";

    	  if (document.registo_cliente.xtelefone.value!="") erro = erro + verifica_contacto(document.registo_cliente.xtelefone.value,'Telefone');

    	  if (document.registo_cliente.xtelemovel.value!="") erro = erro + verifica_contacto(document.registo_cliente.xtelemovel.value,'Telemóvel');

	      if (document.registo_cliente.xcontribuinte.value=="") erro = erro + "[Contribuinte] obrigatório!\n";
    	  	else erro = erro + validanif(document.registo_cliente.xcontribuinte.value);
      }

      if (document.registo_cliente.password_crf.value=="") erro = erro + "[Password] obrigatória!\n";
   	  	else if (document.registo_cliente.password_crf.value.length<4) erro = erro + "[Password] inválida. A Password deve ter no minimo 4 caracteres!\n";
       		else if (document.registo_cliente.password_crf.value !=  document.registo_cliente.password_ccc.value) erro = erro + "[Confirmação de Password] inválida. A Password e a confirmação são diferentes!\n";

      if (erro!="") {
        window.alert("ERROS DETECTADOS NO FORMULÁRIO:\n\n" + erro);
      } else document.registo_cliente.submit();
}


function submeter_pagamento(num) {
      var erro = "";
      var conta = 0;

      if (num != 1) {
	      for(n=0;n<num;n++) {
	        if (document.registo_pagamento.modo[n].checked) conta = conta+1;
	      }
      } else {
	        if (document.registo_pagamento.modo.checked) conta = conta+1;
      }

      if (conta == 0) erro = "Seleccione um modo de pagamento!";
      if (erro!="") {
        window.alert("ERROS DETECTADOS NO FORMULÁRIO:\n\n" + erro);
      } else document.registo_pagamento.submit();
}

function submeter_entrega() {
      var erro = "";

      if (document.registo_entrega.tipo.value!="333") {
          if (document.registo_entrega.tipo.value!="123") {
			  if ((!document.registo_entrega.tipo[0].checked) && (!document.registo_entrega.tipo[1].checked)) erro = erro + "Seleccione um dos tipo de entrega";
	          if (document.registo_entrega.tipo[1].checked) {
                if ((!document.registo_entrega.local[0].checked) && (!document.registo_entrega.local[1].checked)) erro = erro + "Indique o local de entrega pretendido";
                if (document.registo_entrega.local[0].checked) {
	                  if (document.registo_entrega.morada.value=="")  erro = erro + "Tem que introduzir a Morada!\n";

	                  if ((document.registo_entrega.cp1.value=="") || (document.registo_entrega.cp2.value=="") || (document.registo_entrega.cp3.value=="") || (document.registo_entrega.cp1.value.length!=4) || (document.registo_entrega.cp2.value.length!=3)) {erro = erro + "O Código Postal está errado!\n";}

	                  if ((document.registo_entrega.telefone.value=="") && (document.registo_entrega.telemovel.value=="")) erro = erro + "Tem que introduzir pelo menos um contacto telefónico!\n";

	                  if (document.registo_entrega.telefone.value!="") erro = erro + verifica_contacto(document.registo_entrega.telefone.value,'Telefone');

	                  if (document.registo_entrega.telemovel.value!="") erro = erro + verifica_contacto(document.registo_entrega.telemovel.value,'Telemóvel');
	            }
                if (document.registo_entrega.local[1].checked) {
	                  if (document.registo_entrega.xmorada.value=="")  erro = erro + "Tem que introduzir a Morada!\n";

	                  if ((document.registo_entrega.xcp1.value=="") || (document.registo_entrega.xcp2.value=="") || (document.registo_entrega.xcp3.value=="") || (document.registo_entrega.xcp1.value.length!=4) || (document.registo_entrega.xcp2.value.length!=3)) erro = erro + "O Código Postal está errado!\n";

	                  if ((document.registo_entrega.xtelefone.value=="") && (document.registo_entrega.xtelemovel.value=="")) erro = erro + "Tem que introduzir pelo menos um contacto telefónico!\n";

	                  if (document.registo_entrega.xtelefone.value!="") erro = erro + verifica_contacto(document.registo_entrega.xtelefone.value,'Telefone');

	                  if (document.registo_entrega.xtelemovel.value!="") erro = erro + verifica_contacto(document.registo_entrega.xtelemovel.value,'Telemóvel');
	            }
	          }
	      } else {
            if ((!document.registo_entrega.local[0].checked) && (!document.registo_entrega.local[1].checked)) erro = erro + "Indique o local de entrega pretendido";
            if (document.registo_entrega.local[0].checked) {
	              if (document.registo_entrega.morada.value=="")  erro = erro + "Tem que introduzir a Morada!\n";

	              if ((document.registo_entrega.cp1.value=="") || (document.registo_entrega.cp2.value=="") || (document.registo_entrega.cp3.value=="") || (document.registo_entrega.cp1.value.length!=4) || (document.registo_entrega.cp2.value.length!=3)) {erro = erro + "O Código Postal está errado!\n";}

	              if ((document.registo_entrega.telefone.value=="") && (document.registo_entrega.telemovel.value=="")) erro = erro + "Tem que introduzir pelo menos um contacto telefónico!\n";

	              if (document.registo_entrega.telefone.value!="") erro = erro + verifica_contacto(document.registo_entrega.telefone.value,'Telefone');

	              if (document.registo_entrega.telemovel.value!="") erro = erro + verifica_contacto(document.registo_entrega.telemovel.value,'Telemóvel');
	        }
            if (document.registo_entrega.local[1].checked) {
	              if (document.registo_entrega.xmorada.value=="")  erro = erro + "Tem que introduzir a Morada!\n";

	              if ((document.registo_entrega.xcp1.value=="") || (document.registo_entrega.xcp2.value=="") || (document.registo_entrega.xcp3.value=="") || (document.registo_entrega.xcp1.value.length!=4) || (document.registo_entrega.xcp2.value.length!=3)) erro = erro + "O Código Postal está errado!\n";

	              if ((document.registo_entrega.xtelefone.value=="") && (document.registo_entrega.xtelemovel.value=="")) erro = erro + "Tem que introduzir pelo menos um contacto telefónico!\n";

	              if (document.registo_entrega.xtelefone.value!="") erro = erro + verifica_contacto(document.registo_entrega.xtelefone.value,'Telefone');

	              if (document.registo_entrega.xtelemovel.value!="") erro = erro + verifica_contacto(document.registo_entrega.xtelemovel.value,'Telemóvel');
	        }
	      }
      }

      if (erro!="") {
        window.alert("ERROS DETECTADOS NO FORMULÁRIO:\n\n" + erro);
      } else document.registo_entrega.submit();
}