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

    File:               CAD/default.asp
    Description:        Hoofdscherm voor Facilitor Graphics II
    Parameters:
        mode            optional: [MODE_IN] or [MODE_OUT]. Default via fg_startBuiten
        loc_key         optional locatie key (default eigen werkplek)
        scenario_key    optional: dan zitten we in PRJ-mode (en impliciet binnen)
        floor_key       optional (als in scenario_mode)
    Context:            Geen, wordt geopend in een nieuw window
    Note:
*/
%>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/selector.inc" -->
<!-- #include file="../Shared/iface.inc" -->
<!-- #include file="../Shared/plaatsselector.inc" -->
<!-- #include file="./tabs.inc" -->
<!-- #include file="FGII.inc" -->

<%
FCLTHeader.Requires({ js: ["jquery-ui.js", "./main.js", "./draganddrop.js"],
                      css: ["../slnkdwf/slnkdwf.css"]
                    });

var inoutMode = getQParamInt("mode", S("fg_startBuiten")? MODE_OUT : MODE_IN);
var loc_key = getQParamInt("loc_key", user.alg_locatie_key());
var scenario_key = getQParamInt("scenario_key", 0);   // current scenario, 0 voor geen
var concept = getQParamInt("concept", 0) == 1;   // concept er naast?

var floor_key = getQParamInt("floor_key", user.alg_verdieping_key());  // current floor
if (floor_key > 0)
{
  sql = " SELECT g.alg_locatie_key, g.alg_gebouw_key"
      + "   FROM alg_verdieping v, alg_gebouw g"
      + "  WHERE g.alg_gebouw_key = v.alg_gebouw_key"
      + "    AND v.alg_verdieping_key = " + floor_key;

  oRs = Oracle.Execute(sql);
  if (!oRs.eof)
  {
    loc_key = oRs("alg_locatie_key").value;
    this_bld = oRs("alg_gebouw_key").value;
  }
}
else
{
  this_bld = -1;
}

var my_cadrechten = user.func_enabled("CAD"); // negeer scope, we kunnen zo maar van verdieping wisselen
var autfunction=(scenario_key == 0)? "WEB_CADUSE" : "WEB_PRJBOF";
var authparams = user.checkAutorisation(autfunction); // voor kiezen *andere* verdiepingen

cleanup_tempfolder (); // FGII werkt niet zonder schrijfrechten op temp dus
                       // heb je in ieder geval wel de rechten om op te ruimen

if (scenario_key != 0)
{
  var scenario_omschrijving = "";
  sql = " SELECT m.mld_melding_omschrijving"
      + "   FROM prj_scenario s, mld_melding m"
      + "  WHERE s.mld_melding_key = m.mld_melding_key"
      + "   AND prj_scenario_key = " + scenario_key;
  var oRs = Oracle.Execute(sql);
  if (!oRs.eof)
    scenario_omschrijving = oRs(0).value;
  oRs.Close();
}
// Altijd scrollbar voor lange tabbladen onderin.  Voorkom dat
// hij er soms bijkomt en een repaint van het plaatje veroorzaakt.
%>
<html style='overflow-y:scroll'>
  <head>
<%  FCLTHeader.Generate(); %>
    <title><%=(scenario_key == 0)? L("lcl_graphics") : (L("lcl_prj_graphics") + ": " + L("lcl_prj_scenario") + " " + scenario_omschrijving) %> </title>

    <script type="text/javascript">
      var scenario_key = <%=scenario_key%>;
      var floor_key = <%=floor_key%>;

      function onScenarioChange(sel)
      {
        /*global*/scenario_key = sel[sel.selectedIndex].value;
        floor_key = $("#verdiepingkey").val();
        OnFloorChanged(floor_key, true); // Keep zoom
      }

      function OnLocationChanged(sel)
      {
<%      if (inoutMode == MODE_OUT)
        { %>
          ter = -1;
          loc_key = $("#locatiekey").val();
          if (loc_key > 0)
          {
              $("#terr").load("../Shared/loadTerreinOptions.asp?loc_key=" + loc_key, myRefresh);
          }
<%      } %>
      }

      var forceRoom = -1; // dadelijk highlighten (main.js/gotoRoom)
      function OnFloorChanged()
      {
        floor_key = -1; // Eventkes invalid
        resetMap();
        floor_key = $("#verdiepingkey").val();
        if (floor_key > 0)
        {
<%        if (scenario_key == 0)
          { %>
            $("#rooms").load("../Shared/loadRuimteOptions.asp?floor_key=" + floor_key + "&ruimte_key=" + forceRoom, myRefresh);
<%        }
          else
          { %>
            updatePRJRooms(floor_key, scenario_key); // Load the rooms when not loaded yet
<%        } %>
        }
        // else is aanroeper daar zelf verantwoordelijk voor
        forceRoom = -1;
        RefreshLegenda(); // Deze altijd omdat hij toch onafhankelijk is van de inhoud van het plaatje
      }

      /************************************************************\
      * We know all we need. Now refresh the image on the right
      \************************************************************/
      function myRefresh()
      { // $("#rooms:option").dblclick(function() { MMap.zoom2DWG(???) });

        sDiscsChanged();

<%      if (inoutMode == MODE_IN) { %>
           myRefreshInside();
<%      } else { %>
           myRefreshOutside();
<%      } %>
      }

      function getCustomParameters(noVKey)
      {
        thmSelect = document.getElementById("sThemaIn");
        lblSelect = document.getElementById("sLabelIn");
        var opts = document.getElementById("sDiscsIn").options;
<%      if (inoutMode == MODE_IN) { %>
          key = floor_key;
<%      } else { %>
          key = $("#locatiekey").val();
<%      } %>
        thmKey = thmSelect[thmSelect.selectedIndex].value;
        lblKey = lblSelect[lblSelect.selectedIndex].value;

        var keyList = ""
        var i;
        for(i = 0; i < opts.length; i++)
        {
          if (opts[i].selected && opts[i].value != "-1")
            keyList += "," + opts[i].value;
        }
        if (keyList != "") keyList = keyList.substring(1);

        var c0 = document.getElementById("contour0");
        var c1 = document.getElementById("contour1");
        var c2 = document.getElementById("contour2");
        var contmode = -1; // Welke contour (alt1/alt2) moet ik tonen
        if (c0&&c0.checked) contmode = 0;
        if (c1&&c1.checked) contmode = 1;
        if (c2&&c2.checked) contmode = 2;

<%      if (inoutMode == MODE_IN)
        { %>
          var wp = document.getElementById("werkplek").checked? 1 : 0;
<%      }
        else
        { %>
          var wp = 0;
<%      } %>

        var rmList = selectedRoomsList("<%=(inoutMode==MODE_IN)? "rooms" : "terr"%>");

        return (noVKey?"":("&vKey=" + key))+
               "&gKey=" + $("#gebouwkey").val() +  // (voor printen)
               "&scenario_key="+scenario_key+
               "&thema=" + thmKey +
               "&label=" + lblKey +
               "&werkplek=" + wp +
               "&mode=<%=inoutMode%>"+
               "&contmode="+contmode+
               (rmList != ""? "&highlight=" + escape(rmList) : "") +
               (keyList != ""? "&discs=" + keyList : "");
      }

      function myRefreshInside()
      {
        if (floor_key > 0)
        {
          MMap.SetCustomParameters(getCustomParameters())
          MMap.Refresh(false, true); // Try not to zoom extents, wel force
<%        if (concept)
          { %>
            MMap2.SetCustomParameters(getCustomParameters() + "&concept=1")
            MMap2.Refresh(); // Try not to zoom extents
<%        } %>
          showReport(null);
        }
        else
        {
          MMap.SetText("<%=safe.jsstring(L("lcl_fg_select_floor"))%>");
          showReport();
        }
      }

      function myRefreshOutside()
      {
        var loc_key = $("#locatiekey").val();
        if (loc_key)
        {
          MMap.SetCustomParameters(getCustomParameters())
          MMap.Refresh(false, true); // Try not to zoom extents, wel force
          showReport(null);
        }
        else
        {
          MMap.SetText("<%=L("lcl_select_location")%>");
          showReport();
        }
      }

      // Gets called by Shared/load_rooms.asp when rooms-listbox has been
      // dynamically filled with all rooms on the current floor
      function onRoomsLoaded()
      {
        myRefresh(); // Gaf stack overflow in IE7? Niet meer nodig sinds TUDE#12139 te grote rooms list
      }

      /************************************************************\
      *
      \************************************************************/
      function MMap_onIMGRefresh()
      {
        $('#MinMaxBtn').hide(); // Zodat busy.gif zichtbaar
      }

      function MMap_onMapperLoad(pSLNKEvent)
      {
        var ob = $('#MinMaxBtn').show(); // Zodat weer zichtbaar
        ob.css('left', ($("#mapCell").offset().left + $("#mapCell").width() - ob.outerWidth() -2) + "px");
        ob.css('top', ($("#mapCell").offset().top + 2) + "px");
<%      if (concept)
        { %>
          if (pSLNKEvent.success)
              MMap2.zoom2DWG((pSLNKEvent.viewminX+pSLNKEvent.viewmaxX) / 2,
                             (pSLNKEvent.viewminY+pSLNKEvent.viewmaxY) / 2,
                             (pSLNKEvent.sizeX) / (pSLNKEvent.viewmaxX - pSLNKEvent.viewminX)
                             );
<%      } %>
      }

      function MMap_onDblClick()
      {
        // Liefst willen we 'alles aan buffer toevoegen' maar dat is complexer
      }

      /************************************************************\
      * Gets fired after the user drops something on the drawing.
      * Enabled in function EnableDragAndDrop
      \************************************************************/
      function MMap_onDrop(SlnkEvent)
      {
        dragAndDropNotify(SlnkEvent);
      }

      // notifyDrop is de functie die aangeroepen wordt als de drop voltooid is
      // html is wat je daadwerkelijk kunt droppen
      function EnableDragAndDrop(notifyDrop, html)
      {
        dragAndDropNotify = notifyDrop;
        MMap.EnableDragAndDrop(html);
      }

      // Pas een symbool (ins_deel of prs_werkplek)(via Ajax) in de database aan
      function ChangeSymbol(symbolKey, params)
      {
        if (symbolKey.match(/^I:/)) // INS_DEEL
        {
          var url = "./ins_change.asp?deel_key=" + symbolKey.substring(2);
        }
        else if (symbolKey.match(/^P:/)) // PRJ_DEEL
        {
          var url = "./ins_change.asp?deel_key=" + symbolKey.substring(2);
        }
        else if (symbolKey.match(/^IW:/)) // WERKPLEK gebonden INS_DEEL
        {
          var url = "./ins_change.asp?wpdeel=1&deel_key=" + symbolKey.substring(3);
        }
        else if (symbolKey.match(/^W:/)) // PRS_WERKPLEK
        {
          var url = "./wp_change.asp?wp_key=" + symbolKey.substring(2);
        }
        else
          return; // Zeer vreemd

        url += "&floor=" + floor_key;
        url += "&scenario_key=" + scenario_key;
        url += params;
        var data = {};
        <% protectRequest.dataToken("data"); %>
        $.post(url, data, FcltCallbackAndThen(myRefresh), "json");
      }

      function DoMoveSymbol(deelKey, orgX, orgY, dwgX, dwgY, lblContour)
      {
        if (true || confirm("Object ("+deelKey+") verplaatsen naar: " + dwgX + "," + dwgY + "?"))
        {
          var params;
          if (orgX)
          {
            params  = "&newX=" + dwgX + "&newY=" + dwgY;
            params += "&orgX=" + orgX + "&orgY=" + orgY;
            params += "&Contour=" + lblContour;
          }
          else
            params = "&clearXY=1"

          ChangeSymbol(deelKey, params)
        }
      }

      function RemoveSymbol(deelKey)
      {
        if (confirm(L("lcl_obj_del_confirm")))
        {
          ChangeSymbol(deelKey, "&delete=1")
        }
      }

      var _symbolKey; // wordt gezet in MMap_onPickcontextmenu
      function RotateSymbol(symbolKey, angle)
      {
        if (typeof angle == "undefined")
        {
          angle = prompt('Geef hoek (0-359)', '0');
          if (angle && !isNaN(parseInt(angle)))
              ChangeSymbol(symbolKey, "&rot=" + parseInt(angle));
        }
        else
          ChangeSymbol(symbolKey, "&deltarot=" + parseInt(angle));
      }

      function ScaleSymbol(angle)
      {
        var scl = prompt('Geef schaal', '1.0');
        if (scl && !isNaN(parseFloat(scl)))
          ChangeSymbol(_symbolKey, "&scale=" + parseFloat(scl));
      }

      function AlignSymbol(evt)
      {
        var params = "&AutoAlign=1" + getCustomParameters();
        params += "&findX=" + PickEvtX + "&findY=" + PickEvtY;
        params += MMap.qryShow;
        ChangeSymbol(_symbolKey, params);
      }

      // Gebruiker heeft 'eigenschappen' in het contextmenu gekozen.
      function showSymbol(SlnkEvent)
      {
        SlnkEvent = SlnkEvent || {};
        var intKey = -1;
        if (scenario_key > 0)
        {
          // TODO: Hier willen we eigenlijk ins_info.asp van het originele symbool tonen
          alert("Niet in scenario mode");
          return intKey;
        }
        if (_symbolKey.match(/^IW:/)) // INS_DEEL aan werkplek
        {
          intKey = _symbolKey.substring(3);
          if (SlnkEvent.click_urlI)
            FcltMgr.openModalDetail(SlnkEvent.click_urlI + intKey, "<%=L('lcl_shared_object')%>", { callback: myRefresh, alwaysCallback: true });
          else
            FcltMgr.openDetail("appl/ins/ins_deel.asp?urole=bo&ins_key=" + intKey);
        }
        if (_symbolKey.match(/^I:/)) // INS_DEEL aan ruimte
        {
          intKey = _symbolKey.substring(2);
          if (SlnkEvent.click_urlI)
            FcltMgr.openModalDetail(SlnkEvent.click_urlI + intKey, "<%=L('lcl_shared_object')%>", { callback: myRefresh, alwaysCallback: true });
          else
            FcltMgr.openDetail("appl/ins/ins_deel.asp?urole=bo&ins_key=" + intKey);
        }
        if (_symbolKey.match(/^W:/)) // PRS of PRJ_WERKPLEK
        {
          intKey = _symbolKey.substring(2);
          if (SlnkEvent.click_urlW)
            FcltMgr.openModalDetail(SlnkEvent.click_urlW + intKey, "<%=L('lcl_workspace')%>: " + SlnkEvent.ContourLabel, { callback: myRefresh, alwaysCallback: true });
          else
          {
    <%        if (S("prs_werkplek_implicit") == 0) //Impliciet FLEX ook
              { %>
                FcltMgr.openDetail("appl/alg/alg_wp.asp?key=" + intKey);
    <%        }
              else
              { %>
                if (window._wp_type == 1) // Impliciet flex
                    FcltMgr.openDetail("appl/alg/alg_wp.asp?key=" + intKey);
                else
                {
                    var url = "../prs/prs_edit_perslidwerkplek.asp?wp_key=" + intKey;
                    FcltMgr.openModalDetail(url, "<%=L("lcl_change")%>", {callback: myRefresh });
                }
    <%        } %>
          }
        }
        return intKey;
      }

      /************************************************************\
      * This event gets fired by the SLNKDWF viewer after the user
      * clicked on the drawing.
      * Note that by now myFindInIMG.asp has already translated
      * the room-label or object-label into a ALG_RUIMTE_KEY
      * or INS_DEEL_KEY
      \************************************************************/
      function MMap_onClick(SlnkEvent)
      { //    alert("Geklikt op dwgXY=" + SlnkEvent.dwgX + "," + SlnkEvent.dwgY +
        //          " \nik denk ruimte " + SlnkEvent.ContourKey + " op laag: " + SlnkEvent.ContourLayer +
        //          " \nof object " + SlnkEvent.TextLabel + " op laag: " + SlnkEvent.TextLayer +
        //          " \nmet ruimte/object key=" + SlnkEvent.Key)
        switch (SlnkEvent.Param)
        {
          case "onclick":
          case "ondblclick":
          {
            if (SlnkEvent.Key &&
                    (SlnkEvent.TextLabel != "" ||
                    SlnkEvent.ContourLayer == "SLNK Symbols"))
            { // Zoek het object of de werkplek (die staan ook op Symbols)
              window._symbolKey = SlnkEvent.Key; // Onthouden
              window._wp_type = SlnkEvent.wp_type; // Onthouden
              var intKey = showSymbol(SlnkEvent); // Hetzelfde als bij 'Eigenschappen' kiezen in de context

              var wp_key = -1;
              if (SlnkEvent.Key.match(/^W:/)) // WERKPLEK
              {
                wp_key = intKey;
                intKey = "";
              }

              // naar de tabjes doorgeven, bijvoorbeeld PRJ werkplek symbool.
              showReport(intKey, wp_key);
            }
            else // Op ruimte geklikt
            {    // buiten tekening klikken wist highlight if (SlnkEvent.ContourKey != "")

              if (SlnkEvent.click_urlR && SlnkEvent.Key)
              {
                FcltMgr.openModalDetail(SlnkEvent.click_urlR + SlnkEvent.Key, "<%=L("lcl_room")%>: " +SlnkEvent.ContourLabel, { callback: myRefresh, alwaysCallback: true })
              }
              else
              {
                  var sl = document.getElementById("<%=inoutMode == MODE_IN? "rooms" : "terr"%>");
                  if (!SlnkEvent.event.ctrlKey) // Allow Ctrl key for Multi-select
                    sl.selectedIndex = -1;

                  var ob = sl.options;
                  found = false;
                  for (i = 0; i<ob.length; i++)
                  {
                    if (ob[i].value == SlnkEvent.Key)
                    {
                      ob[i].selected = true;
                    }
                  }
                  myRefresh(); // (un)highlight selected room
              }
            }
            break;
          }
          case "ONMOVE":
          {
            if (SlnkEvent.fromKey != -1 && SlnkEvent.fromDwgX) // Nieuwe plek
            {
              //if (SlnkEvent.ContourLayer != 'SLNK Contours')
              //    if (!confirm("Buiten ruimte geplaatst. Doorgaan?"))
              //        return;

              DoMoveSymbol(SlnkEvent.fromKey,
                           SlnkEvent.fromDwgX, SlnkEvent.fromDwgY,
                           SlnkEvent.dwgX, SlnkEvent.dwgY, SlnkEvent.ContourKey)
            }
            break;
          }
          case "ONCOPY": // Dit kan een symbool zijn of een werkplek
          {
            newSymbol(SlnkEvent, true); // isCopy
            break;
          }
          case "ONROTATE":
          {
            if (SlnkEvent.fromKey != -1 && SlnkEvent.fromDwgX) // Nieuwe rotatie
            {
              var angle = Math.atan((SlnkEvent.dwgY - SlnkEvent.fromDwgY) / (SlnkEvent.dwgX - SlnkEvent.fromDwgX));
              var rot = Math.round(0.5 + (360 + angle / 3.1415926 * 180) % 360);
              if (SlnkEvent.fromDwgX > SlnkEvent.dwgX)
              rot = (rot + 180) % 360;
              ChangeSymbol(SlnkEvent.fromKey, "&deltarot=" + rot)
            }
            break;
          }
        }
      }

      /************************************************************\
      * Wordt aangeroepen als gebruiker rechts klikt op pickboxje
      * van een symbool
      *   myEvent.symbolKey
      *   myEvent.event
      \************************************************************/

      function MMap_onPickcontextmenu(myEvent)
      {
        _symbolKey = myEvent.symbolKey; // Onthouden
        // TODO: Context menu afhankelijk maken van autorisatie en soort geklikt object
        PickEvtX = myEvent.event.clientX;
        PickEvtY = myEvent.event.clientY;
        MMap.showContextMenu(myEvent.event, document.getElementById("PickcontextMenu"));
      }

      /************************************************************\
      * Gets fired after the user presses Print.
      \************************************************************/
      function MMap_onPrint_callback(data)
      {
        if (data.cancel) return false; // cancel
        if (data.style == "SLNKDWF")
        {
          MMap.PrintDialog();
          return; // Done
        }

        // Dan maar advanced
        var url = "../cad/PrintFG.asp";
        url += "?XSLmode=" + data.style;
        url += getCustomParameters();
        var pngURL = MMap.GetPrintURL(true); // true for current zoom

        if (data.allFloor)
        {
          MMap.SetCustomParameters(getCustomParameters(true)); // Even zonder vKey
          var pngURL = MMap.GetPrintURL(true); // true for current zoom
          MMap.SetCustomParameters(getCustomParameters());
          url += "&allFloor=1";
          data.DWGscale = -1; // Altijd FIT
        }
        if (data.DWGscale == 0) // current
        {
            data.DWGscale = MMap.gSLNKEvent.scaleY;
        }
        else if (data.DWGscale == -1) // Maximaal
        {
            pngURL += "&maximize=1"; // omdat anders -1 een aanduiding is van DWGSchaal 1:1
        }
        else if (data.DWGscale > 0) // factor gekozen in select-box
        {
            data.DWGscale = -data.DWGscale; // speel vals: negatief betekent: paperScale (ipv. pixelScale)
        }

        url += "&DWGscale=" + data.DWGscale;
        url += "&pngURL=" + escape(pngURL);

        var fwnd = window.open(url);
        fwnd.focus();
      }

      function MMap_onPrint(SlnkEvent)
      {
<%      if (inoutMode == MODE_OUT)
        { %>
          return true; // Altijd alleen de default 'Flexibel' optie
<%      }
        else
        { %>
          var sFeatures="dialogHeight:400px;dialogWidth:600px;status=no";
          var url="../cad/printWhat.asp?x=x"+getCustomParameters();
          FcltMgr.openModalDetail(url, "<%=L("lcl_print")%>",
                                  { callback: MMap_onPrint_callback }
                                 );
<%      } %>
      }

      function sThemeChanged()
      {
        myRefresh();        // Plaatje aanpassen
        RefreshLegenda(true);   // Legenda aanpassen en in beeld brengen
      }

      // Updatable thema's kunnen filter uitbreiden
      var LegendaFilter = "V"; // Default op verdieping
      function onLegendaFilterChange(niveau)
      {
        LegendaFilter = niveau;
        RefreshLegenda();
      }

      // De legenda is afhankelijk van wat er daadwerkelijk op de verdieping (database)
      // voorkomt, daarom wordt hij heel vaak gerefreshed
      function RefreshLegenda(scrollintoview)
      {
<%      if (inoutMode == MODE_IN)
        { %>
          pSelect = "verdiepingkey"
<%      }
        else
        { %>
          pSelect = "locatiekey"
<%      } %>

        sThema = document.getElementById("sThemaIn")      // Listboxje
        var thmKey = sThema[sThema.selectedIndex].value;

        document.getElementById("fLegenda").innerHTML="";
        if (thmKey > 0)
        {
            var pKey = parseInt($("#"+pSelect).val());
            if (pKey > 0)
                $("#fLegenda").load(
                          "Legenda.asp?thema=" + thmKey +
                                      "&scenario_key=" + scenario_key +
                                      "&parentKey=" + pKey + "&mode=<%=inoutMode%>" +
                                      "&LegendaFilter="+LegendaFilter,
                          scrollintoview?function () { scrollview($("#fLegenda"));}:null
                    )
        }
      }

      function sLabelChanged(newLabel)
      {
        var thmKey = newLabel[newLabel.selectedIndex].value;
        if (scenario_key == 0)
        {
          var search = document.getElementById("SearchLbl");

          search.style.display=(thmKey <= 0)? "none" : ""; // Geen label? Niet zoeken
        }
        myRefresh();
      }

      function sDiscsChanged()
      { // Werkt de lijst met toevoeg-disciplines bij
<%      if (S("fg_ins_symbols"))
        { %>
          $("#dinsAdd").load("LoadInsNew.asp?x=x" + getCustomParameters(),
                    function(respText) {
                        var empty = $(respText).find("img").length == 0; // Beetje illegaal
                        $("tr#tinsAdd").toggle(!empty);
                    });
          $("#dinsLegend").load("LoadInsLegenda.asp?x=x" + getCustomParameters(),
                    function(respText) {
                        var empty = $(respText).find("img").length == 0; // Beetje illegaal
                        $("tr#tinsLegend").toggle(!empty);
                        });
<%      } %>
      }

      // Toon de locatie mbv Google Maps
      function openLocGMaps()
      {
        var loc_key = $("#locatiekey").val();
        if (loc_key >= 0)
        {
          fwnd = window.open("../cad/ShowGoogleMap.asp?loc_key=" + loc_key, "FGShow",
                             "width=640,height=480,directories=no,location=no,menubar=no,"
                           + "resizable=yes,status=no,titlebar=yes,toolbar=no");
          fwnd.focus()
          return;
        }
      }

      // Toon het gebouw mbv Google Maps
      function openBldGMaps()
      {
        var bld_key = document.getElementById("gebouwkey");
        if (bld_key)
        {
          fwnd = window.open("../cad/ShowGoogleMap.asp?bld_key=" + bld_key, 'FGShow',
                             "width=640,height=480,directories=no,location=no,menubar=no,"
                           + "resizable=yes,status=no,titlebar=yes,toolbar=no");
          fwnd.focus()
          return;
        }
      }

      function toggleContour(cnt)
      {
        if (cnt.checked) // Mogelijk anderen uitzetten
        {
          var c0 = document.getElementById("contour0");
          var c1 = document.getElementById("contour1");
          var c2 = document.getElementById("contour2");
          if (cnt.id == "contour0")
          {
            if (c1) c1.checked=false;
            if (c2) c2.checked=false;
          }
          else if (cnt.id == "contour1")
          {
            if (c0) c0.checked=false;
            if (c2) c2.checked=false;
          }
          else // contour2
          {
            if (c0) c0.checked=false;
            if (c1) c1.checked=false;
          }
        }
        myRefresh();
      }

      // Zorg dat je met Enter de zoekveldjes kunt activeren
      function onEnter(evt, fn)
      {
        if (!evt) evt = window.event;
        if (evt.keyCode == 13)
        {
          fn();
          return false; // Voorkom echte submit van het formulier
        }
      }

      // Zoek naar een objectcode die de gebruiker heeft ingevoerd
      function doSearchObj()
      {
        var zoekcode = document.getElementById("SearchCode").value;
        if (zoekcode == "") return false;

        var loc = $("#locatiekey").val();
        var url="../cad/obj_search.asp?objCode="+escape(zoekcode) + "&loc_key=" + loc;
        FcltMgr.openModalDetail(url, "<%= L("lcl_search") %> " + escape(zoekcode) + "%",
                                    { callback: function (data)
                                                {
                                                  gotoRoom(data, data.disc_key);
                                                }
                                    }
                                )
      }

      // Zoek naar een label code die de gebruiker heeft ingevoerd
      // Er moet/zal een label thema aan staan
      function doSearchLbl()
      {
        var lblSelect = document.getElementById("sLabelIn");
        var lblKey = lblSelect[lblSelect.selectedIndex].value;

        var zoekcode = document.getElementById("SearchLbl").value;
        var loc = $("#locatiekey").val();
        var url="../cad/lbl_search.asp?lblCode="+escape(zoekcode)+"&loc_key=" + loc + "&label=" + lblKey
        FcltMgr.openModalDetail(url, "<%= L("lcl_search") %> " + escape(zoekcode) + "%",
                                    { callback: function (data)
                                                {
                                                    gotoRoom(data);
                                                }
                                    }
                                )
      }

      function showReport(obj_key, wp_key)
      {
        var tabParam = (obj_key? "obj=" + obj_key : "dummy=")
                     + (wp_key? "&wp_key=" + wp_key : "")
                     + getCustomParameters();

        tabSetParam(tabParam);
        tabRefresh();
      }

      function onFullScreen(evt)
      {
	    FcltMgr.stopPropagation(evt);
	    if (evt.ctrlKey)
            var url = "./InfoBord.asp?floor_key=" + floor_key+getCustomParameters();
        else
            var url = "./maximize.asp?x=x" + getCustomParameters();
        var wnd = window.open(url,'FGShow',
                        "directories=no,location=no,menubar=no,"
                      + "resizable=yes,status=no,titlebar=yes,toolbar=no");
        wnd.focus();
      }

      function scrollview($elm)
      {
        var navdiv = $('#navigationCell');
        var top = $elm.position().top + navdiv.scrollTop();
        var bottom = top + $elm.height();

        if (bottom > navdiv.height() + navdiv.scrollTop())
        navdiv.scrollTop(Math.min(top, bottom - navdiv.height() + 5));
      }
      // Open/dicht klappen blokje
      function toggleFG(elm, idList)
      {
        $(elm).toggleClass("openFG")
        $(elm).toggleClass("closedFG")
        var idl = idList.split(",");
        for (var i = 0; i < idl.length; i++)
        {
          $("#"+idl[i]).toggle();
          var $lastelm = $("#"+idl[i]);
        }
        if ($(elm).hasClass("openFG"))
        {   // Probeer lastelm in beeld te brengen
            scrollview($lastelm);
        }
      }

      function resetMap()
      {
        if (!MMap || !MMap.Reset)
            return; // Safari: te vroeg
        MMap.Reset();
        MMap.SetLabelPosition(<%=S("fg_labelPosition")%>);
        MMap.SetIMGGenerator("../cad/mySlnk2IMG.asp");
        // Door de volgende regel kunnen symbolen versleept worden
        MMap.SetKeyToSymbol("../cad/mykeyToSymbol.asp");

        MMap.SetPaperColor(<%=S("fg_paperColor")%>);
        MMap.SetStyleSheet("<%=custpath%>/cust.css");

        if ($('#MMap2').length)
        {
          MMap2.Reset();
          MMap2.SetLabelPosition(<%=S("fg_labelPosition")%>);
          MMap2.SetIMGGenerator("../cad/mySlnk2IMG.asp");

          MMap2.SetPaperColor(<%=S("fg_paperColorCpt")%>);
          MMap2.SetStyleSheet("<%=custpath%>/cust.css");
        }
      }

      // Wordt automagisch aangeroepen als tabje wordt geactiveerd
      var isVisible = true;
      function fcltontabshow()
      {
          isVisible = true;
      }
      function fcltontabhide()
      {
          isVisible = false;
      }

      var pctImg = 65; // vertical Percentage for image
      function resizeIframes()
      {
        if (!isVisible)
            return; // Don't bother

        var height = parseInt(document.documentElement.clientHeight);
        var td2=document.getElementById("theTabs");
        if (td2.style.marginLeft == "")
        {
          var height2 = Math.floor(height * pctImg / 100);
        }
        else
        {
          var height2 = height; // Want de tabjes zijn naar rechts geschoven
        }
        if (document.getElementById('MMap').style.height != Math.floor(height * pctImg / 100) + "px")
        {
          $('#MMap').css('height', Math.floor(height * pctImg / 100) + "px");
          $('#mapCell').css('height', Math.floor(height * pctImg / 100) + "px");
        }
        $('#navigationCell').height(height2 - 1);
        $("#fgmenutoggler").css("top", $('#MMap').height() - $("#fgmenutoggler").outerHeight() - 3 + "px");
        if ($("#fgmenutoggler").hasClass("collapsed"))
            $("#fgmenutoggler").css("left", 0);
        else
            $("#fgmenutoggler").css("left", $("#navigationCell").width() - $("#fgmenutoggler").width() + 2);

        $("#fgtabtoggler").css('top' , $('#MMap').height() - (window.pctImg == 100?$("#fgtabtoggler").height():0) + "px");
        $("#fgtabtoggler").css('left', $(window).width() - $("#fgtabtoggler").width() - 8 + "px");

        resizetabIframe();
      };
      $(function () { resizeIframes(); });

      var needInit = <%= concept?2:1 %>
      function init()
      {
        needInit--;
        if (needInit > 0)
            return; // concept afwachten

        var defOn = $("#sDiscsIn>option").filter(function()
         {
            return $(this).attr("defaultOn")==4 || $(this).attr("defaultOn")==8;
         });
        if (defOn.length)
        {
            defOn.prop("selected", true); // moet nog even gebeuren
            $("#sDiscsIn>option[value=-1]").prop("selected", false); // die kan dan uit
        }

        OnLocationChanged(document.getElementById("loc"));
<%      if (floor_key>0) { %>
          OnFloorChanged(); // Vullen listbox ruimte
<%      } %>
        // eerste keer vullen legenda

        sDiscsChanged(); // Vullen legenda en 'toevoeg' listbox
        draginit();

        var timerID=null;
        window.onresize = function()
        {
        	if (timerID) clearTimeout(timerID);
            timerID = setTimeout(resizeIframes, 100);// use a delay for IE because the resize event fires repeatly
        }

        fcltontabhide(); // IE8: Eerst fgmenutoggler inklappen...
        resizeIframes();
        fcltontabshow(); // IE8: en nu weer zichtbaar. Dan klopt de hoogte ook weer.
        resetMap();
        // Komt vanzelf? myRefresh();
      }

      // start Symbolen draggen vanuit menu. Zie LoadInsNew.asp

      // variant op draganddrop.js/dragstart
      // Wij willen bij het starten van het draggen een ander (op schaal) symbool gebruiken
      // bronInfo { type:"W" } voor werkplekken,
      //          { type: "I", key: 1234") ins_srtdeel_key
      //          { type: "L", key: 1234") ins_legendawaarde_key
      function mydragstart(evt, imgHTML, bronInfo)
      {
        /* global */ naviTop = $("#navigationCell").scrollTop();

        if (!evt) evt=window.event;
        var elmSymbol = document.getElementById("dragSymbol");
        elmSymbol.innerHTML=imgHTML;
        elmSymbol.style.display = 'block';
        elmSymbol.setAttribute("bronInfoType", bronInfo.type);
        elmSymbol.setAttribute("bronInfoKey", bronInfo.key);
        dragAndDropNotify = notifyDrop;
        dragapproved=true;
        dragElement=elmSymbol;
        temp1=evt.clientX;
        temp2=evt.clientY;
        dragStartX=evt.clientX;
        dragStartY=evt.clientY;
        dragmove(evt);
      }

      // Start draggen van een nieuw INS_DEEL
      function Reposition(elmSymb)
      {
        elmSymb.style.top  = (- (elmSymb.naturalHeight||elmSymb.height) / 2) + "px";
        elmSymb.style.left = (- (elmSymb.naturalWidth||elmSymb.width) / 2) + "px";
      }

      function mydragstartINS(evt, srtdeel_key)
      {
        // Door de Reposition truc centreert het symbool rond de cursor.
        // Dat is niet 100% correct want eigenlijk zouden we rond het zwaartepunt van de symboolcontour moeten centreren
        var imgHTML = "<img style='position:absolute;top:-40px;left:-40px' onload='if (parent.Reposition) parent.Reposition(this)'";
            imgHTML+= "     src =\"../cad/mysymbol.asp?paperColor="+MMap.gSLNKEvent.paperColor+"&srtdeel="+srtdeel_key+"&sdwgScale=" + MMap.gSLNKEvent.scaleY + "\"></img>";
        mydragstart(evt, imgHTML, { type:"I", key:srtdeel_key });
      }

      // Start draggen van een nieuwe werkplek
      function mydragstartWP(evt)
      {
        var imgHTML = "<img style='position:absolute;top:-10px;left:-10px' onload='if (parent.Reposition) parent.Reposition(this)'";
            imgHTML+= "     src =\"../cad/myWerkplek.asp?paperColor="+MMap.gSLNKEvent.paperColor+"&sdwgScale=" + MMap.gSLNKEvent.scaleY + "\"></img>";
        mydragstart(evt, imgHTML, { type:"W" });
      }

      // Start draggen van een legendawaarde
      function mydragstartLegenda(evt, kleur, waarde)
      {
        var imgHTML = "<div style='position:absolute;top:-10px;left:-10px;border:1px solid black;width:16px;height:16px'>"
                    + "   <div style='border:8px solid #"+kleur+";line-height:0px;font-size:0px;'>&nbsp;</div>"
                    + "</div>"
        mydragstart(evt, imgHTML, { type: "L", key:waarde });
      }

      function selectLegendaCallback(data)
      {
        var i, j;
        var sl = document.getElementById("<%=inoutMode == MODE_IN? "rooms" : "terr"%>");
        sl.selectedIndex = -1; // leeg beginnen
        var ob = sl.options;
        for (i in data.keys)
        {
          for (j = 0; j<ob.length; j++)
          {
            if (ob[j].value == data.keys[i])
            {
              ob[j].selected = true;
            }
          }

        }
        myRefresh()
      }
      // Geklikt op een legendawaarde tekst. Highlight bijbehorende ruimtes
      function selectfromLegenda(evt, tekst)
      {
        //alert("Geklikt op 'kleur': {0}, tijd om die te highlighten".format(tekst));
        var url = "cad_selectbylegend.asp?legenddesc=" + escape(tekst);
        url += getCustomParameters();
        $.post(url, {}, FcltCallbackAndThen(selectLegendaCallback), "json");
      }

      // Wordt aangeroepen als we boven het plaatje komen met ons dragobject
      function drag_onMouseOut(dragElement, evt)
      {
        EnableDragAndDrop(notifyDrop, dragElement.innerHTML);
      }

      // Wordt aangeroepen als we klaar zijn met draggen
      function drag_onDragEnd(dragElement, evt)
      { // 5.2.1 Met FireFox komen we hier nooit?
        var elmSymbol = document.getElementById("dragSymbol");
        elmSymbol.style.display = 'none';
        $("#navigationCell").scrollTop(naviTop);
        if (!evt) evt=window.event;
        MMap.doDrop(evt, evt.clientX - $("#mapCell").offset().left, evt.clientY - $("#mapCell").offset().top);
      }

      // Callback functie: er is iets gedropt op het plaatje
      // (een symbool of werkplek vanuit de legenda)
      function notifyDrop(SlnkEvent)
      {
        var ruimteKey = SlnkEvent.Key;
        if (!ruimteKey)
        {
          // niet op herkenbare ruimte gedropt
          return;
        }

        if (dragElement.getAttribute("bronInfoType") == "L") // Legendawaarde
        {
          var ruimteKey = SlnkEvent.Key; // TODO: oppassen voor droppen op WP's
          var url = "legenda_create.asp?room_key=" + ruimteKey; // gedropt op ruimte
          url += "&lwkey="+dragElement.getAttribute("bronInfoKey");
          if (SlnkEvent.event.shiftKey)
              url+="&addmode=1"; // Toevoegen aan de ruimte ipv vervangen

          url += getCustomParameters(); // Geeft ook mooi thema-key mee

          var data = {};
          <% protectRequest.dataToken("data"); %>
          $.post(url, data, FcltCallbackAndThen(myRefresh), "json");
        }
        else
            newSymbol(SlnkEvent, false); // !isCopy, isMove dus
        dragapproved=false;
        dragElement.style.display="none";
        document.onmousemove=null;
      }

// Kopieer een symbool of werkplek vanuit de tekening (draggen en dan shift indrukken)
// Of maak een nieuw symbool of werkplek aan (draggen vanuit navigate pane)
// symbolen kunnen vervolgens weer gedropt zijn op een werkplek
// isCopy is true voor kopie (vanuit de tekening) en false voor draggen vanuit legenda
// globale dragElement.bronInfo is gezet en daar zien we het onderscheid aan
      function newSymbol(SlnkEvent, isCopy)
      {
        var ruimteKey = SlnkEvent.Key;
        if (!ruimteKey || (SlnkEvent.ContourLayer != "SLNK Contours" && !ruimteKey.match(/^W:/)))
        {
          alert(L("lcl_fg_obj_firstnew")); // Eerst in ruimte of op werkplek
          return;
        }

        var dwgX = SlnkEvent.dwgX;
        var dwgY = SlnkEvent.dwgY;

        var loc = $("#locatiekey").val();

        if (isCopy)
        {
          if (SlnkEvent.fromKey.match(/^W:/))
            var url= "wp_create.asp?wp_key=" + SlnkEvent.fromKey.substring(2);
          else
            var url= "ins_create.asp?deel_key=" + SlnkEvent.fromKey;
        }
        else
        {
          if (dragElement.getAttribute("bronInfoType") == "W")
            var url= "wp_create.asp?x=x";
          else
            var url= "ins_create.asp?srtdeel_key=" + dragElement.getAttribute("bronInfoKey");
        }

        url += "&loc_key=" + loc +  getCustomParameters();

        // Werkplek is nog niet vertaald door mySlnk2IMG.asp/myFindKeys()
        if (SlnkEvent.ContourKey.match(/^W:/))
          url += "&wp_key="+SlnkEvent.ContourKey.substring(2); // gedropt op werkplek
        else
          url += "&room_key="+ruimteKey; // gedropt op ruimte

        if (!SlnkEvent.event.ctrlKey)
          url += "&dwgX="+dwgX+"&dwgY="+dwgY;

        var data = {};
        <% protectRequest.dataToken("data"); %>
        $.post(url, data, FcltCallbackAndThen(myRefresh), "json")
      }

      function toggleLayout(elm)
      {
        $(elm).toggleClass("collapsed");
        $("#navigationCell").toggleClass("collapsed");
        if ($("#navigationCell").hasClass("collapsed"))
            $("#mapCell").css("margin-left", 0);
        else
            $("#mapCell").css("margin-left", "");
        resizeIframes();
      }

      function toggleTabLayout(elm)
      {
        $(elm).toggleClass("collapsed");
        window.pctImg = window.pctImg == 65?100:65;
        resizeIframes();
      }
    </script>
  </head>

  <body>
    <div id="dragSymbol" style="display:none;position:absolute;z-index:1;">Hier komt dragsymbool</div>
    <div id="PickcontextMenu" class="slnkmenu" style="display:none">
      <div class="menuItem" style="margin-top:5px" monClick="parent.RotateSymbol(parent._symbolKey,-90)">Roteer rechts</div>
      <div class="menuItem" monClick="parent.RotateSymbol(parent._symbolKey,90)">Roteer links</div>
      <div class="menuItem" monClick="parent.RotateSymbol(parent._symbolKey,180)">Roteer 180</div>
      <div class="menuItem" monClick="parent.RotateSymbol(parent._symbolKey,0)">Roteer rechtop</div>
      <div class="menuItem" monClick="parent.RotateSymbol(parent._symbolKey)">Roteer vrij</div>
      <div class="menuItem" monClick="parent.AlignSymbol(event)">Uitlijnen met muur</div>
      <hr>
      <div class="menuItem" monClick="parent.ScaleSymbol()">Schaal</div>
      <hr>
      <div class="menuItem" monClick="parent.DoMoveSymbol(parent._symbolKey, null)">Standaard positie</div>
      <div class="menuItem" monClick="parent.RemoveSymbol(parent._symbolKey)"><%=L("lcl_delete")%></div>
      <hr>
      <div class="menuItem" style="margin-bottom:5px" monClick="parent.showSymbol()">Eigenschappen</div>
    </div>

      <div id='navigationCell'>
        <table cellpadding=0 cellspacing=0>
          <!-- ==========================
               SCENARIOS
               ============================ -->
<%        if (scenario_key > 0)
          { %>
            <tr>
              <td valign=top align="left" id=scenario_help><label><%=L("lcl_prj_scenario")%>:</label></td>
            </tr>
            <tr>
              <td>
<%              // We tonen hier de scenarios die bij dezelfde melding horen, alternatieven voor dezelfde actie dus.
                sql = "SELECT prj_scenario_key, prj_scenario_omschrijving FROM prj_scenario "
                      + " WHERE mld_melding_key = "
                      + "         (SELECT mld_melding_key FROM prj_scenario"
                      + "           WHERE prj_scenario_key = " + scenario_key + ")"
                      + "    OR (prj_scenario_key = " + scenario_key + " AND mld_melding_key IS NULL)"
                      + " ORDER BY 2"

                 FCLTselector("scenario",
                              sql,
                              { initKey: scenario_key,
                                onChange: "onScenarioChange(this)"
                              });
%>
              </td>
            </tr>
<%        } %>
          <!-- ==========================
               LOKATIES
          ============================ -->
          <tr>
            <td class="fixedFG"><% =L("lcl_fg_navigator")%></td>
          </tr><tr><td>
<%
          FCLTplaatsselector(authparams.ALGreadlevel, {no_table: true,
                                                       xcompact: true,
                                                       nolabel: true,
                                                       locatiekey: loc_key,
                                                       gebouwkey: this_bld,
                                                       verdiepingkey: floor_key,
                                                       startlevel: 2, // Locatie
                                                       autoselect: true,
                                                       filtercode: "CAD",
                                                       moreinfo: true,
                                                       eindlevel: inoutMode == MODE_IN? 4 : 2, // Verdieping of locatie
                                                       onLocChange: "OnLocationChanged()",
                                                       onVerChange: "OnFloorChanged()"
                                                     });
%></td></tr>

<%        if (inoutMode == MODE_IN)
          {
                // Hebben ik schrijfrechten op werkplekken?
                // We negeren nog even verdieping, dat controleert het wp_create save script wel.
                var sql =  "SELECT MIN(fac_gebruiker_alg_level_write) lvl"
                         + "  FROM fac_v_webgebruiker w, fac_functie f"
                         + " WHERE w.fac_functie_key = f.fac_functie_key "
                         + "   AND w.prs_perslid_key = " + user_key
                         + "   AND fac_functie_code = 'WEB_PRSBOF'";
                var oRs = Oracle.Execute(sql);
                var canWriteWP = !oRs.Eof && oRs("lvl").Value < 9;
                oRs.Close();
            %>
            <!-- ==========================
                 RUIMTES
            ============================ -->
            <tr class="openFG" id="rooms_help" onClick="toggleFG(this, 'rooms,conts');">
              <td><%=L("lcl_room")%></td>
            </tr>

            <tr id="conts">
              <td style="padding:0;">
                  <input id=werkplek type=checkbox onclick='myRefresh();'>
                  <label for=werkplek>
                    <span <%= canWriteWP ? "style='cursor:pointer;' onmousedown='mydragstartWP(event);'" : "" %>>
                          <%=L("lcl_fg_thema_werkplek")%>
                    </span>
                  </label>
                  <br>
                <input id=contour0 type=checkbox checked onclick='toggleContour(this)'>
                <label for=contour0><%=L("lcl_fg_thema_contour")%></label>
<%
                if ((my_cadrechten.canRead('WEB_CADBOF') || my_cadrechten.canRead('WEB_CADFOF')) && inoutMode == MODE_IN)
                {   // Gebruik -2 en -3 voor de alternatieve lagen
                  if (S("fg_contourlayers_alt1")!=""&&S("fg_labellayers_alt1") != "")
                  { %>
                    <br><input id=contour1 type=checkbox onclick='toggleContour(this)'>
                    <label for=contour1><%=L("lcl_fg_thema_contour_alt1")%></label>
<%                }
                  if (S("fg_contourlayers_alt2")!=""&&S("fg_labellayers_alt2") != "")
                  { %>
                    <br><input id=contour2 type=checkbox onclick='toggleContour(this)'>
                    <label for=contour2><%=L("lcl_fg_thema_contour_alt2")%></label>
<%                }
                } %>
              </td>
            </tr>

            <tr>
              <td>
<%              sql = "";

                FCLTselector("rooms",
                     sql,
                     { initKey: -1,
                       emptyOption: "",
                       initEmpty: true,
                       size: 6,
                       multi: true,
                       onChange: "myRefresh()"
                     }); %>
              </td>
            </tr>
<%        }
          else
          { // buiten
%>
            <!-- ==========================
                 TERREINEN
             ============================ -->

            <tr class="openFG" id=rooms_help onClick="toggleFG(this, 'terr');">
              <td><label><%=L("lcl_terra")%></label></td>
            </tr>
            <tr>
              <td>
<%              sql = "";
                if (loc_key > 0)
                    sql = "SELECT alg_terreinsector_key,"
                        + "      alg_terreinsector_naam"
                        + "  FROM alg_v_aanwezigterreinsector"
                        + " WHERE alg_locatie_key = " + loc_key
                        + " ORDER BY 2";

                FCLTselector("terr",
                     sql,
                     { initKey: -1,
                       emptyOption: "",
                       initEmpty: true,
                       size: 6,
                       multi: true,
                       onChange: "myRefresh()"
                     });
%>
              </td>
            </tr>
<%        } %>

          <!-- ==========================
               DISCIPLINES tonen
          ============================ -->
          <tr class="closedFG" onClick="toggleFG(this, 'insDisc<%=(inoutMode == MODE_IN)? ",insZoek" : ""%>');">
          <td><%=L("lcl_fg_obj_filter")%></td>
          </tr>
          <tr id="insDisc" style="display:none">
            <td>
<%
              if (scenario_key == 0)
                var sqlfilter = " fac_functie_code IN ('WEB_INSMAN', 'WEB_INSUSE')"    // @??@?SCOPE nog?
              else
                var sqlfilter = " fac_functie_code = 'WEB_INSPRJ'";

              if (S("fg_publiclayers").length)
                sqlfilter += " OR d.ins_discipline_key IN (" + S("fg_publiclayers").join(",") + ")"

              sql = "SELECT DISTINCT d.ins_discipline_key"
                  + ",                " + lcl.xsqla('d.ins_discipline_omschrijving', 'd.ins_discipline_key')
                  + ",                BITAND(dp.ins_disc_params_type, " + (inoutMode == MODE_IN? 4 : 8) + ") defaultOn "
                  + " FROM fac_v_my_disciplines m, ins_v_aanwezigdiscipline d, ins_disc_params dp "
                  + " WHERE d.ins_discipline_key = m.ins_discipline_key(+)" // outer joins voor S("fg_publiclayers")
                  + "   AND m.prs_perslid_key (+)="+user_key
                  + "   AND d.ins_discipline_min_level = 1"
                  + "   AND dp.ins_disc_params_cadlayers IS NOT NULL"
                  + "   AND BITAND(dp.ins_disc_params_type, " + (inoutMode == MODE_IN? 1 : 2) + ")>0"
                  + "   AND dp.ins_discipline_key = d.ins_discipline_key"
                  + "   AND (" + sqlfilter + ")"
                  + "   ORDER BY 2";

              // in init() worden de default-on's gezet
              FCLTselector("sDiscsIn", sql,
                      { onChange: "myRefresh()",
                        size: 6,
                        extraParamValue: "defaultOn",
                        emptyOption: L("lcl_none"),
                        multi: true
                      });
%>          </td>
          </tr>
<%        if (inoutMode == MODE_IN)
          { // Zoeken kan alleen (nog maar) binnen
%>
            <tr id="insZoek" style="display:none">
              <td>
                <table cellspacing="0">
                <tr>
                  <td><label for="SearchCode"><%=L("lcl_search")%>:</label></td>
                  <td align="right" title="<%=L("lcl_search")%>">
                    <input type="text" id="SearchCode" onKeyPress="return onEnter(event, doSearchObj);">
                  </td>
                </tr>
                </table>
              </td>
            </tr>
<%        } %>
          <!-- ==========================
               DISCIPLINES Legenda
          ============================ -->
<%        if (S("fg_ins_symbols"))
          { %>
            <tr id='tinsLegend' style="display:none" class="closedFG" onClick="toggleFG(this, 'insLegend');">
              <td><%=L("lcl_fg_obj_legend")%></td>
              <!-- <td><%=L("lcl_fg_obj_legend")%></td> -->
            </tr>
            <tr id=insLegend style="display:none">
              <td><div id=dinsLegend class="canMaxFG" onclick="this.className=(this.className=='canMaxFG'?'isMaxFG':'canMaxFG');">
<%              /* Gevuld in sDiscsChanged/Ajax.Updater/LoadInsLegenda.asp */ %></div>
              </td>
            </tr>
<%        } %>
          <!-- ==========================
               DISCIPLINES toevoegen
          ============================ -->
<%        if (S("fg_ins_symbols"))
          { %>
            <tr id='tinsAdd' style="display:none" class="closedFG" onClick="toggleFG(this, 'insAdd');">
              <!-- <td><%=L("lcl_fg_obj_add")%></td> -->
              <td><%=L("lcl_fg_obj_add")%></td>
            </tr>
            <tr id=insAdd style="display:none">
              <td>
                <div id=dinsAdd class="canMaxFG" onclick="this.className=(this.className=='canMaxFG'?'isMaxFG':'canMaxFG');">
<%                /* Gevuld in sDiscsChanged/Ajax.Updater/LoadInsNew.asp */ %>
                </div>
              </td>
            </tr>
<%        } %>
          <!-- ==========================
               LABEL THEMA's
          ============================ -->
          <tr class="closedFG" onClick="toggleFG(this, 'labelIn,thmIn1,thmIn2,thmIn3')">
          <td><%=L("lcl_fg_info")%></td>
          </tr>
          <tr id="labelIn" style="display:none">
            <td align="left">
              <table cellspacing=0>
                <tr>
                  <td>
                      <label for="SearchLbl"><%=L("lcl_fg_labels")%>:</label>
                  </td>
                  <td title="<%=L("lcl_search")%>">
<%                  if (scenario_key == 0) { %>
                      <input type="text" id="SearchLbl" style="display:none;"
                             onKeyPress="return onEnter(event, doSearchLbl);">
<%                  } %>
                  </td>
                </tr>
              </table>
            </td>
          </tr>
          <tr id="thmIn1" style="display:none">
            <td>
<%            var bitcode = 0x01; // binnen
              if (inoutMode==MODE_OUT)
                bitcode = 0x02; // buiten
              if (scenario_key>0)
                bitcode |= 0x04;
              sql = "SELECT CAD_LABEL_KEY,"
                  + lcl.xsqla('CAD_LABEL_OMSCHRIJVING', 'cad_label_key')
                  + "  FROM CAD_LABEL"
                  + " WHERE BITAND(CAD_LABEL_TYPE, " + bitcode + ") = " + bitcode
                  + (scenario_key == 0? " AND BITAND(CAD_LABEL_TYPE, 4) = 0" : "")
                  + "   AND (FAC_FUNCTIE_KEY IS NULL"
                  + "       OR FAC_FUNCTIE_KEY IN "
                  + "               (SELECT FAC_FUNCTIE_KEY FROM fac_v_webgebruiker"
                  + "                  WHERE prs_perslid_key = " + user_key + "))"
                  + " ORDER BY 2";

              FCLTselector("sLabelIn", sql,
                      { xxlabel: L("lcl_activity"),
                        emptyOption: L("lcl_fg_nolabels"),
                        onChange: "sLabelChanged(this)"
                      }); %>
            </td>
          </tr>
          <!-- ==========================
               KLEUREN THEMA's
          ============================ -->
          <tr id="thmIn2" style="display:none">
            <td id="sThemaIn_help" align="left" style="margin:0"><label><%=L("lcl_fg_thema")%>:</label>
            </td>
          </tr>
          <tr id="thmIn3" style="display:none">
            <td>
<%            sql = "SELECT CAD_THEMA_KEY, "
                 + lcl.xsqla('cad_thema_omschrijving', 'cad_thema_key')
                 + "  FROM CAD_THEMA "
                 + " WHERE BITAND(CAD_THEMA_TYPE, " + bitcode + ") = " + bitcode
                 + (scenario_key == 0? " AND BITAND(CAD_THEMA_TYPE, 4) = 0" : "")
                 + "   AND (FAC_FUNCTIE_KEY IS NULL"
                 + "       OR FAC_FUNCTIE_KEY IN "
                 + "               (SELECT FAC_FUNCTIE_KEY FROM fac_v_webgebruiker"
                 + "                  WHERE prs_perslid_key = " + user_key + "))"
                 + " ORDER BY 2";

              FCLTselector("sThemaIn", sql,
                      { xxlabel: L("lcl_activity"),
                        emptyOption: L("lcl_fg_nothema"),
                        onChange: "sThemeChanged(this)"
                      }); %>
            </td>
          </tr>
          <!-- ==========================
               De thema legenda wordt dynamisch gevuld
          ============================ -->
          <tr id="legendCell">
            <td>
              <div id=fLegenda style='overflow-y:visible;overflow-x:hidden;'>
<%              /* Gevuld in Ajax.Updater/Legenda.asp */ %>
              </div>
            </td>
          </tr>
        </table>
      </div>
      <div id="fgmenutoggler" class='toggler' onClick="toggleLayout(this)" title='<%=L("lcl_toggler")%>'>
      </div>

      <!-- ==========================
           HET plaatje
      ============================ -->
      <div id = 'mapCell'>
        <img onclick='onFullScreen(event)'
            src="../Pictures/fullscreen.gif"
            width='21' height='20' id='MinMaxBtn'
            style="cursor:pointer;display:none;position:absolute;z-index:1;height:20px;width:20px;"
        >
        <iframe id=MMap name=MMap src="../SlnkDWF/ToonIMG.asp?ShowButtons=1&ShowLabelMenu=1"
            frameborder='0' framespacing='0' scrolling='no'
            onLoad='init();'
            width="<%=concept? 49 : 100%>%" height="100%">
        </iframe>
<%      if (concept)
        { %>
             <iframe id=MMap2 name=MMap2 src="../SlnkDWF/ToonIMG.asp?ShowButtons=1&ShowLabelMenu=1&concept=1"
                 frameborder='0' framespacing='0' scrolling='no'
                 onLoad='init();'
                 width="49%" height="100%" style="border-left:4px solid #808080">
             </iframe>
<%      } %>
      </div>
      <div id="fgtabtoggler" class='toggler' onClick="toggleTabLayout(this)" title='<%=L("lcl_toggler")%>'></div>

<%
    if (scenario_key > 0)
    {
        AddTabItem(L("lcl_room"),                 'PRJ7',   'WEB_PRJBOF', '', "../prj/rap_prj7.asp");
        AddTabItem(L("lcl_prj_workplacecontrol"), 'PRJ1',   'WEB_PRJBOF', '', "../prj/rap_prj3.asp");
        AddTabItem(L("lcl_prj_prsbuffer"),        'PRJ6',   'WEB_PRJBOF', '', "../prj/rap_prj6.asp");
        AddTabItem(L("lcl_prj_objbuffer"),        'PRJ5',   'WEB_PRJBOF', '', "../prj/rap_prj5.asp");
        AddTabItem(L("lcl_prj_persons"),          'PRJ9',   'WEB_INSMAN', '', "../prj/rap_prj9.asp");
        AddTabItem(L("lcl_prj_scenario_notes"),   'PRJ8',   'WEB_PRJBOF', '', "../prj/rap_prj8.asp");
    }
    else if (inoutMode == MODE_IN)
    {
        if (concept)
            AddTabItem(L("lcl_space_manage_h"),   'ALG',   'WEB_CADBOF', '', S("fg_rap_algc"));
        else
            AddTabItem(L("lcl_space_manage_h"),   'ALG',   'WEB_CADALG', '', S("fg_rap_alg"));
        AddTabItem(L("lcl_search_pers"),      'PRS',   'WEB_CADPRS', '', S("fg_rap_prs"));
        AddTabItem(L("lcl_objmanagment_h"),   'INS',   'WEB_CADOBJ', '', S("fg_rap_ins"));
        AddTabItem(L("lcl_cleaning_h"),       'SCH',   'WEB_CADSCH', '', S("fg_rap_sch"));
        AddTabItem(L("lcl_complains"),        'MLD',   'WEB_CADMLD', '', S("fg_rap_mld"));
        AddTabItem(L("lcl_sle_toegang"),      'SLE',   'WEB_CADSLE', '', S("fg_rap_sle"));
        AddTabItem(L("lcl_cnt_contracts"),    'CNT',   'WEB_CADCNT', '', S("fg_rap_cnt"));
        AddTabItem(L("lcl_fg_verhuizing"),    'MOV',   'WEB_PRSBOF', '', S("fg_rap_mov"), true);
        if (S("fg_ins_symbols"))
        {
        	AddTabItem(L("lcl_fg_consistentie"),  'MO2',   'WEB_CADOBJ', '', "../cad/rap_insXY.asp");
        }
    }
    else // inoutMode == MODE_OUT
    {
        AddTabItem(L("lcl_terra_manage_h"),   'ALG2',  'WEB_CADALG', 'WEB_ALGMAN', S("fg_rap_alg2"));
        AddTabItem(L("lcl_objmanagment_h"),  'INS2',  'WEB_CADOBJ', 'WEB_INSMAN', S("fg_rap_ins2"));
        AddTabItem(L("lcl_cnt_contracts"),    'CNT',   'WEB_CADCNT', 'WEB_CNTUSE', S("fg_rap_cnt2")); // Stelling: Als je WEB_CNTMAN rechten hebt moet je ook dezelfde WEB_CNTUSE rechten hebben/krijgen.
    }
%>
        <!-- ==========================
             RAPPORT DEEL
        ============================ -->
        <div id='theTabs' class='ui-tabs ui-widget ui-widget-content ui-corner-all'>
            <% var nrTabs = CreateTabs();
               if (!nrTabs) {
             %>
                <script>$(function () { toggleTabLayout(document.getElementById("fgtabtoggler")) });</script>
            <% } %>
        </div>
  </body>
</html>
