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

     File:        CAD/rap_move.asp
     Description: Inhoud van het ALG-tabblad van FG
     Parameters:  floorKey (required)
                  highlight (optional list of room-keys to filter)
     Context:     -
                 Personen/werkplek buffer ACTUELE module

                 Vanuit het tabblad kunnen namen (eventueel op een andere verdieping) gedropt worden.

                 Let op: dit tabblad kan gelocked zijn: dan blijft hij op de 'huidige' verdieping
                         staan ook al wissel je van tekening.

     Autorisatie: - Je ziet altijd alle personen op deze verdieping (conform rap_prs tabje)
                  - Een persoon is sleepbaar (rood) als je PRSBOF schrijfrechten op deze
                    verdieping hebt en PRSBOF schrijfrechten op deze persoon

*/%>

<!--#include file="../Shared/common.inc"-->
<!--#include file="../Shared/resultset_table_v2.inc" -->
<!--#include file="../Shared/persoonselector.inc" -->
<%
FCLTHeader.Requires({ js: ["../cad/draganddrop.js"]});

var floorKey   = getQParamInt("vKey");
var highlight_arr  = getQParamIntArray("highlight", []); // Comma-separated room_key_list (terrains). Optional

var outputmode = getQParamInt("outputmode", 0);
var showall    = getQParamInt("showall", 0) == 1;

var sql        = "";

var autfunction = "WEB_PRSBOF";
var authparams = user.checkAutorisation(autfunction);
var AlgAuthOk = true; // Mag ik mensen weghalen van deze verdieping

if (authparams.ALGwritelevel > 0)
{
    var sql = "SELECT alg_verdieping_key FROM fac_v_my_floors"
            + " WHERE prs_perslid_key="+user_key
            + "   AND alg_verdieping_key = " + floorKey
            + "   AND niveau="+authparams.ALGwritelevel;
    oRs = Oracle.Execute(sql);
    AlgAuthOk = (!oRs.Eof);
}

if (floorKey != -1)
{
  // We werken maar op één verdieping: haal gebouw en locatie code maar vast op
  sql = "SELECT alg_g.alg_gebouw_code || '-' || alg_v.alg_verdieping_code || '-'"
      + "  FROM alg_gebouw alg_g, alg_verdieping alg_v"
      + " WHERE alg_v.alg_verdieping_key = " + floorKey
      + "   AND alg_g.alg_gebouw_key = alg_v.alg_gebouw_key"
  oRs = Oracle.Execute(sql);
  var verdTxt = oRs(0).value;

  // Alleen personen waar je schrijfrechten op hebt zijn straks draggable
  if (!AlgAuthOk)
    autsql = "NULL";
  else
  {
    if (authparams.PRSwritelevel>-1)
      autsql = "(SELECT prs_afdeling_key FROM prs_v_afdeling_familie a"
             + "  WHERE a.prs_afdeling_elder_key IN"
             + "    (SELECT aa.prs_afdeling_elder_key"
             + "       FROM prs_v_afdeling_familie aa"
             + "      WHERE aa.prs_afdeling_key = " + user.prs_afdeling_key()
             + "        AND aa.niveau = " + authparams.PRSwritelevel + "))";
    else
      autsql = "1";
  }

  // werkplekken: Personen binnen de geselecteerde ruimtes, of de werkplekken van gezochte personen
  sql = " SELECT   pwp.prs_werkplek_key, prs_perslidwerkplek_key, "
      + "          prs_werkplek_volgnr,prs_perslidwerkplek_bezetting,"
      + "          alg_r.alg_ruimte_nr, "+S("prs_pers_string")+" naam, p.prs_perslid_telefoonnr,"
      + "          p.prs_perslid_email email, "+S("prs_dep_string")+" afd, "
      + lcl.xsqla('prs_s.prs_srtperslid_omschrijving', 'prs_s.prs_srtperslid_key')
      +"," + autsql + " PrsAuthOk,"
      + "          p.prs_perslid_upper"
      + "     FROM prs_v_aanwezigperslid p,"
      + "          prs_srtperslid PRS_S,"
      + "          prs_v_aanwezigafdeling d,"
      + "          (select * from prs_werkplek where prs_werkplek_virtueel = 0) w,"
      + "          prs_perslidwerkplek pwp,"
      + "          alg_v_aanwezigruimte alg_r"
      + "    WHERE alg_r.alg_verdieping_key = " + floorKey
      + "      AND p.prs_afdeling_key = d.prs_afdeling_key"
      + "      AND p.prs_srtperslid_key = PRS_S.prs_srtperslid_key "
      + "      AND p.prs_afdeling_key = d.prs_afdeling_key"
      + "      AND p.prs_perslid_key = pwp.prs_perslid_key"
      + "      AND pwp.prs_werkplek_key = w.prs_werkplek_key"
      + "      AND w.prs_alg_ruimte_key = alg_r.alg_ruimte_key"
      + "      AND pwp.prs_perslid_key IS NOT NULL"
      + (highlight_arr.length > 0 && highlight_arr.join(",").indexOf("-1") == -1
        ? " AND alg_r.alg_ruimte_key IN (" + highlight_arr.join(",") + ")"
        : "")
      + " ORDER BY naam, 1";
}
else
{
  sql = "SELECT * FROM DUAL WHERE 1 = 0";
}

%>
<html>
  <head>
<%  FCLTHeader.Generate({ outputmode: outputmode }); %>
    <script type="text/javascript">
      function initDragger()
      {
          if (window.draginit) draginit();
      }

      // drag Event when dragged outside our frame
      function drag_onMouseOut(dragElement)
      { // Vreemd genoeg is dragElement.innerHTML safe'r dan dragElement.innerText
         myHTML="<div style=color:red;font-family:Verdana;font-size:8pt;>" + dragElement.innerHTML + "</div>"
         parent.EnableDragAndDrop(notifyDrop, myHTML);
      }

      // Callback functie: er is iets gedropt op het plaatje
      function notifyDrop(SlnkEvent)
      {
          if (SlnkEvent.Key)
          {
              var sFeatures="dialogHeight:400px;dialogWidth:600px;status=no";
              <% if (S("prs_werkplek_implicit")==0) { /* Expliciet: laat in doel ruimte een werkplek kiezen */ %>
                  var url="req_move.asp?prswp_key="+dragElement.getAttribute("tblKey")+"&room_key="+SlnkEvent.Key;
              <% } else { %>
                  if (dragElement.getAttribute("tblName")=='PRS_PERSLIDWERKPLEK') // Impliciet: rap_move2.asp neemt PRS_WERKPLEK ook mee
                      var url="./req_move2.asp?prswp_key=" + dragElement.getAttribute("tblKey") + "&room_key=" + SlnkEvent.Key;
                  else { // PRS_PERSLID, Uit suggest boxje, komt alleen voor bij impliciet
                      var url="./req_move3.asp?prs_key=" + dragElement.getAttribute("tblKey") + "&room_key=" + SlnkEvent.Key;
                  }
              <% } %>
               FcltMgr.openModalDetail(url, L("lcl_fg_verhuizing"),
                    { callback: function (data)
                         {
                            parent.myRefresh()
                          }
                    } );
          }
          dragend();
      }

      function sgPersonChange(key)
      {
          if (key == -1)
              $("#newWP").hide();
          else
              $("#newWP").attr("tblKey", key).show();
      }

      var sgPerson;
      function onLoad()
      {
        initDragger();
      }
    </script>
  </head>

  <body class="tabpage" onLoad="onLoad();">
<%  if (S("prs_werkplek_implicit") == 1 && outputmode == 0)
    { %>
      <table>
        <%
          FCLTpersoonselector("person",
                            "sgPerson",
                            { label: L("lcl_name"),
                              perslidKey: -1,
                              onChange: "sgPersonChange",
                              moreinfo: false,
                              autlevel: authparams.PRSwritelevel
                            });
        %>
      </table>
      <span id=newWP style="display:none" class='draggable' tblKey='-1' tblName='PRS_PERSLID'>Sleep naar nieuwe werkplek</span>
<%  }

    function ShowWP(oRs)
    {
      if (S("prs_werkplek_implicit") == 0)
        return safe.htmlattr(verdTxt + oRs("alg_ruimte_nr").value) + "/" + safe.htmlattr(oRs("prs_werkplek_volgnr").value);
      else
        return safe.htmlattr(verdTxt + oRs("alg_ruimte_nr").value);
    }

    function DraggableName(oRs)
    {
      if (oRs("PrsAuthOk").value == null)
        return safe.htmlattr(oRs("naam").value);
      else
        return "<div class='draggable'"
                 + " tblKey=" + oRs("prs_perslidwerkplek_key").value
                 + " tblName='PRS_PERSLIDWERKPLEK'>" + safe.htmlattr(oRs("naam").value) + "</div>";
    }

    var rst = new ResultsetTable({ keyColumn: "prs_werkplek_key",
                                   sql: sql,
                                   ID: "cadmovetable",
                                   title: L("lcl_fg_verhuizing"),
                                   outputmode: outputmode,
                                   showAll: showall
                                 });

    rst.addColumn(new Column({caption: L("lcl_workplace"), content: ShowWP}));
    if (S("prs_werkplek_implicit") == 0)
      rst.addColumn(new Column({caption: L("lcl_occupation_perc"), content: "prs_perslidwerkplek_bezetting", datatype: "number"}));
    rst.addColumn(new Column({caption: L("lcl_prj_draggable_name"), content: DraggableName, title: L("lcl_draggable")}));
    rst.addColumn(new Column({caption: L("lcl_prs_organisatie"), content: "afd"}));
    rst.addColumn(new Column({caption: L("lcl_fg_func_names"), content: "prs_srtperslid_omschrijving"}));

    var cnt = rst.processResultset();
%>
  </body>
</html>
<% ASPPAGE_END(); %>
