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

    File:               pda/reservering.asp
    Description:        Add/wijzig reservering (Mobile version)
    Parameters:         rsv_ruimte_key voor bestaande deelreservering
                        rsv_ruimte_key=-1 voor nieuwe (deel)reservering

*/ %>

<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/calendar.inc" -->
<!-- #include file="../Shared/selector.inc" -->
<!-- #include file="./mobile.inc" -->
<!-- #include file="./iface.inc" -->
<!-- #include file="../PRS/prs.inc" -->
<!-- #include file="../RES/res.inc" -->
<!-- #include file="../Shared/getkenmerksql.inc" -->
<!-- #include file="../Shared/discx3d.inc" -->
<!-- #include file="../Shared/discxalg3d.inc" -->
<!-- #include file="../mld/mld.inc" -->
<!-- #include file="../RES/res_plan_room.inc" -->
<!-- #include file="../RES/res_flexkenmerk.inc" -->

<%
FCLTHeader.Requires({ js: ["./modernizr-3.3.0.custom.min.js"] });
FCLTHeader.Requires({ js: ["jquery.timepicker-table.js"],
                      css: ["timePicker-table.css"] });

var rsv_ruimte_key = getQParamInt("rsv_ruimte_key", -1);  // -1 betekent nieuwe
var qrc = getQParamInt("qrc", 0) != 0;

// MGE: Toevoegen kan tot op heden nog niet
// Mogelijke parameters voor toevoegen only
// Deze zijn niet waarschijnlijk meegegeven, maar de defaultwaarde is ook al handig
//var locatie_key = getQParamInt("locatie_key", user.alg_locatie_key({withcurrent: true})); // Locatie
//var gebouw_key = getQParamInt("gebouw_key", user.alg_gebouw_key({withcurrent: true})); // Gebouw, kan -1 zijn, dan niet gebruiken
//var verdieping_key = getQParamInt("verdieping_key", user.alg_verdieping_key({withcurrent: true}));
//var ruimte_key = getQParamInt("ruimte_key", user.alg_ruimte_key({withcurrent: true}));

var sql = "SELECT COALESCE(MIN(fac_gebruiker_alg_level_write), 9) writelevel"
        + "  FROM fac_v_webgebruiker g, fac_functie f "
        + " WHERE g.fac_functie_key = f.fac_functie_key "
        + "   AND f.fac_functie_code IN ('WEB_RESUSE')"
        + "   AND g.prs_perslid_key = " + user_key;
var oRs = Oracle.Execute(sql);
var autlevel = oRs("writelevel").Value; // Pas op: kan ook '0' zijn (regio)
oRs.Close();

var afs_key = -1;
if (rsv_ruimte_key > -1)
{
  // BESTAANDE DEELRESERVERING
  res.res_set_dialect(rsv_ruimte_key);
  var this_res = res.func_enabled(rsv_ruimte_key); // Wat heb ik zoal aan rechten op deze specifieke reservering
  user.auth_required_or_abort(this_res.canReadAny);

  sql = "SELECT * FROM res_rsv_ruimte WHERE res_rsv_ruimte_key = " + rsv_ruimte_key;
  var oRsR = Oracle.Execute(sql);
  var rsv = { opstel_key:      oRsR("res_ruimte_opstel_key").Value
            , account:         oRsR("prs_kostenplaats_key").Value || -1
            , bezoekers:       oRsR("res_rsv_ruimte_bezoekers").Value || 0
            , status_fo:       oRsR("res_status_fo_key").Value
            , act_key:         oRsR("res_activiteit_key").Value
            , reservering_key: oRsR("res_reservering_key").Value
            , ruimte_volgnr:   oRsR("res_rsv_ruimte_volgnr").Value
            , ruimte_van:      new Date(oRsR("res_rsv_ruimte_van").Value)
            , ruimte_tot:      new Date(oRsR("res_rsv_ruimte_tot").Value)
            , omschrijving:    oRsR("res_rsv_ruimte_omschrijving").Value
            , opmerking:       oRsR("res_rsv_ruimte_opmerking").Value
            , verwijderd:      true
            };
  oRsR.Close();

  // Toch eens een functie res.ruimte_info() bouwen voor dit soort zaken
  var sql2 = "SELECT COALESCE (opstelalg.res_ruimte_nr, ruimte_geg.alg_ruimte_aanduiding) res_ruimte_nr"
           + "     , opstelalg.res_ruimte_key"
           + "     , ruimte_geg.alg_ruimte_key"
           + "     , ruimte_geg.alg_locatie_key"
           + "     , rsa.res_srtactiviteit_metomschr"
           + "     , rsa.res_srtactiviteit_metopmerk"
           + "     , rsa.res_srtactiviteit_metaantal"
           + "     , ra.res_activiteit_omsverplicht"
           + "     , ra.res_activiteit_aantalverplicht"
           + "     , " + lcl.xsqla("ra.res_activiteit_omschrijving", "ra.res_activiteit_key")
           + "     , DECODE(rrr.res_rsv_ruimte_verwijder, NULL, 0, 1) verwijderd"
           + "  FROM res_rsv_ruimte rrr"
           + "     , alg_v_ruimte_gegevens ruimte_geg"
           + "     , res_activiteit ra"
           + "     , res_srtactiviteit rsa"
           + "     , (SELECT res_ruimte_opstel_key"
             + "           , rr.res_ruimte_nr res_ruimte_nr"
             + "           , rr.res_ruimte_key"
             + "           , MIN (alg_ruimte_key) alg_ruimte_key"
             + "        FROM res_ruimte_opstelling rro"
             + "           , res_alg_ruimte rar"
             + "           , res_ruimte rr"
             + "       WHERE rro.res_ruimte_key = rar.res_ruimte_key"
             + "         AND rr.res_ruimte_key = rar.res_ruimte_key"
             + "         AND rar.res_alg_ruimte_verwijder IS NULL"
             + "      GROUP BY res_ruimte_opstel_key"
             + "             , rr.res_ruimte_nr"
             + "             , rr.res_ruimte_key) opstelalg"
           + " WHERE rrr.res_ruimte_opstel_key = opstelalg.res_ruimte_opstel_key(+)"
           + "   AND rrr.res_activiteit_key = ra.res_activiteit_key"
           + "   AND ra.res_srtactiviteit_key = rsa.res_srtactiviteit_key"
           + "   AND rrr.alg_ruimte_key = ruimte_geg.alg_ruimte_key(+)"
           + "   AND rrr.res_rsv_ruimte_key = " + rsv_ruimte_key;
    var oRs2 = Oracle.Execute(sql2);
    if (!oRs2.eof)
    {
        rsv.ruimtenr      = oRs2("res_ruimte_nr").Value;
        rsv.ruimtekey     = oRs2("res_ruimte_key").Value;
        rsv.alg_ruimetkey = oRs2("alg_ruimte_key").Value;
        rsv.loc_key       = oRs2("alg_locatie_key").Value;
        rsv.toonOms       = oRs2("res_srtactiviteit_metomschr").value || 0;
        rsv.toonOpm       = oRs2("res_srtactiviteit_metopmerk").value || 0;
        rsv.toonBez       = oRs2("res_srtactiviteit_metaantal").value || 0;
        rsv.reqOms        = oRs2("res_activiteit_omsverplicht").value || 0;
        rsv.reqBez        = oRs2("res_activiteit_aantalverplicht").value || 0;
        rsv.activity      = oRs2("res_activiteit_omschrijving").value;
        rsv.verwijderd    = (oRs2("verwijderd").value==1 ? true : false);
    }
    oRs2.Close();
    this_res.canDelete = this_res.canDelete && !rsv.verwijderd;  // Geen delete knop als de reservering al verwijderd is.

    // Bestaat er al een afspraak bij deze reservering.
    var sql3 = "SELECT bez_afspraak_key"
             + "  FROM bez_afspraak"
             + " WHERE res_rsv_ruimte_key = " + rsv_ruimte_key;
    var oRs3 = Oracle.Execute(sql3);
    if (!oRs3.eof)
        afs_key = oRs3("bez_afspraak_key").Value;
    oRs3.Close();
}
else
{
    this_res = {};
    // NIEUWE RESERVERING
    // Verplicht:
    var res_van = getQParamDate("date_from", null);
    var res_tot = getQParamDate("date_to", null);
    var ruimtekey = getQParamInt("res_ruimte_key", null);
    if (!res_van && !ruimtekey)
    {
        Server.Transfer("reservering_new.asp"); // Ga maar eerst datum kiezen
    }
    else
    {
        var sql = "SELECT alg_ruimte_key FROM res_alg_ruimte WHERE res_ruimte_key = " + ruimtekey;
        var oRs = Oracle.Execute(sql);
        if (!oRs.eof)
          var alg_ruimtekey = oRs("alg_ruimte_key").Value;
        oRs.CLose();

        var rri = res.res_ruimte_info(ruimtekey);

        var rsv = { loc_key:    getQParamInt("loc_key", -1)
                  , act_key:    getQParamInt("act_key", -1)
                  , kostenklant: S("kosten_klant_default") == 1
                  , account:    -1
                  , status_fo:  rri.status_fo_key > 0? rri.status_fo_key : 2
                  , ruimtekey:  ruimtekey
                  , alg_ruimtekey : alg_ruimtekey
                  , ruimte_van: res_van
                  , ruimte_tot: res_tot
                  , bezoekers: getQParamInt("bez_cnt", 0)
                  , verwijderd: false
                  };
        if (rsv.kostenklant)
        {
            if (S("prs_dep_default_kpn") == 1)
                rsv.account = user.afdeling().prs_kostenplaats_key();
            if (rsv.account == -1)
            {
                var host_info = prs.prs_perslid(user_key, {withWP: true});
                rsv.account = host_info.kostenplaats_key;
            }
        }
        if (rsv.act_key < 0) // Toevallig maar één activiteit mogelijk voor onze ruimte? Pak gewoon de eerste
        {
            sql = "select res_activiteit_key"
                + "  from res_activiteitdiscipline rad,"
                + "       res_ruimte rr"
                + " where rr.res_ruimte_key = " + rsv.ruimtekey
                + "   and rad.res_discipline_key = rr.res_discipline_key";
            var oRs = Oracle.Execute(sql);
            rsv.act_key = oRs("res_activiteit_key").Value;
            oRs.Close()
        }

        // Als het aantal bezoekers is ingevuld moeten deze in de opstelling passen,
        // maar neem bijvoorkeur de default opstelling.
        // Neem de default opstelling altijd als het aantal bezoekers niet bekend is.
        var sql = "SELECT rr.res_ruimte_nr"
                + "     , rr.res_ruimte_key"
                + "     , rro.res_opstelling_key"
                + "     , rro.res_ruimte_opstel_key"
                + "     , rro.res_ruimte_opstel_default"
                + "     , rro.res_ruimte_opstel_bezoekers"
                + "  FROM res_ruimte_opstelling rro"
                + "     , res_ruimte rr"
                + " WHERE rro.res_ruimte_key = rr.res_ruimte_key"
                + "   AND rro.res_ruimte_key = " + rsv.ruimtekey
                + (rsv.bezoekers > 0 ? "   AND res_ruimte_opstel_bezoekers >= " + rsv.bezoekers : "")
                + " ORDER BY res_ruimte_opstel_default DESC NULLS LAST"
                + "        , res_ruimte_opstel_bezoekers";
        var oRs = Oracle.Execute(sql);
        rsv.ruimtenr   = oRs("res_ruimte_nr").value;
        rsv.opstel_key = oRs("res_ruimte_opstel_key").value;
        oRs.Close();
        //
        var sql = "SELECT rsa.res_srtactiviteit_metomschr"
                + "     , rsa.res_srtactiviteit_metopmerk"
                + "     , rsa.res_srtactiviteit_metaantal"
                + "     , ra.res_activiteit_omsverplicht"
                + "     , " + lcl.xsqla("ra.res_activiteit_omschrijving", "ra.res_activiteit_key")
                + "  FROM res_srtactiviteit rsa"
                + "     , res_activiteit    ra"
                + " WHERE ra.res_srtactiviteit_key = rsa.res_srtactiviteit_key"
                + "   AND ra.res_activiteit_key = " + rsv.act_key;
        var oRs = Oracle.Execute(sql);
        rsv.toonOms = oRs("res_srtactiviteit_metomschr").value || 0;
        rsv.toonOpm = oRs("res_srtactiviteit_metopmerk").value || 0;
        rsv.toonBez = oRs("res_srtactiviteit_metaantal").value || 0;
        rsv.reqOms  = oRs("res_activiteit_omsverplicht").value || 0;
        rsv.activity = oRs("res_activiteit_omschrijving").value;

        rsv.flex_defaults = {};
        var flex_defaults = getQParam("flex_defaults", "").split("&"); //bsn=12345678&plaats=Enschede&postcode=1234AB
        for (var i in flex_defaults)
        {
            var nm = flex_defaults[i].split("=")[0].toLowerCase();
            var val = flex_defaults[i].split("=")[1];
            rsv.flex_defaults[nm] = val;
        }
    }
}
var subject = rsv_ruimte_key > -1 ? rsv.activity + " " + rsv.reservering_key + "/" + rsv.ruimte_volgnr
                                  : L("lcl_mobile_newreservering");

// last_minute mag frontend niet meer de zaal of tijdstippen wijzigen
//      (noch de catering zelf maar dat regelt res_show_objcat.asp)
var fe_lastminute = false;


if (rsv.opstel_key)
  rsv.restype = "R";
else
  rsv.restype = "CV";

if (rsv.restype == "CV")
{
  if (rsv_ruimte_key > 0) // Existing reservation
  {
    if (rsv.ruimte_van < this_res.earliest_expire_change)
      last_minute = true;
    else
      last_minute = false;
    fe_lastminute = (last_minute); // urole == "fe" geldt voor mobile al.
  }
}  // restype = "CV"

%>
<html>
  <head>
<%  FCLTMHeader.Generate({title: subject });
if (!rsv.verwijderd)  // geen script nodig als reservering verwijderd is.
{
%>
    <script type="text/javascript">

        function res_submit_callback(json)
        { // Alleen nog de mogelijk om tijdstippen en zaal aan te passen.
          // Nog geen nieuwe reservering aanmaken en qr code.
          if (json.rsv_ruimte_key > 0)
          {
            // Opslaan button geklikt. Er hoeft niet gerefreshed te worden. Er kan direct weer gewijzigd worden
            alert(L("lcl_mobile_saved")); // ' onder nummer ... '
            if (<%=rsv_ruimte_key%> == -1 && confirm(L("lcl_mobile_addvisitors")+"?"))
            {
                var purl = "?rsv_ruimte_key="+json.rsv_ruimte_key
                         + "&afs_key=-1"
                         + "&urole=fe";
                window.location.href = "bezoeker.asp" + purl;
            }
            else
            {
              McltCallbackHome(json); // Home omdat niet alle browsers anders een refresh doen
            }
          }
        };

        function res_submit()
        {
            if (!validateForm("res"))
                return false;

            $.post( $("form[name=res]")[0].action
                  , $("form[name=res]").serialize()
                  , McltCallbackAndThenAlways(res_submit_callback)
                  , "json");
            return false;
        }

        function res_delete()
        {
          if (confirm(L("lcl_res_confirm_delete_afspraak")))
          {
            var data = {};
            <% protectRequest.dataToken("data"); %>
            $.post("../res/res_delete_save.asp?rsv_ruimte_key=<%=rsv_ruimte_key%>",
                   data,
                   McltCallbackHome, // Op deze manier in ieder geval een refresh
                   "json");
          }
        }

        function res_vis_callback(json)
        {
<%        // Direct door naar bezoekers toevoegen als er al een afspraak bij deze reservering bestaat.
          var purl = "rsv_ruimte_key="+rsv_ruimte_key;
          if (afs_key != -1)
          {
              purl = "afspraak.asp?" + purl;
          }
          else
          {
              purl += "&afs_key=" + afs_key;
              purl = "bezoeker.asp?urole=fe&" + purl;
          }
%>
          window.location.href = "<%=purl%>";
        }

        function res_vis()
        {
            if (!validateForm("res"))
                return false;

            $.post( $("form[name=res]")[0].action
                  , $("form[name=res]").serialize()
                  , McltCallbackAndThenAlways(res_vis_callback)
                  , "json");
            return false;
        }

        // Process de ruimte-data die van de Ajax terugkomt.
        function process_res_ruimte_info(data)
        {
          if (data.default_opstel_key > 0)
            $("#ruimte_opstel").val(data.default_opstel_key);
          else
            $("#ruimte_opstel").val(data.RoomConfigs[0].ruimte_opstel_key);
        }

        function OnChangeRoom()
        {
          var pruimtekey = $("#rui_key").val();

          $.getJSON("../res/get_res_info_ajax.asp?req_info=res_ruimte&res_ruimte_key=" + pruimtekey,
                    process_res_ruimte_info);

        }
    </script>
<%
} // geen script nodig als reservering verwijderd is.
%>
  </head>
  <body>
    <div>
<%
      PAGE_START({id: "page-1-" + rsv_ruimte_key});
      HEADER({title: subject, back:!qrc, home: !qrc, delaction: (this_res.canDelete ? "javascript:res_delete()" : ""), datatheme: jQFrontEndTheme});
      CONTENT_START();
if (rsv.verwijderd)
{
    BUTTON(L("lcl_res_is_resdel"));
}
else
{
%>
      <form name="res" id="res" action="../res/res_edit_rsv_ruimte_save.asp?rsv_ruimte_key=<%=rsv_ruimte_key%>&urole=fe" method="post">
        <input type="hidden" name="rsv_ruimte_key" value="<%=rsv_ruimte_key%>">
        <input type="hidden" name="restype" id="restype" value="<%=rsv.restype%>">
        <input type="hidden" name="sel_activity" id="sel_activity" value="<%=rsv.act_key%>">
        <input type="hidden" name="status_fo" id="status_fo" value="<%=rsv.status_fo%>">

<%      if (rsv.restype == "R")
        {
%>
          <input type="hidden" name="locatiekey" id="locatiekey" value="<%=rsv.loc_key%>">
          <input type="hidden" name="ruimte_opstel" id="ruimte_opstel" value="<%=rsv.opstel_key%>">
          <input type="hidden" name="ruimtekey" id="ruimtekey" value="<%=rsv.alg_ruimtekey%>">
          <input type="hidden" name="kostenklant" id="kostenklant" value="<%=(rsv.kostenklant?"on":"")%>">
          <input type="hidden" name="account" id="account" value="<%=rsv.account%>">
<%      }

        if (rsv_ruimte_key == -1)
        { // Nieuw. Datum en tijd heb je al in vorige schermen gekozen
          BLOCK_START({collapsed: true, title: rsv.activity});
          ROFIELD("fld", L("lcl_place") , rsv.ruimtenr.replace(/\n/,"<br>"));
          ROFIELD("fld", L("lcl_date"), toDateTimeString(rsv.ruimte_van) + "-" + toTimeString(rsv.ruimte_tot));
%>
          <input type="hidden" name="person"  id="person"  value="<%=user_key%>">
          <input type="hidden" name="personH" id="personH" value="<%=user_key%>">
          <input type='hidden' name='date_from' value='<%=rsv.ruimte_van.getTime()%>'>
          <input type='hidden' name='date_to' value='<%=rsv.ruimte_tot.getTime()%>'>
<%
          if (rsv.toonBez)
          {
            if (rsv.bezoekers > 0)
            {
%>
              <input type="hidden" name="bezoekers" id="bezoekers" value="<%=rsv.bezoekers%>">
<%
            }
            ROFIELD("fld", L("lcl_visitors"), (rsv.bezoekers > 0? rsv.bezoekers : ""), {suppressEmpty: true});
          }
          BLOCK_END();

          if (rsv.toonOms)
            RWFIELD("descript",  L("lcl_txt") ,     rsv.omschrijving, {pclass: (rsv.reqOms?"required":"") });
          if (rsv.toonOpm)
            RWFIELD("opmerk",    L("lcl_remark") ,  rsv.opmerking, {multi:true});
        }
        else // Bestaand
        {
          if (rsv.restype == "CV" || fe_lastminute || !this_res.canChange)
          { // Voor "CV" reservering is de plaats niet aanpasbaar.
            ROFIELD("fld",  L("lcl_place") , rsv.ruimtenr.replace(/\n/,"<br>"));
          }
          else
          {
            var params = { loc: rsv.loc_key,
                           init_res_ruimte_key: rsv.ruimtekey,
                           forSelectRoom: true,
                           vis: rsv.bezoekers > 0? rsv.bezoekers : null,
                           activiteit_key: rsv.act_key,
                           authparams: user.checkAutorisation("WEB_RESUSE", null, null, true), // urole == "fe" en pessimistisch.
                           ruimtecat: [],
                           res_van: rsv.ruimte_van,
                           res_tot: rsv.ruimte_tot
                         };
            var sql = res.get_rooms_for_planbord(params);
            sql = "SELECT * FROM (" + sql + ")"; // sql begint met "WITH...." en dan levert Oracle geen recordset op. Dan maar "SELECT *...." eromheen.
            FCLTselector("rui_key",
                         sql,
                         { initKey: rsv.ruimtekey,
                           label: L("lcl_place"),
                           onChange: "OnChangeRoom()",
                           mobile: true
                         });
          }

          if (fe_lastminute || !this_res.canChange)
          {
            ROFIELD("fld",  L("lcl_from") , toDateTimeString(rsv.ruimte_van), { });
            ROFIELD("fld",  L("lcl_to") , toDateTimeString(rsv.ruimte_tot), {combine: true});
          }
          else
          {
            FCLTcalendar("date_from",
                         { label : L("lcl_from"),
                           datum: new Date(rsv.ruimte_van),
                           maxPast: 0,
                           maxFuture: (S("res_fe_reservering_limiet") > 0? S("res_fe_reservering_limiet") : S("res_reservering_limiet")),
                           timeField: true,
                           timeStep: S("res_h") * 60,
                           startTime: S("res_t1"),
                           endTime: S("res_t2"),
                           required: true,
                           volgnr: 1,
                           mobile: true
                         }
                        );
            FCLTcalendar("date_to",
                         { label : L("lcl_to"),
                           datum: new Date(rsv.ruimte_tot),
                           maxFuture: (S("res_fe_reservering_limiet") > 0? S("res_fe_reservering_limiet") : S("res_reservering_limiet")),
                           timeField: true,
                           timeStep: S("res_h") * 60,
                           startTime: S("res_t1"),
                           endTime: S("res_t2"),
                           hidden   : (rsv.restype == "R"), // Meerdaags ruimte ondersteunen we nog niet echt
                           required: true,
                           volgnr: 2,
                           mobile: true
                         }
                        );
          }
          if (rsv.toonBez)
            RWFIELD("bezoekers", L("lcl_visitors"), (rsv.bezoekers > 0? rsv.bezoekers : ""), {datatype:"number", pclass: (rsv.reqBez?"required":"") });
          if (rsv.toonOms)
            RWFIELD("descript",  L("lcl_txt") ,     rsv.omschrijving, {pclass: (rsv.reqOms?"required":"") });
          if (rsv.toonOpm)
            RWFIELD("opmerk",    L("lcl_remark") ,  rsv.opmerking, {multi:true});

          // plus gastheer, activiteit, fostatus en wellicht nog meer
          // beetje leuk in een block of 2

          if (true || rsv.opstel_key == null)
          {
              // Voorzieningsreservering - indien leesrechten? TODO
              sqld = "SELECT ins_deel_omschrijving "
                   + "  FROM res_rsv_deel rrd, res_deel rd, ins_deel id "
                   + " WHERE rrd.res_deel_key = rd.res_deel_key"
                   + "   AND rd.res_ins_deel_key = id.ins_deel_key"
                   + "   AND rrd.bez_bezoekers_key IS NULL"
                   + "   AND rrd.res_rsv_ruimte_key = " + rsv_ruimte_key;
              var oRsd = Oracle.Execute(sqld);
              var oRsdi = 0;
              while (!oRsd.eof)
              {
                if (oRsdi < 1)
                    BLOCK_START({collapsed: true, title: L("lcl_res_reserved_objects")});
                ROFIELD("fld",  "" , oRsd("ins_deel_omschrijving").Value, {suppressEmpty: true});
                oRsdi += 1;
                oRsd.moveNext();
              }
              // - indien leesrechten? TODO
              sqla = "SELECT res_artikel_omschrijving, res_rsv_artikel_aantal"
                   + "  FROM res_rsv_artikel rra, res_artikel ra"
                   + " WHERE rra.res_artikel_key = ra.res_artikel_key"
                   + "   AND rra.res_rsv_ruimte_key = " + rsv_ruimte_key;
              var oRsa = Oracle.Execute(sqla);
              while (!oRsa.eof)
              {
                if (oRsdi < 1)
                    BLOCK_START({collapsed: true, title: L("lcl_res_reserved_objects")});
                ROFIELD("fld", "" , oRsa("res_rsv_artikel_aantal").Value + " x " + oRsa("res_artikel_omschrijving").Value, {suppressEmpty: true});
                oRsdi += 1;
                oRsa.moveNext();
              }
              if (oRsdi > 0)
                    BLOCK_END();
              // Bezoekers  - indien leesrechten? TODO
          }
        }

        generateFlexKenmerkBlock ( { fnpre    : function () { BLOCK_START({collapsed: (rsv_ruimte_key>0), title: L("lcl_res_flexblok"), xmini: true}); }
                                  , fnpost   : BLOCK_END
                                  , urole: "fe" // altijd voor mobile
                                  , res_key : rsv.reservering_key
                                  , act_key : rsv.act_key
                                  , defaults : rsv.flex_defaults // pacta: { bsn: "12345678", plaats: "Enschede", postcode:"1234AB" }
                                  , rsv_ruimte_key : rsv_ruimte_key
                                  , reado: false
                                  , mobile: true
                                  }
                                );

        CONTROLGROUP_START()
            if (this_res.canChange || rsv_ruimte_key == -1)
                BUTTON((rsv_ruimte_key > -1 ? L("lcl_submit") : L("lcl_newsubmit")), {click: "res_submit()", dataicon: "refresh"});
            if (this_res.canChange && rsv_ruimte_key > -1)
                BUTTON(L("lcl_mobile_bezoek"), {click: "res_vis()", dataicon: "grid"});
          // Toon meldingenknop als er bijbehorende lopende meldingen zijn en ik die mag zien (kan vast nog scherper)
          if (user.checkAutorisation( "WEB_MLDBOF", true)) {
              // De prijs is wel dat ik mld.inc moet includen..
              var perform=false; // ???? JGL: MLD.INC gebruikt deze illegaal globaal
              var frontend=false;
              var tsql = "SELECT COUNT(m.mld_melding_key), MAX(m.mld_melding_key)"+ mld.getfromwherelist_sql("WEB_MLDBOF", {"rsv_ruimte_key": rsv_ruimte_key})
                       + " AND m.mld_melding_status IN (0,2,3,4,7)";
              toRs = Oracle.Execute(tsql);
              if (toRs(0).value == 1) {   // eentje slechts, dan naar de details; max is vanzelfsprekend die ene
                  BUTTON(L("lcl_mobile_meldingen")+ " (1)", {linkid: "./melding.asp?mld_key="+toRs(1).value , dataicon: "alert", dataajax: 'false'});
              } else if (toRs(0).value > 0) {  // meerdere, dan naar lijst
                  BUTTON(L("lcl_mobile_meldingen")+" ("+toRs(0).value+")", {linkid: "./mld_list.asp?res_ruimte_key="+rsv.ruimtekey , dataicon: "alert", dataajax: 'false'});
              }
          }

        CONTROLGROUP_END()
        IFACE.FORM_END();
%>
      </form>
<%
}
      CONTENT_END();
      FOOTER();
      PAGE_END();
      // close
%>
    </div>
  </body>
</html>
