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

    File:               ins_move_multi.asp
    Description:        Multi verplaatsen van objecten
    Parameters:         ins_keys

    Context:
    Note:

*/ %>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/iface.inc" -->
<!-- #include file="../Shared/save2db.inc" -->
<!-- #include file="../Shared/afdelingselector.inc" -->
<!-- #include file="../Shared/persoonselector.inc" -->
<!-- #include file="../Shared/plaatsselector.inc" -->
<!-- #include file="ins.inc" -->

<%
FCLTHeader.Requires({ plugins:["suggest", "jQuery"]
                    , js: ["../ins/bind.js"]
                    });

var urole = getQParamSafe("urole");
var fronto = urole == "fo";
var backo  = urole == "bo";
var minfo  = urole == "mi";
var frontend = (!fronto && !backo && !minfo);
var autfunction = urole == "fo"? "WEB_INSFOF" : "WEB_INSMAN";
var authparams = user.checkAutorisation(autfunction); // Nog nodig voor FCLTplaatsselector

var ins_key_arr = getQParamIntArray("ins_keys");
var tobemoved = 0;
var ingesloten = [];
// Bepaal de objecten in de selectie die ook echt gewijzigd kunnen of mogen worden.
for (var i = 0; i < ins_key_arr.length; i++)
{
  var this_ins = ins.func_enabled_deel(ins_key_arr[i]);
  if (this_ins.canChange)
  {
    ingesloten.push(ins_key_arr[i]);
    tobemoved++;
  }
}
user.anything_todo_or_abort(tobemoved > 0); // We klagen niet over enkele wel en enkele niet
%>

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

    <script type="text/javascript">
        async function ins_submit()
        {
            if (!await validateForm("u2"))
                return false;

            $.post( $("form[name=u2]")[0].action
                  , $("[name=u2]").serialize()
                  , FcltCallbackAndThenAlways(ins_submit_callback)
                  , "json"
                  );
            return true; // disable button
        }

        function ins_submit_callback(json)
        {
            iface.button.enable("btn_move_submit");
            if (json.success)
                FcltMgr.closeDetail(window, json);
        }

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

        function onChangeAfdeling(p_key)
        {
            if (p_key > 0)
            {
                setBind("A");
                $("#locatie").removeClass("required");
            }
        }
        function onChangePersoon(p_key)
        {
            if (p_key > 0)
            {
                setBind("P");
                $("#locatie").removeClass("required");
            }
        }

        function change1()
        {   // plaats: gebouw/terrein
            setBind('T');
            $("#locatie").addClass("required");
        }

        function change2(p_key)
        {   // plaats: ruimte
            setBind('R');
            $("#locatie").addClass("required");
        }

        function change3(p_key)
        {   // plaats: werkplek
            setBind('W');
            $("#locatie").addClass("required");
        }
    </script>
  </head>


  <body class="fclt-modal" id="mod_insmultiMove">
  <% MODAL_START(); %>
<%
    var srtdeel_binding = 0xFF; // Veronderstel nog even dat alles mag
    var maxlevel = 3;
    var change = "";

    sql = "SELECT DISTINCT sd.ins_srtdeel_binding"
        + "  FROM ins_srtdeel SD"
        + "     , ins_deel D"
        + " WHERE D.ins_srtdeel_key = SD.ins_srtdeel_key"
        + "   AND D.ins_deel_key IN (" + ingesloten.join(",") + ")";
    oRs = Oracle.Execute(sql);
    while (!oRs.eof)
    { // bitwise and om alleen de overeenkomstige bindings over te houden.
      srtdeel_binding = srtdeel_binding & oRs("ins_srtdeel_binding").value;
      oRs.MoveNext();
    }
    oRs.close();

    var heeftPlaats   = (srtdeel_binding & (BIND_RUIMTE | BIND_WERKPL | BIND_TERREI));
    var heeftAfdeling = (srtdeel_binding & (BIND_AFDELI));
    var heeftPersoon  = (srtdeel_binding & (BIND_PERSOO));
    var heeftDeel     = (srtdeel_binding & (BIND_INSDEE));

    var change = "";
    if (srtdeel_binding & (BIND_TERREI | BIND_RUIMTE | BIND_WERKPL))
    {
      change = "change1()";
      maxlevel = 2;
    }
    if (srtdeel_binding & (BIND_RUIMTE | BIND_WERKPL))
    {
      change = "change2()";
      maxlevel = 5;
    }
    if (srtdeel_binding & (BIND_WERKPL))
    {
      change = "change3()";
      maxlevel = 6;
    }
%>
    <form name="u2"
          action="ins_move_deel_multi_save.asp?urole=<%=urole%>&ins_keys=<%=ingesloten.join(",")%>"
          method="post">
<%
      MODAL_BLOCK_START("insMultiMove", L("lcl_select_locatie"), { icon: "fa-map-marker" })

        if (heeftAfdeling)
        {
          FCLTafdelingselector( "afdelingkey"
                              , "sDept"
                              , { departmentKey: null
                                , label: L("lcl_prs_organisatie")
                                , autlevel: authparams.PRSwritelevel
                                , onChange: "onChangeAfdeling"
                                }
                              );
        }
        else
        {
            Response.Write("<input type='hidden' id='afdelingkey' name='afdelingkey' value='-1'/>");
        }

        if (heeftPersoon)
        {
          FCLTpersoonselector( "persoonkey"
                             , "sgPerson"
                             , { perslidKey: null
                               , label: L("lcl_name")
                               , autlevel: authparams.PRSwritelevel
                               , onChange: "onChangePersoon"
                               }
                             );
        }
        else
        {
            Response.Write("<input type='hidden' id='persoonkey' name='persoonkey' value='-1'/>");
        }

        if (heeftPlaats)
        {
            FCLTplaatsselector( authparams.ALGreadlevel
                              , { terrein: true
                                , startlevel: 2 /*locatie*/
                                , eindlevel: maxlevel
                                , terrein: (srtdeel_binding & BIND_TERREI)
                                , requiredlevel: 2
                                , filtercode: "INCVR"
                                , onLocChange: change
                                , escalateOnChUp: true
                                }
                              );

            if (S("fg_ins_symbols"))
            {
              // zijn er objecten met coordinaten?
              var sql = "SELECT count(*) aantal"
                      + "  FROM ins_deel"
                      + " WHERE ins_deel_dwgx IS NOT NULL"
                      + "   AND ins_deel_key IN (" + ingesloten.join(",") + ")";
              var oRs = Oracle.Execute(sql);
              if (oRs("aantal").Value > 0)
              {
                RWCHECKBOXTR("wis_grafisch", "fldcheck", L("lcl_ins_deel_wisgrafisch"), 1); // default wissen
              }
            }
        }
        else
        {
            Response.Write("<input type='hidden' id='locatiekey'    name='locatiekey'    value='-1'>");
            Response.Write("<input type='hidden' id='gebouwkey'     name='gebouwkey'     value='-1'>");
            Response.Write("<input type='hidden' id='verdiepingkey' name='verdiepingkey' value='-1'>");
            Response.Write("<input type='hidden' id='ruimtekey'     name='ruimtekey'     value='-1'>");
            Response.Write("<input type='hidden' id='werkplekkey'   name='werkplekkey'   value='-1'>");
        }

        if (!heeftAfdeling && !heeftPersoon && !heeftPlaats)
        {
            var alle_binding = [L("lcl_obj_bind_a"), L("lcl_obj_bind_p"), L("alg_locatie")];
            var geen_binding = L("lcl_obj_bind_none").format(alle_binding.join(" "+L("lcl_fac_api_of")+" "));
%>
            <tr>
                <td><%=safe.jsstring(geen_binding)%></td>
            </tr>
<%
        }
      MODAL_BLOCK_END();

      var buttons = [];
      if (heeftAfdeling || heeftPersoon || heeftPlaats)
      {
          buttons.push({title: L("lcl_submit"), action:"ins_submit()", icon: "fa-fclt-save", singlepress: true, id: "btn_move_submit", importance: 1});
      }
      buttons.push({title: L("lcl_cancel"), action:"ins_cancel()", icon: "fa-fclt-cancel" , importance: 3});
      SIMPLE_BLOCK_START();
        CreateButtons(buttons);
      SIMPLE_BLOCK_END();
IFACE.FORM_END();
%>
    </form>
    <% MODAL_END(); %>
 </body>
</html>
<% ASPPAGE_END(); %>
