<!DOCTYPE html>
<html lang="pt">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <base target="_top">
  <style>
    body {
      font-family: Arial, sans-serif;
      background-color: #f2f2f2;
      margin: 0;
      padding: 0;
      color: #333;
    }

    .container {
      background-color: #fff;
      padding: 20px;
      border-radius: 8px;
      max-width: 800px;
      margin: 20px auto;
      box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
    }

    .form-group {
      margin-bottom: 20px;
    }

    label {
      display: block;
      margin-bottom: 5px;
      font-weight: bold;
    }

    input,
    select {
      width: 100%;
      padding: 10px;
      margin-bottom: 10px;
      border: 1px solid #ccc;
      border-radius: 4px;
      box-sizing: border-box;
    }

    button {
      padding: 12px 20px;
      background-color: #007bff;
      color: white;
      border: none;
      border-radius: 4px;
      cursor: pointer;
      font-size: 16px;
      margin: 10px 0;
    }

    button:hover {
      background-color: #0056b3;
    }

    .inline-group {
      display: flex;
      justify-content: space-between;
    }

    .inline-group>div {
      flex: 1;
      margin-right: 10px;
    }

    .inline-group>div:last-child {
      margin-right: 0;
    }

    .message {
      display: none;
      background-color: #dff0d8;
      color: #3c763d;
      padding: 10px;
      border-radius: 4px;
      margin-top: 20px;
    }

    /* Section styles */
    .section {
      border: 1px solid #ccc;
      border-radius: 8px;
      padding: 15px;
      margin-bottom: 20px;
      background-color: #f9f9f9;
    }

    .section-title {
      font-size: 18px;
      margin-bottom: 10px;
      font-weight: bold;
      color: #007bff;
    }

    .three-columns {
      display: flex;
      flex-wrap: wrap;
      gap: 10px;
    }

    .three-columns .form-group {
      flex: 1 1 calc(33.333% - 10px);
    }

    .error {
      border-color: red;
    }

    .divider {
      border-top: 1px solid #ccc;
      margin: 20px 0;
    }

    @media (max-width: 768px) {
      .three-columns {
        flex-direction: column;
      }

      .inline-group {
        flex-direction: column;
      }
    }
  </style>
</head>

<body>
  <div class="container">
    <h2>Registar Imóvel</h2>
    <form id="imovelForm">

      <!-- Seção de Proprietários -->
      <div class="section" id="sectionProprietarios">
        <div class="section-title">Proprietários</div>
        <div id="proprietariosContainer">
          <div class="form-group proprietario-group" id="proprietarioGroup1">
            <div class="form-group inline-group">
              <div>
                <label>Proprietário:</label>
                <input type="text" id="nifProprietario1" name="nifProprietario1" placeholder="Insira o NIF do proprietário" oninput="ajustarFormatoNIF(this)" onpaste="removerEspacos(this)">
              </div>
              <div>
                <button type="button" onclick="pesquisarProprietario(1)">Pesquisar</button>
              </div>
            </div>
            <div class="three-columns">
              <div class="form-group">
                <label>Nome:</label>
                <input type="text" id="nomeProprietario1" name="nomeProprietario1" readonly>
              </div>
              <div class="form-group">
                <label>Email:</label>
                <input type="email" id="emailProprietario1" name="emailProprietario1" readonly>
              </div>
              <div class="form-group">
                <label>Estado Civil:</label>
                <input type="text" id="estadoCivilProprietario1" name="estadoCivilProprietario1" oninput="verificarEstadoCivil(1)" readonly>
              </div>
              <div class="form-group" id="bemProprioGroup1" style="display: none;">
                <label>Bem Próprio:</label>
                <select id="bemProprio1" name="bemProprio1" onchange="verificarBemProprio(1)">
                  <option value="Não">Não</option>
                  <option value="Sim">Sim</option>
                </select>
              </div>
            </div>
            <div class="divider"></div>
            <div class="section-title">Info Cônjuge</div>
            <div class="form-group conjuge-group" id="conjugeGroup1" style="display: none;">
              <div class="form-group inline-group">
                <div>
                  <label>NIF do Cônjuge:</label>
                  <input type="text" id="nifConjuge1" name="nifConjuge1" placeholder="Insira o NIF do cônjuge" oninput="ajustarFormatoNIF(this)" onpaste="removerEspacos(this)">
                </div>
                <div>
                  <button type="button" onclick="pesquisarConjuge(1)">Pesquisar</button>
                </div>
              </div>
              <div class="three-columns">
                <div class="form-group">
                  <label>Nome do Cônjuge:</label>
                  <input type="text" id="nomeConjuge1" name="nomeConjuge1" readonly>
                </div>
                <div class="form-group">
                  <label>Email do Cônjuge:</label>
                  <input type="email" id="emailConjuge1" name="emailConjuge1" readonly>
                </div>
                <div class="form-group">
                  <label>Estado Civil do Cônjuge:</label>
                  <input type="text" id="estadoCivilConjuge1" name="estadoCivilConjuge1" readonly>
                </div>
              </div>
            </div>
            <div class="divider"></div>
            <div>
              <button type="button" onclick="adicionarProprietario()">Adicionar Novo Proprietário</button>
            </div>
            <div class="divider"></div>
            <button type="button" onclick="removerProprietario(1)">Remover Proprietário</button>
          </div>
        </div>
      </div>

      <!-- Scripts para funcionalidade -->
      <script>
        let numProprietario = 1;

        function ajustarFormatoNIF(input) {
          input.value = input.value.replace(/\s+/g, '');
        }

        function removerEspacos(input) {
          setTimeout(function () {
            input.value = input.value.replace(/\s+/g, '');
          }, 0);
        }

        function pesquisarProprietario(num) {
          const nif = document.getElementById('nifProprietario' + num).value;
          google.script.run.withSuccessHandler(function (response) {
            const nomeInput = document.getElementById('nomeProprietario' + num);
            const emailInput = document.getElementById('emailProprietario' + num);
            const estadoCivilInput = document.getElementById('estadoCivilProprietario' + num);
            const bemProprioGroup = document.getElementById('bemProprioGroup' + num);
            const nifConjugeGroup = document.getElementById('conjugeGroup' + num);

            if (response.nome !== 'Proprietário não encontrado') {
              nomeInput.value = response.nome;
              emailInput.value = response.email;
              estadoCivilInput.value = response.estadoCivil;
              if (response.estadoCivil === 'Casado/a') {
                bemProprioGroup.style.display = 'block';
                if (response.bemProprio === 'Sim') {
                  nifConjugeGroup.style.display = 'block';
                } else {
                  nifConjugeGroup.style.display = 'none';
                }
              } else {
                bemProprioGroup.style.display = 'none';
                nifConjugeGroup.style.display = 'none';
              }
            } else {
              nomeInput.value = '';
              emailInput.value = '';
              estadoCivilInput.value = '';
              bemProprioGroup.style.display = 'none';
              nifConjugeGroup.style.display = 'none';
            }
          }).pesquisarProprietario(nif);
        }

        function verificarEstadoCivil(num) {
          var estadoCivil = document.getElementById('estadoCivilProprietario' + num).value;
          var bemProprioGroup = document.getElementById('bemProprioGroup' + num);
          if (estadoCivil === 'Casado/a') {
            bemProprioGroup.style.display = 'block';
          } else {
            bemProprioGroup.style.display = 'none';
            document.getElementById('bemProprio' + num).value = 'Não';
            verificarBemProprio(num);
          }
        }

        function verificarBemProprio(num) {
          var bemProprio = document.getElementById('bemProprio' + num).value;
          var nifConjugeGroup = document.getElementById('conjugeGroup' + num);
          if (bemProprio === 'Sim') {
            nifConjugeGroup.style.display = 'block';
          } else {
            nifConjugeGroup.style.display = 'none';
            document.getElementById('nifConjuge' + num).value = '';
            document.getElementById('nomeConjuge' + num).value = '';
            document.getElementById('emailConjuge' + num).value = '';
            document.getElementById('estadoCivilConjuge' + num).value = '';
          }
        }

        function adicionarProprietario() {
          numProprietario++;
          const div = document.createElement('div');
          div.className = 'form-group proprietario-group';
          div.id = 'proprietarioGroup' + numProprietario;
          div.innerHTML = `
            <div class="form-group inline-group">
              <div>
                <label>NIF Cliente Vendedor:</label>
                <input type="text" id="nifProprietario${numProprietario}" name="nifProprietario${numProprietario}" placeholder="Insira o NIF do proprietário" oninput="ajustarFormatoNIF(this)" onpaste="removerEspacos(this)">
              </div>
              <div>
                <button type="button" onclick="pesquisarProprietario(${numProprietario})">Pesquisar</button>
                <button type="button" onclick="removerProprietario(${numProprietario})">Remover Cliente Vendedor</button>
              </div>
            </div>
            <div class="three-columns">
              <div class="form-group">
                <label>Nome:</label>
                <input type="text" id="nomeProprietario${numProprietario}" name="nomeProprietario${numProprietario}" readonly>
              </div>
              <div class="form-group">
                <label>Email:</label>
                <input type="email" id="emailProprietario${numProprietario}" name="emailProprietario${numProprietario}" readonly>
              </div>
              <div class="form-group">
                <label>Estado Civil:</label>
                <input type="text" id="estadoCivilProprietario${numProprietario}" name="estadoCivilProprietario${numProprietario}" oninput="verificarEstadoCivil(${numProprietario})" readonly>
              </div>
              <div class="form-group" id="bemProprioGroup${numProprietario}" style="display: none;">
                <label>Bem Próprio:</label>
                <select id="bemProprio${numProprietario}" name="bemProprio${numProprietario}" onchange="verificarBemProprio(${numProprietario})">
                  <option value="Não">Não</option>
                  <option value="Sim">Sim</option>
                </select>
              </div>
            </div>
            <div class="divider"></div>
            <div class="section-title">Info Cônjuge</div>
            <div class="form-group conjuge-group" id="conjugeGroup${numProprietario}" style="display: none;">
              <div class="form-group inline-group">
                <div>
                  <label>NIF do Cônjuge:</label>
                  <input type="text" id="nifConjuge${numProprietario}" name="nifConjuge${numProprietario}" placeholder="Insira o NIF do cônjuge" oninput="ajustarFormatoNIF(this)" onpaste="removerEspacos(this)">
                </div>
                <div>
                  <button type="button" onclick="pesquisarConjuge(${numProprietario})">Pesquisar</button>
                </div>
              </div>
              <div class="three-columns">
                <div class="form-group">
                  <label>Nome do Cônjuge:</label>
                  <input type="text" id="nomeConjuge${numProprietario}" name="nomeConjuge${numProprietario}" readonly>
                </div>
                <div class="form-group">
                  <label>Email do Cônjuge:</label>
                  <input type="email" id="emailConjuge${numProprietario}" name="emailConjuge${numProprietario}" readonly>
                </div>
                <div class="form-group">
                  <label>Estado Civil do Cônjuge:</label>
                  <input type="text" id="estadoCivilConjuge${numProprietario}" name="estadoCivilConjuge${numProprietario}" readonly>
                </div>
              </div>
            </div>
            <div class="divider"></div>
            <button type="button" onclick="removerProprietario(${numProprietario})">Remover Proprietário</button>
          `;
          document.getElementById('proprietariosContainer').appendChild(div);
        }

        function removerProprietario(num) {
          if (numProprietario > 1) {
            document.getElementById('proprietarioGroup' + num).remove();
            numProprietario--;
          }
        }

        function pesquisarConjuge(num) {
          const nifConjuge = document.getElementById('nifConjuge' + num).value;
          google.script.run.withSuccessHandler(function (response) {
            const nomeConjugeInput = document.getElementById('nomeConjuge' + num);
            const emailConjugeInput = document.getElementById('emailConjuge' + num);
            const estadoCivilConjugeInput = document.getElementById('estadoCivilConjuge' + num);

            if (response.nome !== 'Proprietário não encontrado') {
              nomeConjugeInput.value = response.nome;
              emailConjugeInput.value = response.email;
              estadoCivilConjugeInput.value = response.estadoCivil;
            } else {
              nomeConjugeInput.value = '';
              emailConjugeInput.value = '';
              estadoCivilConjugeInput.value = '';
            }
          }).pesquisarProprietario(nifConjuge);
        }
      </script>

      <!-- Seção de Informações do Imóvel -->
      <div class="section" id="sectionInformacoesImovel">
        <div class="section-title">Informações do Imóvel</div>
        <div class="three-columns">
          <div class="form-group">
            <label>Tipo de imóvel:</label>
            <select id="tipoImovel" name="tipoImovel" onchange="mostrarCamposAdicionais()">
              <option value="---Escolher---">---Escolher---</option>
              <option value="Fração Autónoma">Fração Autónoma</option>
              <option value="Moradia">Moradia</option>
              <option value="Moradia em Ruínas">Moradia em Ruínas</option>
              <option value="Terreno Rústico">Terreno Rústico</option>
              <option value="Terreno Urbano">Terreno Urbano</option>
              <option value="Prédio Misto">Prédio Misto</option>
              <option value="Prédio com Divisões">Prédio com Divisões</option>
            </select>
          </div>
        </div>
      </div>

      <script>
        function mostrarCamposAdicionais() {
          var tipoImovel = document.getElementById('tipoImovel').value;
          if (tipoImovel === 'Fração Autónoma') {
            document.getElementById('camposAdicionais').style.display = 'block';
          } else {
            document.getElementById('camposAdicionais').style.display = 'none';
          }
        }
      </script>

      <!-- Seção de Morada Prédio -->
      <div class="section">
        <div class="section-title">Morada Prédio</div>
        <div class="three-columns">
          <div class="form-group">
            <label>País:</label>
            <select id="pais">
              <option value="">Selecione um país</option>
              <option value="Portugal" selected>Portugal</option>
              <option disabled>--- Europa ---</option>
              <!-- Lista de países omitida para brevidade -->
            </select>
          </div>
          <div class="form-group">
            <label>Distrito:</label>
            <select id="distrito" onchange="buscarConcelhos()">
              <option value="">Selecione um distrito</option>
              <option value="Aveiro">Aveiro</option>
              <option value="Beja">Beja</option>
              <option value="Braga">Braga</option>
              <option value="Bragança">Bragança</option>
              <option value="Castelo Branco">Castelo Branco</option>
              <option value="Coimbra">Coimbra</option>
              <option value="Évora">Évora</option>
              <option value="Faro">Faro</option>
              <option value="Guarda">Guarda</option>
              <option value="Leiria">Leiria</option>
              <option value="Lisboa">Lisboa</option>
              <option value="Portalegre">Portalegre</option>
              <option value="Porto">Porto</option>
              <option value="Santarém">Santarém</option>
              <option value="Setúbal">Setúbal</option>
              <option value="Viana do Castelo">Viana do Castelo</option>
              <option value="Vila Real">Vila Real</option>
              <option value="Viseu">Viseu</option>
              <option value="Região Autónoma dos Açores">Região Autónoma dos Açores</option>
              <option value="Região Autónoma da Madeira">Região Autónoma da Madeira</option>
            </select>
          </div>
          <div class="form-group">
            <label>Concelho:</label>
            <select id="concelho" onchange="buscarFreguesias()">
              <option value="">Selecione um concelho</option>
            </select>
          </div>
        </div>
        <div class="three-columns">
          <div class="form-group">
            <label>Freguesia:</label>
            <select id="freguesia" onchange="atualizarCodigoINE()">
              <option value="">Selecione uma freguesia</option>
            </select>
          </div>
          <div class="form-group">
            <label>INE Freguesia:</label>
            <input type="text" id="ineFreguesia" readonly>
          </div>
          <div class="form-group">
            <label>Código Postal:</label>
            <input type="text" id="codigoPostal" placeholder="Ex: 1000-000">
            <div class="form-group">
              <button type="button" onclick="buscarMorada()">Pesquisar Morada</button>
            </div>
          </div>
        </div>
        <div class="three-columns">
          <div class="form-group">
            <label>Morada:</label>
            <select id="morada" size="4" style="display:none;"></select>
          </div>
          <div class="form-group">
            <label>Número Porta:</label>
            <input type="text" id="numeroPorta">
          </div>
          <div class="form-group">
            <label>Letras/Lado:</label>
            <input type="text" id="letrasLado">
          </div>
        </div>
        <div class="three-columns">
          <div class="form-group">
            <label>Mais Info:</label>
            <input type="text" id="maisInfo">
          </div>
          <div class="form-group">
            <label>Localidade:</label>
            <input type="text" id="localidade" readonly>
          </div>
          <div class="form-group">
            <label>Designação Postal:</label>
            <input type="text" id="designacaoPostal" readonly>
          </div>
        </div>
      </div>

      <script>
        function buscarMorada() {
          var codigoPostal = document.getElementById('codigoPostal').value;
          google.script.run.withSuccessHandler(preencherMorada).buscarMorada(codigoPostal);
        }

        function preencherMorada(dados) {
          if (dados) {
            document.getElementById('morada').style.display = 'block';
            document.getElementById('morada').innerHTML = '';
            dados.partes.forEach(function(parte) {
              var option = document.createElement('option');
              option.value = parte.Artéria;
              option.text = parte.Artéria;
              document.getElementById('morada').appendChild(option);
            });
            document.getElementById('distrito').value = dados.Distrito;
            document.getElementById('concelho').value = dados.Concelho;
            document.getElementById('localidade').value = dados.Localidade;
            document.getElementById('designacaoPostal').value = dados['Designação Postal'];
          }
        }

        function buscarConcelhos() {
          var distrito = document.getElementById('distrito').value;
          console.log('Distrito selecionado:', distrito);
          google.script.run.withSuccessHandler(function(concelhos) {
            var concelhoSelect = document.getElementById('concelho');
            concelhoSelect.innerHTML = '<option value="">Selecione um concelho</option>';
            concelhos.forEach(function(concelho) {
              var option = document.createElement('option');
              option.value = concelho.nome;
              option.text = concelho.nome;
              option.setAttribute('data-ine', concelho.codigoine);
              concelhoSelect.appendChild(option);
            });
          }).withFailureHandler(function(error) {
            console.log('Erro ao buscar concelhos:', error);
          }).buscarConcelhos(distrito);
        }

        function buscarFreguesias() {
          var concelho = document.getElementById('concelho').value;
          console.log('Concelho selecionado:', concelho);
          google.script.run.withSuccessHandler(function(freguesias) {
            var freguesiaSelect = document.getElementById('freguesia');
            freguesiaSelect.innerHTML = '<option value="">Selecione uma freguesia</option>';
            freguesias.forEach(function(freguesia) {
              var option = document.createElement('option');
              option.value = freguesia.nome;
              option.text = freguesia.nome;
              option.setAttribute('data-dicofre', freguesia.dicofre);
              freguesiaSelect.appendChild(option);
            });
          }).withFailureHandler(function(error) {
            console.log('Erro ao buscar freguesias:', error);
          }).buscarFreguesias(concelho);
        }

        function atualizarCodigoINE() {
          var freguesiaSelect = document.getElementById('freguesia');
          var selectedOption = freguesiaSelect.options[freguesiaSelect.selectedIndex];
          var dicofre = selectedOption.getAttribute('data-dicofre');
          document.getElementById('ineFreguesia').value = dicofre;
        }
      </script>

      <!-- Seção de Informação Predial (IRN) -->
      <div class="section" id="sectionInformacaoPredial">
        <div class="section-title">Informação Registal (IRN) & (AT)</div>
        <div class="three-columns">
          <div class="form-group">
            <label>Tipo de Prédio:</label>
            <select id="tipoPredio" name="tipoPredio">
              <option value="---Escolher---">---Escolher---</option>
              <option value="Urbano">Urbano</option>
              <option value="Rústico">Rústico</option>
              <option value="Misto">Misto</option>
            </select>
          </div>
          <div class="form-group">
            <label>Conservatória:</label>
            <select id="conservatoria">
              <option value="---Escolher---">---Escolher---</option>
              <option value="1ª Conservatória do Registo Predial de Maia">1ª Conservatória do Registo Predial de Maia</option>
              <option value="Conservatória do Registo Predial do Porto">Conservatória do Registo Predial do Porto</option>
              <option value="Conservatória dos Registos Civil,Predial, Comercial e Automóveis de Valongo">Conservatória dos Registos Civil,Predial, Comercial e Automóveis de Valongo</option>
            </select>
          </div>
          <div class="form-group">
            <label>Certidão Permanente (P. Mãe):</label>
            <input type="text" id="certidaoPermanenteMae" name="certidaoPermanenteMae">
          </div>
          <div class="form-group">
            <label>Validade Certidão:</label>
            <input type="date" id="validadeCertidaoMae" name="validadeCertidaoMae">
          </div>
          <div class="form-group">
            <label>Número de Descrição (IRN):</label>
            <input type="text" id="descricaoIRN" name="descricaoIRN">
          </div>
          <div class="form-group">
            <label>Freguesia (IRN):</label>
            <input type="text" id="freguesiaIRN" name="freguesiaIRN">
          </div>
          <div class="form-group">
            <label>Morada Prédio:</label>
            <input type="text" id="moradaPredioIRN" name="moradaPredioIRN">
          </div>
          <div class="form-group">
            <label>Composição e Confrontações:</label>
            <input type="text" id="composicaoPredioIRN" name="composicaoPredioIRN">
          </div>
          <div class="form-group">
            <label>AP (PH):</label>
            <input type="text" id="apPH" name="apPH">
            <input type="date" id="dataAPPH" name="dataAPPH">
          </div>
          <div class="form-group">
            <label>Identificação Matricial:</label>
            <input type="text" id="identificacaoMatricialIRN" name="identificacaoMatricialIRN">
          </div>
          <div class="form-group">
            <label>CPU Emitida em:</label>
            <input type="date" id="cpuEmitidaEm" name="cpuEmitidaEm">
          </div>
          <div class="form-group">
            <label>Ano de inscrição na matriz:</label>
            <input type="text" id="anoInscricaoMatriz" name="anoInscricaoMatriz">
            <input type="number" id="anoVPT" name="anoVPT" min="1900" max="2099" step="1">
          </div>
          <div class="form-group">
            <label>INE- (Distrito - Concelho-Freguesia):</label>
            <input type="text" id="ineCodigoAT" name="ineCodigoAT">
          </div>
        </div>
        <div class="divider"></div>
        <div class="section-title">Fração Autónoma</div>
        <div id="fracoesAutonomasContainer">
          <div class="fracaoAutonomaSection" id="fracaoAutonomaSection1">
            <div class="divider"></div>
            <div class="section-title">Info IRN</div>
            <div class="three-columns">
              <div class="form-group">
                <label>Certidão Permanente:</label>
                <input type="text" id="certidaoPermanenteFracao1" name="certidaoPermanenteFracao1">
              </div>
              <div class="form-group">
                <label>Validade Certidão:</label>
                <input type="date" id="validadeCertidaoFracao1" name="validadeCertidaoFracao1">
              </div>
              <div class="form-group">
                <label>Letra Fração:</label>
                <input type="text" id="letrafracao" name="vletrafracao1">
              </div>
              <div class="form-group">
                <label>Afectação:</label>
                <select id="afectacaoFracao1" name="afectacaoFracao1">
                  <option value="---Escolher---">---Escolher---</option>
                  <option value="Habitação">Habitação</option>
                  <option value="Comercio">Comércio</option>
                  <option value="Estacionamento coberto e fechado">Estacionamento coberto e fechado</option>
                  <option value="Terreno">Terreno</option>
                </select>
              </div>
              <div class="form-group">
                <label>Permilagem:</label>
                <input type="text" id="permilagemFracao1" name="permilagemFracao1">
              </div>
              <div class="form-group">
                <label>Área do terreno integrante:</label>
                <input type="text" id="areaTerrenoFracao1" name="areaTerrenoFracao1" oninput="calcularAreaTotal(1)">
                <select id="unidadeAreaTerrenoFracao1" name="unidadeAreaTerrenoFracao1">
                  <option value="m2">m²</option>
                  <option value="ha">ha</option>
                </select>
              </div>
            </div>
            <div class="divider"></div>
            <div class="section-title">Info AT</div>
            <div class="three-columns">
              <div class="form-group">
                <label>Área Privativa:</label>
                <input type="text" id="areaPrivativaFracao1" name="areaPrivativaFracao1" oninput="calcularAreaTotal(1)">
                <select id="unidadeAreaPrivativaFracao1" name="unidadeAreaPrivativaFracao1">
                  <option value="m2">m²</option>
                  <option value="ha">ha</option>
                </select>
              </div>
              <div class="form-group">
                <label>Área Dependente Total:</label>
                <input type="text" id="areaDependenteFracao1" name="areaDependenteFracao1" oninput="calcularAreaTotal(1)">
                <select id="unidadeAreaDependenteFracao1" name="unidadeAreaDependenteFracao1">
                  <option value="m2">m²</option>
                  <option value="ha">ha</option>
                </select>
              </div>
              <div class="form-group">
                <label>Área Total:</label>
                <input type="text" id="areaTotalFracao1" name="areaTotalFracao1" readonly>
                <select id="unidadeAreaTotalFracao1" name="unidadeAreaTotalFracao1" disabled>
                  <option value="m2">m²</option>
                  <option value="ha">ha</option>
                </select>
              </div>
              <div class="form-group">
                <label>Tipologia/Divisões:</label>
                <select id="tipologiaFracao1" name="tipologiaFracao1">
                  <option value="---Escolher---">---Escolher---</option>
                  <option value="T0">TO</option>
                  <option value="T0+1">TO+1</option>
                  <option value="T1">T1</option>
                  <option value="T1+1">T1+1</option>
                  <option value="TT2">T2</option>
                  <option value="T2+1">T2+1</option>
                  <option value="T3">T3</option>
                  <option value="T3+1">T3+1</option>
                  <option value="T4">T4</option>
                  <option value="T4+1">T4+1</option>
                  <option value="T5">T5</option>
                  <option value="T5+1">T5+1</option>
                </select>
              </div>
              <div class="form-group">
                <label>VPT:</label>
                <input type="text" id="vptFracao1" name="vptFracao1">
                <label>Determinado em:</label>
                <input type="number" id="anoVPTFracao1" name="anoVPTFracao1" min="1900" max="2099" step="1">
              </div>
            </div>
            <div class="divider"></div>
            <div class="section-title">Certificado Energético</div>
            <div class="three-columns">
              <div class="form-group">
                <label>Tipo Certificado:</label>
                <select id="tipoCertificadoFracao1" name="tipoCertificadoFracao1">
                  <option value="---Escolher---">---Escolher---</option>
                  <option value="Edifício de Habitação">Edifício de Habitação</option>
                  <option value="Declaração Isenção (área inferior a 50m2)">Declaração Isenção (área inferior a 50m2)</option>
                  <option value="Declaração Isenção (Ruína)">Declaração Isenção (Ruína)</option>
                  <option value="Em Elaboração">Em Elaboração</option>
                </select>
              </div>
              <div class="form-group">
                <label>Certificado Energético:</label>
                <input type="text" id="certificadoEnergeticoFracao1" name="certificadoEnergeticoFracao1">
              </div>
              <div class="form-group">
                <label>Data Validade Certificado:</label>
                <input type="date" id="validadeCertificadoFracao1" name="validadeCertificadoFracao1">
              </div>
              <div class="form-group">
                <label>Classe Energética:</label>
                <input type="text" id="classeEnergeticaFracao1" name="classeEnergeticaFracao1">
              </div>
              <div class="form-group">
                <label>Emitido Por técnico:</label>
                <input type="text" id="tecnicoCertificadoFracao1" name="tecnicoCertificadoFracao1">
              </div>
            </div>
            <div class="divider"></div>
            <div class="section-title">Documentos Câmara Municipal</div>
            <div class="three-columns">
              <div class="form-group">
                <label>Ano de construção:</label>
                <input type="number" id="anoConstrucaoFracao1" name="anoConstrucaoFracao1" min="1900" max="2099" step="1" oninput="mostrarCamposLicencaUtilizacao(1)">
              </div>
              <div id="licencaUtilizacaoSectionFracao1" style="display:none;">
                <div class="form-group" id="isentoLicencaGroupFracao1" style="display:none;">
                  <label>Isento de Licença de Utilização:</label>
                  <select id="isentoLicencaFracao1" name="isentoLicencaFracao1" onchange="mostrarCamposIsentoLicenca(1)">
                    <option value="">Selecione uma opção</option>
                    <option value="Sim">Sim</option>
                    <option value="Não">Não</option>
                  </select>
                </div>
                <div class="form-group" id="temosDocumentosGroupFracao1" style="display:none;">
                  <label>Temos documentos:</label>
                  <select id="temosDocumentosFracao1" name="temosDocumentosFracao1">
                    <option value="">Selecione uma opção</option>
                    <option value="Sim">Sim</option>
                    <option value="Não">Não</option>
                  </select>
                </div>
                <div id="alertasSectionFracao1" style="display:none;">
                  <div class="form-group">
                    <label>Data de Alerta:</label>
                    <input type="date" id="dataAlertaFracao1" name="dataAlertaFracao1">
                  </div>
                  <div class="form-group">
                    <label>Enviar para:</label>
                    <input type="email" id="emailAlertaFracao1" name="emailAlertaFracao1" value="fpsolicitador@gmail.com">
                  </div>
                  <div id="emailsAdicionaisFracao1"></div>
                  <button type="button" onclick="adicionarEmail('Fracao1')">Adicionar Email</button>
                  <button type="button" onclick="removerEmail('Fracao1')">Remover Email</button>
                </div>
                <div class="form-group" id="licencaUtilizacaoGroupFracao1" style="display:none;">
                  <label>Licença de Utilização:</label>
                  <input type="text" id="licencaUtilizacaoFracao1" name="licencaUtilizacaoFracao1">
                  <input type="date" id="dataLicencaUtilizacaoFracao1" name="dataLicencaUtilizacaoFracao1">
                </div>
                <div class="form-group">
                  <label>Tem Piscina</label>
                  <select id="piscinaFracao1" name="piscinaFracao1">
                    <option value="">Selecione uma opção</option>
                    <option value="Sim">Sim</option>
                    <option value="Não">Não</option>
                  </select>
                </div>
                <div class="form-group" id="averbadaGroupFracao1" style="display:none;">
                  <label>Averbada:</label>
                  <select id="averbadaFracao1" name="averbadaFracao1" onchange="mostrarCamposAverbada(1)">
                    <option value="">Selecione uma opção</option>
                    <option value="Sim">Sim</option>
                    <option value="Não">Não</option>
                  </select>
                </div>
                <div class="form-group" id="apGroupFracao1" style="display:none;">
                  <label>AP:</label>
                  <input type="text" id="apFracao1" name="apFracao1">
                  <input type="date" id="dataApFracao1" name="dataApFracao1">
                </div>
                <div id="fichaTecnicaSectionFracao1" style="display:none;">
                  <div class="form-group">
                    <label>Obrigatório Ficha Técnica:</label>
                    <select id="obrigatorioFichaTecnicaFracao1" name="obrigatorioFichaTecnicaFracao1" onchange="mostrarCamposObrigatorioFichaTecnica(1)">
                      <option value="">Selecione uma opção</option>
                      <option value="Sim">Sim</option>
                      <option value="Não">Não</option>
                    </select>
                  </div>
                  <div class="form-group" id="temosDocumentosFichaGroupFracao1" style="display:none;">
                    <label>Temos documentos:</label>
                    <select id="temosDocumentosFichaFracao1" name="temosDocumentosFichaFracao1">
                      <option value="">Selecione uma opção</option>
                      <option value="Sim">Sim</option>
                      <option value="Não">Não</option>
                    </select>
                  </div>
                  <div id="alertasFichaSectionFracao1" style="display:none;">
                    <div class="form-group">
                      <label>Data de Alerta:</label>
                      <input type="date" id="dataAlertaFichaFracao1" name="dataAlertaFichaFracao1">
                    </div>
                    <div class="form-group">
                      <label>Enviar para:</label>
                      <input type="email" id="emailAlertaFichaFracao1" name="emailAlertaFichaFracao1" value="fpsolicitador@gmail.com">
                    </div>
                    <div id="emailsAdicionaisFichaFracao1"></div>
                    <button type="button" onclick="adicionarEmailFicha('Fracao1')">Adicionar Email</button>
                    <button type="button" onclick="removerEmailFicha('Fracao1')">Remover Email</button>
                  </div>
                </div>
              </div>
              <button type="button" id="removerFracaoAutonoma1" style="display:none;" onclick="removerFracaoAutonoma(1)">Remover Fração Autónoma</button>
            </div>
          </div>
        </div>
        <button type="button" onclick="adicionarFracaoAutonoma()">Adicionar Fração Autónoma</button>
      </div>

      <script>
        let numFracaoAutonoma = 1;

        function adicionarFracaoAutonoma() {
          numFracaoAutonoma++;
          const container = document.getElementById('fracoesAutonomasContainer');
          const div = document.createElement('div');
          div.className = 'fracaoAutonomaSection';
          div.id = 'fracaoAutonomaSection' + numFracaoAutonoma;
          div.innerHTML = `
            <div class="divider"></div>
            <div class="section-title">Info IRN</div>
            <div class="three-columns">
              <div class="form-group">
                <label>Certidão Permanente:</label>
                <input type="text" id="certidaoPermanenteFracao${numFracaoAutonoma}" name="certidaoPermanenteFracao${numFracaoAutonoma}">
              </div>
              <div class="form-group">
                <label>Validade Certidão:</label>
                <input type="date" id="validadeCertidaoFracao${numFracaoAutonoma}" name="validadeCertidaoFracao${numFracaoAutonoma}">
              </div>
              <div class="form-group">
                <label>Afectação:</label>
                <select id="afectacaoFracao${numFracaoAutonoma}" name="afectacaoFracao${numFracaoAutonoma}">
                  <option value="---Escolher---">---Escolher---</option>
                  <option value="Habitação">Habitação</option>
                  <option value="Comercio">Comércio</option>
                  <option value="Estacionamento coberto e fechado">Estacionamento coberto e fechado</option>
                  <option value="Terreno">Terreno</option>
                </select>
              </div>
              <div class="form-group">
                <label>Permilagem:</label>
                <input type="text" id="permilagemFracao${numFracaoAutonoma}" name="permilagemFracao${numFracaoAutonoma}">
              </div>
              <div class="form-group">
                <label>Área do terreno integrante:</label>
                <input type="text" id="areaTerrenoFracao${numFracaoAutonoma}" name="areaTerrenoFracao${numFracaoAutonoma}" oninput="calcularAreaTotal(${numFracaoAutonoma})">
                <select id="unidadeAreaTerrenoFracao${numFracaoAutonoma}" name="unidadeAreaTerrenoFracao${numFracaoAutonoma}">
                  <option value="m2">m²</option>
                  <option value="ha">ha</option>
                </select>
              </div>
            </div>
            <div class="divider"></div>
            <div class="section-title">Info AT</div>
            <div class="three-columns">
              <div class="form-group">
                <label>Área Privativa:</label>
                <input type="text" id="areaPrivativaFracao${numFracaoAutonoma}" name="areaPrivativaFracao${numFracaoAutonoma}" oninput="calcularAreaTotal(${numFracaoAutonoma})">
                <select id="unidadeAreaPrivativaFracao${numFracaoAutonoma}" name="unidadeAreaPrivativaFracao${numFracaoAutonoma}">
                  <option value="m2">m²</option>
                  <option value="ha">ha</option>
                </select>
              </div>
              <div class="form-group">
                <label>Área Dependente Total:</label>
                <input type="text" id="areaDependenteFracao${numFracaoAutonoma}" name="areaDependenteFracao${numFracaoAutonoma}" oninput="calcularAreaTotal(${numFracaoAutonoma})">
                <select id="unidadeAreaDependenteFracao${numFracaoAutonoma}" name="unidadeAreaDependenteFracao${numFracaoAutonoma}">
                  <option value="m2">m²</option>
                  <option value="ha">ha</option>
                </select>
              </div>
              <div class="form-group">
                <label>Área Total:</label>
                <input type="text" id="areaTotalFracao${numFracaoAutonoma}" name="areaTotalFracao${numFracaoAutonoma}" readonly>
                <select id="unidadeAreaTotalFracao${numFracaoAutonoma}" name="unidadeAreaTotalFracao${numFracaoAutonoma}" disabled>
                  <option value="m2">m²</option>
                  <option value="ha">ha</option>
                </select>
              </div>
              <div class="form-group">
                <label>Tipologia/Divisões:</label>
                <select id="tipologiaFracao${numFracaoAutonoma}" name="tipologiaFracao${numFracaoAutonoma}">
                  <option value="---Escolher---">---Escolher---</option>
                  <option value="T0">TO</option>
                  <option value="T0+1">TO+1</option>
                  <option value="T1">T1</option>
                  <option value="T1+1">T1+1</option>
                  <option value="TT2">T2</option>
                  <option value="T2+1">T2+1</option>
                  <option value="T3">T3</option>
                  <option value="T3+1">T3+1</option>
                  <option value="T4">T4</option>
                  <option value="T4+1">T4+1</option>
                  <option value="T5">T5</option>
                  <option value="T5+1">T5+1</option>
                </select>
              </div>
              <div class="form-group">
                <label>VPT:</label>
                <input type="text" id="vptFracao${numFracaoAutonoma}" name="vptFracao${numFracaoAutonoma}">
                <label>Determinado em:</label>
                <input type="number" id="anoVPTFracao${numFracaoAutonoma}" name="anoVPTFracao${numFracaoAutonoma}" min="1900" max="2099" step="1">
              </div>
            </div>
            <div class="divider"></div>
            <div class="section-title">Certificado Energético</div>
            <div class="three-columns">
              <div class="form-group">
                <label>Tipo Certificado:</label>
                <select id="tipoCertificadoFracao${numFracaoAutonoma}" name="tipoCertificadoFracao${numFracaoAutonoma}">
                  <option value="---Escolher---">---Escolher---</option>
                  <option value="Edifício de Habitação">Edifício de Habitação</option>
                  <option value="Declaração Isenção (área inferior a 50m2)">Declaração Isenção (área inferior a 50m2)</option>
                  <option value="Declaração Isenção (Ruína)">Declaração Isenção (Ruína)</option>
                  <option value="Em Elaboração">Em Elaboração</option>
                </select>
              </div>
              <div class="form-group">
                <label>Certificado Energético:</label>
                <input type="text" id="certificadoEnergeticoFracao${numFracaoAutonoma}" name="certificadoEnergeticoFracao${numFracaoAutonoma}">
              </div>
              <div class="form-group">
                <label>Data Validade Certificado:</label>
                <input type="date" id="validadeCertificadoFracao${numFracaoAutonoma}" name="validadeCertificadoFracao${numFracaoAutonoma}">
              </div>
              <div class="form-group">
                <label>Classe Energética:</label>
                <input type="text" id="classeEnergeticaFracao${numFracaoAutonoma}" name="classeEnergeticaFracao${numFracaoAutonoma}">
              </div>
              <div class="form-group">
                <label>Emitido Por técnico:</label>
                <input type="text" id="tecnicoCertificadoFracao${numFracaoAutonoma}" name="tecnicoCertificadoFracao${numFracaoAutonoma}">
              </div>
            </div>
            <div class="divider"></div>
            <div class="section-title">Documentos Câmara Municipal</div>
            <div class="three-columns">
              <div class="form-group">
                <label>Ano de construção:</label>
                <input type="number" id="anoConstrucaoFracao${numFracaoAutonoma}" name="anoConstrucaoFracao${numFracaoAutonoma}" min="1900" max="2099" step="1" oninput="mostrarCamposLicencaUtilizacao(${numFracaoAutonoma})">
              </div>
              <div id="licencaUtilizacaoSectionFracao${numFracaoAutonoma}" style="display:none;">
                <div class="form-group" id="isentoLicencaGroupFracao${numFracaoAutonoma}" style="display:none;">
                  <label>Isento de Licença de Utilização:</label>
                  <select id="isentoLicencaFracao${numFracaoAutonoma}" name="isentoLicencaFracao${numFracaoAutonoma}" onchange="mostrarCamposIsentoLicenca(${numFracaoAutonoma})">
                    <option value="">Selecione uma opção</option>
                    <option value="Sim">Sim</option>
                    <option value="Não">Não</option>
                  </select>
                </div>
                <div class="form-group" id="temosDocumentosGroupFracao${numFracaoAutonoma}" style="display:none;">
                  <label>Temos documentos:</label>
                  <select id="temosDocumentosFracao${numFracaoAutonoma}" name="temosDocumentosFracao${numFracaoAutonoma}">
                    <option value="">Selecione uma opção</option>
                    <option value="Sim">Sim</option>
                    <option value="Não">Não</option>
                  </select>
                </div>
                <div id="alertasSectionFracao${numFracaoAutonoma}" style="display:none;">
                  <div class="form-group">
                    <label>Data de Alerta:</label>
                    <input type="date" id="dataAlertaFracao${numFracaoAutonoma}" name="dataAlertaFracao${numFracaoAutonoma}">
                  </div>
                  <div class="form-group">
                    <label>Enviar para:</label>
                    <input type="email" id="emailAlertaFracao${numFracaoAutonoma}" name="emailAlertaFracao${numFracaoAutonoma}" value="fpsolicitador@gmail.com">
                  </div>
                  <div id="emailsAdicionaisFracao${numFracaoAutonoma}"></div>
                  <button type="button" onclick="adicionarEmail('Fracao${numFracaoAutonoma}')">Adicionar Email</button>
                  <button type="button" onclick="removerEmail('Fracao${numFracaoAutonoma}')">Remover Email</button>
                </div>
                <div class="form-group" id="licencaUtilizacaoGroupFracao${numFracaoAutonoma}" style="display:none;">
                  <label>Licença de Utilização:</label>
                  <input type="text" id="licencaUtilizacaoFracao${numFracaoAutonoma}" name="licencaUtilizacaoFracao${numFracaoAutonoma}">
                  <input type="date" id="dataLicencaUtilizacaoFracao${numFracaoAutonoma}" name="dataLicencaUtilizacaoFracao${numFracaoAutonoma}">
                </div>
                <div class="form-group">
                  <label>Tem Piscina</label>
                  <select id="piscinaFracao${numFracaoAutonoma}" name="piscinaFracao${numFracaoAutonoma}">
                    <option value="">Selecione uma opção</option>
                    <option value="Sim">Sim</option>
                    <option value="Não">Não</option>
                  </select>
                </div>
                <div class="form-group" id="averbadaGroupFracao${numFracaoAutonoma}" style="display:none;">
                  <label>Averbada:</label>
                  <select id="averbadaFracao${numFracaoAutonoma}" name="averbadaFracao${numFracaoAutonoma}" onchange="mostrarCamposAverbada(${numFracaoAutonoma})">
                    <option value="">Selecione uma opção</option>
                    <option value="Sim">Sim</option>
                    <option value="Não">Não</option>
                  </select>
                </div>
                <div class="form-group" id="apGroupFracao${numFracaoAutonoma}" style="display:none;">
                  <label>AP:</label>
                  <input type="text" id="apFracao${numFracaoAutonoma}" name="apFracao${numFracaoAutonoma}">
                  <input type="date" id="dataApFracao${numFracaoAutonoma}" name="dataApFracao${numFracaoAutonoma}">
                </div>
                <div id="fichaTecnicaSectionFracao${numFracaoAutonoma}" style="display:none;">
                  <div class="form-group">
                    <label>Obrigatório Ficha Técnica:</label>
                    <select id="obrigatorioFichaTecnicaFracao${numFracaoAutonoma}" name="obrigatorioFichaTecnicaFracao${numFracaoAutonoma}" onchange="mostrarCamposObrigatorioFichaTecnica(${numFracaoAutonoma})">
                      <option value="">Selecione uma opção</option>
                      <option value="Sim">Sim</option>
                      <option value="Não">Não</option>
                    </select>
                  </div>
                  <div class="form-group" id="temosDocumentosFichaGroupFracao${numFracaoAutonoma}" style="display:none;">
                    <label>Temos documentos:</label>
                    <select id="temosDocumentosFichaFracao${numFracaoAutonoma}" name="temosDocumentosFichaFracao${numFracaoAutonoma}">
                      <option value="">Selecione uma opção</option>
                      <option value="Sim">Sim</option>
                      <option value="Não">Não</option>
                    </select>
                  </div>
                  <div id="alertasFichaSectionFracao${numFracaoAutonoma}" style="display:none;">
                    <div class="form-group">
                      <label>Data de Alerta:</label>
                      <input type="date" id="dataAlertaFichaFracao${numFracaoAutonoma}" name="dataAlertaFichaFracao${numFracaoAutonoma}">
                    </div>
                    <div class="form-group">
                      <label>Enviar para:</label>
                      <input type="email" id="emailAlertaFichaFracao${numFracaoAutonoma}" name="emailAlertaFichaFracao${numFracaoAutonoma}" value="fpsolicitador@gmail.com">
                    </div>
                    <div id="emailsAdicionaisFichaFracao${numFracaoAutonoma}"></div>
                    <button type="button" onclick="adicionarEmailFicha('Fracao${numFracaoAutonoma}')">Adicionar Email</button>
                    <button type="button" onclick="removerEmailFicha('Fracao${numFracaoAutonoma}')">Remover Email</button>
                  </div>
                </div>
              </div>
              <button type="button" id="removerFracaoAutonoma${numFracaoAutonoma}" style="display:none;" onclick="removerFracaoAutonoma(${numFracaoAutonoma})">Remover Fração Autónoma</button>
            </div>
          `;
          container.appendChild(div);
        }
      </script>

      <!-- Seção de Ações -->
      <div class="section" id="sectionAcoes">
        <div class="section-title">Guardar Imóvel</div>
        <div class="form-group">
          <button type="button" onclick="salvarImovel()">Salvar Imóvel</button>
        </div>
        <div id="mensagem"></div>
      </div>
      <div class="message" id="successMessage">Imóvel registrado com sucesso!</div>
      <div class="message" id="errorMessage" style="background-color: #f8d7da; color: #721c24; display: none;">Erro ao salvar o imóvel: <span id="errorText"></span></div>

      <script>
        function salvarImovel() {
          const form = document.getElementById('imovelForm');
          const formData = new FormData(form);
          const data = {};
          formData.forEach((value, key) => {
            data[key] = value;
          });
          google.script.run.withSuccessHandler(onSuccess).withFailureHandler(onFailure).salvarImovelNoSheet(data);
        }

        function onSuccess() {
          document.getElementById('successMessage').style.display = 'block';
        }

        function onFailure(error) {
          document.getElementById('errorMessage').style.display = 'block';
          document.getElementById('errorText').innerText = error.message;
        }
      </script>
    </form>
  </div>
</body>
</html>
