function displayFields(form, customHTML) {
    form.setShowDisabledFields(true);

    var numAtividade = parseInt(getValue("WKNumState"), 10);
    var matriculaUser = getValue("WKUser");

    var INICIO = 4;
    var AGUARDAR = 17;
    var CANCELADA = 9;
    var FINALIZADA = 20;

    var camposCliente = ["nomeCliente", "cnpjCliente", "resumoProspeccao"];
    var camposContato = [
        "dataContato",
        "tipoContato",
        "nomeContato",
        "cargoContato",
        "telefoneContato",
        "emailContato",
        "comentariocontato"
    ];

    customHTML.append("<script>");
    customHTML.append("$(document).ready(function(){");

    if (numAtividade === 0 || numAtividade === INICIO) {
        form.setValue("codRepresentante", matriculaUser);
        setCampoSolicitante(form, matriculaUser);
        setCampoDataHora(form);
    } else if (numAtividade === AGUARDAR) {
        if (form.getValue("GerarOportunidade") == "Aguardar") {
            mostrarDIV(customHTML, "#divNovaData");
        } else {
            esconderDIV(customHTML, "#divNovaData");
        }

        desabilitarCampos(form, camposCliente);
        desabilitarPaiFilho(form, "contatosModelo", camposContato);
    } else if (numAtividade === CANCELADA) {
        hideButtonJQuery(customHTML, "button[name='addCliente']", true);
        hideButtonJQuery(customHTML, "button[name='removerCliente']", true);
        hideButtonJQuery(customHTML, "button[name='btnAnexarDocumentos']", true);

        if (form.getValue("GerarOportunidade") == "Nao") {
            mostrarDIV(customHTML, "#divMotivo");
        } else {
            esconderDIV(customHTML, "#divMotivo");
        }

        desabilitarPaiFilho(form, "contatosModelo", camposContato);
    } else if (numAtividade === FINALIZADA) {
        hideButtonJQuery(customHTML, "button[name='addCliente']", true);
        hideButtonJQuery(customHTML, "button[name='removerCliente']", true);
        hideButtonJQuery(customHTML, "button[name='btnAnexarDocumentos']", true);

        if (form.getValue("GerarOportunidade") == "Sim") {
            mostrarDIV(customHTML, "#divTipoOportunidade");
        } else {
            esconderDIV(customHTML, "#divTipoOportunidade");
        }

        desabilitarPaiFilho(form, "contatosModelo", camposContato);
    }

    customHTML.append("});");
    customHTML.append("</script>");
}

function setCampoSolicitante(form, matriculaUser) {
    form.setValue("representanteComercial", buscarNomeUsuario(matriculaUser));
    form.setValue("codRepresentante", matriculaUser);
}

function setCampoDataHora(form) {
    var agora = new Date();
    form.setValue(
        "dataAbertura",
        format2(agora.getDate()) + "/" + format2(agora.getMonth() + 1) + "/" + agora.getFullYear()
    );
    form.setValue(
        "horaAbertura",
        format2(agora.getHours()) + ":" + format2(agora.getMinutes())
    );
}

function format2(numero) {
    return (numero < 10 ? "0" : "") + numero;
}

function buscarNomeUsuario(login) {
    var c1 = DatasetFactory.createConstraint(
        "colleaguePK.colleagueId",
        login,
        login,
        ConstraintType.MUST
    );
    var ds = DatasetFactory.getDataset("colleague", null, [c1], null);
    if (ds != null && ds.rowsCount > 0) {
        return ds.getValue(0, "colleagueName");
    }
    return "";
}

function desabilitarPaiFilho(form, tableName, campos) {
    var indexes = form.getChildrenIndexes(tableName);
    var i;
    var j;
    for (i = 0; i < indexes.length; i++) {
        for (j = 0; j < campos.length; j++) {
            form.setEnabled(campos[j] + "___" + indexes[i], false);
        }
    }
}

function desabilitarCampos(form, campos) {
    var i;
    for (i = 0; i < campos.length; i++) {
        form.setEnabled(campos[i], false);
    }
}

function esconderDIV(customHTML, seletorCampo) {
    customHTML.append("$('" + seletorCampo + "').hide();");
}

function mostrarDIV(customHTML, seletorCampo) {
    customHTML.append("$('" + seletorCampo + "').show();");
}

function hideButtonJQuery(customHTML, seletor, esconder) {
    customHTML.append(
        "$(\"" + seletor + "\")." + (esconder ? "hide" : "show") + "();"
    );
}
