/**
 * enableFields.js — Solicitação de Compra
 * ============================================
 * Controla quais campos ficam HABILITADOS ou
 * DESABILITADOS em cada atividade do processo BPM.
 *
 * Regra geral:
 * - Na atividade X, só os campos dessa atividade ficam habilitados
 * - Campos de atividades anteriores ficam readonly/disabled
 * - Evita edição indevida de dados já preenchidos
 */

function enableFields(form) {
    var nAtiv = form.getValue('WKNumState');

    if (!nAtiv || nAtiv === '0') {
        // Modo visualização: tudo desabilitado
        desabilitarTudo();
        return;
    }

    nAtiv = parseInt(nAtiv, 10);

    // Primeiro desabilita tudo, depois habilita só o necessário
    desabilitarTudo();

    switch (nAtiv) {
        case 2:
            // Solicitante: habilita campos de dados da solicitação
            habilitarCampo('departamento');
            habilitarCampo('urgencia');
            habilitarCampo('justificativa');
            habilitarCampo('data_necessidade');
            habilitarCampo('centro_custo');
            // Habilita tabela de itens
            habilitarTabela('tabItens');
            break;

        case 5:
            // Gestor: só habilita campos de aprovação
            habilitarCampo('aprovacao_gestor');
            habilitarCampo('obs_gestor');
            break;

        case 10:
            // Diretor: só habilita campos de aprovação
            habilitarCampo('aprovacao_diretor');
            habilitarCampo('obs_diretor');
            break;
    }
}

// =============================================
// FUNÇÕES AUXILIARES
// =============================================

/**
 * Desabilita todos os campos editáveis do formulário.
 */
function desabilitarTudo() {
    $('input:not([type=hidden]), select, textarea').prop('disabled', true);
    // Esconde botões de adicionar/remover das tabelas
    $('[name^="btDelete"]').hide();
    $('[onclick*="wdkAddChild"]').hide();
}

/**
 * Habilita um campo específico pelo id/name.
 * Para radio buttons, habilita todos com o mesmo name.
 */
function habilitarCampo(campo) {
    var el = $('#' + campo);
    if (el.length) {
        el.prop('disabled', false);
    }
    // Radio buttons: habilita todos com mesmo name
    $('input[name="' + campo + '"]').prop('disabled', false);
}

/**
 * Habilita todos os campos dentro de uma tabela pai-filho.
 * Também mostra os botões de adicionar/remover.
 */
function habilitarTabela(tableName) {
    var tabela = $('[tablename="' + tableName + '"]');
    tabela.find('input, select, textarea').prop('disabled', false);
    tabela.find('[name^="btDelete"]').show();
    // Mostra botão "Novo" (que tem wdkAddChild)
    $('[onclick*="wdkAddChild(\'' + tableName + '\')"]').show();
}
