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

    File:           mld_edit_melding.asp
    Description:    Muteerscherm voor meldingen
                    Merk op dat het voor zowel toevoegen als wijzigen gebruikt wordt.
    Parameters:     mld_melding_key

    Context:
    Note:           De lcl-textcontextswitcher is srtdisc=ins_srtdiscipline_key
                    Deze is dus verplicht dus kan lcl.set_dialect worden aangeroepen.

*/ %>

<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/calendar.inc" -->
<!-- #include file="../Shared/iface.inc" -->
<!-- #include file="../Shared/persoonselector.inc" -->
<!-- #include file="../Shared/selector.inc" -->
<!-- #include file="../Shared/plaatsselector.inc" -->
<!-- #include file="../Shared/kostenplaatsselector.inc" -->
<!-- #include file="../Shared/disciplineselector.inc" -->
<!-- #include file="../Shared/stdmeldingselector.inc" -->
<!-- #include file="../Shared/referentieselector.inc" -->
<!-- #include file="../prs/prs.inc" -->
<!-- #include file="../Shared/json2.js" -->
<!-- #include file="mld_flexkenmerk.inc" -->
<!-- #include file="mld.inc" -->

<%
FCLTHeader.Requires({ plugins: ["suggest", "jQuery", "kenmerk"],
                      js: ["../mld/mld_edit_melding.js", "jquery.timepicker-table.js"],
                      css: ["timePicker-table.css"] })

// AUTORISATIEPARAMETERS
var urole = getQParamSafe("urole");
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 (backo)
  autfunction = 'WEB_MLDBOF';   // twijfel - PF
else
  autfunction = 'WEB_MLDUSE';

var authparams = user.checkAutorisation(autfunction); // Dit is nog ongeacht de melding

// de melding waar het over gaat
var mld_key = getQParamInt("mld_key", -1);
var copy = (getQParamInt("mld_copy", 0) == 1);
var ins_key = getQParamInt("ins_key", -1); // nieuwe melding op dit object?
var fromkb = getQParamInt("fromkb", 0) == 1; // Ik kom vanuit kennisbank

var meldbron_key = getQParamInt("meldbronkey", -1);
var start_key = getQParamInt("start_key", -1);

// cache.whenTrue(mld_key == -1 && !copy && ins_key == -1);

var mld_copy_key = -1;
if (copy)
{
  mld_copy_key = mld_key;
  mld_key = -1;
}

var mld_defaultstdmelding = -1;
var disc = -1;
var withFutureRes = false;
if (mld_key > 0)
{
  var this_mld = mld.func_enabled_melding(mld_key); // wat mag ik zoal op deze melding
  // Ik moet in ieder geval kunnen wijzigen in de edit mode
  user.auth_required_or_abort(this_mld.canChange);
}
else // Nieuwe melding
{
  var srtdisc = getQParamInt("srtdisc");  // Deze is gegarandeerd
  var this_mld = mld.func_enabled_mld(srtdisc, "S"); // wat mag ik zoal op een nieuwe melding
  // Liefst wil ik hier urole afhankelijk zijn maar dan is straks FCLTdisciplineselector misschien wel leeg
  // en zijn we nog verder van huis
  user.auth_required_or_abort(urole=='fe'?this_mld.canFEwrite:this_mld.canFOwrite); // Dit is nog ongeacht de melding

  var mld_defaultstdmelding = getQParamInt("mld_defaultstdmelding", -1);
  var mld_omschr = getQParam("txt" , "");
  var disc = getQParamInt("disc", -1);
  var loc_key = getQParamInt("loc_key", -1);
  var bld_key = getQParamInt("bld_key", -1);
  var flr_key = -1;
  var room_key = -1;
  var einddatum = new Date();
  var res_key = null;
  var rsv_ruimte_volgnr = null;
  var rsv_ruimte_key = getQParamInt("rsv_ruimte_key", -1);
  if (rsv_ruimte_key > 0)
  {
    var sql = "SELECT COALESCE(rr.alg_ruimte_key, arg.alg_ruimte_key) alg_ruimte_key"
            + "     , arg.alg_ruimte_aanduiding"
            + "     , ogb.alg_locatie_key"
            + "     , ogb.alg_gebouw_key"
            + "     , ogb.alg_verdieping_key"
            + "     , rr.res_rsv_ruimte_van"
            + "     , rr.res_reservering_key"
            + "     , rr.res_rsv_ruimte_volgnr"
            + "     , rr.res_rsv_ruimte_contact_key"
            + "  FROM res_rsv_ruimte rr"
            + "     , res_ruimte_opstelling ro"
            + "     , res_v_alg_ruimte_gegevens arg"
            + "     , alg_v_onrgoed_boom ogb"
            + " WHERE rr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key(+)"
            + "   AND ro.res_ruimte_key = arg.res_ruimte_key(+)"
            + "   AND COALESCE(rr.alg_ruimte_key, arg.alg_ruimte_key) = ogb.alg_ruimte_key"
            + "   AND res_rsv_ruimte_key = " + rsv_ruimte_key
            + " ORDER BY arg.alg_ruimte_aanduiding";
    oRs = Oracle.Execute(sql);
    loc_key = oRs("alg_locatie_key").Value;
    bld_key = oRs("alg_gebouw_key").Value;
    flr_key = oRs("alg_verdieping_key").Value;
    room_key = oRs("alg_ruimte_key").Value;
    var res_begin = new Date(oRs("res_rsv_ruimte_van").Value);
    einddatum = (res_begin < new Date()? new Date() : res_begin); // Einddatum melding is begintijd reservering.
    res_key = oRs("res_reservering_key").Value;
    rsv_ruimte_volgnr = oRs("res_rsv_ruimte_volgnr").Value;
    withFutureRes = res_begin > new Date();
    contact_key = oRs("res_rsv_ruimte_contact_key").Value;
  }
}

// Default person for flexfields, can be used from deeplink (e-mail notification)
var def_kenmerk_link_key = getQParamInt("def_kenmerk_link_key", -1);
// Is the default from cust.inc overruled by the caller?
var perslidkey = (def_kenmerk_link_key == -1? user_key : def_kenmerk_link_key);
var txtreado = (getQParamInt("txtreado" , 0) == 1); // Als txtreado gedefinieerd is, dan is het omschrijving veld niet te editten

// LOCALE VARIABELEN
var lBestaandeMelding = (mld_key != -1);
var lNieuweMelding = !lBestaandeMelding;

var sql = "";
// INITIALISATIE MET DE INITIEEL WEER TE GEVEN GEGEVENS
if (lBestaandeMelding)
{ // ================================ Bestaande melding ===========================================
  // Set status before selection (was after), so we select it
  if (this_mld.canBOwrite)
  {
    /* FSN#15158/PF 13-2-2009 14:42:01 */
    // Zetten van de status op ingezien en afhandelen van de tracking.
    mld.setmeldingstatus(mld_key, 3);
  }

  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);

  if (!mld_melding.locked_user_key || mld_melding.locked_user_key == user_key)
  {
    mld.lock(mld_key);
    mld_melding.locked_user_key = user_key;
  }

  // Controleer of wat discipline-settings toch altijd gelijk zijn, daar kunnen we voordeel mee doen
  // Merk op dat we nog scherper zouden kunnen controleren als we autorisatie meenemen. Vooralsnog niet
  sql = "SELECT MAX(COALESCE(mdp.mld_disc_params_startdatum, 0)) startdatum"
      + "  FROM mld_discipline md, "
      + "       mld_disc_params mdp"
      + " WHERE mdp.mld_ins_discipline_key = md.ins_discipline_key"
      + "   AND md.ins_srtdiscipline_key = " + mld_melding.srtdisc;
  oRs = Oracle.Execute(sql);
  var disc_with_startdatum = oRs("startdatum").Value == 1;
}
else
{ // ================================ Nieuwe melding ==============================================
  // Bepaal wat vereiste defaults
  mld_melding = { mld_key: -1,
                  mld_omschr: mld_omschr, // De tekst tonen in de omschrijving, vanuit deeplink
                  melder_key: rsv_ruimte_key > 0? contact_key : null,
                  place: -1,
                  stdm: mld_defaultstdmelding,
                  act_key: getQParamInt("act_key", -1), // fac_activiteit_key voor geplande meldingen
                  einddatum: einddatum,
                  melddatum: new Date(),
                  mld_ordernr: "",
                  remark: "",
                  mld_status: -1,
                  mld_status_str: "",
                  deladdress: -1,
                  mprio: 3, // 'Normaal'
                  frontendprio: false,
                  alg_onrgoed_niveau: "",
                  module: -1,
                  kpnverplicht: false,
                  disc: disc,
                  srtdisc: srtdisc,
                  kostenpl_key: -1,
                  loc_key: loc_key,
                  bld_key: bld_key,
                  flr_key: flr_key,
                  room_key: room_key,
                  rsv_ruimte_key: rsv_ruimte_key,
                  res_key: res_key,
                  rsv_ruimte_volgnr: rsv_ruimte_volgnr,
                  respijt: 0
                }
  if (mld_melding.stdm > 0)
  {
    var stdm_info = mld.mld_stdmeldinginfo(mld_melding.stdm);
    var this_mld = mld.func_enabled_mld(stdm_info.ins_discipline_key, "D"); // Ik weet het nog nauwkeuriger dan ik dacht
    user.auth_required_or_abort(urole=='fe'?this_mld.canFEwrite:this_mld.canFOwrite);
  }
  else
    var stdm_info = { mld_stdmelding_key: -1,
                      kanverwijzen: 0,
                      planbaar: true // Je weet nog niet of de nieuwe melding planbaar is. Wijzigen tot het niet meer mag.
                    };

  // is dit een KTO deeplink?
  mld_melding.kto_type = getQParam("kto_type", null); // M/R/B
  if (mld_melding.kto_type)
  {
      mld_melding.kto_key = getQParamInt("kto_key");
      stdm_info.is_kto_antwoord = true; // Dat weet ik zeker

      var sql;
      // vul mld_melding.mld_omschr ook. Doorgaans zal freetext=0 zijn en is deze tekst nooit in showmode zichtbaar.
      // hij komt echter wel in meldingoverzichten terug en is dan wel fijn
      // >> dan moet je dus in mld_list ipv de description deze tekst verzinnen indien het een KTO is
      switch(mld_melding.kto_type)
      {
        case "M": //mld_melding.mld_omschr = L("lcl_mld_kto") + " " + L("lcl_complain") + " " + mld.mld_prefix(mld_melding.kto_key) + mld_melding.kto_key;
                  sql = "SELECT prs_perslid_key, prs_perslid_key_voor"
                      + "  FROM mld_melding"
                      + " WHERE mld_melding_key = " + mld_melding.kto_key;
                  break;
        case "B": //mld_melding.mld_omschr = L("lcl_mld_kto") + " " + L("lcl_bes_bestelling") + " " + S("bes_bestelling_prefix") + mld_melding.kto_key;
                  sql = "SELECT prs_perslid_key, prs_perslid_key_voor"
                      + "  FROM bes_bestelling"
                      + " WHERE bes_bestelling_key = " + mld_melding.kto_key;
                  break;
        case "R": //mld_melding.mld_omschr = L("lcl_mld_kto") + " " + L("lcl_reservation") + " " + rnum;
                  sql = "SELECT res_reservering_key, res_rsv_ruimte_volgnr"
                      + "  FROM res_rsv_ruimte"
                      + " WHERE res_rsv_ruimte_key = " + mld_melding.kto_key;
                  var oRs = Oracle.Execute(sql);
                  var rnum = oRs("res_reservering_key").Value + "/" + oRs("res_rsv_ruimte_volgnr").Value;

                  sql = "SELECT res_rsv_ruimte_contact_key prs_perslid_key,"
                      + "       res_rsv_ruimte_host_key prs_perslid_key_voor"
                      + "  FROM res_rsv_ruimte"
                      + " WHERE res_rsv_ruimte_key = " + mld_melding.kto_key;
                  break;
         default:  // only for robustness
                  sql = "SELECT prs_perslid_key, prs_perslid_key_voor FROM mld_melding WHERE 1=0";
      }
      var oRs = Oracle.Execute(sql);
      user.auth_required_or_abort(!oRs.eof && (user.isCollega(oRs("prs_perslid_key").Value) || user.isCollega(oRs("prs_perslid_key_voor").Value)));
  }
  // Controleer of wat discipline-settings toch altijd gelijk zijn, daar kunnen we voordeel mee doen
  // Merk op dat we nog scherper zouden kunnen controleren als we autorisatie meenemen. Vooralsnog niet
  sql = "SELECT MIN(COALESCE(mdp.mld_disc_params_eigen_kp, 0)) eigen_kp,"
      + "       MIN(COALESCE(md.ins_discipline_kpnverplicht, 0)) kpnverplicht,"
      + "       MAX(COALESCE(mdp.mld_disc_params_startdatum, 0)) startdatum,"
      + "       MAX(COALESCE(sm.mld_stdmelding_planbaar, 0)) planbaar"
      + "  FROM ins_srtdiscipline isd, "
      + "       mld_discipline md, "
      + "       mld_disc_params mdp, "
      + "       mld_stdmelding sm"
      + " WHERE isd.ins_srtdiscipline_key = " + mld_melding.srtdisc
      + "   AND isd.ins_srtdiscipline_key = md.ins_srtdiscipline_key"
      + "   AND mdp.mld_ins_discipline_key = md.ins_discipline_key"
      + "   AND md.ins_discipline_key = sm.mld_ins_discipline_key"
      // Als er een default stdmelding is meegegeven dan daar alleen naar kijken (JGL: Zit het dan niet al in stdm_info?)
      + (mld_defaultstdmelding > 0
        ? " AND sm.mld_stdmelding_key = " + mld_defaultstdmelding
        : "");
  oRs = Oracle.Execute(sql);
  mld_melding.kpnverplicht = (oRs("kpnverplicht").Value == 1); // voor alle vakgroepen verplicht
  var mandaat_eigen_kp = S("prs_dep_default_kpn") || oRs("eigen_kp").Value == 1; // voor alle vakgroepen gemandateerd op eigen kp
  var disc_with_startdatum = oRs("startdatum").Value == 1;

  if (mld_melding.stdm > 0)
  {
    // hebben we hem al
  }
  else
    stdm_info.planbaar = oRs("planbaar").Value > 0;

  sql = "SELECT COALESCE(ins_srtdiscipline_kostenklant, 0) kostenklant"
      + ", ins_srtdiscipline_prefix prefix"
      + ", " + lcl.xsqla('ins_srtdiscipline_omschrijving', 'ins_srtdiscipline_key')
      + ", ins_srtdiscipline_alg"
      + ", ins_srtdiscipline_ins"
      + ", ins_srtdiscipline_bes"
      + " FROM ins_srtdiscipline"
      + " WHERE ins_srtdiscipline_key = " + mld_melding.srtdisc;
  oRs = Oracle.Execute(sql);

  var alg_level = 0;
  switch (oRs("ins_srtdiscipline_alg").Value)
  {
      case 1: alg_level = 5; break; // Ruimte
      case 3: alg_level = 4; break; // Verdieping
      case 5: alg_level = 3; break; // Gebouw
      case 7: alg_level = 2; break; // Locatie
      default: alg_level = 0;       // niet tonen
  }

  stdm_info.hide_kostenplaats_fe = oRs("kostenklant").Value == 2;
  mld_melding.mld_kk = oRs("kostenklant").Value == 1? 1 : 0; // Kan ook 2 zijn voor onzichtbaar.
  mld_melding.prefix = oRs("prefix").Value;
  mld_melding.alg_level = alg_level;
  mld_melding.show_alg = alg_level > 0;
  mld_melding.show_ins = oRs("ins_srtdiscipline_ins").Value == 1;
  mld_melding.show_bes = oRs("ins_srtdiscipline_bes").Value == 1;
  mld_melding.srtdisc_oms = oRs("ins_srtdiscipline_omschrijving").Value;
  oRs.close();

  if (rsv_ruimte_key < 0)
    mld_melding.melder_key = (( fronto && S("mld_fo_default_user"))
                             || frontend
                             || (!this_mld.canFOwrite && !this_mld.canBOwrite && this_mld.canFEwrite)
                             ? user_key
                             : -1);
  mld_melding.perslid_key_voor = mld_melding.melder_key;
  var melder_obj;
  if (mld_melding.melder_key == user_key)
    melder_obj = user;
  else
    if (mld_melding.melder_key == -1)
      melder_obj = null;
    else
      melder_obj = new Perslid(mld_melding.melder_key);

  if (ins_key > 0) // automatisch ruimte kiezen
  {
    var sql = "SELECT alg_locatie_key,"
            + "       alg_gebouw_key,"
            + "       alg_verdieping_key,"
            + "       alg_ruimte_key"
            + "  FROM ins_deel isd, alg_v_allonroerendgoed alg"
            + " WHERE ins_deel_key = " + ins_key
            + "   AND alg_onroerendgoed_keys = isd.ins_alg_ruimte_key"
            + "   AND isd.ins_alg_ruimte_type = 'R'"
    oRs = Oracle.Execute(sql);
    if (!oRs.Eof)
    {
        mld_melding.loc_key = oRs("alg_locatie_key").Value;
        mld_melding.bld_key = oRs("alg_gebouw_key").Value;
        mld_melding.flr_key = oRs("alg_verdieping_key").Value;
        mld_melding.room_key = oRs("alg_ruimte_key").Value;
    }
  }
  if (mld_melding.loc_key == -1 && melder_obj) // FO komt soms leeg binnen
  {
    mld_melding.loc_key = melder_obj.alg_locatie_key();
    mld_melding.bld_key = melder_obj.alg_gebouw_key();
    mld_melding.flr_key = melder_obj.alg_verdieping_key();
    mld_melding.room_key = melder_obj.alg_ruimte_key();
  }
  if (melder_obj)
  {
    if (/* TODO: overwegen kpnverplicht && */ mandaat_eigen_kp == 1 && mld_melding.mld_kk == 1)
        mld_melding.kostenpl_key = melder_obj.afdeling().prs_kostenplaats_key() || -1;
    if (mld_melding.show_bes)
    {
        var prs_info = new prs.prs_perslid(mld_melding.melder_key, { withAflever: true });
        mld_melding.deladdress = prs_info.mld_adres_key;
    }
  }
  mld_melding.show_eigen_kp = false;
  mld_melding.show_start_date = false;
} // if/else (lBestaandeMelding)

if (copy)
{ // Haal de globale variabele op met alle mld_melding informatie
  // voor gegevens die ik wil overnemen uit de bestaande melding.
  var mld_melding_copy = mld.mld_melding_info(mld_copy_key);

  mld_melding.melder_key = mld_melding_copy.melder_key;
  mld_melding.kostenpl_key = mld_melding_copy.kostenpl_key;
  mld_melding.disc         = mld_melding_copy.disc;
  mld_melding.stdm         = mld_melding_copy.stdm;
  mld_melding.mprio        = mld_melding_copy.mprio;
  mld_melding.loc_key      = mld_melding_copy.loc_key;
  mld_melding.bld_key      = mld_melding_copy.bld_key;
  mld_melding.flr_key      = mld_melding_copy.flr_key;
  mld_melding.room_key     = mld_melding_copy.room_key;
  mld_melding.deladdress   = mld_melding_copy.deladdress;
  mld_melding.mld_omschr   = mld_melding_copy.mld_omschr;
  mld_melding.behandel_key = mld_melding_copy.behandel_key;
  mld_melding.remark       = mld_melding_copy.remark;
}


lcl.set_dialect(mld_melding.srtdisc, "MLD_SRTDISCIPLINE_KEY");

// ================================ initiele gegevens bepaald  ====================================
%>

<html>
  <head>
<%  FCLTHeader.Generate(); %>

    <script type="text/javascript">
      var mld_key = <%=mld_key%>;
      var act_key = <%=mld_melding.act_key ? mld_melding.act_key : -1%>;
      var ins_key = <%=ins_key%>;
      var mld_status = <%=mld_melding.mld_status%>;
      var mprio = <%=mld_melding.mprio%>;
      var srtdisc = <%=mld_melding.srtdisc%>;
      var perslidkey = <%=perslidkey%>;
      var def_kenmerk_link_key = <%=def_kenmerk_link_key%>;
      var user_kpkey = <%=user.afdeling().prs_kostenplaats_key() || -1%>;
      var user_kpnaam = "<%=safe.jsstring(user.afdeling().kpn_naam())%>";
      var user_kpmodule = "<%=user.afdeling().kpn_module()%>";
      var user_afd_key = <%=user.prs_afdeling_key()%>;
      var show_alg = (<%=mld_melding.show_alg? 1 : 0%> == 1);
      var show_bes = (<%=mld_melding.show_bes? 1 : 0%> == 1);
      var show_ins = (<%=mld_melding.show_ins? 1 : 0%> == 1);
      var frontend = (<%=frontend? 1 : 0%> == 1);
      var mld_allow_for_others = <%=S("mld_allow_for_others")%>;
      var mld_show_endtime = <%=S("mld_show_endtime")%>;
      var mld_show_start_date = <%=mld_melding.show_start_date? 1 : 0%>;
      var mld_selector_mode = <%= S("mld_selector_mode") %>;
      var mld_object_filled_in_alert = <%= S("mld_object_filled_in_alert") %>;
      var startwerkdag = parseFloat("<%=safe.jsfloat(S("fac_t_startofworkday"))%>");
      var withFutureRes = <%=withFutureRes? 1 : 0%> == 1;
      var fromkb = <%=fromkb? 1 : 0%> == 1;
      var melddatum = <%=mld_melding.melddatum.getTime()%>;
      var alg_level = <%=mld_melding.alg_level%>;

      // Voor bestaande meldingen
      var canFlexChange = (<%=this_mld.canFlexChange? 1 : 0%> == 1);

      // Voor nieuwe en bestaande meldingen
      // Heb ik als FO, BO en FE enige write rechten?
      // Bestaande melding: Voor de geselecteerde discipline
      // Nieuwe melding: Voor een van de disciplines binnen de srtdiscipline
      var canFOwrite = (<%=this_mld.canFOwrite? 1 : 0%> == 1);
      var canBOwrite = (<%=this_mld.canBOwrite? 1 : 0%> == 1);
      var canFEwrite = (<%=this_mld.canFEwrite? 1 : 0%> == 1);

      jQuery(document).ready(function()
                             {
                               $('textarea').resize(function () { FcltMgr.resized(window) } );
                               $('textarea').autogrow();
                             });

      function PasteFromClipboard()
      {
         $("#remark").focus();
         var PastedText = $("#remark")[0].createTextRange();
         PastedText.execCommand("Paste");
      }
      function cadShowdiscfn()
      {
        if (stdm_info.ins_srtinst_niveau == "D")
            return stdm_info.ins_srtinst_key;
        return -1;
      };

      // Meestal unlocken we gewoon in showmode die er achteraan komt
      // maar soms wordt het tabblad daarvoor al gesloten. Dan komen
      // we hier langs.
      function onCloseHot()
      {
         var data = { mld_key: <%=mld_key%> };
          <% protectRequest.dataToken("data"); %>
          jQuery.ajaxSetup({async: false}); // Anders faalt o.a. bij IE9 de $.post bij afsluiten
          $.post("mld_unlock.asp",
                 data,
                 FcltCallback,
                 "json");
      }
    </script>
  </head>

  <body id="editbody">
<%
    var buttons =  [{ title: L("lcl_submit"), icon: "opslaan.png", action:"mld_submit()", singlepress: true, id:"btn_mld_submit"},
                    { title: L("lcl_cancel"), icon: "undo.png", action:"mld_cancel()" }];
    IFRAMER_HEADER((mld_melding.act_key > 0? L("lcl_mld_frame_algemeen_actie")  + " " + mld_melding.act_key: L("lcl_mld_frame_algemeen")), buttons);
      if (mld_melding.locked_user_key && mld_melding.locked_user_key != user_key)
      {
        var other = new Perslid(mld_melding.locked_user_key);
%>      <div class="warning"><%=L("lcl_mld_melding_locked").format(safe.html(other.naam()), toTimeString(mld_melding.locked_date))%></div><%
      }
%>
    <div id="edit">
      <form id="u2" name="u2"
            action="mld_edit_melding_save.asp"
            method="post"
            onsubmit='mld_submit();return false'>
<div class='leftcontainer'>
        <input type="hidden" name="urole" id="urole" value="<%=urole%>">
        <input type="hidden" name="fac_activiteit_key" value="<%=mld_melding.act_key%>">

        <input type="hidden" name="forcesave" id="forcesave" value="0">
        <input type="hidden" name="parent_key" id="parent_key" value="-1">
<%
        if (lNieuweMelding)
        {
          // Als er een meldbron_key is meegegeven, dan deze doorgeven.
          if (meldbron_key > 0)
          { %>
            <input type="hidden" name="meldbronkey" id="meldbronkey" value="<%=meldbron_key%>">
<%        }
          // Als er een start_key is meegegeven, dan deze doorgeven.
          if (start_key > 0)
          { %>
            <input type="hidden" name="start_key" id="start_key" value="<%=start_key%>">
<%        }
        }

        if (lBestaandeMelding)
        { %>
          <input type="hidden" name="mld_key" value="<%=mld_key%>">
          <input type="hidden" name="srtdisc" value="<%=mld_melding.srtdisc%>">
<%      }

        if (mld_melding.rsv_ruimte_key > 0)
        { %>
          <input type="hidden" name="rsv_ruimte_key" id="rsv_ruimte_key" value="<%=mld_melding.rsv_ruimte_key%>">
<%      }

        function gen_flex(kolommen) // ik weet nog niet waar
        { %>
              <div id='mldFlexList'><% // Wrapper div voor dynamisch herladen
                generateFlexKenmerkBlock ({stdm_arr: mld_melding.stdm > 0?[mld_melding.stdm]:[],
                                           mld_key: mld_copy_key > 0? mld_copy_key : mld_key,
                                           copy: mld_copy_key > 0? 1 : null,
                                           prs_key: perslidkey,
                                           act_key: mld_melding.act_key,
                                           reado: (mld_key > 0 && !this_mld.canFlexChange),
                                           flexcolumns: kolommen
                                         });
            %></div><%
        }


        var personForEditable = (mld_key > 0 && this_mld.canKostChange) || (mld_key < 0);
        var personForExist = false;
        if ((S("mld_allow_for_others") == 1 && (personForEditable || (mld_melding.melder_key != mld_melding.perslid_key_voor))) ||
            !frontend || !stdm_info.hide_kostenplaats_fe || mld_melding.kostenpl_key > 0)
        {
          // Alleen de fo kan de user wijzigen, en dan nog alleen als nog niet verder in behandeling
          // Dat is: readonly als afgewezen of minstens geaccepteerd
          BLOCK_START("mldCaller" , L("lcl_mld_aanvragergegevens"));
          var personEditable = (mld_key > 0 && this_mld.canPersChange) || (mld_key < 0 && !frontend);
          FCLTpersoonselector("person",
                              "sgPerson",
                              { perslidKey: mld_melding.melder_key,
                                label: L("lcl_mld_name"),
                                fieldNameKey: "person",
                                readonly: !personEditable,
                                moreinfo: (backo || fronto),
                                onChange: "onChangeMelder",
                                autlevel: this_mld.authparams(autfunction) && this_mld.authparams(autfunction).PRSwritelevel,
                                required: personEditable
                              });
          // Melding voor (aanpasbaar bij nieuwe meldingen en bij bestaande meldingen als de kostenplaats ook aanpasbaar is)
          if (S("mld_allow_for_others") == 1 && (personForEditable || (mld_melding.melder_key != mld_melding.perslid_key_voor)))
          { // Melding voor
            FCLTpersoonselector("personFor",
                                "sgPersonFor",
                                { perslidKey: mld_melding.perslid_key_voor,
                                  label: L("lcl_mld_call_for"),
                                  autlevel: this_mld.authparams(autfunction) && this_mld.authparams(autfunction).PRSwritelevel,
                                  readonly: !personForEditable,
                                  moreinfo: !frontend,
                                  required: true,
                                  onChange: "GetSetCallInfo"
                                });
            personForExist = true;
          }
          // Een FE kan niet togglen

          // Als bij nieuwe meldingen de peroon initieel wordt ingevuld dan de OnChange van de persoon suggestbox uitvoeren,
          // maar bij een melding bij Reservering niet, dan hebben we die gegevens juist al bepaald en overgenomen
          if (rsv_ruimte_key < 0) {
%>
          <script type="text/javascript">
            jQuery(document).ready(function()
            {
              if (<%=mld_key%> < 0 && <%=mld_melding.melder_key%> > 0)
                onChangeMelder(<%=mld_melding.melder_key%>);
            });
          </script>
<%
          }

          if (!stdm_info.is_kto_antwoord)
          {
            FCLTkostenplaatsselector("account",
                                     "sgAccount",
                                     mld_melding.melder_key,
                                     { kostenplaatsKey: mld_melding.kostenpl_key || -1,
                                       label: (urole == "fe")?L("lcl_mld_inf_Kostenplaats"):L("lcl_mld_inf_Kostenklant"),
                                       extraParamField: "module",
                                       extracode: "M",
                                       filtercode: "AA", // Alleen actieve kostenplaatsen kunnen selecteren "All Active". Huidige waarde als initiële waarde kan bij kostenplaatsen altijd.
                                       urlAdd: [{ urlParam: "prs_key", field: (frontend && S("mld_allow_for_others") == 1 && S("prs_dep_default_kpn_voor") == 1? "personFor" : "person") }, { urlParam: "showeigenkp", field: "eigenkp" }],
                                       readonly: (mld_key > 0 && !this_mld.canKostChange),
                                       kptoggle: { ischecked: (mld_melding.mld_kk == 1),
                                                   readonly: (mld_key > 0 && !this_mld.canKostChange),
                                                   onChange: "onChangeKostenklant();",
                                                   hidden: (urole == "fe") },
                                       required: (!(mld_key > 0 && !this_mld.canKostChange)? mld_melding.kpnverplicht : false)
                                     });

            if (S("show_ordernr") != 0)
            {
              RWFIELDTR("ordernr",  "fldordernr", L("lcl_mld_inf_Ordernr"), mld_melding.mld_ordernr, {readonly: (mld_key > 0 && !this_mld.canKostChange), maxlength: 30});
            }
          }
          ROFIELDTR("hidden", null, mld_melding.show_eigen_kp? 1 : 0);
          BLOCK_END();
        }
        else
        { %>
          <input type="hidden" id="person" name="person" value="<%=user_key%>">
<%      }

        BLOCK_START("mldMelding", L("lcl_mld_categorie"), true);
        // Setting mld_selector_mode:
        // Selector mode vakgroep/melding voor de frontend.
        //     0 = (=default) vakgroep en melding (beide eerst te kiezen)
        //     1 = vakgroep readonly
        //     2 = alleen melding
        FCLTdisciplineselector("disc",
                               "sgDisc",
                               { label: L("lcl_vakgroup"),
                                 disc_key: mld_melding.disc,
                                 module: "MLD",
                                 perslidKey: (lBestaandeMelding ? mld_melding.melder_key : user_key),
                                 autfunctionKey: authparams.autfunctionkey,
                                 autRW: "W",
                                 srtdisc_key: mld_melding.srtdisc,
                                 ins_key: ins_key,
                                 onChange: ((frontend && S("mld_selector_mode") == 1)? null : "onChangeVakgroep"),
                                 extraParamField: "eigenkp",
                                 extracode: "K",
                                 readonly: disc > 0 || ((mld_key > 0 && !this_mld.canVakgChange) || stdm_info.is_kto_antwoord) || (frontend && (S("mld_selector_mode") == 1 || S("mld_selector_mode") == 2) || (lBestaandeMelding && stdm_info.slabewaken && mld_melding.respijt > 0)),  // of moet je dat dan in de canchange opnemen?
                                 dohide: (frontend && (S("mld_selector_mode") == 2)? true : false),
                                 required: (mld_key < 0 || this_mld.canVakgChange),
                                 filtercode: (frontend? "FE" : ((fronto && (mld_key < 0)) ? "VD" : "")),
                                 moreinfo: !(disc > 0 || ((mld_key > 0 && !this_mld.canVakgChange) || stdm_info.is_kto_antwoord) || (frontend && (S("mld_selector_mode") == 1 || S("mld_selector_mode") == 2)) || (lBestaandeMelding && stdm_info.slabewaken && mld_melding.respijt > 0)) &&
                                            (user.checkAutorisation("WEB_FAQUSE", true) || user.checkAutorisation("WEB_FAQFOF", true)) && // !readonly && rechten
                                            !frontend
                               });

        var urlAdd = [{urlParam: "perslidKey", field: "person", init: mld_melding.melder_key}];
        if (!frontend || (S("mld_selector_mode") != 2)) // Als frontend en setting mld_selector_mode twee is, dan is de discipline niet zichtbaar en moet de stdmelding er niet van afhankelijk zijn.
          urlAdd.push({urlParam: "disc_key", field: "disc"});

        var res =
            FCLTstdmeldingselector("stdm",
                                    "sgStdm",
                                    { label: L("lcl_complain"),
                                      stdmelding_key: mld_melding.stdm,
                                      autfunctionKey: authparams.autfunctionkey,
                                      srtdisc_key: mld_melding.srtdisc,
                                      ins_key: ins_key,
                                      readonly: (mld_defaultstdmelding > 0 || (mld_key > 0 && !this_mld.canStdmChange) || (lBestaandeMelding && stdm_info.slabewaken && mld_melding.respijt > 0)),
                                      urlAdd: urlAdd,
                                      onChange: "onChangeStdMelding",
                                      extraParamField: "aantal_kbitems",
                                      extracode: "KB",
                                      initOnChange: (mld_key < 0), // Geen initialisatie van sgonChange (ingevulde einddatum niet aanpassen aan de uitvoertijd) bij bestaande meldingen
                                      required: (mld_key < 0 || this_mld.canStdmChange),
                                      filtercode: (frontend? "FE" : null),
                                      moreinfo: !(mld_defaultstdmelding > 0 || (mld_key > 0 && !this_mld.canStdmChange) || (lBestaandeMelding && stdm_info.slabewaken && mld_melding.respijt > 0)) &&
                                                 (user.checkAutorisation("WEB_FAQUSE", true) || user.checkAutorisation("WEB_FAQFOF", true)) && // !readonly && rechten
                                                 !frontend
                                    });
        if (res.stdmelding_key > 0 && !(mld_melding.stdm>0))
        {   // We hebben er wel eentje maar hadden er geen
            mld_melding.stdm = res.stdmelding_key;
            stdm_info = mld.mld_stdmeldinginfo(mld_melding.stdm);
        }
%>
        <input type="hidden" name="alg_onrgoed_obj_niveau" id="alg_onrgoed_obj_niveau" value="">
        <!-- Scripts... -->
        <script type="text/javascript">
            jQuery(document).ready(function()
            {
              var JSONdata = '(<%=safe.jsstring(JSON.stringify(stdm_info))%>)';
              // FSN#20381: Moet gedefinieerd worden na definitie FCLTkostenplaatsselector zodat sgAccount (ook jQuery(document).ready()) gedefinieerd is
              if (mld_key > 0) // Alleen voor bestaande meldingen uitvoeren. Voor nieuwe meldingen zorgt initOnChange van de stdmeldingselector voor de aanroep.
                process_stdm_info(eval('(' + JSONdata + ')'), false); // Tweede parameter stdmChanged voorkomt einddatum aanpassing bij bestaande meldingen
            });
        </script>
<%
        var hide_prio = false;
        if (frontend)
        {
          // Alle meldingen waar ik (frontend) prio zou mogen aangeven.
          sql = " SELECT mld_stdmelding_key"
              + "   FROM mld_stdmelding sm"
              + "      , mld_v_aanwezigdiscipline md"
              + "      , mld_disc_params dp"
              + "  WHERE sm.mld_ins_discipline_key = md.ins_discipline_key"
              + "    AND md.ins_discipline_key = dp.mld_ins_discipline_key"
              + "    AND mld_stdmelding_verwijder is NULL"
              + "    AND sm.mld_stdmelding_notfrontend = 0"
              + "    AND dp.mld_disc_params_frontendprio = 1"
              // Vervallen stdmeldingen worden niet getoond, dus ook niet meenemen
              + "    AND (sm.mld_stdmelding_vervaldatum IS NULL OR"
              + "         sm.mld_stdmelding_vervaldatum > SYSDATE)"
              + "    AND (   sm.mld_stdmelding_t_uitvtijd_pr1.tijdsduur IS NOT NULL"
              + "         OR sm.mld_stdmelding_t_uitvtijd_pr2.tijdsduur IS NOT NULL"
              + "         OR sm.mld_stdmelding_t_uitvtijd_pr4.tijdsduur IS NOT NULL)"
              + "    AND md.ins_srtdiscipline_key = " + mld_melding.srtdisc
              // Als er een default stdmelding is meegegeven dan daar alleen naar kijken
              + (mld_defaultstdmelding > 0
                ? " AND sm.mld_stdmelding_key = " + mld_defaultstdmelding
                : "")
              + "    AND md.ins_discipline_key IN (SELECT ins_discipline_key"
              + "                                    FROM fac_v_webgebruiker"
              + "                                    WHERE fac_functie_key = " + authparams.autfunctionkey
              + "                                    AND fac_gebruiker_prs_level_write < 9"
              + "                                    AND fac_gebruiker_alg_level_write < 9"
              + "                                    AND prs_perslid_key = " + user_key + ")"
          oRs = Oracle.Execute(sql);

          // Prioriteiten niet zichtbaar als ik het nergens mag aangeven
          hide_prio = (oRs.Eof);
          oRs.close();
        }

        if (hide_prio)
        { %>
          <input type="hidden" name="prio" id="prio" value="<%=mld_melding.mprio%>">
<%      }
        else
        {

          var sql = null;
          if (mld_melding.stdm > 0)
          {
            sql = "";
            var union = "";
            for (var i in stdm_info.prioriteiten)
            {
              var priotxt = stdm_info.prioriteiten[i].text;
              if (Session("logging") > 0)
              {
                priotxt += " **";
                priotxt += stdm_info.prioriteiten[i].uitvoertijd + " " + (stdm_info.prioriteiten[i].eenheid == 'D'? L("lcl_mld_days") : L("lcl_mld_hours"));
              }
              sql += union
                   + " SELECT " + stdm_info.prioriteiten[i].key
                   + ", " + safe.quoted_sql(priotxt)
                   + " FROM DUAL";

              union = " UNION";
            }
          }

          FCLTselector("prio",
                       sql,
                       { initKey: mld_melding.mprio,
                         label: L("lcl_mld_urg"),
                         readonly: (mld_key > 0 && !this_mld.canPrioChange),
                         onChange: "onChangePrioriteit()"
                       });
        } %>
        <script type="text/javascript">
          var hide_prio = <%=hide_prio? 1 : 0%> == 1;
        </script>

<%      // Is er binnen de mogelijkheden *geen enkele* vakgroep (discipline) met een startdatum? Dan de startdatum niet tonen.
        if (disc_with_startdatum)
        { // Wordt mogelijk dynamisch vervangen
          FCLTcalendar("startdate",
                         { label   : L("lcl_mld_startdate"),
                           datum   : mld_melding.melddatum,
                           minFuture : (frontend ? 0 : -1),
                           onChange: "onChangeStartdatum();",
                           readonly: !this_mld.canWriteDatums && mld_melding.show_start_date, // als hij verborgen is hoeftie niet readonly
                           required: true,
                           trhidden: mld_key > 0 && !mld_melding.show_start_date, // De hele tr moet hidden en niet alleen het inputveld
                           volgnr: 1,
                           nofollow: true
                         });
          // We hebben hier het veld startdate nodig voor de functie get_mld_info_ajax(calc_einddatum, ..)
          // Ook als deze readonly is, dus dan alsnog toevoegen. Let op: startdate MOET een integer zijn!
          if (!this_mld.canWriteDatums && mld_melding.show_start_date)
          {
%>
            <input type="hidden" name="startdate" id="startdate" value="<%=mld_melding.melddatum.valueOf()%>">
<%
          }
        }
        else
        { // Startdatum moet wel opvraagbaar zijn i.v.m. berekening einddatum.
%>
          <input type="hidden" name="startdate" id="startdate" value="<%=mld_melding.melddatum.valueOf()%>">
<%
        }

        // Einddatum verborgen als FE een melding invoert en toch readonly is.
        // Readonly gebeurd dynamisch in functie processEinddatum(...) in mld_edit_melding.js.
        // In FE mode staat de melding (stdmelding) en daarmee ook de planbaarheid vast (readonly).
        var einddatumHidden = !stdm_info.planbaar && frontend && mld_key < 0;

        // Wordt mogelijk dynamisch vervangen
        FCLTcalendar("enddate",
                       { label   : L("lcl_mld_enddate"),
                         datum   : mld_melding.einddatum,
                         minDate : (frontend ? mld_melding.einddatum : null),
                         timeField: !frontend || (frontend && !stdm_info.planbaar), // Bij FE dus afh van Planbaar eind(datum+tijd) wel/niet in te vullen, anderen (FO en zo) kunnen eind(datum+tijd) altijd invullen.
                         timeStep : 15, // TODO: Is nog wel erg hard. Zie ook mld_edit_melding.js
                         startTime: 8,
                         endTime  : 18,
                         onChange: "onChangeEnddate();",
                         readonly: mld_key > 0 && !this_mld.canWriteDatums,
                         required: true,
                         trclass: "trenddate",
                         trhidden: einddatumHidden, // De hele tr moet hidden en niet alleen het inputveld als in FE mode readonly
                         volgnr: 2,
                         addClass: (mld_melding.rsv_ruimte_key > 0? "mldres" : null) // Als de melding onder een reservering valt dan addClass toevoegen.
                       });
        BLOCK_END();

        if (mld_melding.show_bes)
        {
          BLOCK_START("mldBes", L("lcl_aflevergegevens"));
          var ALGreadlevel = this_mld.authparams(autfunction)? this_mld.authparams(autfunction).ALGreadlevel : 9;
          sql = "SELECT ma.mld_adres_key"
              + "     , ma.mld_adres_naam"
              + "     , ma.mld_adres_upper"
              + "  FROM mld_v_afleveradres ma"
              + (this_mld.canAflChange && ALGreadlevel >= 0
                ? " WHERE ma.alg_locatie_key IN (SELECT alg_locatie_key FROM fac_v_my_locations"
                  + "                             WHERE prs_perslid_key = " + user_key
                  + "                               AND niveau = " + ALGreadlevel + ")"
                  : "")
              + " ORDER BY mld_adres_upper";
          FCLTselector("del_address", sql,
                          {  label: L("lcl_delivery_address"),
                             initKey: mld_melding.deladdress,
                             emptyOption: "",
                             readonly: (mld_key > 0 && !this_mld.canAflChange),
                             required: true
                          }
                        );
          BLOCK_END();
        }

        if (mld_melding.show_alg)
        {
          BLOCK_START("mldAlg", L("lcl_plaatsgegevens"));
          FCLTplaatsselector(this_mld.authparams(autfunction) && this_mld.authparams(autfunction).ALGwritelevel,
                             { locatiekey: mld_melding.loc_key,
                               gebouwkey: mld_melding.bld_key,
                               verdiepingkey: mld_melding.flr_key,
                               ruimtekey: mld_melding.room_key,
                               terrein: true,
                               onLocChange: "onChangeLocatie(true);",
                               onGebChange: "onChangeGebouw(true);",
                               onLocCascade: "getObjectInfo('L');",
                               onGebCascade: "getObjectInfo('G');",
                               onVerCascade: "getObjectInfo('V');",
                               onRuiCascade: "getObjectInfo('R');",
                               moreinfo: (this_mld.canBOwrite || this_mld.canFOwrite) && !frontend,
                               readonly: (mld_key > 0 && !this_mld.canPlaatsChange),
                               filtercode: mld_melding.alg_level <= 2 ? null : "FAC",  /*strict genomen alleen voor FE/FO, maar readonly maakt dit vanzelf goed toch? */
                               suppressEmpty: true,
                               eindlevel: (mld_melding.alg_level ? mld_melding.alg_level : 2), // Minimaal Locatie
                               cadSelect: true,
                               cadShowdiscfn: "cadShowdiscfn",
                               requiredlevel: 2
                             }); // minstens locatie
          BLOCK_END();
        }

%></div><% // div.leftcontainer, de rest staat rechts

        // Inzicht is inmiddels dat dit geen relevante info is indien nieuwe melding
        if (lBestaandeMelding || (urole == "fo" && S("mld_melding_flags") > 0))
        {
          BLOCK_START("mldInfo", (lBestaandeMelding ? L("lcl_complain") + " " + (mld_melding.prefix != null? mld_melding.prefix : "") + mld_key : L("lcl_mld_new")));
          if (lBestaandeMelding)
          {
            var urlAdd = [{urlParam: "prs_key",  field: "person",     init: mld_melding.melder_key},
                          {urlParam: "disc_key", field: "disc",       init: mld_melding.disc}];
            if (mld_melding.show_alg)
              urlAdd.push({urlParam: "loc_key",  field: "locatiekey", init: mld_melding.loc_key});
            FCLTpersoonselector("sBehandel",
                                  "sgBehandelaar",
                                  { perslidKey: mld_melding.behandel_key,
                                    label: L("lcl_mld_behandelaar"),
                                    fieldNameKey : "sBehandel_key",
                                    autlevel: this_mld.authparams(autfunction) && this_mld.authparams(autfunction).PRSwritelevel,
                                    urlAdd: urlAdd,
                                    readonly: !this_mld.canAfhandChange,
                                    filtercode: (mld_melding.mld_status == 0 ? "BEHF" : "BEHB")
                                  });

            if (!mld_melding.show_start_date) { // alleen dan is de melddatum de invoerdatum; in het andere geval staat-ie elders al
               ROFIELDTR("fld", L("lcl_mld_date_time"), toDateTimeString(mld_melding.melddatum));
            }

            ROFIELDTR("fld", L("lcl_vakgroup_type"), mld_melding.srtdisc_oms);

            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});

            var params = { infoPointer: { Url: "appl/shared/status_info.asp?mld_key=" + mld_key + "&urole=" + urole,
                                          Title: L("lcl_status_details") + " " + mld_key
                                        }
                        }
            ROFIELDTR("fld", L("lcl_mld_status"), mld_melding.mld_status_str, params);

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

            if(stdm_info.kanverwijzen == 0 && mld_melding.kto_type) // Referentie (kanverwijzen > 0) verderop invoerbaar.
              mld.referentielink(mld_melding.kto_type, mld_melding.kto_key, L("lcl_mld_kto"));

            if (stdm_info.slabewaken)
            {
              sql = "SELECT  'U', " + safe.quoted_sql(L("lcl_mld_hours")) + " FROM DUAL"
                  + " UNION SELECT  'D', " + safe.quoted_sql(L("lcl_mld_days")) + " FROM DUAL"
                  + " ORDER BY 2";
              // Als de stdmelding wordt aangepast wordt de respijt leeg gemaakt en verwijderd. Bij de volgende edit actie is respijt dan weer te wijzigen.
              var selectparams = { fieldName: "dayshours_resp",
                                   sql: sql,
                                   params: { id: "dayshours_resp",
                                             initKey: mld_melding.respijt_eenheid, // Eenheid respijt hetzelfde als stdmelding.
                                             disable: true
                                           }
                                 }
              RWFIELDTR("respijt", "fldrespijt", L("lcl_mld_respijt"), mld_melding.respijt? Math.round(mld_melding.respijt * 100) / 100 : "", {maxlength: 3, datatype: "float", selector: selectparams});

              if (this_mld.canSLAChange)
                RWCHECKBOXTR("indult", "fldafr", L("lcl_mld_indult"), mld_melding.indult);
            }
            if (this_mld.canAfrond)
              RWCHECKBOXTR("afgerond", "fldafr", L("lcl_mld_afgerond"), mld_melding.afgerond);

            if ((mld_melding.kto_opt & 2) == 2 && mld_melding.kto_verstuurd == null && this_mld.canClose)
                RWCHECKBOXTR("ktoself", "fldkto", L("lcl_mld_kto_invite"), mld_melding.kto);
            else
                ROCHECKBOXTR("fldkto", L("lcl_mld_kto_invite"), mld_melding.kto, { suppressEmpty: true });
          }

          if ((urole == "bo" || urole == "fo") && (S("mld_melding_flags") > 0))
          {
              var mldflagnr = mld_melding.flag || 0;
              sql = "";
              for (var i=0; i<S("mld_melding_flags"); i++)
              {
                sql += "SELECT "+i+","+safe.quoted_sql(L("lcl_mld_flag"+i))+" FROM DUAL" + (i<(parseInt(S("mld_melding_flags"))-1)?" UNION ALL ":"");
              }
              FCLTselector("mldflag",
                           sql,
                           { initKey: mld_melding.flag,
                             label: L("lcl_mld_flags")
                           });
          }
          BLOCK_END();
        }

        BLOCK_START("mldFaq", L("lcl_faq_kennisbank"), false, true);
            // hier komen vaste aanwijzingen
        BLOCK_END();

        BLOCK_START("mldRef", L("lcl_reference"), false, !stdm_info.kanverwijzen); %>
        <input type="hidden" name="kto_type" value="<%=mld_melding.kto_type%>">
        <input type="hidden" name="kto_key" value="<%=mld_melding.kto_key%>">
        <input type="hidden" name="filtercode" id="filtercode" value=<%=((stdm_info.kanverwijzen==128)?"M" :"O")%>>
<%
        FCLTreferentieselector("ref_key",
                               "sgRef",
                               { label: L("lcl_reference"),
                                 referenceKey: stdm_info.kanverwijzen? mld_melding.kto_key : -1,
                                 referenceType: mld_melding.kto_type, // De waarde komt standaard in het extraParamField field ref_type.
                                 excludemldkey: mld_key > 0? mld_key: null,
                                 urlAdd: [{urlParam: "prs_key", field: (personForExist? "personFor" : "person"), init: (personForExist? mld_melding.perslid_key_voor : mld_melding.melder_key)},
                                          {urlParam: "stdm_key", field: "stdm", init: mld_melding.stdm},
                                          {urlParam: "filtercode", field: "filtercode", init: ((stdm_info.kanverwijzen==128)?"M" :"O")}]
                               });
        BLOCK_END();

        if (S("mld_flexcolumns") == 1)
            gen_flex(1); // hier....

        if (mld_melding.show_ins)
        { // Is er een object meegegeven of zijn er objecten te tonen?
          var thereAreObjects = ins_key > 0;
          if (!thereAreObjects && mld_key > 0)
          {
            var sql = "SELECT m.ins_deel_key"
                    + "  FROM mld_melding_object m"
                    + " WHERE m.mld_melding_key = " + mld_key
                    + " ORDER BY m.ins_deel_key";
            oRs = Oracle.Execute(sql);
            var thereAreObjects = !oRs.Eof;
            oRs.close();
          }

          // Als de objecte knop aanwezig is of er zijn geselecteerde objecten te tonen dan objectenblok tonen.
          var objparams = {ins_key: ins_key,
                           canChange: this_mld.canPlaatsChange,
                           verplicht: mld_melding.srtinst_verplicht,
                           aantalobj: 0,
                           disableobjects: true,
                           onclickobj: "mld_melding_object()"};

          if ((ins_key < 0 && (mld_key <= 0 || this_mld.canPlaatsChange)) || thereAreObjects)
          {
            BLOCK_START("mldIns", L("lcl_gerelateerdeobjecten"));
            mld.generate_relobject_editblock(mld_key, objparams);
            BLOCK_END();
          }
        } // if (mld_melding.show_ins)

        if (S("mld_flexcolumns") == 2)
            gen_flex(2); // dan hier....

        var _imgsrcstr = 'src="../Pictures/lightbulb.png" ';
        var _imgonclickstr = "FcltMgr.openDetail('appl/mld/mld_search.asp?urole=" + urole + "&chkSelf=1&chkBusy=1&autosearch=1&opl=1&searchtekst='" + "+escape($('#melding_omschrijving').val())+" + "'&locatie_key='" + "+($('#locatiekey').val()||-1)+" + "'&disc=-1', '"
                           + L("lcl_mld_similarcalls")
                           + "') ";

        BLOCK_START("mldOmschrijving",
                    L("lcl_txt") + (lBestaandeMelding && (this_mld.canBOwrite || this_mld.canFOwrite)
                      ? '<img class="details" id="goegel" title="' + L("lcl_mld_similarcalls") + '" ' + _imgsrcstr + ' onclick="' + _imgonclickstr + '">'
                      : ''),
                    true,
                    mld_melding.freetext == 0); // Geen omschrijving indien mld_stdmelding_freetext == 0
        // Short subject
        RWFIELDTR("melding_onderwerp",
                     "fld" + ((mld_melding.freetext == 2 && (this_mld.canOmsChange || mld_key < 0) && !txtreado)? " required" : ""),
                     L("lcl_mld_subject"),
                     mld_melding.mld_onderwerp,
                     {html:  (!(this_mld.canOmsChange || mld_key < 0) || txtreado? " readonly" : "")});

        // Complaint text description
        RWTEXTAREATR("melding_omschrijving",
                     "fldtxt" + ((mld_melding.freetext == 2 && (this_mld.canOmsChange || mld_key < 0) && !txtreado)? " required" : ""),
                     L("lcl_mld_inf_Omschrijving"),
                     mld_melding.mld_omschr,
                     {html: "rows='5'" + (!(this_mld.canOmsChange || mld_key < 0) || txtreado? " readonly" : "")});
        BLOCK_END();

        if (S("mld_flexcolumns") == 3)
            gen_flex(2); // dan hier....

        if (lBestaandeMelding && (this_mld.canBOwrite || this_mld.canFOwrite))
        {
          // Mag ik kennisbank raadplegen en standaard-antwoorden knippen/plakken
          var authFaq = (S("faq_enabled")==1) && user.checkAutorisation("WEB_FAQFOF", true);
          if (authFaq && authFaq.PRSwritelevel<9) // schrijfrechten op WEB_FAQFOF nodig
          {
            var _imgsrcstr2 = 'src="../Pictures/book_open.png" ';
            var _imgonclickstr2 = "FcltMgr.openDetail('/appl/fac/fac_faq_search.asp?urole="+urole+"&autosearch=1&s='+escape($('#melding_omschrijving').val())"
                               + ", '" + L("lcl_faq_kennisbank") + "') ";
            var _imgstr2 = '<img class="details" id="goegel" title="' + L("lcl_fac_filterblok") + '" ' + _imgsrcstr2
                           + ' onclick="' + _imgonclickstr2 + '">'
                           + " <a class='details' onClick='PasteFromClipboard()'>[" + L("lcl_mld_paste") +"]</a>" ;
          }
          else
            var _imgstr2 = '';

          BLOCK_START("mldBehandel",  L("lcl_behandelgegevens") +  _imgstr2, true);

          RWTEXTAREATR("remark",
                       "fldtxt",
                       L("lcl_mld_inf_Opmerking"),
                       mld_melding.remark,
                       {html: "rows='3' cols='40'" + (this_mld.canAfhandChange? "": " readonly")});
          BLOCK_END();
        }
        IFACE.FORM_END();
%>
      </form>
    </div> <!-- edit -->
  </body>

</html>
