<%@language = "javascript" %>
<%/*
    $Revision$
    $Id$

    File:               mld_melding.asp
    Description:        Muteerscherm voor meldingen
                        dit is de grote 'wrapper' voor de diverse andere schermen
    Parameters:         urole
                        mld_key
                        verynew: we zijn heel erg nieuw (net aangemaakt)
                                 gevolg:==> mld_show_melding gaat allerlei 'auto-actions' vragen
                        noteonly: als gezet hide dan meldingblok en open noteblok
                        kto_type: B/M/R als het een (nieuwe) KTO melding is over Bestelling/Reservering/Melding
                        kto_key:  de BMR waarover het KTO gaat (indien kto_type)
    Context:
    Note:

*/
var cont = (getQParamInt("mld_continue", 0) == 1);
if (cont)
{
  var mld_key_arr = getQParamIntArray("mld_key");
  var mld_key = -1;
}
else
  var mld_key = getQParamInt("mld_key", -1);
var LOCKED_USER_OK = { "xmlnode": "melding", "key": cont ? mld_key_arr[0] : mld_key };
%>
<!--#include file="../Shared/common.inc" -->
<!--#include file="../Shared/iface.inc" -->
<!--#include file="mld.inc" -->
<%
FCLTHeader.Requires({plugins: ["suggest", "jQuery"],
                          js: ["jquery-ui.js"],
                         css: ["../shared/suggest/suggest.css"]}); // css for childframes})

// AUTORISATIEPARAMETERS
var urole = getQParamSafe("urole", "xx");
var verynew = getQParamInt("verynew", 0) == 1;
var noteonly = getQParamInt("noteonly", 0) == 1;
var mode = getQParamSafe("mode", "");

// de melding waar het over gaat, kan leeg zijn voor nieuwe, maar dat mag niet met bo of mi
var copy = (getQParamInt("mld_copy", 0) == 1);

var stdm_info = {};
var standalone = (getQParamInt("standalone", 0) == 1);
var ins_key = getQParamInt("ins_key", -1); // nieuwe melding op dit object?
var deelsrtcont_key = getQParamInt("deelsrtcont_key", -1); // .. en bij deze inspectie?

var pageTitle = L('lcl_mld_new'); // deze mag nog dialectafhankelijk? *KR; dat hoeft niet, want als er 1 srtdisc is gebruiken we de srtdisc_omschrijving ipv de dialectafhankelijke L(lcl_mld_new)
var act_key = getQParamInt("act_key", -1); // Geplande taak

var kto_key = getQParamInt("kto_key", -1);
var kto_type = getQParam("kto_type", "");
if (kto_key > 0)
{
  // Is er al een KTO over deze B/M/R?
  var sql = "SELECT mld_melding_key FROM mld_melding"
          + " WHERE mld_melding_kto_key = " + kto_key
          + "   AND mld_melding_kto_type=" + safe.quoted_sql_upper(kto_type);
  var oRs = Oracle.Execute(sql);
  if (!oRs.Eof) {
    // Dan gaan we deze gewoon viewen?
    mld_key = oRs("mld_melding_key").Value;
  }
  oRs.Close();
}

var mld_grouped_key_arr = getQParamKeyArray("mld_grouped_key_arr", []);
var ref_type = getQParam("ref_type", "");   // In Case Of a new call for a contract

// OVERIGE PARAMETERS

// def_kenmerk_link_key: Default person for flexfields, can be used from deeplink (e-mail notification)
// txt: default tekst
// act_key: fac_activiteit_key voor geplande meldingen
transitParam = buildTransitParam(["loc_key", "bld_key", "def_kenmerk_link_key", "txt", "ins_key", "meldbronkey", "deelsrtcont_key",
                                  "verynew", "mld_copy", "mld_continue", "rsv_ruimte_key", "fromkb", "tracking", "start_key", "prs_key",
                                  "act_key", "dienst", "cnt_key", "typeopdr", "txtreado", "kto_type", "kto_key", "onderwerp", "default_prio",
                                  "ref_key", "ref_type", "noteonly", "confirmNewMelding", "autobutton", "mld_grouped_key_arr",
                                  "standalone", "meldracht", "template"]);
var afterTitleHtml = "";
var animatePageTitle = false;
if (mld_key >= 0)
{
  var mfe = mld.func_enabled_melding(mld_key); // heb ik uberhaubt leesrechten
  var hasFEread     = mfe.canFEread;
  var hasFOBOread   = mfe.haveFOBOrights;

  var mld_info = mld.mld_melding_info(mld_key);
  stdm_info = mld.mld_stdmeldinginfo(mld_info.stdm_key); // zet dialect vanzelf

  pageTitle = L('lcl_mld_complain') + " " + (mld_info.prefix ? mld_info.prefix  : "") + mld_key + (mld_info.mld_conceptstatus > 0 ? L('lcl_mld_conceptstatusmark') : "") + " " + (mld_info.mld_onderwerp || stdm_info.stdmelding_omschrijving);
  animatePageTitle = verynew && mld_info.mld_onderwerp_ai !== null && mld_info.mld_onderwerp_ai === mld_info.mld_onderwerp;

  if (user.has("WEB_MSGUSE")) {
    var sql_msg = "SELECT COUNT(*) reactions"
                + "  FROM fac_nieuws org, fac_nieuws r"
                + " WHERE r.fac_nieuws_omschrijving IS NULL"
                + "   AND r.fac_nieuws_parentkey = org.fac_nieuws_key"
                + "   AND org.mld_melding_key = " + mld_key;
    var oRs_msg = Oracle.Execute(sql_msg);
    var reactions = oRs_msg("reactions").Value;
    oRs_msg.Close();
    if (reactions) {
      var counterTitle = (reactions === 1 ? L("lcl_mld_msg_reaction_hint") : L("lcl_mld_msg_reactions_hint_m").format(reactions));
      afterTitleHtml = '<span class="fclt-icon-counter" title="' + counterTitle + '" data-count="{0}">'.format(reactions)
                     + I("fa-hand")
                     + '</span>';
    }
  }

  if (urole == "xx") // Voor als je via de shorturl binnen komt.
  {
    var authparamsMLDFOF = user.checkAutorisation("WEB_MLDFOF", true, mld_info.disc_key);

    if (authparamsMLDFOF)
      urole = "fo";
    else
      urole = "fe";
  }
}

if (mld_key == -1 || copy)
{
    if (cont)
    {
      var this_org_mld = mld.func_enabled_melding(mld_key_arr[0]); // Wat heb ik zoal aan rechten op deze specifieke melding
      var org_mld_info = mld.mld_melding_info(mld_key_arr[0]);
      var org_srtdisc_key = org_mld_info.srtdisc_key;
      user.anything_todo_or_abort(this_org_mld.canContinue && !org_mld_info.parent_key); // Geen child melding.
    }

    var isMeldracht = getQParamInt("meldracht", 0) == 1;
    if (isMeldracht)
      var page="mld_edit_meldracht.asp"; // Maak een nieuwe meldracht
    else
      var page="mld_edit_melding.asp"; // Maak een nieuw

    // strdisc MOET ik kunnen achterhalen om toe te kunnen voegen
    // Daarvoor gebruik ik de meest gedetailleerde van de meegegeven waarde(n)
    var mld_defaultstdmelding_key = getQParamInt("mld_defaultstdmelding", -1);
    if (copy)
    {
      // Bij copy is de key mld_key bekend, dus stdmelding is op te vragen.
    	mld_defaultstdmelding_key = mld_info.stdm_key;
    }
    if (mld_defaultstdmelding_key > 0)
    {
      sql = "SELECT ins_srtdiscipline_key"
          + "     , ins_discipline_key"
          + "     , COALESCE(mld_stdmelding_image,ins_discipline_image) icon"
          + "     , " + lcl.xsqla('mld_stdmelding_omschrijving', 'mld_stdmelding_key')
          + "  FROM mld_discipline, mld_stdmelding"
          + " WHERE mld_ins_discipline_key = ins_discipline_key"
          + "   AND mld_stdmelding_key IN (" + mld_defaultstdmelding_key + ")"
          + "   AND mld_stdmelding_verwijder IS NULL"
          + "   AND (mld_stdmelding_vervaldatum IS NULL OR mld_stdmelding_vervaldatum > SYSDATE)";
      oRs = Oracle.Execute(sql);
      if (oRs.eof)
      {
        shared.record_not_found();
      }
      else
      {
        var srtdisc_key = oRs("ins_srtdiscipline_key").value;
        var disc_key = oRs("ins_discipline_key").value;
        pageTitle = oRs("mld_stdmelding_omschrijving").value;  // is specifieker dan lcl_mld_new
        stdm_info.image = oRs("icon").value;
      }

      oRs.close();
    }
    else // misschien is disc meegegeven
    {
        var disc_key = getQParamInt("disc", -1);
        if (disc_key == -1) disc = getQParamInt("dis_key", -1);  // from fac_menu this could have been dis_key
        if (disc_key != -1)
        {
          sql = "SELECT ins_srtdiscipline_key, ins_discipline_image icon,"
              + lcl.xsqla('ins_discipline_omschrijving', 'ins_discipline_key')
              + "  FROM mld_discipline "
              + " WHERE ins_discipline_key = " + disc_key
              + "   AND ins_discipline_verwijder IS NULL";
          oRs = Oracle.Execute(sql);
          srtdisc_key = oRs("ins_srtdiscipline_key").value;
          pageTitle = oRs("ins_discipline_omschrijving").value;  // is specifieker dan lcl_mld_new
          stdm_info.image = oRs("icon").value;
        }
        else
        {
          if (kto_key > 0)
            var srtdisc_key = S("kto_srtdiscipline_key");
          else
          {
            var srtdisc_key = getQParamInt("srtdisc", -1);
            if (srtdisc_key > -1) {
              sql = "SELECT ins_srtdiscipline_key, ins_srtdiscipline_image icon,"
                  + lcl.xsqla('ins_srtdiscipline_omschrijving', 'ins_srtdiscipline_key')
                  + "  FROM ins_srtdiscipline "
                  + " WHERE ins_srtdiscipline_key = " + srtdisc_key
                  + "   AND ins_srtdiscipline_verwijder IS NULL";
              oRs = Oracle.Execute(sql);
              if (!oRs.eof)
              {
                pageTitle = oRs("ins_srtdiscipline_omschrijving").value;  // is specifieker dan lcl_mld_new
                stdm_info.image = oRs("icon").value;
              }
              oRs.Close();
            }
          }
        }
    }
    if (mld_defaultstdmelding_key > 0)
      transitParam += "&mld_defaultstdmelding=" + mld_defaultstdmelding_key;
    if (disc_key > 0)
      transitParam += "&disc=" + disc_key;

    if (urole == "xx")
    {
        var authparamsMLDFOF = user.checkAutorisation("WEB_MLDFOF", true, disc_key);
        if (mld_key < 0)
        {
          var mldfof_write = authparamsMLDFOF && (authparamsMLDFOF.PRSwritelevel < 9 && authparamsMLDFOF.ALGwritelevel < 9);
          if (mldfof_write)
            urole = "fo";
          else
            urole = "fe";
        }
        else
        {
          if (authparamsMLDFOF)
            urole = "fo";
          else
            urole = "fe";
        }
    }
}
if (srtdisc_key > 0) {
    lcl.set_dialect(srtdisc_key, "MLD_SRTDISCIPLINE_KEY");
}
%>

<html>
  <head>
<%
    FCLTHeader.Generate();
%>
    <script  type="text/javascript" >
      var verynew = "1";
      var confirmNewMelding = false;
      <% if (act_key === -1 && (mld_key == -1 || copy)) { %> FcltMgr.startEdit(window);<% } %>

      function meldingClose(params)
      {
        if (params.keepForm) // er is iets fout bij het opslaan
            return;
        if (params.redirect)
        {
            window.location.href = params.redirect;
            return true;
        }
        if (params.autoorder)
        {
          var data = { mld_key: params.mld_key,
                        urole: "<%=urole%>",
                        autoorder: 1
                      };
          <% protectRequest.dataToken("data"); %>
          $.ajax({ type: 'POST',
                    url: "../mld/mld_edit_opdr_save.asp",
                    data: data,
                    success: FcltCallbackAndThen(function () { $("#opdrlistframe").attr("src", $("#opdrlistframe").attr("src")); }), // Reload opdrachten subframe
                    dataType: "json",
                    async: false
                  });
          verynew = "0"; // zo nieuw zijn we niet meer.
          confirmNewMelding = true;
        }
<%      if (mld_key == -1 || copy)
        { %>
          if (params.cancel || params.close)
          {
            FcltMgr.closeDetail(window, params );
            return true;
          }
          FcltMgr.setTitle(L("lcl_complain") + " " + params.mld_key, {hot:false});  //TODO prefix erbij
          // nieuwe melding, ga verder in 'verynew' modus

<%        if (standalone)
          { %>
            window.location.href = "../Shared/empty.asp?msg=" + "lcl_mld_close_standalone";
            return true;
<%        } %>

          // Altijd complete reload, we hebben nu een mld_key namelijk
          var newUrl = "mld_melding.asp?verynew="+verynew+"&urole=<%=urole%>&mld_key=" + params.mld_key;
          if (confirmNewMelding) {
            newUrl += "&confirmNewMelding=1";
          }
          window.location.href = newUrl;
<%      }
        else
        { // Bestaande melding bewerkt, switch naar show-mode
%>
          $("#mldframe")[0].src = "mld_show_melding.asp?urole=<%=urole%>&mld_key=<%=mld_key%>";
          var ifrm = $("#mldnoteframe"); // Deze (voor de tracking) verversen
<%      } %>
      }
    </script>
  </head>

  <body>
<%

    var pageParams = { pageHeader: { icon: stdm_info.image || "fa-chevron-circle-right", title: pageTitle, afterTitleHtml: afterTitleHtml, animate: animatePageTitle } };
    if (act_key > 0 && mld_key === -1) {
      pageParams = {};
    }
    PAGE_START(pageParams);

    var mld_wide = false;
    if (mld_key == -1 || copy)
    {
      if (srtdisc_key > 0)
        transitParam += "&srtdisc=" + srtdisc_key;
      else
      {
        //Dan maar vragen
        var buttons = [];
        // Give the user a list and let him select a srtdiscipline.
        var srtdisc_params = { ins_key: ins_key, ref_type: ref_type, org_srtdisc_key: org_srtdisc_key };
        if (mld_grouped_key_arr.length) {
          srtdisc_params.mldgroup = 1;
        }
        var mySRTsql = mld.srtdisc_sql(srtdisc_params);
        var oRs = Oracle.Execute(mySRTsql);
        var authorized_srtdisc;
        while (!oRs.eof)
        {
          srtdisc_key = oRs("ins_srtdiscipline_key").value;
          var this_mld = mld.func_enabled_mld(srtdisc_key, "S"); // wat mag ik zoal op een nieuwe melding
          if (urole=='fe'?this_mld.canFEwrite:this_mld.canFOwrite) // check authorization on discipline
          {
            authorized_srtdisc = srtdisc_key;
            buttons.push({ title: oRs("ins_srtdiscipline_omschrijving").value,
                           icon: "fa-angle-right",
                           action: "srtdisc_key=" + srtdisc_key + ";$('div#dmodal').dialog('close').remove();"
                         });
          }
          oRs.MoveNext();
        }
        oRs.Close();

        if (buttons.length == 0)
        {
            shared.simpel_page(L("lcl_no_auth"));  // Response.End;
        }
        else if (buttons.length == 1)
        {
          transitParam += "&srtdisc=" + authorized_srtdisc;
          if (act_key > 0) {
            // Geplande taak gaat door zonder wrapper
          } else {
            page = "mld_melding.asp";
          }
          Response.Redirect(page + "?urole=" + urole + "&mld_key=" + (cont ? mld_key_arr.join(",") : mld_key) + transitParam);
        }
        else
        {
          var tpage = page;
          var page="../shared/empty.html"; // Achtergrondpagina
%>        <script>

            srtdisc_key = -1;
            function dialogClose()
            {
              if (srtdisc_key == -1)
                FcltMgr.closeDetail(window, { cancel: true } );
              else
<%        if (act_key > 0) { /* Geplande taak gaat door zonder wrapper */ %>
                window.location.href = "<%=tpage%>?urole=<%=urole%>&mld_key=<%=(cont ? mld_key_arr.join(",") : mld_key)%><%=transitParam%>&srtdisc="+srtdisc_key;
<%        } else { %>
                window.location.href = "mld_melding.asp?urole=<%=urole%>&mld_key=<%=(cont ? mld_key_arr.join(",") : mld_key)%><%=transitParam%>&srtdisc="+srtdisc_key;
<%        } %>
            }

            $(function()
            {
              var params = { title: L("lcl_mld_choose_srt"),
                             modal: true,
                             width: 334,
                             position: { my: "center", at: "center", of: <%=act_key > 0 ? "parent." : ""%>window },
                             close: dialogClose,
                             resizable: false,
                             create: <%=(act_key > 0 ? 'function(event, ui) { $(this).prev(".ui-dialog-titlebar").find(".ui-dialog-titlebar-close").addClass("fcltmodal" + FcltMgr._modalCount).hide(); }' : 'FcltMgr.fnCreateCloseButton("div#dmodal")')%>,
                             closeOnEscape: <%=(act_key > 0 ? "false" : "true")%>
                           };
              $("div#dmodal").dialog(params).dialog("open");
            });

          </script>
          <div id="dmodal" style="display:none">
<%          if (buttons.length)
              CreateButtons(buttons, { vertical: 1, isDialog: true } )
            else
              Response.write(L("lcl_mld_choose_na")); %>
          </div>
<%      }
      }
    }
    else
    {
      var page= (mode == "edit" ? "mld_edit_melding.asp" : "mld_show_melding.asp");
      if (mode != "edit")
          mld_wide = noteonly;
    }
    // HERE THE MAINFRAMEHEADER?
    // 1. Het hoofdframe
    page += "?urole=" + urole + "&mld_key=" + (cont ? mld_key_arr.join(",") : mld_key) + transitParam;
    IFRAMER("mldframe", page, { FcltClose: "meldingClose", wide: mld_wide } );

    // Bij het kopiëren van een melding zijn deze iframes niet van belang.
    // Bij het opslaan van de copy of vervolg melding worden deze gegevens niet opgeslagen en zullen ze initieel leeg zijn. Daarom gegevens van orginele melding niet tonen.
    if (mld_key > -1 && !copy)
    {
      if (mfe && mfe.canReadNotes && (!mfe.haveOnlyFErights || mld_info.stdm_notes & 1))
      {
        // Let op: dit kan vertrouwelijke info zijn. Controle op canWriteFO/BO kan niet lazy (evt wel specifiek)
        page = "mld_show_note2.asp?urole=" + urole + "&mld_key=" + mld_key + transitParam;

        IFRAMER("mldnoteframe", page, { refreshOnClose: true, sidebar: true } ); // sidebar heeft geen icon/title nodig
        if (S("ai_enabled") & 4) { %>
        <div id="dmodal" class="ai_mld_summary" style="display:none">
            <div class='mld-summary'>
                <div class="card">
                    <div class="header"><%=L("lcl_ai_generated")%></div>
                    <div class="body"><%=I("fa-spinner-third fa-spin fa-lg")%></div>
                </div>
            </div>
        </div>
<%      }
      }

      // 2. Het optionele workflowframe of andere vervolgmeldingen
      if (mfe.canReadAny && mld_info.mld_conceptstatus == 0)
      {
        page = "workflow_info.asp?embedded=1&urole=" + urole + "&mld_key=" + mld_key;
        IFRAMER("mldworkflowframe", page, { refreshOnActivate: true, refreshOnClose: true, icon: "fa-list" } ); // lcl_mld_continuation_mld heeft een spatie erachter -> nieuwe lcl
      }

      // Controleer of dit soort meldingen een BES component heeft of gedefinieerde MLD opdrachttypes.
      // Bovendien hebben deze frames pas zin als de status minstens Geaccepteerd is (PF: dan moet het toch >= 4 zijn ipv >=2?)
      // (Alleen BO mag aanmaken, kan dat gelijk na invoer doen, maar zo niet dan eerst accepteren)
      var showbes = false;
      var showres = false;
      var showord = false;
      var ordzichtbaarfe = false;
      if (mld_info.mld_status >= 2 && mld_info.mld_conceptstatus == 0)  // niet afgewezen(1), en conceptmelding is nog geen melding
      {
        showbes = mld_info.show_bes; // Heeft voor een gegeven (srt)discipline een vaste waarde
        showres = mld_info.show_res; // Heeft voor een gegeven (srt)discipline een vaste waarde
        // De opdrachttypes behorende bij de srtdiscipline of bij de discipline
        sql = "SELECT mto.mld_typeopdr_zichtbaarfe"
            + "  FROM ins_srtdiscipline sd"
            + "     , mld_discipline d"
            + "     , mld_typeopdr_srtdiscipline tsd"
            + "     , mld_typeopdr mto"
            + " WHERE tsd.ins_srtdiscipline_key = sd.ins_srtdiscipline_key"
            + "   AND tsd.ins_discipline_key IS NULL"
            + "   AND sd.ins_srtdiscipline_key = d.ins_srtdiscipline_key"
            + "   AND tsd.mld_typeopdr_key = mto.mld_typeopdr_key"
            + "   AND d.ins_discipline_key = " + mld_info.disc_key
            + " UNION ALL"
            + " SELECT mto.mld_typeopdr_zichtbaarfe"
            + "  FROM ins_srtdiscipline sd"
            + "     , mld_discipline d"
            + "     , mld_typeopdr_srtdiscipline tsd"
            + "     , mld_typeopdr mto"
            + " WHERE tsd.ins_discipline_key = d.ins_discipline_key"
            + "   AND tsd.ins_discipline_key IS NOT NULL"  // overbodig, maar wel duidelijk verschil met eerste clause
            + "   AND sd.ins_srtdiscipline_key = d.ins_srtdiscipline_key"
            + "   AND tsd.mld_typeopdr_key = mto.mld_typeopdr_key"
            + "   AND d.ins_discipline_key = " + mld_info.disc_key
            + " ORDER BY 1 DESC";   // zodat echte waarden eerder komen dan de null-waarden
        oRs = Oracle.Execute(sql);
        if (!oRs.eof)
          showord = true;
        while (!oRs.eof)
        { // Alle opdrachttypes doorlopen. Wellicht zit er een opdrachttype bij die wel door de fe zichtbaar is en die mogelijk opdrachten bevat die de fe mag zien.
          ordzichtbaarfe = ordzichtbaarfe || (oRs("mld_typeopdr_zichtbaarfe").value == 1 && user.isCollega(mld_info.melder_key)); // Het moet ook mijn eigen melding zijn (of van persoon waar ik vervanger van ben).
          oRs.MoveNext();
        }
        oRs.close();  // de overige records interesseren me in het geheel niet, ik weet al genoeg.
      }

      if (mld_key > 0 && (stdm_info.srt_disc_mldgroup & 1) && !mfe.haveOnlyFErights && mfe.canReadAny) // Kan groepering zijn
      {
        page = "mld_search_list.asp?tiny=1&urole=bo" + "&mldgroup_key=" + mld_key + transitParam;
        IFRAMER("mldmldlistframe", page, { refreshOnClose: true, icon: "fa-list" }  );
      }

      if (mfe.canReadAny) // Mocht ik geen leesrechten hebben, dan ook de opdrachten en bestellingen niet tonen.
      {
          var this_opdr = mld.func_enabled_mld(mld_info.aut_disc_arr, "D"); // wat mag ik zoal op een nieuwe melding
          if ((this_opdr.canORDBOFread || ordzichtbaarfe) && showord)  //TODO en: ik moet readrechten hebben op opdrachten (=?).
          { // Als ik ORDBOF leesrechten heb dan de opdrachtenlijst tonen met de bo rechten. Anders zie ik misschien niet alle opdrachten terwijl ik wel de rechter er voor heb.
            page = "opdr_list.asp?tiny=1&embedded=1&urole=" + (this_opdr.canORDBOFread? "bo" : urole) + "&mld_key=" + mld_key + transitParam;
            IFRAMER("opdrlistframe", page, { refreshOnActivate: true, refreshOnClose: true, icon: "fa-list" } );
          }

          if (showbes)
          { // Heb ik (minstens) readrechten op bestelaanvragen?
            var canReadAny = user.has(["WEB_BESBOF", "WEB_BESBAC", "WEB_BESFOF", "WEB_BESUSE"]);

            // Bij BO en FO rechten kun je in het bestellingsoverzicht ook bestellingen met de + knop toevoegen
            var role = urole;
            if (user.has("WEB_BESFOF"))
              role = "fo";
            else if (user.has("WEB_BESBOF"))
              role = "bo";

            if (canReadAny)
            { // Eigenlijk moet bes_list.asp geen urole meer gebruiken en auto-urole doen
              page = "../bes/bes_list.asp?tiny=1&groupby=0&urole=" + role + "&mld_key=" + mld_key + "&tiny=1" + transitParam;
              IFRAMER("mldbeslistframe", page, { refreshOnActivate: true, refreshOnClose: true, icon: "fa-list" });
            }
          }

          if (showres)
          {
            var resUrole = null;
            if (user.has("WEB_RESFOF")) {
              resUrole = "fo";
            } else if (user.has("WEB_RESBOF")) {
              resUrole = "bo";
            } else if (user.has("WEB_RESUSE")) {
              resUrole = "fe";
            } else if (user.has("WEB_RESBAC")) {
              resUrole = "mi";
            }
            if (resUrole) {
                page = "../res/res_list.asp?urole=" + resUrole + "&mld_key=" + mld_key;
                IFRAMER("resframe", page, { refreshOnClose: true, icon: "fa-list"  } );
            }
         }
      }

      // Als je geen mld rechten hebt dan hoef je iframe ook niet te tonen.
      var authparamsCTRBOF = user.checkAutorisation("WEB_CTRBOF", true);
      var hasReadCTRBOF = authparamsCTRBOF && authparamsCTRBOF.ALGreadlevel < 9 && authparamsCTRBOF.PRSreadlevel < 9;
      var sqlt = "SELECT COUNT(mo.mld_melding_object_key) aantal"
              + "  FROM mld_melding_object mo"
              + " WHERE mo.mld_melding_key = " + mld_key
              + "   AND mo.ins_deelsrtcontrole_key IS NOT NULL";
      var oRst = Oracle.Execute(sqlt);
      var has_taken = oRst("aantal").Value > 0;
      oRst.Close();

      if (hasReadCTRBOF && has_taken)
      {
        page = "../INS/ins_inspect_list.asp?mld_key=" + mld_key + "&urole=bo";
        IFRAMER("mldctrframe", page, { icon: "fa-list", title: L("ins_mjb_task")} );
      }

      if (hasFOBOread && mfe.hasTeams)  // Alleen als er behandelteams zijn, kan er over verloop gerapporteerd worden
      {
        page = "../MLD/mld_behandelverloop.asp?mld_key=" + mld_key;
        IFRAMER("mldbhgframe", page, { icon: "fa-stopwatch", title: L("lcl_mld_verloop")} );
      }

      if (hasFOBOread || (!hasFOBOread && hasFEread && !S("mld_hide_fe_tracking")))
      {
        page = protectQS.create("../shared/status_info.asp?mld_key=" + mld_key + "&urole=" + (urole == "fe" && hasFOBOread ? "bo" : urole));
        IFRAMER("mldhistoryframe", page, { icon: "fa-list", title: L("lcl_tracking")} );
      }

    } else if (mld_grouped_key_arr.length) { // Nieuwe melding om andere meldingen te groeperen toont ook de gerelateerde meldingen alvast in een subtab
        page = "mld_search_list.asp?tiny=1&urole=" + urole + "&mld_key_arr=" + mld_grouped_key_arr.join(",");
        IFRAMER("mldmldlistframe", page, { refreshOnClose: true, icon: "fa-list" }  );

    }
    PAGE_END();
%>
  </body>
</html>
<% ASPPAGE_END(); %>
