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

    File:         ins_deel_free.asp
    Description:  Modal screen

    Parameters:   ins_key of
                  res_deel_key (dan zoeken we ins_key zelf wel op)

    Context:
    Note:

*/ %>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/iface.inc" -->
<!-- #include file="../Shared/contactpersoonselector.inc" -->
<!-- #include file="../Shared/persoonselector.inc" -->
<!-- #include file="../Shared/plaatsselector.inc" -->
<!-- #include file="./ins_flexkenmerk.inc" -->
<!-- #include file="../Shared/selector.inc" -->
<!-- #include file="../Shared/objectselector.inc" -->
<!-- #include file="./ins.inc" -->

<%
FCLTHeader.Requires({plugins:["jQuery"], js: []})

var rsv_deel_key = getQParamInt("rsv_deel_key", -1); // We komen uit een bestaande reservering
if (rsv_deel_key > 0)
{
    var sql = "SELECT res_ins_deel_key"
            + "  FROM res_rsv_deel rrd,"
            + "       res_deel rd"
            + " WHERE rrd.res_deel_key = rd.res_deel_key"
            + "   AND res_rsv_deel_key = " + rsv_deel_key;
    var oRs = Oracle.Execute(sql);
    obj_key = oRs("res_ins_deel_key").Value;
    oRs.Close();
}
else
    var obj_key = getQParamInt("ins_key", -1);
var adapt = getQParamInt("adapt", 0) == 1;

// Indien het een sleutel of cilinder betreft dan WEB_SLEFOF rechten i.p.v. WEB_INSFOF rechten.
if (obj_key > 0 && ins.isSleCil(obj_key))
  var autfunction = "WEB_SLEFOF";
else
  var autfunction = "WEB_INSFOF";
var authparams = user.checkAutorisation(autfunction);

var isLendOut = false;
var isCil = false;
if (obj_key > 0)
{ // Object uitlenen of innemen
  var sql = "SELECT s.ins_srtdeel_key"
          + ", d.ins_deel_omschrijving"
          + ", " + lcl.xsqla('s.ins_srtdeel_omschrijving', 's.ins_srtdeel_key')
          + ", s.ins_srtgroep_key"
          + ", d.ins_alg_ruimte_key_org"
          + ", d.ins_alg_ruimte_key"
          + ", d.ins_alg_ruimte_type"
          + " FROM ins_deel d"
          + ", ins_srtdeel s"
          + ", ins_srtgroep g"
          + ", ins_tab_discipline dis"
          + " WHERE ins_deel_key = " + obj_key
          + " AND d.ins_srtdeel_key = s.ins_srtdeel_key"
          + " AND s.ins_srtgroep_key = g.ins_srtgroep_key"
          + " AND g.ins_discipline_key = dis.ins_discipline_key";
  var oRs = Oracle.Execute(sql);

  var desc = oRs("ins_deel_omschrijving").value;
  var sort = oRs("ins_srtdeel_omschrijving").value;
  var sort_key = oRs("ins_srtdeel_key").value;
  var algprs_key = oRs("ins_alg_ruimte_key").value; // alg_key (niet uitgeleend) of prs_key (uitgeleend)
  var alg_ruimte_type = oRs("ins_alg_ruimte_type").value; // alg_key (niet uitgeleend) of prs_key (uitgeleend)
  isLendOut = oRs("ins_alg_ruimte_key_org").value != null;
  isCil = oRs("ins_srtgroep_key").value == S("cil_ins_srt_groep_key");

  if (isCil)
  {
    sql = "SELECT aor.alg_locatie_key"
        + "     , aor.alg_gebouw_key"
        + "     , aor.alg_terreinsector_key"
        + "     , aor.alg_verdieping_key"
        + "     , aor.alg_ruimte_key"
        + "     , aor.alg_type"
        + "  FROM alg_v_allonroerendgoed aor"
        + " WHERE aor.alg_onroerendgoed_keys = " + algprs_key;
    var oRs = Oracle.Execute(sql);

    var loc_key = oRs("alg_locatie_key").value;
    var bld_key = oRs("alg_gebouw_key").value;
    var ter_key = oRs("alg_terreinsector_key").value;
    var flr_key = oRs("alg_verdieping_key").value;
    var room_key = oRs("alg_ruimte_key").value;
    var alg_type = oRs("alg_type").value;
  }

  oRs.Close();

  var default_prs_key = null;
  var restxt = "";
  // Is het object ook reserveerbaar?
  var sql = "SELECT res_deel_key,"
          + "       res_deel_opmerking"
          + "  FROM res_deel"
          + " WHERE res_ins_deel_key = " + obj_key;
  var oRs = Oracle.Execute(sql);
  if (!oRs.Eof)
  {
      restxt = L("lcl_ins_lend_no_res"); // Geen toekomstige reservering gevonden
      var res_deel_key = oRs("res_deel_key").Value;
      if (!isLendOut)
      {
        // zoek contactpersoon van eerstkomende reservering
        sql = "SELECT res_reservering_key,"
            + "       res_rsv_ruimte_volgnr,"
            + "       res_rsv_ruimte_van, "
            + "       res_rsv_ruimte_host_key"
            + "  FROM res_rsv_ruimte rrr,"
            + "       res_rsv_deel rrd"
            + " WHERE rrd.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key"
            + "   AND res_rsv_deel_verwijder IS NULL"
            + "   AND res_deel_key = " + res_deel_key;
        if (rsv_deel_key > 0)
          sql += "   AND res_rsv_deel_key = " + rsv_deel_key;
        else
           sql += "   AND res_rsv_deel_tot > SYSDATE"
               + " ORDER BY res_rsv_deel_tot ASC"; // eerstkomende eerst
        oRs2 = Oracle.Execute(sql);
        if (!oRs2.Eof)
        {
          default_prs_key = oRs2("res_rsv_ruimte_host_key").Value; // gedachte is dat de gastheer daadwerkelijk naar
                                                                   // de zaal gaat en de contactpersoon niet per se
          restxt = L("lcl_ins_lend_next_res").format(
                            String(oRs2("res_reservering_key").value) + "/" + oRs2("res_rsv_ruimte_volgnr").value,
                            toDateTimeString(oRs2("res_rsv_ruimte_van").Value));
        }
        oRs2.Close();
      }
      if (rsv_deel_key > 0)
        restxt = ""; // Dat weet je dan wel.
  }
  oRs.Close();

}
else
{ // Dan moet er een prs_key meegegeven zijn. Object uitlenen
  var dis_key = getQParamInt("dis_key", -1); // Discipline
  var srtgroup = getQParamInt("srtgroup", -1); // Groep
  var srtdeel = getQParamInt("srtdeel", -1); // Objectsoort

  var prs_key = getQParamInt("prs_key", -1);
  var cps_key = getQParamInt("cps_key", -1);

  if (prs_key > 0)
  {
    var sql = "SELECT " + S("prs_pers_string") + " naam"
            + " FROM prs_perslid p"
            + " WHERE prs_perslid_key = " + prs_key;
    var oRs = Oracle.Execute(sql);

    var prs_naam = oRs("naam").value;
  }
  else
  { // er is een ocntactperson key meegegeven (cps_key > 0)
    var sql = "SELECT prs_contactpersoon_naam naam"
            + " FROM prs_contactpersoon c"
            + " WHERE prs_contactpersoon_key = " + cps_key;
    var oRs = Oracle.Execute(sql);

    var prs_naam = oRs("naam").value;
  }
  var sort_key = -1;
}

%>
<html class="likemodal">
  <head>
<%
    FCLTHeader.Generate();
%>
    <script type="text/javascript">
      function ins_submit()
      {
        document.activeElement.blur(); // trigger laatste onChanges
        if (!validateForm("u2"))
          return false;
        var data = $("form").serializeArray();
        protectRequest.dataToken(data);
        $.post("ins_deel_free_save.asp",
               data, //TODO: Gewoon submit van het formulier en ins_deel_free_save.asp hierop aanpassen.
               FcltCallbackClose,
               "json");
        return true; // disable button
      }

      function ins_cancel()
      {
        FcltMgr.closeDetail(window, { cancel: true });
      }

      function updateSrtGroup(pautfunction, psrtgroup_arr, psrtdeel_arr)
      {
        // Object suggestbox leeg maken. checkExist moet dan false zijn en lastTry true.
        sgObject.setValue(-1, "", true, false, null, true);
        var ldis_key = $('#disc :selected').val();
        $("#srtgroup").load("../Shared/loadGroup.asp",
                            { autfunction: pautfunction,
                              disc_key_arr: ldis_key,
                              module: "ins",
                              required: 1,
                              emptyOption: "",
                              srtgroup: (psrtgroup_arr? psrtgroup_arr.join(",") : "")
                            }, // srtgroupChanged
                            function ()
                            {
                              // Laad de items
                              // Selecteer eventueel de initiële items die meegegeven kunnen worden
                              updateSrtDeel(pautfunction, (psrtdeel_arr? psrtdeel_arr : []));
                            });
      }

      function updateSrtDeel(pautfunction, psrtdeel_arr)
      {
        // Object suggestbox leeg maken. checkExist moet dan false zijn en lastTry true.
        sgObject.setValue(-1, "", true, false, null, true);
        var lsrtgroup = $('#srtgroup :selected').val();
        $("#srtdeel").load("../Shared/loadDeel.asp",
                                { autfunction : pautfunction,
                                  srtgroup_key_arr: lsrtgroup,
                                  module: "ins",
                                  srtdeel_arr: (psrtdeel_arr? psrtdeel_arr.join(",") : ""),
                                  required: 1,
                                  emptyOption: "",
                                  multi: 1
                                });
      }


      function loadKenmerk()
      {
        var ins_key = $("#ins_key").val()
        var s = "load_kenmerk.asp?urole=fo"
              + "&ins_key=" + ins_key
              + "&reado=0"
              + "&lendout=1"
              + "&srtdeel_arr=";
        $("#insFlexList").load(s, function(txt)
                                  {
                                    FcltMgr.resized(window);
                                  });
      }

      function onChangeGebouw()
      {
        var isGebouw = $("#bttype").val() == "B";

        if ($("#bttype").val() == "B")
        { // Het is een gebouw
          if (!$("#verdieping").hasClass("required"))
            $("#verdieping").addClass("required");
          if (!$("#ruimte").hasClass("required"))
            $("#ruimte").addClass("required");
        }
        else
        { // Het is een terrein
          $("#verdieping").removeClass("required");
          $("#ruimte").removeClass("required");
        }
      }

      $(document).ready(function()
                        {
                          onChangeGebouw()
                        });


    </script>
  </head>

  <body id="editbody" class="likemodal">
<%  var buttons =  [{title: (adapt? L("lcl_submit") : (isLendOut? L("lcl_ins_insinn") : L("lcl_ins_lend_out"))), icon: (isLendOut? "innemen.png" : "uitgeven.png"), action: "ins_submit()", singlepress: true, id: "btn_free_submit"},
                    {title: L("lcl_cancel"), icon: "undo.png", action: "ins_cancel()"}];
    IFRAMER_HEADER((isLendOut?(adapt?L("lcl_ins_edit_object"):L("lcl_ins_takein_object")) : L("lcl_ins_lendout_object")), buttons);
%>
    <form name="u2"
          action="ins_deel_free_save.asp"
          method="post"
          onsubmit="ins_submit();return false">
      <input type="hidden" name="adapt" id="adapt" value="<%=adapt? 1 : 0%>">
<%    if (obj_key > 0)
        var blockheader = (desc);
      else
        var blockheader = (L("lcl_ins_lend_out_to") + " " + prs_naam);

      BLOCK_START("insUit", blockheader);

      %><div id="uitleen_restxt"><%=restxt%></div><%

      if (obj_key < 0) // JGL: Vanuit bezoekersoverzicht?
      {
        // <!-- Discipline -->
        sql = "SELECT ins_discipline_key"
            + ", " + lcl.xsqla('ins_discipline_omschrijving', 'ins_discipline_key')
            + " FROM ins_v_aanwezigdiscipline"
            + " WHERE ins_discipline_key IN"
              + " (SELECT ins_discipline_key"
              + " FROM fac_v_webgebruiker g"
              + ", fac_functie f"
              + " WHERE g.prs_perslid_key = " + user_key
              + " AND f.fac_functie_key = g.fac_functie_key "
              + " AND f.fac_functie_code = " + safe.quoted_sql(autfunction)
              + " AND (g.fac_gebruiker_alg_level_read < 9 AND g.fac_gebruiker_prs_level_read < 9)" + ")"
              + " ORDER BY " + lcl.xsql('ins_discipline_omschrijving', 'ins_discipline_key');
        FCLTselector("disc",
                     sql,
                     { initKey: dis_key,
                       label: L("lcl_discipline"),
                       onChange: 'updateSrtGroup("' + autfunction + '");', // disgroupChanged
                       emptyOption: (dis_key > 0? null : "")
                     });

        // <!-- Group -->
        FCLTselector("srtgroup",
                     "", // sql: lege selectbox die onload wordt geladen
                     { initKey: srtgroup,
                       label: L("lcl_obj_group"), //L("lcl_obj_inf_name")
                       onChange: 'updateSrtDeel("' + autfunction + '");', // srtgroupChanged
                       emptyOption: ""
                     });
        // <!-- Objectsoort -->
        FCLTselector("srtdeel", // obj_sort
                     "", // sql: lege selectbox die onload wordt geladen
                     { initKey: srtdeel,
                       label: L("lcl_obj_sort"),
                       onChange: 'sgObject.setValue(-1, "", true, false, null, true);', // Object suggestbox leegmaken. checkExist moet dan false zijn en lastTry true.
                       initEmpty: true,
                       emptyOption: ""
                     });
        FCLTobjectselector("ins_key",
                           "sgObject",
                           { label: L("lcl_ins_object"),
                             ins_key: obj_key,
                             urlAdd: [{urlParam: "disc_key", field: "disc"},
                                      {urlParam: "srtgroup_key", field: "srtgroup"},
                                      {urlParam: "srtdeel_key", field: "srtdeel"}],
                             onChange: "loadKenmerk",
                             required: true,
                             filtercode: "I", // Ik wil een object uitgeven, dus laat alle ingenomen objecten zien
                             autfunction: "WEB_INSFOF"
                           }); %>
        <script type="text/javascript">
          // Laad de groupen en de items
          // Selecteer eventueel de initiële groepen en items die meegegeven kunnen worden
          $(document).ready(function()
                            {
                              updateSrtGroup("<%=autfunction%>", ["<%=srtgroup%>"], ["<%=srtdeel%>"]);
                            });
        </script>
        <tr>
          <td>
            <input type="hidden" name="lent_out_person" id="lent_out_person" value="<%=prs_key > 0? prs_key : cps_key%>">
            <input type="hidden" name="person_type" id="person_type" value="<%=prs_key > 0? "P" : "C"%>">
          </td>
        </tr>
<%
      }
      else
      {
        if (isCil)
        {
          FCLTplaatsselector(authparams.ALGwritelevel,
                             { locatiekey: loc_key,
                               gebouwkey: alg_type == "G"? bld_key : ter_key,
                               verdiepingkey: flr_key,
                               ruimtekey: room_key,
                               suppressEmpty: true,
                               terrein: true,
                               eindlevel: 5,
                               requiredlevel: 5,
                               onGebChange: "onChangeGebouw();",
                               readonly: isLendOut
                             });
        }
        else
        {
          if (alg_ruimte_type == "C")
            FCLTcontactpersoonselector("lent_out_person",
                                       "sglent_out_person",
                                       { contactpersoonKey: (isLendOut? algprs_key : null),
                                         label: L("lcl_contact_pers"),
                                         extracode: "B",
                                         required: true,
                                         readonly: isLendOut
                                       });
          else
            FCLTpersoonselector("lent_out_person", // requestor
                                 "sglent_out_person",
                                { perslidKey: (isLendOut? algprs_key : default_prs_key),
                                  label: L("lcl_name"),
                                  autlevel: authparams.PRSwritelevel,
                                  required: true,
                                  readonly: isLendOut
                                 });
        }
%>
        <tr><td><input type="hidden" name="ins_key" id="ins_key" value="<%=obj_key%>"></td></tr>
<%    }
      BLOCK_END();

      generateFlexKenmerkBlock({ urole: "fo",
                                 ins_key: obj_key,
                                 srtdeelkey_array: sort_key > 0? [sort_key] : [],
                                 lendout: true,
                                 reado: false,
                                 flexcolumns: 1
                               }); %>
<%IFACE.FORM_END();
%>
    </form>
  </body>
</html>
