
function showNote(title, message, colorBack, back, textColor, typeFont, sizeFont, w, h) {
 var windowNote;
  windowNote = window.open('','Note','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,copyhistory=no,' + 'width=' + w + '' + ',height= ' + h + '' + ',left=' + (screen.width-w)/2 + '' + '' + ',top=' + (screen.height-h)/2 + '');
  text = '<HTML><HEAD><TITLE>' + title + '</TITLE></HEAD><BODY BACKGROUND=' + '"' + back + '"' + ' BGCOLOR=' + '"' + colorBack + '" aLink=blue vLink=blue>';
  text +='<P><FONT FACE="' + typeFont +'"';
  text += ' SIZE=' + sizeFont; 
  text += ' COLOR=' + '"' + textColor +'"><div style="text-align:justify;">';
  text += message + '</div></FONT>';
  text += '</P><CENTER><A href="" onClick="window.close()"><font face="' + typeFont + '" size=' + sizeFont + '>fechar janela</font></A></CENTER>';
  text += '</' + 'BODY' + '><' + '/HTML' + '>';
  windowNote.document.write(text);
  windowNote.resizeTo(w,h);
  windowNote.focus();
  windowNote.document.close();
  return false;
}

function popup(title, message, colorBack, back, textColor, typeFont, sizeFont, w, h) {
 var windowPopup;
  windowPopup = window.open('','Info','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,' + 'width=' + w + '' + ',height=' + h + '' + ',left=' + (screen.width-w)/2 + '' + '' + ',top=' + (screen.height-h)/2 + '');
  text = '<HTML><HEAD><TITLE>' + title + '</TITLE></HEAD><BODY BACKGROUND=' + '"' + back + '"' + ' BGCOLOR=' + '"' + colorBack + '" aLink=blue vLink=blue>';
  text +='<P><FONT FACE="' + typeFont +'"';
  text += ' SIZE=' + sizeFont; 
  text += ' COLOR=' + '"' + textColor +'"><div style="text-align:justify;">';
  text += message + '</div></FONT>';
  text += '</P><CENTER><A href="" onClick="window.close()"><font face="' + typeFont + '" size=' + sizeFont + '>fechar janela</font></A></CENTER>';
  text += '</' + 'BODY' + '><' + '/HTML' + '>';
  windowPopup.document.write(text);
  windowPopup.resizeTo(w,h);
  windowPopup.focus();
  windowPopup.document.close();
  return false;
}

function inputConfPag() {
  var doc = document.formconfcomp.documento.value;
  var mont = document.formconfcomp.montante.value;
  if (doc.length<1) {
    alert("É necessário introduzir o número do documento a que se refere o pagamento!");
    document.formconfcomp.documento.focus();
    return false;
  }
  if (mont.length<1) {
    alert("É necessário introduzir o montante para pagamento!");
    document.formconfcomp.montante.focus();
    return false;
  }
  return true;
}

function inputPagVisa() {
  var nome = document.formpagvisa.nome.value;
  var card1 = document.formpagvisa.card1.value;
  var card2 = document.formpagvisa.card2.value;
  var card3 = document.formpagvisa.card3.value;
  var card4 = document.formpagvisa.card4.value;
  var csv = document.formpagvisa.csv.value;
  var valmes = document.formpagvisa.valmes.value;
  var valano = document.formpagvisa.valano.value;
  if (nome.length<1) {
    alert("É necessário introduzir o nome que consta no cartão de crédito!");
    document.formpagvisa.nome.focus();
    return false;
  }
  if (card1.length<4) {
    alert("É necessário introduzir o número do cartão de crédito!");
    document.formpagvisa.card1.focus();
    return false;
  }
  if (card2.length<4) {
    alert("É necessário introduzir o número do cartão de crédito!");
    document.formpagvisa.card2.focus();
    return false;
  }
  if (card3.length<4) {
    alert("É necessário introduzir o número do cartão de crédito!");
    document.formpagvisa.card3.focus();
    return false;
  }
  if (card4.length<4) {
    alert("É necessário introduzir o número do cartão de crédito!");
    document.formpagvisa.card4.focus();
    return false;
  }
  if (valmes.length<2) {
    alert("É necessário introduzir a validade do cartão!");
    document.formpagvisa.valmes.focus();
    return false;
  }
  if (valano.length<2) {
    alert("É necessário introduzir a validade do cartão!");
    document.formpagvisa.valano.focus();
    return false;
  }
  return true;
}

function format2Dec(valor) {
  val = ((Math.round(valor * 100)) / 100).toString();
  pos = val.indexOf(".");
  if (pos==-1) return (val+".00");
  if (val.substring(pos).length==2) return (val+"0");
  return val;
}

function renovar_quiz() {
  var windowPopup;
  w=790;
  h=590;
  windowPopup = window.open('','Questionário','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width='+w+',height='+h+',left=' + (screen.width-w)/2 + ',top=' + (screen.height-h)/2 + '');
  windowPopup.document.writeln('<html><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Renovação das Assinaturas do Diário da República</title>');
  windowPopup.document.writeln('<LINK REL="STYLESHEET" TYPE="text/css" HREF="/incm.css"><SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript" SRC="/incm.js"></SCRIPT></head><body COLOR="BLACK" BGCOLOR="#FFFFE6" alink="blue" vlink="blue">');
  windowPopup.document.writeln('<FORM name="formquiz" action="http://www.incm.pt/servlets/renovarquiz" method="post">');
  windowPopup.document.writeln('<P><CENTER><TABLE cellpadding="0" cellspacing="0" width="90%">');
  windowPopup.document.writeln('<TR><TD align="center" class="TXT"><H4>Agradecemos a sua colaboração no preenchimento do quadro seguinte que se destina a melhor caracterizar os assinantes do Diário da República</H4></TD></TR>');
  windowPopup.document.writeln('<TR><TD align="center" class="TXT"><table cellpadding="0" cellspacing="10" width="100%">');
  windowPopup.document.writeln('<tr><td align="right" class="TXT" valign="middle"><b>Administração Pública</b></td>');
  windowPopup.document.writeln('<td><table width="100%"><tr><td align="left" class="TXT">Central</td><td align="right"><input type="radio" name="OPCAO" value="Administracao Publica - Central"></td></tr>');
  windowPopup.document.writeln('<tr><td align="left" class="TXT">Local/Regional</td><td align="right"><input type="radio" name="OPCAO" value="Administracao Publica - Local/Regional"></td></tr>');
  windowPopup.document.writeln('<tr><td align="left" class="TXT">Outros Org. Públicos</td><td align="right"><input type="radio" name="OPCAO" value="Administracao Publica - Outros Org. Publicos"></td></tr>');
  windowPopup.document.writeln('<tr><td align="left" class="TXT">Tribunais</td><td align="right"><input type="radio" name="OPCAO" value="Administracao Publica - Tribunais"></td></tr>');
  windowPopup.document.writeln('<tr><td align="left" class="TXT">Magistrados</td><td align="right"><input type="radio" name="OPCAO" value="Administracao Publica - Magistrados"></td></tr>');
  windowPopup.document.writeln('<tr><td align="left" class="TXT">Notários/Conservatórias</td><td align="right"><input type="radio" name="OPCAO" value="Administracao Publica - Notarios/Conservatorias"></td></tr></table></td>');
  windowPopup.document.writeln('<td align="right" class="TXT" valign="middle"><b>Empresas</b></td>');
  windowPopup.document.writeln('<td><table width="100%"><tr><td align="left" class="TXT">Indústrias Transformadoras</td><td align="right"><input type="radio" name="OPCAO" value="Empresas - Industrias Transformadoras"></td></tr>');
  windowPopup.document.writeln('<tr><td align="left" class="TXT">Construção e Obras Públicas</td><td align="right"><input type="radio" name="OPCAO" value="Empresas - Construcao e Obras Publicas"></td></tr>');
  windowPopup.document.writeln('<tr><td align="left" class="TXT">Advogados/Solicitadores e Soc. de Advogados</td><td align="right"><input type="radio" name="OPCAO" value="Empresas - Advogados/Solicitadores e Soc. de Advogados"></td></tr>');
  windowPopup.document.writeln('<tr><td align="left" class="TXT">Consultores/Auditoria/Contabilidade e Afins</td><td align="right"><input type="radio" name="OPCAO" value="Empresas - Consultores/Auditoria/Contabilidade e Afins"></td></tr>');
  windowPopup.document.writeln('<tr><td align="left" class="TXT">Arquitectura e Engenharia</td><td align="right"><input type="radio" name="OPCAO" value="Empresas - Arquitectura e Engenharia"></td></tr>');
  windowPopup.document.writeln('<tr><td align="left" class="TXT">Outros Serviços</td><td align="right"><input type="radio" name="OPCAO" value="Empresas - Outros Servicos"></td></tr>');
  windowPopup.document.writeln('<tr><td align="left" class="TXT">Outras Empresas</td><td align="right"><input type="radio" name="OPCAO" value="Empresas - Outras Empresas"></td></tr>');
  windowPopup.document.writeln('</table></td></tr>');
  windowPopup.document.writeln('<tr><td align="right" class="TXT" valign="middle"><b>Ensino</b></td>');
  windowPopup.document.writeln('<td><table width="100%"><tr><td align="left" class="TXT">Escolas Básicas e Secundárias</td><td align="right"><input type="radio" name="OPCAO" value="Ensino - Escolas Basicas e Secundarias"></td></tr>');
  windowPopup.document.writeln('<tr><td align="left" class="TXT">Escolas Superiores</td><td align="right"><input type="radio" name="OPCAO" value="Ensino - Escolas Superiores"></td></tr>');
  windowPopup.document.writeln('<tr><td align="left" class="TXT">Formação Profissional</td><td align="right"><input type="radio" name="OPCAO" value="Ensino - Formacao Profissional"></td></tr>');
  windowPopup.document.writeln('<tr><td align="left" class="TXT">Outro</td><td align="right"><input type="radio" name="OPCAO" value="Ensino - Outro"></td></tr></table></td>');
  windowPopup.document.writeln('<td align="right" class="TXT" valign="middle"><b>Associações Profissionais</b></td>');
  windowPopup.document.writeln('<td><table width="100%"><tr><td align="left" class="TXT">Associação Empresarial</td><td align="right"><input type="radio" name="OPCAO" value="Associacoes Profissionais - Associacao Empresarial"></td></tr>');
  windowPopup.document.writeln('<tr><td align="left" class="TXT">Sindicatos</td><td align="right"><input type="radio" name="OPCAO" value="Associacoes Profissionais - Sindicatos"></td></tr>');
  windowPopup.document.writeln('<tr><td align="left" class="TXT">Câmaras de Comércio</td><td align="right"><input type="radio" name="OPCAO" value="Associacoes Profissionais - Camaras de Comercio"></td></tr>');
  windowPopup.document.writeln('<tr><td align="left" class="TXT">Outros</td><td align="right"><input type="radio" name="OPCAO" value="Associacoes Profissionais - Outros"></td></tr>');
  windowPopup.document.writeln('</table></td></tr>');
  windowPopup.document.writeln('<tr><td align="right" class="TXT" valign="middle"><b>Meios Comunic. Social</b></td>');
  windowPopup.document.writeln('<td align="left"><input type="radio" name="OPCAO" value="Meios Comunic. Social"></td></tr>');
  windowPopup.document.writeln('</table></TD></TR></TABLE></CENTER></P>');
  windowPopup.document.writeln('<CENTER><A href="javascript:window.document.formquiz.submit()" onmouseover="window.status=\'\';return true"><font class="S12"><b>submeter</b></font></A></CENTER>');
  windowPopup.document.writeln('</FORM>');
  windowPopup.document.writeln('</body></html>');
  windowPopup.resizeTo(w,h);
  windowPopup.focus();
  windowPopup.document.close();
  return false;
}

function nested_change(me) {
  var selant = document.getElementById(me.hide + '_' + document.getElementById(me.hide).value);
  if (selant) selant.style.display='none';
  document.getElementById(me.hide).value=me.value;
  var selnew = document.getElementById(me.hide + '_' + me.value);
  if (selnew) {
    selnew.style.display='inline';
    nested_change(selnew);
  }
}

function radiosubform_change(me) {
  var nameradioant = me.name+document.getElementById(me.name).value;
  var sfant = document.getElementById(nameradioant+'_sf');
  if (sfant) sfant.style.display='none';
  sfant = document.getElementById(nameradioant+'_sep');
  if (sfant) sfant.style.display='none';
  document.getElementById(me.name).value=me.value;
  var sfnew = document.getElementById(me.id+'_sf');
  if (sfnew) sfnew.style.display='inline';
  sfnew = document.getElementById(me.id+'_sep');
  if (sfnew) sfnew.style.display='inline';
}

function sum(nomes) {
  var total = 0;
  var parcial_int;
  var parcial_dec;
  for (var i = 1; i < nomes.length; i++) {
    parcial_int = document.getElementById('SUMINT_'+nomes[i]);
    if (parcial_int) {
      if ((isNaN(parcial_int.value)) || (parcial_int.value < 0) || (parcial_int.value % 1 != 0)) parcial_int.value = 0;
      total += (parcial_int.value * 1);
    }
    parcial_dec = document.getElementById('SUMDEC_'+nomes[i]);
    if (parcial_dec) {
      if ((isNaN(parcial_dec.value)) || (parcial_dec.value < 0) || (parcial_dec.value % 1 != 0)) parcial_dec.value = 0;
      if ((parcial_dec.value * 1) < 10) total += (parcial_dec.value * 1) / 10;
      else total += (parcial_dec.value * 1) / 100;
    }
  }
  var total_int = document.getElementById('SUMINT_'+nomes[0]);
  var total_dec = document.getElementById('SUMDEC_'+nomes[0]);
  if (total_int) {
    if (total_dec) total_int.value = total-(total%1);
    else total_int.value = Math.round(total);
  }
  var total_dec_value = Math.round((total*100)%100);
  if (total_dec) {
    if (total_dec_value < 10) total_dec.value = '0' + total_dec_value;
    else total_dec.value = total_dec_value;
  }
  if ((total_int) && (total_int.onchange)) total_int.onchange();
}

// Utilizado para assinar digitalmente

			function signsend(){
				var res;
				var id;

				document.formcertifyeform.signature.value = "";
				document.formcertifyeform.timeStamp.value = "";
				
				id = "id";
				res = Signer.signTS(id,document.formcertifyeform.input.value);
				if ( res != 0 ) {
				  document.formcertifyeform.confirmado.value = "false";
				  document.formcertifyeform.erroacertificar.value = "true";
					printErrorMessage(res);
				} else {
					document.formcertifyeform.signature.value = Signer.getSignature(id);
					if ( document.formcertifyeform.signature.value == "" ) {
						// Erro - Não existe assinatura
				    document.formcertifyeform.confirmado.value = "false";
						document.formcertifyeform.erroacertificar.value = "true";
						alert ( "Não existe assinatura com o referido identificador" );
					} else {
						document.formcertifyeform.timeStamp.value = Signer.getTimeStamp(id);
						if ( document.formcertifyeform.timeStamp.value == "" ) {
						// Erro - Não existe timestamp
				    document.formcertifyeform.confirmado.value = "false";
						document.formcertifyeform.erroacertificar.value = "true";
						alert ( "Não existe timestamp com o referido identificador" );
						}
					}
				}
				
		    //document.formcertifyeform.confirmado.value = "false";
				//document.formcertifyeform.erroacertificar.value = "true";
				
			}

			function printErrorMessage( res ) {
				if( res == 1 ) {
					alert( "Erro 1 - Documento em branco para assinar!" );
				}
				else if( res == 2 ) {
					alert( "Erro 2 - Não foi encontrado certificado válido neste browser!" );
				}
				else if( res == 3 ) {
					alert( "Erro 3 - Operação cancelada (Escolha de certificado)!" );
				}
				else if( res == 4 ) {
					alert( "Não foi possível emitir um Time-stamp.\nCertifique-se de que o componente de assinatura possui conexão com:\nhttps://www.multicert.com" );
				}
				else if( res == 5 ) {
					alert( "Resposta de erro do servidor de Time-stamp!" );
				}
				else if( res == 6 ) {
					alert( "Certificado inválido para efectuar pedido de Time-stamp!" );
				}
				else if( res >= 10 && res <= 19 ) {
					alert( "Erro interno: " && res );
				}
				else if( res >= 20 && res <= 29 ) {
					alert( "Erro no servidor: " && res );
				}
				else {
					alert( "Erro Interno (" + res + ") !\nPor favor tente novamente..." );
				}
			}

		  function confirmarCertificacao() {
		    if (document.formcertifyeform.confirmado.value == "false") {
		      document.formcertifyeform.confirmado.value = "true";
		      document.formcertifyeform.oldmethod.value = "false";
	        signsend();
			    if (document.formcertifyeform.erroacertificar.value == "true") {
			      var taboldmethod = document.getElementById('taboldmethod');
			      if (taboldmethod) taboldmethod.style.display='inline';
			      document.formcertifyeform.confirmado.value = "false";
			    } else if (( document.formcertifyeform.signature.value != "" ) && ( document.formcertifyeform.timeStamp.value != "" )) {
			      document.formcertifyeform.submit();
			    }
		    }
		  }
		  
		  function confirmarOldmethod() {
		    if (document.formcertifyeform.confirmado.value == "false") {
		      document.formcertifyeform.confirmado.value = "true";
		      document.formcertifyeform.oldmethod.value = "true";
		      document.formcertifyeform.submit();
		    }
		  }

// Fim das funcoes utilizadas para assinar digitalmente




function substituiCaracteres(campo) {
  var allOk = true;
  var conteudo = campo.value;
  
  // Alterar caracteres invalidos mas conhecidos
  var output = "";
  for (var i = 0; i < conteudo.length; i++) {
    codASCII = conteudo.charCodeAt(i);
    
    switch(codASCII) {
      // Tab
      case (9): output += " "; allOk = false; break;
      
      // Travessoes
      case (8211): output += "-"; allOk = false; break;
      case (8226): output += "-"; allOk = false; break;
      case (8722): output += "-"; allOk = false; break;
      case (9472): output += "-"; allOk = false; break;
      case (61607): output += "-"; allOk = false; break;
      
      // Aspas curvas
      case (8220): output += "\""; allOk = false; break;
      case (8221): output += "\""; allOk = false; break;
      
      // Plicas curvas
      case (8216): output += "'"; allOk = false; break;
      case (8217): output += "'"; allOk = false; break;
      
      // Operadores de funcoes
      case (8804): output += "<="; allOk = false; break;
      case (8805): output += ">="; allOk = false; break;
      default: output += conteudo.charAt(i);
    }
  }
  if (!allOk) {
    campo.value = output;
    //campo.focus();
    //alert("Os caracteres especiais foram substituidos por caracteres standard.\nReveja o conteudo do campo!");
    return false;
  }
  return true;
}


function validaCaracteres(campo) {  
  var conteudo = campo.value;
  
  // Testar caracteres validos
  for (var i = 0; i < conteudo.length; i++) {
    codASCII = conteudo.charCodeAt(i);
    
    // Quebra de linha
    if (codASCII != 10 && codASCII != 13
    // Caracteres imprimíveis
    && (codASCII < 32 || codASCII > 255)
    // Euro
    && codASCII != 8364) {
      
      var fraseIni = i-15; if (fraseIni < 0) fraseIni = 0;
      var fraseFim = i+15; if (fraseIni > conteudo.length) fraseFim = conteudo.length;
      var frase = conteudo.substring(fraseIni,fraseFim);
      if (fraseIni > 0) frase = "... " + frase;
      if (fraseFim < conteudo.length) frase = frase + " ...";
      campo.focus();
      var caracter = String.fromCharCode(codASCII);
      if (campo.createTextRange) {
        var posicionamento = campo.createTextRange(caracter);
        posicionamento.findText(caracter);
        posicionamento.select();
      } else {
        var mt = window.find(caracter, false, false, false, true, false, false);
      }
      alert("O campo contém caracteres inválidos (" + conteudo.charAt(i) + "):\n" + frase + "\nDeve retirar o caracter inválido para submeter o acto correctamente sem erros.");
      //alert("O campo contém caracteres inválidos (" + conteudo.charAt(i) + " - " + codASCII + "):\n" + frase);
      return false;
    }
  }
  return true;
}



function submeterEform() {
  var campos = document.formreqeform.elements;
  var allOk = true;
  for (var ca = 0; ca < campos.length; ca++) {
    if (!substituiCaracteres(campos[ca])) allOk = false;
  }
  if (!allOk) alert("Informação:\nOs caracteres especiais foram substituidos por caracteres standard.\nAntes de submeter o acto deverá rever o seu conteúdo.");
  for (var c = 0; c < campos.length; c++) {
    if (!validaCaracteres(campos[c])) {
      return;
    } 
  }
  
  if (document.formreqeform.submited.value == "false") {
    document.formreqeform.submited.value = "true";
    var efErro = document.getElementById('EF_Erro');
    var efPreenchimento = document.getElementById('EF_Preenchimento');
    var efSubmissao = document.getElementById('EF_Submissao');
    if (efErro) efErro.style.display='none';
    if ((efPreenchimento) && (efSubmissao)) {
      efPreenchimento.style.display='none';
      efSubmissao.style.display='inline';
    }
    document.formreqeform.submit();
  }
}


/*
function submeterEform() {
  
  if (document.formreqeform.submited.value == "false") {
    document.formreqeform.submited.value = "true";
    var efErro = document.getElementById('EF_Erro');
    var efPreenchimento = document.getElementById('EF_Preenchimento');
    var efSubmissao = document.getElementById('EF_Submissao');
    if (efErro) efErro.style.display='none';
    if ((efPreenchimento) && (efSubmissao)) {
      efPreenchimento.style.display='none';
      efSubmissao.style.display='inline';
    }
    document.formreqeform.submit();
  }
}
*/


function copiarCampos(src,dst) {
  for (var i = 0; i < src.length; i++) {
    dst[i].value = src[i].value;
  }
}



