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

    File:               pda/bezoeker.asp
    Description:        Add/wijzig melding (Mobile version)
    Parameters:         afs_key voor bestaande melding
                        afs_key=-1 voor nieuwe melding

    Note:

*/ %>

<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/calendar.inc" -->
<!-- #include file="../Shared/selector.inc" -->
<!-- #include file="../Shared/suggest/suggest.inc" -->
<!-- #include file="../bez/bez.inc" -->
<!-- #include file="../bez/bez_flexkenmerk.inc" -->
<!-- #include file="../res/res.inc" -->
<!-- #include file="./resultset_table.inc" -->
<!-- #include file="./mobile.inc" -->
<!-- #include file="./iface.inc" -->

<%

FCLTHeader.Requires({ plugins: ["suggest"] });
FCLTHeader.Requires({ js: ["jquery.timepicker-table.js"],
                      css: ["timePicker-table.css"] });

var afs_key = getQParamInt("afs_key"); // Bezoekers toevoegen aan bestaande afspraak.
var qrc = getQParamInt("qrc", 0) != 0;
var rsv_ruimte_key = getQParamInt("rsv_ruimte_key", -1);
var toaster = getQParamInt("toaster", -1);

var urole = "fe";

var isReservering = false;

if (rsv_ruimte_key != -1)
{
  var sql = "SELECT bez_afspraak_key"
          + "  FROM bez_afspraak"
          + " WHERE res_rsv_ruimte_key = " + rsv_ruimte_key;
  var oRs = Oracle.Execute(sql);
  if (!oRs.Eof)
    afs_key = oRs("bez_afspraak_key").Value;
  oRs.Close();
  //
  // Als afs_key == -1 dan zijn er nog geen bezoekers bij een reservering aangemeld.
  // Haal de benodigde informatie uit de reservering.
  var rsv = res.res_rsv_ruimte_info(rsv_ruimte_key);
  isReservering = true;
}


var this_bez = bez.func_enabled_afspraak(afs_key);
user.auth_required_or_abort(this_bez.canReadAny);
var authparams = user.checkAutorisation("WEB_BEZUSE");

if (afs_key != -1)
{
    var bez_info = bez.bez_afspraak_info(afs_key);
}
else
{
    // Als er nog geen afspraak bestaat kunnen we gegevens uit de reservering gebruiken.
    var sql = "SELECT alg_gebouw_toon_telefoon"
            + "     , alg_gebouw_toon_email"
            + "     , alg_gebouw_toon_kenteken"
            + "  FROM alg_v_allonrgoed_gegevens"
            + " WHERE alg_ruimte_key = " + rsv.room_key;
    var oRs = Oracle.Execute(sql);
    var bez_info = { bez_afspraak_datum: rsv.ruimte_van
                   , bez_afspraak_eind:  rsv.ruimte_tot
                   , locatie_key:        rsv.loc_key
                   , toon_telefoon: oRs("alg_gebouw_toon_telefoon").Value
                   , toon_email:    oRs("alg_gebouw_toon_email").Value
                   , toon_kenteken: oRs("alg_gebouw_toon_kenteken").Value
                   };
    oRs.Close();
}

var subject = isReservering
              ? L("lcl_mobile_bezoek")
              : L("lcl_vis_appointment") + " " + afs_key;
%>
<html>
  <head>
<%  FCLTMHeader.Generate({title:  subject }); %>
    <script type="text/javascript">
      $(function() {
        if(<%=toaster%> == 1){
          jqToast(L("lcl_mobile_data_saved"));
        }
      });

      function prkOnChange(select, bez_num) {
        if ($(select).val() > 0) {
            $("#prk" + bez_num).val("on");
        } else {
            $("#prk" + bez_num).val("off");
        }
        var toon_kenteken = parseInt($(select).find(":selected").attr("toon_kenteken"));
        $("#bezoeker_kenteken" + bez_num).removeClass("required10S" + bez_num + " required");
        switch (toon_kenteken)
        {
            case 0: // niet registreren
                    $("#bezoeker_kenteken" + bez_num).val("").closest(".ui-block-a").css("display","none");
                    break;
            case 1: // optioneel, dus alleen tonen
                    $("#bezoeker_kenteken" + bez_num).closest(".ui-block-a").css("display","block");
                    break;
            case 2: // verplicht indien parkeerplaats
                    $("#bezoeker_kenteken" + bez_num).addClass("required10S" + bez_num).closest(".ui-block-a").css("display","block");
                    break;
            case 3: // altijd verplicht
                    $("#bezoeker_kenteken" + bez_num).addClass("required").closest(".ui-block-a").css("display","block");
                    break;
        }

        checkRequiredGroup("10S" + bez_num);
      }

      function bez_submit_callback(json)
      {
        var res_rsv_key = <%=rsv_ruimte_key%>;
        var purl = "afspraak.asp?";
        if (res_rsv_key > 0)
            purl += "rsv_ruimte_key=" + res_rsv_key;  // Om van afspraak weer terug naar reservering te kunnen!
        else
            purl += "afs_key=" + json.afspraak_key;

        window.location.href = purl + "&toaster=1";
      }

      function validateBezoekers()
      {
        var find = 0;
        if ($("#bez1"))
          if ($("#bez1").val() != "")
          {
            // Voor elke blok met bezoekers-gegevens de classes ophalen.
            // Zit er een class "requiredxxxx" bij, dan een aparte class "required" toevoegen voor alle flexvelden
            // die verplicht zijn en dezelfde groep xxxx hebben.
            // Heeft een blok met bezoekersgegevens geen classes dan kan dit overgeslagen worden.
            if ($("#bez1").attr("class"))
            {
              var bez_classnames = $("#bez1").attr("class").split(/\s+/);
              $.each( bez_classnames
                    , function(i, bez_class)
                      {
                        if (bez_class.indexOf("required") == 0)
                        {
                          var groep = bez_classnames[i].replace("required", "")
                          checkRequiredGroup(groep); // zet eventuele flexkenmerken op required als deze bezoeker is ingevuld.
                        }
                      }
                    )
            }
            find++;
          }
        if (find == 0)
        {
          alert(L("lcl_bez_geef_bezoeker"));
          return false;
        }
        return true;
      }

      async function bez_submit()
      {
        if (!validateBezoekers())
          return false;
        if (!await validateForm("bezoekers"))
          return false;

        var submit_url = $("form[name=bezoekers]")[0].action
                       + (<%=rsv_ruimte_key%> != -1 ? "&rsv_ruimte_key=<%=rsv_ruimte_key%>" : "");
        $.post( submit_url
              , $("form[name=bezoekers]").serialize()
              , McltCallbackAndThen(bez_submit_callback)
              , "json");
        return true;
      }
    </script>
  </head>
  <body>
<%
  PAGE_START({id: "page-1-"+afs_key});
    HEADER({title: subject, back:!qrc, home: !qrc });
    CONTENT_START();
%>
      <form name="bezoekers"
            id="bezoekers"
            action="../bez/bez_edit_bezoekers_save.asp?urole=fe&mobile=1&afspr_key=<%=afs_key%>&rsv_ruimte_key=<%=rsv_ruimte_key%>"
            method="post">
        <input type="hidden" name="next_vis" value="2">
<%
    function next_col(pmax_col, pthis_col)
    {
        var r = (pthis_col == pmax_col ? 1 : pthis_col+1);
        return r;
    }

    function toon_class(p)
    {
        var r = "";
        if (p == 2) r = "required10S1";
        if (p == 3) r = "required";
        return r;
    }


        var nrCols = 2;
        var grid_col = 0;
        grid_col = next_col(nrCols, grid_col);
        GRID_START(nrCols);
            COL_START(grid_col);
                RWFIELD("bez1", L("lcl_vis_name"), "" , { pclass: " required", html: 'onChange="checkRequiredGroup(\'10S1\')"' });
                grid_col = next_col(nrCols, grid_col);
            COL_END();
            COL_START(grid_col);
                RWFIELD("bed1", L("lcl_vis_company"), "");
                grid_col = next_col(nrCols, grid_col);
            COL_END();

            // Als de locatie parkeerplaatsen heeft, dan de terrein(/gebouw) listbox plaatsen waar de parkeerplaatsen zich bevinden
            // Als je geen parkeerplaats kunt boeken op de gekozen plaats, dan krijg je daar tijdens het boeken wel een melding van
            var hasParking = (S("vis_parking_key") != -1 && this_bez.canWritePrk);
            if (hasParking) {
                // Heeft de locatie parkeerplaatsen?
                var prk_data = bez.bez_prkinfo(bez_info.locatie_key, bez_info.bez_afspraak_datum, bez_info.bez_afspraak_eind);
                COL_START(1, { width: 100 });
                    if (prk_data.prk_vrij == 0) {
%>                          <div>
                                <label><%=L("lcl_vis_park")%></label><%
                        if (prk_data.prk_array && prk_data.prk_array.length == 0) { // Geen parkeerterrein aanwezig
%>                              <div><%=L("lcl_bez_geen_aanwezig")%></div><%
                        } else { // Alle aanwezige parkeerterrein zijn bezet
%>                              <div><%=L("lcl_bez_vol")%></div><%
                        }
%>                          </div><%
                    } else {
                        var sqls = [];
                        for (var i = 0; i < prk_data.prk_array.length; i++) {
                            if (prk_data.prk_array[i].vrij > 0) {
                                sqls.push("SELECT " + prk_data.prk_array[i].key
                                             + ", " + safe.quoted_sql(prk_data.prk_array[i].naam)
                                             + ", " + prk_data.prk_array[i].toon_kenteken + " toon_kenteken"
                                             + " FROM DUAL");
                            }
                        }
%>                      <input type="hidden" id="prkselect1" name="prkselect1" value="S"><% // [S]uggest
%>                      <input type="hidden" id="prk1" name="prk1" value="off"><% // Fake checkbox, nodig in bez-bez_edit_bezoekers.inc
                        FCLTselector(
                            "gebouwkey1",
                            sqls.join(" UNION ALL "),
                            {
                                label: L("lcl_vis_park"),
                                onChange: "prkOnChange(this, 1)",
                                extraParamValue: "toon_kenteken",
                                emptyOption: "",
                                extraclass: "required10S1",
                                mobile: true
                            });
                    }
                COL_END();
            }

            grid_col = 1;
            if (bez_info.toon_telefoon)
            {
                COL_START(grid_col);
                    RWFIELD("bezoeker_telefoon1", L("lcl_bez_telefoon"), "", {pclass: toon_class(bez_info.toon_telefoon), html: 'maxlength="20"' } );
                    grid_col = next_col(nrCols, grid_col);
                COL_END();
            }
            if (bez_info.toon_email)
            {
                COL_START(grid_col);
                    RWFIELD("bezoeker_email1", L("lcl_bez_email"), "", {pclass: toon_class(bez_info.toon_email) } );
                    grid_col = next_col(nrCols, grid_col);
                COL_END();
            }
            if (hasParking)
            {
                var kenteken_cls = bez_info.toon_kenteken;
                COL_START(grid_col);
                    RWFIELD("bezoeker_kenteken1", L("lcl_bez_kenteken"), "", { pclass: toon_class(kenteken_cls), html: 'maxlength="10"'} );
                    grid_col = next_col(nrCols, grid_col);
                COL_END();
            }

            COL_START(1, {width: 100});
                CONTENT_START({});
                    generateFlexKenmerkCode ({ urole: urole
                                             , bez_key : -1
                                             , afspraak_key: afs_key
                                             , reado: false
                                             , beznum: 1
                                             , mobile: true
                                             });
                CONTENT_END();
            COL_END();
        GRID_END();

        CONTROLGROUP_START();
            BUTTON(L("lcl_submit"), {click: "bez_submit()", icon: "fa-fclt-save", singlepress: true});
        CONTROLGROUP_END();
      IFACE.FORM_END();
%>
      </form>
<%
    CONTENT_END();
    FOOTER();
  PAGE_END();
PDA_PAGE_END(); %>
	</body>
</html>
<% ASPPAGE_END(); %>
