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

    File:               mld_show_melding.asp
    Description:        Detailscherm voor meldingen
    Parameters:         mld_key (REQUIRED)
                        urole (REQUIRED)
                        verynew: optional
    Context:
    Note:               TODO: ik kom hier af en toe met een urole, die me eigenlijk niet zo interesseert
                              maar mogelijk moet dat hogerop worden opgelost (mld_melding.asp)
                              Case: na toevoegen als FE kom je terug maar zie je geen opdrachtframe omdat daar
                                    vast op fe wordt gecheckt?
                                    De urole is inprincipe wel nodig voor scopes die kunnen verschillen,
                                    maar dat is in showmode niet zo wezenlijk.

    Note:           De lcl-textcontextswitcher is srtdisc=ins_srtdiscipline_key
                    Deze is dus verplicht, altijd bekend en moet bij alle
                    lcl's worden meegegeven.

*/
var mld_key = getQParamInt("mld_key");
var noteonly = getQParamInt("noteonly", 0) == 1;
var autobutton = getQParamSafe("autobutton", "");
var LOCKED_USER_OK = { "xmlnode": "melding", "key": mld_key };
%>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/iface.inc" -->
<!-- #include file="../Shared/disciplineselector.inc" -->
<!-- #include file="../Shared/persoonselector.inc" -->
<!-- #include file="../Shared/afdelingselector.inc" -->
<!-- #include file="../Shared/plaatsselector.inc" -->
<!-- #include file="../Shared/kostenplaatsselector.inc" -->
<!-- #include file="../Shared/rater.inc" -->
<!-- #include file="../fac/job.inc" -->
<!-- #include file="mld.inc" -->
<!-- #include file="mld_flexkenmerk.inc" -->

<%
FCLTHeader.Requires({ plugins: ["jQuery"],
                      js: ["jQuery-ui.js", "./mld_show_melding.js", "./mld.js", "../fac/faq.js"]
                    })

// AUTORISATIEPARAMETERS
var urole = getQParamSafe("urole");
var isTemplate = getQParamInt("template", 0) == 1;

var mld_melding = mld.mld_melding_info(mld_key); // Globale variabele met alle mld_melding informatie
var stdm_info   = mld.mld_stdmeldinginfo(mld_melding.stdm_key);

if (isTemplate && mld_melding.act_key > -1) {
  this_job = job.func_enabled_job(mld_melding.act_key);
}

if (urole == "xx") { // Vanuit geplande taak
  var authparamsMLDFOF = user.checkAutorisation("WEB_MLDFOF", true, mld_melding.disc_key);
  urole = authparamsMLDFOF ? "fo" : "fe";
}

// Om nog even compatible te blijven zodat alles nog even blijft werken. Moet er straks uit, natuurlijk.
var fronto = urole == "fo";
var backo  = urole == "bo";
var minfo  = urole == "mi";
var frontend = (!fronto && !backo && !minfo);

var autfunction = '';
if (fronto)
  autfunction = 'WEB_MLDFOF';
else if (minfo)
  autfunction = 'WEB_MLDBAC';
else if (backo)
  autfunction = 'WEB_MLDBOF';   // twijfel - PF
else
  autfunction = 'WEB_MLDUSE';

// Alleen verynew als de status van de melding nieuw (2) is of 0
// Voor een reload van het scherm kan de status namelijk aangepast zijn (bijvoorbeeld bij direct afmelden van de melding).
var verynew = getQParamInt("verynew", 0) == 1 && (mld_melding.mld_status == 2 || mld_melding.mld_status == 0) && !mld_melding.parent_key;

var this_mld = mld.func_enabled_melding(mld_key, { verynew: verynew, checkPublishRights: true }); // Wat heb ik zoal aan rechten op deze specifieke melding
this_mld.canChange = this_mld.canChange && !noteonly;

// canTimeReg is true if there is any order which canTimeReg
this_mld.canTimeReg = false;
if (user.has("WEB_UURUSE") || user.has("WEB_UURFOF"))
{
  var sql = "SELECT o.mld_opdr_key, mld_typeopdr_uren"
          + "  FROM mld_opdr o,"
          + "       mld_typeopdr mo"
          + " WHERE o.mld_typeopdr_key = mo.mld_typeopdr_key"
          + "   AND o.mld_melding_key = " + mld_key;
  var oRs = Oracle.Execute(sql);
  var lins_discipline_string = "";
  while (!oRs.eof)
  {
    // Is veel te zwaar: mld.func_enabled_opdracht(oRs("mld_opdr_key").Value).canTimeReg)
    var typeopdr_uren = oRs("mld_typeopdr_uren").Value;
    this_mld.canTimeReg = ( typeopdr_uren == 3 ||
                            typeopdr_uren == 4 ||
                            typeopdr_uren == 5) &&
                          ( user.has("WEB_UURUSE") || // Scopeloos dus niet in mresult
                            user.has("WEB_UURFOF"));

    if (this_mld.canTimeReg)
    {
      this_mld.canTimeReg = true;
      break;
    }
    oRs.Movenext();
  }
  oRs.Close();
}

var hasFOBOread   = this_mld.canFOread || this_mld.canBOread;
var hasFOBOMIread = this_mld.canFOread || this_mld.canBOread || this_mld.canMIread;

user.auth_required_or_abort(this_mld.canReadAny || this_mld.canChangeKenmerkBlok);

if (mld_melding.locked_user_key == user_key)
    mld.unlock(mld_key);

lcl.set_dialect(mld_melding.srtdisc_key, "MLD_SRTDISCIPLINE_KEY");
var subjectMail = L("lcl_mld_complain_subject").format((mld_melding.prefix||"")+mld_key, mld_melding.mld_stdmelding_omschrijving, mld_melding.ins_discipline_omschrijving, mld_melding.mld_onderwerp||"");
var urlMail = "../shared/queuemail.asp?pcode=MLDMAI&defemail_key=" + mld_melding.melder_key
            + "&key=" + mld_key
            + "&subject=" + Server.URLencode(subjectMail)
            + "&mailfrom=" + (hasFOBOread? 1 : 0)
            + "&pmodule=MLD"
            + "&pniveau=M";

// Zijn er velden verplicht die niet zijn ingevuld?
// Startdatum, Einddatum, Melding voor (persoon), Vakgroep en Melding (stdmelding) worden door enkele constraint op de mld_melding tabel al afgedwongen.
// Om een melding te forwarden/doorsturen moeten namelijk alle verplichte gegevens zijn ingevuld. Dat kan het geval zijn bij extern aangemaakte meldingen.
var emptyRequiredFields = false;
// Alleen als ik de melding door kan sturen de verplichte velden checken. Niet bij het corrigeren van de vakgroep/melding (canFixMelding) vanuit de status "Afgemeld(5)".
if (this_mld.canForward)
    emptyRequiredFields = mld.getEmptyRequiredFields(mld_melding);

var fwdInfo = mld.getFwdType(mld_key, this_mld, mld_melding);

// Verwijzing naar de parent
function parentButton()
{
  if (mld_melding.parent_key)
      mld.referentielink("M", mld_melding.parent_key, L("lcl_mld_completion_in"), { tooltip: true });
}

// Heb ik het recht om opdrachten aan te maken?
var ordschrijfrechten = false;
sql = "SELECT i.ins_discipline_key"
    + ",      wg.fac_gebruiker_alg_level_write"
    + " FROM fac_v_webgebruiker wg"
    + ",     fac_functie f"
    + ",     ins_tab_discipline i"
    + " WHERE wg.prs_perslid_key = " + user_key
    + " AND f.fac_functie_key = wg.fac_functie_key"
    + " AND f.fac_functie_code = 'WEB_ORDBOF'"
    + " AND wg.fac_gebruiker_alg_level_write < 9"
    + " AND wg.ins_discipline_key = i.ins_discipline_key"
    + " AND i.ins_discipline_key = " + mld_melding.disc_key
oRs = Oracle.Execute( sql );
if (!oRs.eof)
    ordschrijfrechten = true;
oRs.close();

// Heb ik het recht om bestellingen aan te maken (voor een knop)?
// Alleen van belang als het een bes-srtdiscipline is
// De huidige MLD-discipline-key heeft hier NIETS mee te maken
var besschrijfrechten = false;
if (mld_melding.show_bes)
{
  var authparamsBES = user.checkAutorisation("WEB_BESFOF", true);
  besschrijfrechten = authparamsBES && authparamsBES.ALGwritelevel < 9;

  // Als ik het afleveradres moet tonen heb ik de naam nodig
  if (mld_melding.show_bes)
  {
    sql = "SELECT ma.mld_adres_naam, ma.alg_locatie_key"
        + " FROM mld_adres ma"
        + " WHERE mld_adres_key = " + mld_melding.deladdress_key;
    oRs = Oracle.Execute( sql );
    if( !oRs.eof )
    {
      mld_melding.deladdressnaam = oRs("mld_adres_naam").value;
      if (mld_melding.loc_key == -1 && !mld_melding.show_alg)
      { // Als het een niet plaatsgebonden melding is, is deze locatie (indien gevuld)
        // een goede benadring voor de locatie-parameter voor de link naar de historie (kennisbank)
        mld_melding.loc_key = oRs("alg_locatie_key").value;
      }
    }
    oRs.close();
  }
}

var url_get_mld_info_ajax = "../mld/get_mld_info_ajax.asp?mld_key=" + mld_key;

%>
<html>
  <head>
<% FCLTHeader.Generate(); %>
    <script type="text/javascript">

      var protected_mld_info_ajax = "<%=safe.jsstring(protectQS.create(url_get_mld_info_ajax))%>";
      var mld_key = <%=mld_key%>;
      var act_key = <%=getQParamInt("act_key", -1)%>;
      var mldPrefix = "<%=safe.jsstring(mld_melding.prefix)%>";
      var mld_allow_parentmelding = <%=S("mld_allow_parentmelding")%>;
      var verynew = <%=verynew? 1 : 0%> == 1;
      var defemail_key = <%=mld_melding.melder_key%>;
      var urole = "<%=urole%>";
      var setting_mld_accept_confirm = <%=S("mld_accept_confirm")?1:0%>;
      var emptyRequiredFields = <%=emptyRequiredFields? 1 : 0%>;

      $(function ()
      {
        if (<%=mld_melding.act_key%> == -1) { // Title van tab niet aanpassen voor melding sjablonen.
          FcltMgr.setTitle("<%=safe.jsstring((S("mld_num_prefix_mode") == 1 ? "" : L("lcl_complain") + " ") + (mld_melding.prefix || "") + mld_key)%>", { hot: false });
        }
        $('textarea').resize(function () { FcltMgr.resized(window) } );
        $('textarea').autogrow();

        call_autobutton();
      });

      function call_autobutton()
      {
        var auto_button = "<%=autobutton%>".toLowerCase();
        if (auto_button == "accept")
        {
            mld_accept(stdm_info.doublecheck);
        }
      }

      function mld_mail()
      {
        function mldMailCallback(data)
        {
          FcltToast(L("lcl_mld_is_mldmai") + data.emails);
        }
        var subject = "<%=safe.jsstring(subjectMail)%>";
        var url = "<%=safe.jsstring(protectQS.create(urlMail))%>";
        FcltMgr.openModalDetail(url, subject, { callback: mldMailCallback });
      }

      var stdm_info = "<%=safe.jsstring(JSON.stringify(stdm_info))%>";

      function cadShowdiscfn()
      {
        var disc_arr = [];
        if (stdm_info.ins_srtinst)
        {
          for (var i = 0; i < stdm_info.ins_srtinst.length; i++)
          {
            if (stdm_info.ins_srtinst[i].ins_srtinstallatie_niveau == "D")
                disc_arr.push(stdm_info.ins_srtinst[i].ins_srtinstallatie_key);
          }
        }
        return disc_arr;
      };

      function cadShowthemafn()
      {
        var thema_key = (stdm_info.cad_thema_key ? stdm_info.cad_thema_key : -1);
        return thema_key;
      };

      <% OVERRULELAYOUT("mld_edit_melding", { "isnew": false, "urole": urole }); %>

    </script>
  </head>
  <body class="showmode<%= mld_melding.parent_key ? ' child' : '' %><%=noteonly ? ' logboek' : ''%>">
<%
SUBFRAME_START();

  // We weten alles. Tijd om te bepalen welke knoppen er zijn:
  // Knoppen zijn afhankelijk van de volgende dimensie's
  // - mld_status
  // - urole
  // - is_fo_melding
  // - (heb ik) ordschrijfrechten

  var buttons = [];

  if (isTemplate)
  {
    if (this_job.canWriteTemplate)
      buttons.push({ title: L("lcl_change"),  icon: "fa-fclt-edit", action: "mld_change('" + this_mld.canChangeUrole + "')" });
    // else: geen buttons.
  }
  else
  {
    if (this_mld.canChange || this_mld.canChangeKenmerkBlok)
      if (this_mld.canClose && mld_melding.is_fo_melding && verynew)
          buttons.push({ title: L("lcl_close"), icon: "fa-flag-checkered", action: "mld_close(true)", autoshow: true, tooltip: L("lcl_close_hint") });
      else
          buttons.push({ title: L("lcl_change"),  icon: "fa-fclt-edit", action: "mld_change('" + this_mld.canChangeUrole + "')" });

    if (this_mld.canInstem)
      buttons.push({ title: L("lcl_instem"), icon: "fa-thumbs-up",  action:"mld_instem()", autoshow: true, tooltip: L("lcl_instem_hint")});

    if (this_mld.canAdd2Faq)
     buttons.push({ title: L("lcl_mld_addtofaq"), icon: "fa-rectangle-history-circle-plus", action:"mld_add2faq()", autoshow: false, tooltip: L("lcl_mld_addtofaqinfo") });

    if (this_mld.canUnlink)
      buttons.push({ title: L("lcl_unlink"), icon: "fa-unlink",   action:"mld_unlink()",  autoshow: false , tooltip: L("lcl_unlink_hint") });

    if (this_mld.canLink)
      buttons.push({ title: L("lcl_link"), icon: "fa-link",   action:"createLink()",  autoshow: false , tooltip: L("lcl_link_hint") });

    if (this_mld.canDoorzet) // fo2bo
      buttons.push({ title: L("lcl_doorzet"), icon: "fa-step-forward",   action:"mld_doorzet()",  autoshow: true, tooltip: L("lcl_doorzet_hint") });

    if (this_mld.canAccept)
      buttons.push({ title: L("lcl_accept"), icon: "fa-check",  action:"mld_accept(" + stdm_info.doublecheck + ")",  autoshow: true, tooltip: L("lcl_accept_hint")});  /* als verynew reload tab met edit-versie? */

    if (this_mld.canTerugzet) // bo2fo
      buttons.push({ title: L("lcl_terugzet"), icon: "fa-step-backward",  action:"mld_terugzet()", tooltip: L("lcl_terugzet_hint") });

    if (this_mld.canReject && (mld_melding.mld_status == 2 || mld_melding.mld_status == 0)) // inclusief this_mld.canInstem
        buttons.push({ title: L("lcl_mld_reject"), icon: (this_mld.canInstem ? "fa-thumbs-down" : "fa-times"), action:"mld_reject()",  autoshow: true, tooltip: L("lcl_reject_hint") });

    if ((fwdInfo.fwdType & 1) && (this_mld.canForward || this_mld.canFixMelding)) // bo2bo
      buttons.push({ title: fwdInfo.fwdLabel, icon: (fwdInfo.fwdType == 1 ? "fa-retweet" : "fa-external-link"),
                    action: "mld_forward('" + this_mld.canChangeUrole + "', 1, " + mld_melding.mld_ins_discipline_key + ")",
                    tooltip: fwdInfo.fwdHint });
    if ((fwdInfo.fwdType & 2) && this_mld.canForwardTeam)
      buttons.push({ title: L("lcl_mld_forward_team"), icon: "fa-arrow-right",  action:"mld_forward('" + this_mld.canChangeUrole + "', 2, " + mld_melding.mld_ins_discipline_key + ")", tooltip: L("lcl_mld_forward_team_hint") });

    if (this_mld.canFixSLA)
     buttons.push({ title: L("lcl_mld_fix_sla"), icon: "fa-clock", action:"mld_fix_sla()", autoshow: false, tooltip: L("lcl_mld_fix_sla_hint"), ximportance: 2 });

    if ((this_mld.canClose || this_mld.canCloseWithOrder) && !verynew)
      buttons.push({ title: L("lcl_close"),  icon: "fa-flag-checkered",  action:"mld_close()", autoshow: true, tooltip: L("lcl_close_hint") });

    if (this_mld.canReopen)
      buttons.push({ title: L("lcl_mld_reopen"),  icon: "fa-unlock",  action:"mld_reopen()", autoshow: true, tooltip: L("lcl_mld_reopen_hint") });

    if (this_mld.canTimeReg)
      buttons.push({ title: L("lcl_menu_mld_uren_fo"), icon: "fa-clock", action: "mld_timereg()", tooltip: L("lcl_menu_mld_uren_fo_hint") });

    if (mld_melding.workflowRoot && user.has("WEB_MLDMSU") && S("mld_msu_can_stop_workflows"))
      buttons.push({ title: L("lcl_mld_cancel_workflow"), icon: "fa-stop-circle", action:"mld_cancelworkflow()", tooltip: L("lcl_mld_cancel_workflow_hint") });

    if (this_mld.canCopy)
      buttons.push({ title: L("lcl_mld_copy"), icon: "fa-copy", action: "mld_copy()", tooltip: L("lcl_mld_copy_hint") });

    if (this_mld.canAfrond && !mld_melding.mld_afgerond)
      buttons.push({ title: L("lcl_mld_afrond"), icon: "fa-flag", action: "mld_afrond()", tooltip: L("lcl_mld_afrond_hint") });

    if (this_mld.canReject && ((S("fac_betafeatures")&4 == 4) || user.has("WEB_MLDMSU")) && (mld_melding.mld_status != 2 && mld_melding.mld_status != 0)) // na acceptatie is reject een cancel
        buttons.push({ title: L("lcl_mld_cancel"), icon: "fa-trash-can-xmark", action:"mld_reject()",  autoshow: false, tooltip: L("lcl_cancel_hint") });

    if (this_mld.canVerwerk) // && mld_melding.mld_afgerond?
      buttons.push({ title: L("lcl_mld_verwerk"), icon: "fa-archive", action: "mld_verwerk()", tooltip: L("lcl_mld_verwerk_hint") });

    if (this_mld.canHerplan)
      buttons.push({ title: L("lcl_reschedule"), icon: "fa-calendar-circle-exclamation", action: "mld_herplan()", tooltip: L("lcl_reschedule_hint") });

    if (user.has("WEB_MLDMGT") && mld_melding.startkey == mld_key)
      buttons.push({ title: L("mld_workflow"), icon: "fa-share-alt", tooltip: L("mld_workflow_hint"), action: "FcltMgr.openDetail('/appl/mgt/workflow_graph.asp?start_key={0}&mld_key={1}')".format(mld_melding.wfstep, mld_key) });

    if (S("mld_show_search_similar") && this_mld.haveFOBOrights)
    {
      var goegel = "FcltMgr.openDetail('/appl/mld/mld_search.asp?urole=" + urole + "&chkSelf=1&chkBusy=1&autosearch=1"
                 + "&stdm_str=" + mld_melding.stdm_key
                 + "&gebouw_key=" + mld_melding.bld_key + "&locatie_key=" + mld_melding.loc_key
                 + "', '" + L("lcl_mld_similarcalls") + "') ";

      buttons.push({ icon: "fa-search-location", title: L("lcl_mld_similarcalls"), action: goegel, ximportance: 3, tooltip: L("lcl_mld_similarcalls_hint")});
    }
    if (this_mld.canPublish) {
      buttons.push({ title: L("lcl_mld_publish"), icon: "fa-megaphone", action: "mld_publish()", tooltip: L("lcl_mld_publish_hint") });
    }
    buttons.push({ icon: "fa-print",        title: L("lcl_print"),          action: 'mld_print()' });
    buttons.push({ icon: "fa-envelope",     title: L("lcl_noti_mld_email"), action: 'mld_mail()'  });
    buttons.push({ icon: "fa-share-square", title: L("lcl_mld_delen"),      action: 'mld_delen()' });
  }

  // UNDER DESIGN
  IFRAMER_HEADER( L("lcl_details") /* de tekst zit nu een niveau hoger, dan hoeven hier alleen buttons */
                 , buttons
                 , { ishtmlsafe: true, noHamburger: noteonly });

  shared.notificatie_fail_BLOCK(mld_key, 'melding');

  // Als niet verynew dan doe je opdrachten en bestellen maar onderin het frame
  // Als je geen rechten hebt tot accepteren van de melding (BO) dan mag je zeker ook geen opdracht en bestelling aanmaken
  if (this_mld.canAccept && ordschrijfrechten && verynew) // TODO: De reguliere button hoeft niet meer, alleen autoshow!
      buttons.push({ title: L("lcl_shared_order"), icon: "fa-wrench",  action:"mld_orders(" + stdm_info.doublecheck + ")",  autoshow: (S("mld_ask_for_orders") && mld_melding.noWorkflow), tooltip: L("lcl_orders_hint") });
  if (this_mld.canAccept && besschrijfrechten && verynew) // Impliceert tevens show_bes
      buttons.push({ title: L("lcl_bes_bestelling"), icon: "fa-shopping-cart", action: "mld_bestel()", autoshow: (S("mld_ask_for_orders")), tooltip: L("lcl_bes_hint") });

  var anyAuto=false;
  for (var i = 0; !anyAuto && i < buttons.length; i++)
      anyAuto = buttons[i].autoshow;

  if (anyAuto && verynew) // Eigenlijk: *alleen* autoshow, vandaar pas NADAT hiervoor de buttons in de header geplaatst zijn; niet voor FE
      buttons.push({ title: L("lcl_doorzet"), icon: "fa-minus", action:"mld_laatgaan()", autoshow: true,
                     tooltip: (mld_melding.mld_status == 0 ? L("lcl_laatgaan_hint_fo"): L("lcl_laatgaan_hint")) }); /* en close tab? */

  if (!(mld_melding.act_key > 0) && verynew && anyAuto)
  {
%>    <script>

        $(function ()
        {
          var params = { title: "<%=safe.jsstring(L("lcl_select_nextaction"))%>",
                         modal: true,
                         width: "auto",
                         resizable: false,
                         position: { my: "center top", at: "center bottom", of: ".fcltframeheader" },
                         close: function()
                         {
                           if (FcltMgr.detailManager()._editactive && FcltMgr._panelModalHot)
                           {
                             FcltMgr._panelModalHot = false;
                             FcltMgr.stopEdit(window);
                           }
                         },
                         create: FcltMgr.fnCreateCloseButton("div#dmodal")
                       };
          // Prevent the dialog if the tab is pinned
          $('div#dmodal').hide();
          $('div#dmodal').dialog(params).dialog('open');
          FcltMgr._panelModalHot = true;
          FcltMgr.startEdit(window);
        });
      </script>
      <div id="dmodal">
<%      CreateButtons(buttons, { vertical: 1, autoshowOnly: true, TooltipIsText: true, isDialog: true, showIcons: true  }) %>
      </div>
<%}

  if (!(mld_melding.act_key > 0) && verynew && !anyAuto || getQParamInt("confirmNewMelding", 0) == 1) {
      if (urole == "fe" && L("lcl_mld_fe_newmelding_confirm")) {
%>
        <script>
          $(function() {
            FcltMgr.alert(L("lcl_mld_fe_newmelding_confirm").format("<%=mld_key%>"));
          });
        </script>
<%
      }
  }

  /* Global variables (spanning multiple BLOCK's) */
  // Uitvoertijden naar dagen omrekenen zodat we ze onderling goed kunnen vergelijken.
  var mld_respijt = mld_melding.respijt_eenheid == "U"? mld_melding.respijt / 24 : mld_melding.respijt;
  var mld_uitvoertijd = mld_melding.uitvoertijd_eenheid == "U"? mld_melding.uitvoertijd / 24 : mld_melding.uitvoertijd;
  var mld_actualuitvoertijd = mld_melding.actualuitvoertijd_eenheid == "U"? mld_melding.actualuitvoertijd / 24 : mld_melding.actualuitvoertijd;
  /* \Global variables */

  /* In deze functie staan alle blokken */
  function writeBlock(id)
  {
    if (blockPrinted[id])
        return true;

    if (id == "mldCaller")
    {
      // Dit block bevat alles over de initiatie van de melding:
      // waar komt het vandaan (wie), wie gaat het betalen, bij wie moet je wezen voor meer info e.d.

      BLOCK_START(id, L("lcl_mld_aanvragergegevens"), { icon: (mld_melding.wfstep > 0 && mld_melding.startkey != mld_key ? "fa-diagram-project" : "fa-user") });
        FCLTpersoonselector("person",
                            "sgPerson",
                            { perslidKey: mld_melding.melder_key,
                              label: L("lcl_mld_name"),
                              fieldId: "fldmelder",
                              filtercode: "M",
                              moreinfo: (this_mld.canFOread || this_mld.canBOread),
                              readonly: true
                            });

        if (S("show_issuer_phone") & 1)
            ROFIELDTR ("fld", L("lcl_prs_person_phone"), mld_melding.melder_telefoonnr, { suppressEmpty: true, type: "telefoon" });

        // In showmode hoef ik niet twee keer dezelfde naam te tonen en wil ik ongeacht setting S("mld_allow_for_others") tonen als ze verschillen
        if (mld_melding.perslid_key_voor != mld_melding.melder_key)
        {
          FCLTpersoonselector("personFor",
                              "sgPersonFor",
                              { perslidKey: mld_melding.perslid_key_voor,
                                label: L("lcl_mld_call_for"),
                                readonly: true,
                                moreinfo: (this_mld.canFOread || this_mld.canBOread || this_mld.canMIread)
                              });
        }

        if (S("mld_use_department") == 1)
        {
          var authparamsPRS = user.checkAutorisation("WEB_PRSUSE", true);
          FCLTafdelingselector("sgDept", "sgDept",
                               { departmentKey: mld_melding.afdeling_key || -1,
                                 label: L("lcl_mld_afdeling"),
                                 suppressEmpty: true,
                                 filtercode: "INCL",
                                 readonly: true,
                                 moreinfo: authparamsPRS && authparamsPRS.PRSreadlevel < 9
                               });
        }

        if (mld_melding.kostenpl_key>0)
        { // Omdat deze selectors geen suppressEmpty hebben
          FCLTkostenplaatsselector("account",
                                    "sgAccount",
                                    -1,
                                    { kostenplaatsKey: mld_melding.kostenpl_key,
                                      label: !frontend && mld_melding.mld_kk == 1? L("lcl_mld_inf_Kostenklant") : L("lcl_account"), // Label is shown when showCustomLabel = true
                                      showCustomLabel: true,
                                      readonly: true
                                    });
        }
        if (S("show_ordernr") != 0)
            ROFIELDTR("fldshort", L("lcl_mld_inf_Ordernr"), mld_melding.mld_ordernr, {suppressEmpty: true});

        ROFIELDTR("naam_ext", L("lcl_mld_naam_ext"), mld_melding.naam_ext, {suppressEmpty: true});
        ROFIELDTR("email_ext", L("lcl_mld_email_ext"), mld_melding.email_ext, {suppressEmpty: true});
        ROFIELDTR("tel_ext", L("lcl_mld_tel_ext"), mld_melding.tel_ext, {suppressEmpty: true});
        if (mld_melding.meldbron_key != S("mld_meldbron_key"))
        { // Niet lastigvallen met defaultwaarde
          sql = "SELECT "+lcl.xsqla('mld_meldbron_omschrijving', 'mld_meldbron_key')
              + "  FROM mld_meldbron"
              + " WHERE mld_meldbron_key = " + mld_melding.meldbron_key;
          oRs = Oracle.Execute(sql);

          ROFIELDTR("fld", L("lcl_mld_meldbron"), oRs("mld_meldbron_omschrijving").value);
          oRs.close();
        }
        ROFIELDTR("fld", L("lcl_mld_meldbron_nr"), mld_melding.meldbron_nr, {suppressEmpty: true});
        ROFIELDTR("fld", L("lcl_mld_externr"), mld_melding.externnr, {suppressEmpty: true});
        if (mld_melding.startkey && mld_melding.startkey != mld_key) {
            mld.referentielink("M", mld_melding.startkey, L("lcl_mld_continue_of"), { tooltip: true });
        }
      BLOCK_END();
    } // \mldCaller
    else if (id == "mldMelding")
    {
      // Dit block bevat alles over de gekozen categorisering en gevolgen daarvan zoals SLA
      // Is statisch en zegt niks over het specifieke verloop van deze melding

      BLOCK_START(id, L("lcl_mld_categorie"), {icon: "fa-tag"});
        if (user.has("WEB_PRSSYS"))
            var params1 = { infoPointer: { Url: "/appl/mgt/mld_srtdiscipline.asp?mode=wrap&id=" + mld_melding.srtdisc_key } };
        else
            var params1 = {};
        if (user.has("WEB_MLDMGT"))
        {
          var params2 = { infoPointer: { Url: "/appl/mgt/mld_discipline.asp?mode=wrap&id=" + mld_melding.disc_key } };
          var params3 = { infoPointer: { Url: "/appl/mgt/mld_stdmelding.asp?mode=wrap&id=" + mld_melding.stdm_key } };
          var params4 = { infoPointer: { Url: "/appl/mgt/mld_stdmeldinggroep.asp?mode=wrap&id=" + stdm_info.stdmeldinggroep_key }, suppressEmpty: true };
        }
        else
        {
          var params2 = {};
          var params3 = {};
          var params4 = { suppressEmpty: true } ;
        }
        params2.id = "disc_show";
        ROFIELDTR("fld", L("lcl_vakgroup_type"), mld_melding.srtdisc_oms, params1);
        ROFIELDTR("flddisc", L("lcl_vakgroup"), (S("mld_num_prefix_mode") == 0 ? (mld_melding.prefix ? mld_melding.prefix + "-" : "") : "") + mld_melding.ins_discipline_omschrijving, params2);
        if (!frontend)
            ROFIELDTR("flddisc", L("lcl_mld_meldinggroep"), mld_melding.meldinggroep, params4);
        ROFIELDTR("flddisc", L("lcl_complain"), mld_melding.mld_stdmelding_omschrijving, params3);

        // Normale prio tonen we standaard niet, behalve bij prioriteitenmatrix
        if (stdm_info.priomatrix > 0 && mld_melding.mprio)
        {
          ROFIELDTR("fld", L("lcl_mld_urgentie") + " x " + L("lcl_mld_impact"), mld.geturgentietext(mld_melding.murgentie)  + " x " + mld.getimpacttext(mld_melding.mimpact));
          ROFIELDTR("fldprio", L("lcl_mld_urg"),  mld.getpriotext(mld_melding.mprio), {icon: mld.getpriocon(mld_melding.mprio), iconclass: "pricon"});
        }
        else
        {
          ROFIELDTR("fldprio", L("lcl_mld_urg"), ((mld_melding.mprio != 3) ? mld.getpriotext(mld_melding.mprio) : ""), { suppressEmpty: true});
        }
        if (stdm_info.slabewaken)
        {
            ROFIELDTR("fld", L("lcl_mld_stduitvoer"), mld_melding.uitvoertijdtxt, {tooltip: mld.getregimetext(stdm_info.regime)});
            ROCHECKBOXTR("fldafr", L("lcl_mld_indult"), mld_melding.indult, { suppressEmpty: true });
        }

        ROCHECKBOXTR("", L("lcl_mld_publiek"), mld_melding.publiek, { suppressEmpty: true, trclass: "mldpublic" });
        ROCHECKBOXTR("fldkto", L("lcl_mld_kto_invite"), mld_melding.kto, { suppressEmpty: true });

      BLOCK_END();
    } // \mldMelding
    else if (id == "mldAlg")
    {
      if (mld_melding.show_alg && mld_melding.alg_onrgoed_niveau != "H")  // H = Hidden
      {
        // Dit block bevat alles over de plaats van handeling: waar moet je wezen
        // waar is het en waar moet je wezen

        BLOCK_START(id, L("lcl_plaatsgegevens"), {icon: "fa-map-marker"});
          FCLTplaatsselector(-1, {  locatiekey: mld_melding.loc_key,
                                    gebouwkey: mld_melding.bld_key,
                                    verdiepingkey: mld_melding.flr_key,
                                    ruimtekey: mld_melding.room_key,
                                    moreinfo: (this_mld.canFOread || this_mld.canBOread),
                                    cadSelect: true,
                                    cadDwgX: mld_melding.dwgx,
                                    cadDwgY: mld_melding.dwgy,
                                    mld_key: mld_key,
                                    cadShowdiscfn: true,
                                    cadShowthemafn: true,
                                    terrein: true,
                                    suppressEmpty: true,
                                    readonly: true
                                  });
          // Afleveradres in dit geval in eigen blok (vooralsnog)
        BLOCK_END();
      }
    } // \mldAlg
    else if (id == "mldBes")
    {
      if (mld_melding.show_bes && mld_melding.deladdressnaam)
      {
        BLOCK_START(id, L("lcl_aflevergegevens"), {icon: "fa-address-card"});
          ROFIELDTR("fld", L("lcl_delivery_address"), mld_melding.deladdressnaam);
        BLOCK_END();
      }
    } // \mldBes
    else if (id == "mldInfo")
    {

      //  Dit block bevat de voor deze melding specifieke gegevens over status en tijdlijn
      //  Hier zie je bij elkaar alle procesinfo qua status en planning

      BLOCK_START(id, L("lcl_mld_behandeling"), { icon: "fa-clock" });

        // begindatumtijd
        ROFIELDTR("flddatetime", L("lcl_mld_startdate"), toDateTimeString(mld_melding.melddatum, false, false, true));
        // actuele status
        ROFIELDTR("fld", L("lcl_mld_status"), mld_melding.mld_status_str);  // De infopointer werd subtab
        // eventueleinstemmingsubstatus
        if (mld_melding.mld_conceptstatus > 0)
        {
          var instemmer_key = mld.getinstemmer_key(mld_key);
          ROFIELDTR("fld fldconsent", L("lcl_mld_conceptstatus"), L("lcl_mld_conceptstatus_{0}_by".format(mld_melding.mld_conceptstatus)).format(instemmer_key ? (new Perslid(instemmer_key)).naam() : ""));
        }
        // indien klaar: sinds wanneer
        ROFIELDTR("flddatetime", L("lcl_mld_closedate"), toDateTimeString(mld_melding.afmelddatum, false, false, true), { suppressEmpty: true});
        // indien klaar: ook (al) administratief afgerond?
        ROCHECKBOXTR("fldafr", L("lcl_mld_afgerond"), mld_melding.mld_afgerond, { suppressEmpty: true });

        // Eerste behandelaar > naar behandblok TODO
        if (mld_melding.behandel_key > 0) {
          FCLTpersoonselector("sBehandel",
                              "sgBehandelaar",
                              { perslidKey: mld_melding.behandel_key,
                                label: L("lcl_mld_behandelaar"),
                                fieldId: "fldbehandel",
                                moreinfo: (this_mld.canFOread || this_mld.canBOread),
                                readonly: true
                              });
        }

        var txt = "";
        if (((mld_melding.actiecode & 128) && !frontend) ||                                         // Attentie bij BO (en ik ben BO)
            ((mld_melding.actiecode & 256) && (frontend || user_key == mld_melding.melder_key))) {  // Attentie bij FE (en ik ben FE)
            txt = L("lcl_mld_actiecodeATT");  // Attentie
        } else if (mld_melding.actiecode & 2) { // Actie bij aanvrager
            txt = L("lcl_mld_actiecodeFE");
        }
        ROFIELDTR("mldshowactie badge bg-danger text-light", L("lcl_mld_actiecode"), txt, {suppressEmpty: true});
        // Voorafgaande melding.. hier??
        parentButton(); // Knop staat er ook nog een keer bij de afhandeling

        if (mld_melding.actiedatum != null)  // impliceert stdm_info.show_actiedatum (nu of vroeger, maar ook als extern gevuld tonen)
        {
          var date_is_today = (mld_melding.actiedatum.midnight().getTime() == new Date().midnight().getTime());
          var date_has_passed = (mld_melding.actiedatum.midnight().getTime() <= new Date().midnight().getTime());
          ROFIELDTR("flddatetime" + (date_is_today? " today" : "") + (date_has_passed ? " expired2  ": ""), L("lcl_mld_actiondate"), toDateTimeString(mld_melding.actiedatum, false, false, true));
        }

        // Mijlpaal; de frontend mag alleen externe mijlpalen zien
        if (mld_melding.tag_key != null && ( !frontend || (frontend && (stdm_info.taggable&2)==2)))
        {
          var date_has_passed = (mld_melding.tag_datum.midnight().getTime() <= new Date().midnight().getTime());
          var params = {tooltip: toDateString(mld_melding.tag_datum) };
          if (user.has("WEB_MLDTAG")) {
              params.infoPointer = { Url: "/appl/mgt/mld_melding_tag.asp?mode=wrap&id=" + mld_melding.tag_key };  // TODO deze lijkt in SCF geen edit te bieden ivm Popup-edit??
          }
          ROFIELDTR("fld" + (date_has_passed ? " expired2  ": ""), L("mld_melding_tag_naam"), mld_melding.tag_naam, params);
        }

        if (stdm_info.planbaar != 2 && !mld_melding.parent_key)
        {
          // Extra class "expired2" toevoegen indien te laat
          var klaar_na_sla = stdm_info.slabewaken && (mld_actualuitvoertijd > mld_uitvoertijd + mld_respijt);
          var lclass = (klaar_na_sla? " expired2" : "");
          if (mld_melding.uitvoertijd_eenheid == "U" || S("mld_show_endtime") == 1)
              ROFIELDTR("flddatetime" + lclass, ((stdm_info.planbaar == 0 && stdm_info.planbaarfe == 1) ? L("lcl_mld_desirable_enddate") : L("lcl_mld_enddate")), toDateTimeString(mld_melding.einddatum, false, false, true), { title: (klaar_na_sla? L("lcl_mld_klaar_na_sla") : "") });
          else
              ROFIELDTR("flddate" + lclass, ((stdm_info.planbaar == 0 && stdm_info.planbaarfe == 1) ? L("lcl_mld_desirable_enddate") : L("lcl_mld_enddate")), toDateString(mld_melding.einddatum, false, true));
        }

        //
        if (stdm_info.slabewaken)
        {
          if (mld_respijt != 0 || mld_actualuitvoertijd > mld_uitvoertijd)
          {
            var lclass = (mld_actualuitvoertijd > mld_uitvoertijd + mld_respijt? " expired2" : "");
            if (mld_melding.respijt != 0)
                ROFIELDTR("fld", L("lcl_mld_respijt"), mld_melding.respijttxt );
            ROFIELDTR("fld" + lclass, L("lcl_mld_actualuitvoer"), mld_melding.actualuitvoertijdtxt);
          }
        }

        if (mld_melding.haschild)
        {
          for (var i = 0; i < mld_melding.childs.length; i++)
          {
            mld.referentielink("M", mld_melding.childs[i].key, (i == 0? L("lcl_mld_child_mld") : ""), { tooltip: true });
          }
        }

        if (this_mld.haveFOBOrights && mld_melding.flag)
            ROFIELDTR("fld", L("lcl_mld_flags"), L("lcl_mld_flag" + mld_melding.flag), { icon: "fa-fclt-flag", iconclass: "mldflag" + mld_melding.flag });

        if (this_mld.canFOwrite && user.has("WEB_MSGBOF")) {
          var sql = "SELECT fac_nieuws_key, fac_nieuws_titel FROM fac_nieuws WHERE mld_melding_key = " + mld_key;
          var oRs = Oracle.Execute(sql);
          if (!oRs.EOF) {
              var params = { infoPointer: { Url: "/appl/msg/fac_nieuws.asp?nieuws_key=" + oRs("fac_nieuws_key").Value, Title: L("lcl_mld_publication") } };
              ROFIELDTR("", L("lcl_mld_publication"), oRs("fac_nieuws_titel").Value, params);
          }
          oRs.Close();
        }

      BLOCK_END();
    } // \mldInfo
    else if (id == "mldProcessing")
    {
      if (hasFOBOMIread && mld_melding.mld_ins_discipline_key > 0) // Overbodige informatie voor FE
      {
        BLOCK_START(id, L("lcl_mld_processing_details"), { icon: "fa-wrench" });
          if (mld_melding.mld_ins_discipline_key > 0)
              ROFIELDTR("flddisc", L("mld_processing_group"), (mld_melding.mld_srtins_prefix ? mld_melding.mld_srtins_prefix + "-" : "") + mld_melding.mld_ins_discipline_omschrijving);

          // Actieve behandelaar
          if (mld_melding.behandel2_key > 0)
              FCLTpersoonselector("sBehandel2",
                                  "sgBehandelaar",
                                  { perslidKey: mld_melding.behandel2_key,
                                    label: L("lcl_mld_processor"),
                                    fieldId: "fldbehandel2",
                                    moreinfo: (this_mld.canFOread || this_mld.canBOread),
                                    readonly: true
                                  });
        BLOCK_END();
      }
    } // \mldProcessing
    else if (id == "mldFaq")
    {
      BLOCK_START(id, L("lcl_faq_kennisbank"), { icon: "fa-book", hidden: true });
        // Hier komen vaste aanwijzingen
      BLOCK_END();

      var alg_key_arr = [];
      if (mld_melding.bld_key && mld_melding.bld_key != -1)
          alg_key_arr.push(mld_melding.bld_key);
      if (mld_melding.flr_key && mld_melding.flr_key != -1)
          alg_key_arr.push(mld_melding.flr_key);
      if (mld_melding.room_key && mld_melding.room_key != -1)
          alg_key_arr.push(mld_melding.room_key);
      var faq_info = mld.faq_info(mld_melding.loc_key, alg_key_arr, mld_melding.disc_key, mld_melding.stdm_key, -1, mld_melding.afdeling_key, -1);
      for (i in faq_info.fixed_faq)
      {
          faq_info.fixed_faq[i].safe_answer = safe.fclthtml(faq_info.fixed_faq[i].answer, { "faqlink": true, "file_params": { "module": "FAQA", "key": faq_info.fixed_faq[i].faq_key }});
          faq_info.fixed_faq[i].safe_answer2 = safe.fclthtml(faq_info.fixed_faq[i].answer2, { "faqlink": true, "file_params": { "module": "FAQB", "key": faq_info.fixed_faq[i].faq_key }});
      }
%>
      <script type="text/javascript">
          $(function()
          {
            var JSONdata = "<%=safe.jsstring(JSON.stringify(faq_info))%>";
            mld_show_kennisbank(JSON.parse(JSONdata));
          });
      </script>
<%
    } // \mldFaq
    else if (id == "mldIns")
    {
      BLOCK_START(id, L("lcl_gerelateerdeobjecten"), { icon: "fa-hand-point-right" });
        mld.generate_relobject_block(mld_key);

        // Hoort bij
        if (mld_melding.rsv_ruimte_key && mld_melding.res_key)
            mld.referentielink("R", mld_melding.rsv_ruimte_key, L("lcl_mld_with_res"));

        // Heeft betrekking op
        if (mld_melding.kto_type && mld_melding.kto_key > 0)
          mld.referentielink(mld_melding.kto_type, mld_melding.kto_key, L("lcl_mld_kto"), { tooltip: true });

        // Gerefereerd door
        if (mld_melding.hasreference)
        {
          for (var j = 0; j < mld_melding.references.length; j++)
          {
            mld.referentielink("M", mld_melding.references[j].key, (j == 0? L("lcl_mld_referenced") : ""), { tooltip: true });
          }
        }

        // Groepering
        if (mld_melding.mldgroup_key > 0)
        {
          var lbl = mld.mld_prefix(mld_melding.mldgroup_key, "ins_srtdiscipline_omschrijving");
          mld.referentielink("M", mld_melding.mldgroup_key, lbl, { tooltip: true });
        }
      BLOCK_END();
    } // \mldIns
    else if (id == "mldOmschrijving")
    {
      if (mld_melding.mld_omschr || mld_melding.mld_onderwerp)
      {
        BLOCK_START(id, mld_melding.mld_onderwerp || L("lcl_txt"), { icon: "fa-comment-lines", wide: true });
          ROTEXTAREATR("fldtxt", "", mld_melding.mld_omschr, {id: "txt", mldlink: true, cntlink: true });
        BLOCK_END();
      }
    } // \mldOmschrijving
    else if (id == "mldFlex")
    {
      var parent_list = mld.executedworkflowsteps(mld_key);
      var prsautlevel = (this_mld.authparams(autfunction) && this_mld.authparams(autfunction).PRSwritelevel);
      // Als ik geen PRS-schrijfrechten op de melding heb, maar ik ben wel blokbehandelaar, dan mag ik gewoon iedereen uit mijn team kiezen. Niet optimaal, maar goed genoeg voor nu
      if ((!prsautlevel || prsautlevel == 9) && this_mld.canChangeKenmerkBlok) {
        prsautlevel = -1;
      }
      generateFlexKenmerkBlock({stdm_arr: [mld_melding.stdm_key],
                                mld_key: mld_key,
                                prs_key: user_key,
                                parent_list: parent_list,
                                reado: true,
                                canFlexChange: this_mld.canFlexChange,
                                showConfidential : this_mld.canViewConfidential,
                                melder_key: mld_melding.melder_key,
                                srtdisc: S("mld_processing_group_all")? [] : [mld_melding.srtdisc_key],
                                disc: mld_melding.disc_key,                                                                      // Initiele waarde primaire Vakgroep/Behandelteam.
                                prsautlevel: prsautlevel,
                                show_alg: mld_melding.show_alg,
                                loc_key: mld_melding.loc_key,
                                this_mld: this_mld
                               });
    } // \mldFlex
    else if (id == "mldAfhandel")
    {
      if (mld_melding.remark || mld_melding.satisfaction)
      {
        BLOCK_START(id, L("lcl_behandelgegevens"), { icon: "fa-check" });

          parentButton(); // Knop staat ook in het info-blok
          if (mld_melding.satisfaction)
              AFIELDTR("fld", L("lcl_res_beoordeling"), "", "", { rating: { id:     "oordeel"
                                                                          , score:  mld_melding.satisfaction
                                                                          , note:   mld_melding.satisfaction_op
                                                                          }
                                                                });
              ROTEXTAREATR("fldtxt", "", mld_melding.remark, {id: "remark", tdhtml_ta: "colspan='2'", suppressEmpty: true, mldlink: true, cntlink: true });
          BLOCK_END();
      }
    }
    else
      return false;
    return true;
  } // \writeBlock

  mld.writeBlocks();

SUBFRAME_END(); %>
  </body>
</html>
<% ASPPAGE_END(); %>
