// Inicialização do SmartWizard sem bloqueio de navegação
$('#smartWizardValidation').smartWizard({
  selected: 0,
  theme: 'default',
  justified: true,
  autoAdjustHeight: false,
  enableNavigation: true,
  enableURLhash: false,
  scrollToNewStep: false,
  toolbarSettings: { toolbarPosition: 'none' },
  anchorSettings: {
    anchorClickable: true,
    enableAllAnchors: true,
    markDoneStep: false,
    enableAnchorOnDoneStep: true
  },
  leaveStep: function(obj, context) {
    return true;
  }
});

// Impede scroll ao trocar de step e corrige altura do container
$('#smartWizardValidation').on('showStep', function(e, anchorObject, stepNumber, stepDirection) {
  var scrollPos = $(window).scrollTop();
  setTimeout(function() {
    $(window).scrollTop(scrollPos);
    $('#smartWizardValidation .sw-container, #smartWizardValidation .tab-content').css('height', 'auto');
  }, 0);
});

// Função genérica para capturar o valor selecionado e definir no campo alvo
function updateSelectedValue(source, target) {
  var value = $(source).val();
  $(target).val(value);
}

// Aplicar a função genérica para os campos repetidos
const formFields = [
  { select: '#Tributo', input: '#tributoEscolhido' },
  { select: '#atividade', input: '#atividadeEscolhida' },
  { select: '#prazodeentrega_contabil', input: '#prazodeentrega_contabilescolhido' },
  { select: '#faturamento', input: '#faturamentoEscolhido' },
  { select: '#licitacao', input: '#licitacaoEscolhido' },
  { select: '#entidade_gov', input: '#entidade_govEscolhido' },
  { select: '#atendimento_cli', input: '#atendimento_cliEscolhido' },
  { select: '#reunioes_cliente', input: '#reunioes_clienteEscolhido' },
  { select: '#dashboardBI', input: '#dashboardBIEscolhido' },
  { select: '#prazoEntrega', input: '#prazoEntregaEscolhido' },
  { select: '#regimetribut_trib', input: '#tributoEscolhido_trib' },
  { select: '#atividade_trib', input: '#atividadeEscolhida_trib' },
  { select: '#faturamento_tribut', input: '#faturamentoEscolhido_tribut' },
  { select: '#planejamentotribut', input: '#planejamentotribut_escolhido' },
  { select: '#analise_ncm', input: '#analise_ncm_escolhido' },
  { select: '#atendimento_cliente_tribut', input: '#atendimento_cliente_tribut_esolhido' },
  { select: '#fatorR', input: '#fatorR_escolhido' },
  { select: '#tributSimplesCard', input: '#tributSimplesCardEscolhido' },
  { select: '#modalidade_folha', input: '#modalidade_folhaEscolhido' },
  { select: '#qtd_funcionario', input: '#qtd_funcionarioEscolhido' },
  { select: '#atendimento_backoffice', input: '#atendimento_backofficeEscolhido' },
  { select: '#controle_ferias', input: '#controle_feriasEscolhido' },
  { select: '#controle_afastamentos', input: '#controle_afastamentosEscolhido' },
  { select: '#controle_beneficios', input: '#controle_beneficiosEscolhido' },
  { select: '#contrato_foradopadrao', input: '#contrato_foradopadraoEscolhido' },
  { select: '#controle_bancodehoras', input: '#controle_bancodehorasEscolhido' },
  { select: '#acordo_de_trabalho', input: '#acordo_de_trabalhoEscolhido' },
  { select: '#descricao_de_cargosetrabalhos', input: '#descricao_de_cargosetrabalhosEscolhido' }
];

// Loop para associar os eventos 'change'
formFields.forEach(function(field) {
  $(field.select).on('change', function() {
    updateSelectedValue(this, field.input);
  });
});

// Sincronização bidirecional entre Step 0 (Contábil) e Step 1 (Fiscal)
var _syncing = false;
var syncedPairs = [
  { step0: '#Tributo',     step1: '#regimetribut_trib' },
  { step0: '#atividade',   step1: '#atividade_trib' },
  { step0: '#faturamento', step1: '#faturamento_tribut' },
];

syncedPairs.forEach(function(pair) {
  $(pair.step0).on('change', function() {
    if (_syncing) return;
    _syncing = true;
    $(pair.step1).val($(this).val()).trigger('change');
    _syncing = false;
  });
  $(pair.step1).on('change', function() {
    if (_syncing) return;
    _syncing = true;
    $(pair.step0).val($(this).val()).trigger('change');
    _syncing = false;
  });
});

// Campo especial para compra e venda
$('#compraeVendaFora').on('change', function() {
  var values = $(this).val();
  $('#compraeVendaForaEscolhido').val(values);
});

// Validação e envio de formulário com AJAX
$('#resumeForm').validate({
  submitHandler: function(form) {
    var $form = $(form),
    str = $form.serialize();

    $.ajax({
      type: "POST",
      url: $form.attr('action'),
      data: str,
      beforeSend: function() {
        $("#status").html("<i class='fa fa-spinner fa-pulse fa-3x fa-fw'></i> Enviando...");
      },
      success: function(responseText) {
        $(".response").html(responseText).hide().slideDown("slow", function() {
          $('#btn-exportar-pdf').remove();
          $(".response").after(
            '<button id="btn-exportar-pdf" class="btn btn-danger mt-2 mb-4">' +
            '<i class="simple-icon-printer mr-1"></i> Exportar PDF</button>'
          );
        });
      }
    });
  }
});

// Coleta campos preenchidos para o PDF
function coletarCampos(campos) {
  var linhas = '';
  campos.forEach(function(c) {
    var texto = $(c.id + ' option:selected').text().trim();
    if (texto) linhas += '<tr><td style="color:#555;padding:4px 8px;">' + c.label + '</td><td style="padding:4px 8px;font-weight:bold;">' + texto + '</td></tr>';
  });
  return linhas;
}

// Exportar resultado como PDF via nova janela
$(document).on('click', '#btn-exportar-pdf', function() {
  var camposContabil = [
    { id: '#Tributo',                  label: 'Regime de tributação' },
    { id: '#atividade',                label: 'Atividade' },
    { id: '#faturamento',              label: 'Faturamento' },
    { id: '#prazodeentrega_contabil',  label: 'Modalidade de entrega' },
    { id: '#atendimento_cli',          label: 'Atendimento pelo Backoffice' },
    { id: '#dashboardBI',              label: 'Dashboard BI' },
  ];
  var camposFiscal = [
    { id: '#regimetribut_trib',        label: 'Regime de tributação' },
    { id: '#atividade_trib',           label: 'Atividade' },
    { id: '#faturamento_tribut',       label: 'Faturamento' },
    { id: '#compraeVendaFora',         label: 'Compra e venda fora do estado' },
    { id: '#atendimento_cliente_tribut', label: 'Atendimento pelo Backoffice' },
    { id: '#fatorR',                   label: 'Sujeito ao Fator R' },
  ];
  var camposDP = [
    { id: '#modalidade_folha',         label: 'Modalidade da folha' },
    { id: '#qtd_funcionario',          label: 'Qtd. funcionários' },
    { id: '#atendimento_backoffice',   label: 'Atendimento pelo Backoffice' },
    { id: '#controle_ferias',          label: 'Controle de férias' },
    { id: '#controle_afastamentos',    label: 'Controle de afastamentos' },
    { id: '#controle_beneficios',      label: 'Controle de benefícios' },
    { id: '#contrato_foradopadrao',    label: 'Contrato fora do padrão' },
    { id: '#controle_bancodehoras',    label: 'Banco de horas' },
    { id: '#acordo_de_trabalho',       label: 'Acordo de trabalho' },
    { id: '#descricao_de_cargosetrabalhos', label: 'Descrição de cargos' },
  ];

  function secao(titulo, campos) {
    var linhas = coletarCampos(campos);
    if (!linhas) return '';
    return '<h3 style="margin:20px 0 8px;color:#333;border-bottom:2px solid #dee2e6;padding-bottom:4px;">' + titulo + '</h3>' +
           '<table style="width:100%;border-collapse:collapse;margin-bottom:8px;">' + linhas + '</table>';
  }

  var dadosPreenchidos = secao('Contabilidade', camposContabil) +
                         secao('Fiscal', camposFiscal) +
                         secao('Departamento Pessoal', camposDP);

  var resultados = $('.response').html();
  var estilos =
    'body{font-family:Arial,sans-serif;padding:24px;color:#333;}' +
    'h3{font-size:15px;}' +
    'table{font-size:13px;}' +
    '.card{border:1px solid #dee2e6;border-radius:4px;margin-bottom:12px;page-break-inside:avoid;}' +
    '.card-body{padding:16px;}' +
    'h1{font-size:26px;margin:6px 0;}' +
    'h5{font-size:13px;color:#555;margin:0;}' +
    '.alert{padding:10px;border-radius:4px;margin-bottom:10px;}' +
    '.alert-danger{background:#f8d7da;color:#721c24;border:1px solid #f5c6cb;}' +
    '.alert-warning{background:#fff3cd;color:#856404;border:1px solid #ffc107;}';

  var janela = window.open('', '_blank');
  janela.document.write(
    '<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Orçamento Backoffice</title>' +
    '<style>' + estilos + '</style></head><body>' +
    '<h2 style="margin-bottom:16px;">Orçamento Backoffice</h2>' +
    dadosPreenchidos +
    '<h3 style="margin:20px 0 8px;color:#333;border-bottom:2px solid #dee2e6;padding-bottom:4px;">Resultado</h3>' +
    resultados +
    '<script>window.onload=function(){window.print();window.close();}<\/script>' +
    '</body></html>'
  );
  janela.document.close();
});

// Cálculo de valores de honorários e porcentagens
$('#valor_honorario').on('change', function() {
  var total_bckoff = parseFloat($('#total_bckoff').val()) || 0;
  var valor_honorario = parseFloat($('#valor_honorario').val()) || 0;

  if (valor_honorario === 0) {
    $('#percent_cf, #percent_franqueado, #Royalties').html("0.00");
    return;
  }

  var royalties = valor_honorario * 0.12;
  var percent_franqueado = (total_bckoff / valor_honorario) * 100;
  var percent_cf = 100 - percent_franqueado;

  $('#percent_cf').html(percent_cf.toFixed(2));
  $('#percent_franqueado').html(percent_franqueado.toFixed(2));
  $('#Royalties').html(royalties.toFixed(2));

  console.log({ total_bckoff, percent_franqueado, percent_cf, royalties });
});