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

    File:           ins_show_deel.asp
    Description:    show detailed information of an object
    Parameters:     urole, ins_key
    Context:        Ook eventueel vanuit ../mld_object.asp
    Note:

*/ %>

<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/iface.inc" -->
<!-- #include file="./ins_flexkenmerk.inc" -->
<!-- #include file="../Shared/selector.inc" -->
<!-- #include file="../Shared/persoonselector.inc" -->
<!-- #include file="../mld/mld.inc" -->
<!-- #include file="./ins.inc" -->

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

var ins_score_enabled = S("ins_score_enabled") == 1;
var urole = getQParamSafe("urole");
var ins_key = getQParamInt("ins_key");

var this_ins = ins.func_enabled_deel(ins_key);
user.auth_required_or_abort(this_ins.canReadAny); // Deze klapt er al uit als je alleen INSMIN hebt en het object is niet van jou

if (this_ins.isSleCil)
  var autfunction = "WEB_SLEBOF";
else
  var autfunction = getQParam("pautfunction", { fe: "WEB_INSMIN", fo: "WEB_INSFOF", bo: "WEB_INSMAN" }[urole]);

var authparams = user.checkAutorisation(autfunction);
var sql, oRs;

sql = "SELECT d.ins_deel_omschrijving"      // identificatie
    + "     , s.ins_srtdeel_code"
    + "     , " + lcl.xsqla("s.ins_srtdeel_omschrijving", "s.ins_srtdeel_key")
    + "     , " + lcl.xsqla("g.ins_srtgroep_omschrijving", "g.ins_srtgroep_key")
    + "     , " + lcl.xsqla("dis.ins_discipline_omschrijving", "dis.ins_discipline_key")
    + "     , d.ins_deel_parent_key"
    + "     , (SELECT dp.ins_alg_ruimte_type"
    + "          FROM ins_deel dp"
    + "         WHERE ins_deel_key = d.ins_deel_parent_key) ins_alg_ruimte_parent_type"
    + "     , (SELECT dp.ins_alg_ruimte_key"
    + "          FROM ins_deel dp"
    + "         WHERE ins_deel_key = d.ins_deel_parent_key) ins_alg_ruimte_parent_key"
    + "     , (SELECT dp.ins_deel_omschrijving"
    + "          FROM ins_deel dp"
    + "         WHERE ins_deel_key = d.ins_deel_parent_key) parent_omschrijving"
    + "     , d.ins_alg_ruimte_type"
    + "     , d.ins_alg_ruimte_key"
    + "     , d.ins_alg_locatie_key"
    + "     , d.ins_deel_aantal"
    + "     , d.ins_deel_aanmaak"
    + "     , d.ins_srtdeel_key"
    + "     , g.ins_srtgroep_key"
    + "     , dis.ins_discipline_key"
    + "     , s.ins_srtdeel_acadsymbol"
    + "     , d.ins_deel_x"
    + "     , ins_deel_y"
 // future: +", ins_deel_z"
    + "     , ins_deel_omtrek"
    + "     , ins_deel_oppervlak"
    + "     , ins_deel_dwgx"
    + "     , ins_deel_dwgy"
    + "     , ins_deel_dwgz"
    + "     , ins_deel_dwgrotatie"
    + "     , ins_deel_dwgschaal"
    + "     , d.ins_alg_ruimte_key_org"
    + "     , d.ins_alg_ruimte_type_org"
    + "     , d.ins_deel_vervaldatum"
    + "     , d.ins_deel_actief"
    + "     , d.ins_deel_verwijder"
    + "     , d.ins_deel_state"
    + "     , d.ins_deel_statedate"
    + "     , d.ins_deel_t_uitvoertijd.tijdsduur uitvoertijd"
    + "     , d.ins_deel_t_uitvoertijd.eenheid uitvoertijd_eenheid"
    + "     , d.ins_deel_image"
    + "     , d.ins_deel_opmerking"         // omschrijving
    + "     , s.ins_srtdeel_image"
    + "     , d.ins_deel_flag"
    + "     , " + lcl.xsqla('s.ins_srtdeel_eenheid', 's.ins_srtdeel_key')
    + "     , d.prs_perslid_key_beh"
    + "     , d.ins_deel_mjb_score1"
    + "     , d.ins_deel_mjb_score2"
    + "     , s.ins_srtdeel_mjb_grensscore1"
    + "     , r.alg_verdieping_key"
    + "     , d.ins_deel_externnr"
    + "  FROM ins_v_deelenonderdeel d"
    + "     , ins_srtdeel s"
    + "     , ins_srtgroep g"
    + "     , ins_tab_discipline dis"
    + "     , alg_ruimte r"
    + " WHERE ins_deel_key = " + ins_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"
    + "   AND d.ins_alg_ruimte_key = r.alg_ruimte_key(+)";
oRs = Oracle.Execute(sql);

var ins_deleted         = oRs("ins_deel_verwijder").Value != null;
var desc                = oRs("ins_deel_omschrijving").Value;
var opmerk              = oRs("ins_deel_opmerking").Value;
var srtcode             = oRs("ins_srtdeel_code").Value;
var sort                = oRs("ins_srtdeel_omschrijving").Value;
var group               = oRs("ins_srtgroep_omschrijving").Value;
var disc                = oRs("ins_discipline_omschrijving").Value;
var parent_key          = oRs("ins_deel_parent_key").Value;
var parent_bind         = oRs("ins_alg_ruimte_parent_type").Value;
var parent_bind_key     = oRs("ins_alg_ruimte_parent_key").Value;
var parentdesc          = oRs("parent_omschrijving").Value;
var bind                = oRs("ins_alg_ruimte_type").Value;
var bind_key            = oRs("ins_alg_ruimte_key").Value;
var verdieping_key      = oRs("alg_verdieping_key").Value;
var o_loc               = parseInt(oRs("ins_alg_locatie_key").Value);
var aantal              = oRs("ins_deel_aantal").Value;
var aanmaak             = new Date(oRs("ins_deel_aanmaak").Value);
var vervaldatum         = oRs('ins_deel_vervaldatum').Value;
var actief              = oRs('ins_deel_actief').Value == 1;
var srtdeel_key         = oRs("ins_srtdeel_key").Value;
var srtgroep_key        = oRs("ins_srtgroep_key").Value;
var disc_key            = oRs("ins_discipline_key").Value;
var tekenbaar           = oRs("ins_srtdeel_acadsymbol").Value != null;
var getekend            = oRs("ins_deel_dwgx").Value != null;
var xcoord              = oRs("ins_deel_x").Value;
var ycoord              = oRs("ins_deel_y").Value;
var state               = oRs("ins_deel_state").Value;
var statedate           = oRs("ins_deel_statedate").Value;
var uitvoertijd         = oRs("uitvoertijd").Value;
var uitvoertijd_eenheid = oRs("uitvoertijd_eenheid").Value || 'D';
var deel_image          = oRs("ins_deel_image").Value;
var flagkey             = oRs("ins_deel_flag").Value || 0;
var srtdeel_image       = oRs("ins_srtdeel_image").Value;
var srtdeel_eenheid     = oRs("ins_srtdeel_eenheid").Value;
var perslid_key_beh     = oRs("prs_perslid_key_beh").Value;
var ins_deel_mjb_score1 = oRs("ins_deel_mjb_score1").Value;
var ins_deel_mjb_score2 = oRs("ins_deel_mjb_score2").Value;
var ins_srtdeel_mjb_grensscore1 = oRs('ins_srtdeel_mjb_grensscore1').Value;
var omtrek              = oRs("ins_deel_omtrek").Value;
var oppervlak           = oRs("ins_deel_oppervlak").Value;
var dwgx                = oRs("ins_deel_dwgx").Value;
var dwgy                = oRs("ins_deel_dwgy").Value;
var dwgz                = oRs("ins_deel_dwgz").Value;
var dwgrotatie          = oRs("ins_deel_dwgrotatie").Value;
var dwgschaal           = oRs("ins_deel_dwgschaal").Value;
var externnr            = oRs("ins_deel_externnr").Value;

lcl.set_dialect(disc_key, "INS_DISCIPLINE_KEY");


// Als het object niet is uitgeleend, dan kan ik niet bepalen welke persoon als laaste het object geleend heeft.
// Als het object wel is uitgeleend, dan nemen we die persoon als default ontvanger
// TODO
var sqlu = "SELECT prs_perslid_key"
         + "  FROM ins_deel_uitgifte"
         + " WHERE ins_deel_key = " + ins_key
         + "   AND ins_deel_uitgifte_ingeleverd IS NULL";
var oRsu = Oracle.Execute(sqlu);
var borrower = -1;
if (!oRsu.eof)
{
  borrower = oRsu("prs_perslid_key").Value;
}
var subjectMail = sort + " " + desc;
var urlMail = "../shared/queuemail.asp?pcode=INSMAI&defemail_key=" + borrower
            + "&key=" + ins_key
            + "&subject=" + Server.URLencode(subjectMail)
            + "&mailfrom=1"
            + "&pmodule=INS";
oRsu.close();

var bind_lo = null;
var bind_key_lo = null;
var lent_out = false;
if (oRs('ins_alg_ruimte_key_org').Value != null)
{
  // Object is currently lent out from:
  bind_lo     = oRs('ins_alg_ruimte_type_org').Value;
  bind_key_lo = oRs('ins_alg_ruimte_key_org').Value;
  lent_out    = true;
}
oRs.close();

// We geven aan waar het object bij hoort
// Niet voor de lol, maar als label voor het specifieke ding
var binding_text = 'unknown';
var moreinfo = "";
switch (bind)
{
  case 'R':
    binding_text = L("lcl_obj_bind_r");
    moreinfo = "appl/alg/alg_ruimte.asp?key=" + bind_key + "&urole=" + urole;
    break;
  case 'T':
    binding_text = L("lcl_obj_bind_t");
    moreinfo = "appl/alg/alg_terreinsector.asp?ter_key=" + bind_key + "&urole=" + urole;
    break;
  case 'W':
    binding_text = L("lcl_obj_bind_w");
    moreinfo = "appl/alg/alg_wp.asp?key=" + bind_key + "&urole=" + urole;
    break;
  case 'P':
    binding_text = L("lcl_obj_bind_p");
    moreinfo = "appl/fac/fac_user.asp?prs_key=" + bind_key;
    break;
  case 'A':
    binding_text = L("lcl_obj_bind_a");
    moreinfo = "appl/prs/prs_afdeling.asp?key=" + bind_key + "&urole=" + urole;
    break;
  case 'C':
    binding_text = L("lcl_obj_bind_c");
    moreinfo = "appl/prs/prs_contactpersoon.asp?key=" + bind_key + "&urole=" + urole;
    break;
}
// Dat was het type / label, nu de instance
var binding_item = ins.getBindingItemString(bind, bind_key, parent_key);

var bind_onderdeel = bind;
if (parent_key != null)
{
  bind = "I";  // pseudotype
}

// Mag ik een melding aanmaken bij dit object? Alleen meldingen die enigzins beperkt zijn tot ons/onze object(soort/groep)
// Dan moet er wel een srtdiscipline getoond kunnen worden.
var mySRTsql = mld.srtdisc_sql({ ins_key: ins_key });
var sql = "SELECT MIN(ins_srtdiscipline_key) ins_srtdiscipline_key"
        + "     , COUNT(DISTINCT ins_srtdiscipline_key) aantal"
        + "  FROM (" +  mySRTsql + ")";
var oRs = Oracle.Execute(sql);
var canMelding = (oRs("aantal").Value > 0);
oRs.Close();

// Deel toevoegen aan reserveerbare delen.
    var res_authparams = user.checkAutorisation("WEB_RESMSU", true);
    var res_deel_key = -1;
    if (res_authparams)
    {
      var binding = (bind_lo ? bind_lo : bind); // Gebonden aan uitlening gaat voor.
      if (binding == "R" || binding == "T")  // Alleen ruimtegebonden objecten mogen reserveerbaar zijn.
      {
        this_ins.hasRESMSU = true;
        // Is dit deel al reserveerbaar?
        var sql = "SELECT res_deel_key"
                + "  FROM res_deel"
                + " WHERE res_deel_verwijder IS NULL"
                + "   AND res_ins_deel_key = " + ins_key;
        var oRs = Oracle.Execute(sql);
        if (!oRs.eof)
          res_deel_key = oRs("res_deel_key").Value;
        oRs.Close();
      }
    }
%>

<html>
  <head>
<%  FCLTHeader.Generate(); %>
    <script type="text/javascript">
      $(function() {
        $("img.ins_deel").on("click", function() {FcltMgr.openModalDetail($(this).attr("src"), "<%=safe.jsstring(desc)%>");}).addClass("details");
      });
      function ins_print()
      {
         FcltMgr.windowopen('./ins_xml.asp?ins_key='+<%=ins_key%>);
      }
      function showHistory()
      {
        FcltMgr.openDetail("appl/ins/ins_history_search.asp?ins_key=<%=ins_key%>&urole=<%=urole%>", L("lcl_history"));
      }
      function ins_reserveerbaar()
      {
          FcltMgr.openDetail("appl/mgt/res_deel.asp?mode=wrap&id=<%=res_deel_key%>&res_ins_deel_key=<%=ins_key%>", L("res_deel"));
      }
      function ins_change()
      {
        if (FcltMgr.startEdit(window))
          window.location.href = "ins_edit_deel.asp?ins_key=<%=ins_key%>&embedded=1&urole=<%=urole%>";
      }
      function ins_melding()
      {
        FcltMgr.openDetail("appl/mld/mld_melding.asp?ins_key=<%=ins_key%>", L("lcl_add"));
      }

      function ins_delete()
      {
        FcltMgr.confirm(L("lcl_ins_del_txt_deel"), function() {
            var data = {
                key: <%=ins_key%>,
                level: "D"
            };
            <% protectRequest.dataToken("data"); %>
            $.post("ins_delete.asp",
                data,
                FcltCallbackClose,
                "json");
        });
      }

      function ins_copy()
      {
        FcltMgr.openDetail("appl/ins/ins_deel.asp?urole=bo" + "&ins_key=<%=ins_key%>" + "&ins_copy=1",  L("lcl_ins_copy") + " " + L("lcl_ins_object").toLowerCase());
      }

      function qrcode()
      {
        var url = "../fac/fac_print_qrcode.asp?title=<%=safe.jsstring(safe.url(desc))%>"
                                            + "&text=<%=safe.jsstring(safe.url("/?u=ins_object&k=" + ins_key))%>";
        FcltMgr.openModalDetail(url, { titel: L("lcl_make_qrc_title2") });
      }

      function ins_edit_srtdeel()
      {
        var url = "../ins/ins_change_srtdeel.asp?ins_key=<%=ins_key%>";
        FcltMgr.openModalDetail( url
                               , (L("lcl_obj_sort") + " {0} {1}").format("<%=safe.jsstring(sort)%>", "<%=safe.jsstring(desc)%>")
                               , { callback: function(data) { if (data.refresh) FcltMgr.reload() } }
                               );
      }

        function ins_edit_owner()
        {
          var url = "../ins/ins_change_plaatseigenaar.asp?ins_key=<%=ins_key%>";
          FcltMgr.openModalDetail( url
                                 , (L("lcl_owner_info") + " {0} {1}").format("<%=safe.jsstring(sort)%>", "<%=safe.jsstring(desc)%>")
                                 , { callback: function(data) { if (data.refresh) FcltMgr.reload() } }
                                 );
        }

        function ins_edit_parentdeel()
        {
          var url = "../ins/ins_change_parent.asp?ins_key=<%=ins_key%>";
          FcltMgr.openModalDetail( url
                                 , (L("lcl_ins_parentobject") + " {0}").format("<%=safe.jsstring(parentdesc)%>")
                                 , { callback: function(data) { if (data.refresh) FcltMgr.reload() } }
                                 );
        }
      function ins_mail()
      {
        function insMailCallback(data)
        {
          FcltToast(L("lcl_ins_is_insmai") + data.emails);
        }
        var subject = "<%=safe.jsstring(subjectMail)%>";
        var url = "<%=safe.jsstring(protectQS.create(urlMail))%>";
        FcltMgr.openModalDetail(url, subject, { callback: insMailCallback });
      }

    </script>
  </head>

  <body class="showmode" onLoad='javascript:init();'>
  <% SUBFRAME_START(); %>
<%  this_ins.verbruiksmeter = false;
    this_ins.contracts = false;
    if (this_ins.canReadHistory)
    {                                                  // maar werd toch alleen hier gebruikt
      // Bepaal of het hier gaat om een verbruiksmeter. Dan alleen klokje button tonen
      sql = "SELECT MAX(ik.ins_kenmerk_meetwaarde) meetwaarde"
          + "  FROM ins_kenmerk ik"
          + "     , ins_kenmerkdeel ikd"
          + "     , ins_deel d"
          + " WHERE d.ins_deel_key = ikd.ins_deel_key"
          + "   AND ikd.ins_kenmerk_key = ik.ins_kenmerk_key"
          + "   AND ikd.ins_kenmerkdeel_verwijder IS NULL"
          + "   AND d.ins_deel_key = " + ins_key;
      oRs = Oracle.Execute(sql);
      this_ins.verbruiksmeter = oRs("meetwaarde").Value == 1;
      oRs.Close();
    }

    sql = "SELECT k.ins_kenmerk_key"
         + " FROM ins_srtkenmerk t"
         + ", ins_kenmerk k"
         + ", ins_srtdeel s"
         + ", ins_srtgroep g"
         + " WHERE s.ins_srtdeel_key = " + srtdeel_key
         + " AND (   (    k.ins_srtinstallatie_key = s.ins_srtdeel_key"
         + " AND k.ins_kenmerk_niveau = 'S')"
         + " OR (    k.ins_srtinstallatie_key = s.ins_srtgroep_key"
         + " AND k.ins_kenmerk_niveau = 'G')"
         + " OR (    k.ins_srtinstallatie_key = g.ins_discipline_key"
         + " AND k.ins_kenmerk_niveau = 'D')"
         + " )"
         + " AND k.ins_srtkenmerk_key = t.ins_srtkenmerk_key"
         + " AND g.ins_srtgroep_key = s.ins_srtgroep_key"
         + " AND k.ins_kenmerk_verwijder IS NULL"
         + " AND t.ins_srtkenmerk_verwijder IS NULL"
         + (urole == "fo"?" AND BITAND(k.ins_kenmerk_rolcode, 4) = 4" : "");
    oRs = Oracle.Execute(sql);
    var uitleen_flex_present = false;
    if (!oRs.eof) uitleen_flex_present = true;
    oRs.Close();

    var buttons =  [];
    // In de frontoffice (uitgeleende objecten) mode kunnen alleen de flexkenmerken aangepast worden.
    // Zijn er wel uitleen kenmerken anders hoeft de wijzig knop niet getoond te worden.
    if ((this_ins.canChange || this_ins.canChangeOwn) && (urole == "bo" || (urole == "fo" && uitleen_flex_present)))
      buttons.push({ title: L("lcl_change"), action: "ins_change()", icon: "fa-fclt-edit" });

    if (canMelding)
      buttons.push({ title: L("lcl_do_amelding"), tooltip: L("lcl_do_amelding_hint"), action: "ins_melding()", icon: "fa-wand-magic-sparkles" });

    // Alleen historie kunnen tonen als het een verbruiksmeter betreft.
    if (this_ins.verbruiksmeter)
      buttons.push({ title: L("lcl_history"), action: "showHistory()", icon: "fa-clock" });

    if (this_ins.canCopy)
      buttons.push({ title: L("lcl_mld_copy"), icon: "fa-copy", action: "ins_copy()" });

    if (this_ins.canDelete)
      buttons.push({ title: L("lcl_delete"), action: "ins_delete()", icon: "fa-trash-alt"});

    if (user.has("WEB_INSMGT"))
      buttons.push({ title: L("lcl_make_qrc"), tooltip: L("lcl_make_qrc_title"), action: "qrcode()", icon: "fa-qrcode" });

    if (this_ins.hasRESMSU)
      buttons.push({ title: L("lcl_reserveerbaar"), action: "ins_reserveerbaar()", icon: (res_deel_key > 0 ? "fa-calendar-edit" : "fa-calendar"), tooltip: L("lcl_reserveerbaar_hint")});

    buttons.push({ title: L("lcl_print"), action: "ins_print()", icon: "fa-print" });

    if (this_ins.writefof)
      buttons.push({ title: L("lcl_noti_ins_email"), action: "ins_mail()", icon: "fa-envelope"  });

    var headertitle = L("lcl_ins_frame_algemeen");
    if (this_ins.isSleCil)
    {
      var sletype = (srtgroep_key == S("sle_ins_srt_groep_key")? "S" : "C");
      if (sletype == "S")
        headertitle = L("lcl_sle_sleutel");
      else
        headertitle = L("lcl_sle_cilinder");
    }

    IFRAMER_HEADER(headertitle, ins_deleted?[]:buttons);
%>
    <script>
      function edit_photo(img)
      {
        var url = "<%=protectQS.create("../../appl/shared/BijlagenForm.asp?module=INSPHD&key="+ins_key)%>";
        FcltMgr.openModalDetail(url, L("lcl_ins_upload_foto"),
                    { callback: FcltMgr.reload } );
      }

    function resizeIframes()
    {
        var height = $("#insPlanList").height();
        document.getElementById('MMap').style.height = (height) +"px";
    };
    function MMap_onClick(SlnkEvent)
    {
        onFullScreen();
        return false; // Don't process (of: fullscreen starten?)
    }

    var params = "&vKey=<%=verdieping_key%>&scenario_key=0"
               + "&highlight=<%=bind_key%>"
               + "&discs=<%=disc_key%>"
               + "&ins_key=<%=ins_key%>";
    function onFullScreen()
    {
        var url = "../CAD/maximize.asp?x=x" + params;
        FcltMgr.windowopen(url,'FGShow',
                        "directories=no,location=no,menubar=no,"
                    + "resizable=yes,status=no,titlebar=yes,toolbar=no");
        FcltMgr.closeDetail(window); // zelf kunnen we nu wel dicht
    }

    function init()
    {
        if (!document.getElementById('MMap'))
            return;

        resizeIframes();
        MMap.Reset();
        MMap.SetIMGGenerator("../CAD/mySlnk2IMG.asp");
        MMap.SetCustomParameters(params)
        MMap.SetLabelPosition(<%=S("fg_labelPosition")%>);
        MMap.SetPaperColor(<%=S("fg_paperColor")%>);
        MMap.Refresh(true); // Try to zoom extents
    }
    //$(init);

    </script>

<%    if (ins_deleted)
      {
        SIMPLE_BLOCK_START();
%>      <div class="ins_deleted"><%=L("lcl_record_is_deleted")%></div><%
        SIMPLE_BLOCK_END();
      }
      var hasImage = false;
      if (srtdeel_image)
      {
          var imageFile = S("ins_image_path") + srtdeel_image;
          var fso = new ActiveXObject("Scripting.FileSystemObject");
          if (fso.FileExists(Server.MapPath(imageFile)))
              hasImage = true;
      }

      BLOCK_START(("insIns"), L("lcl_general_properties"), {icon: "fa-tag"});
        Response.write("<tr><td style='text-align: right'>");
        var this_photoinfo = ins.photoinfo(ins_key);
        if (this_photoinfo.isDefault)
        {
            if (hasImage)
            {
                Response.write("<td class='ins_deel'>"
                              +"  <span class='wrapper-span'>"
                              +"    <img id='photo' alt='" + L("lcl_obj_photo") + "' style='cursor: pointer;' class='ins_deel' src='" + safe.htmlattr(imageFile) + "'>"
                              + ( this_ins.writeman && !ins_deleted
                                ? "    <span id='editAnim' class='image-edit' title='" + L("lcl_change") + "' onclick='edit_photo(this); FcltMgr.stopPropagation();'>"
                                +        I("fa-fclt-edit")
                                + "    </span>"
                                : ""
                                )
                              +"  </span>"
                              +"</td>");
            }
            else
            {
                Response.write("<td class='ins_deel'>"
                              + ( this_ins.writeman && !ins_deleted
                                ? "  <span class='wrapper-span' onclick='edit_photo(this)'>" // onclick hier om zowel bij klikken op camera- als pen-icon
                                +      this_photoinfo.photoicon                              // naar wijzigen afbeelding te gaan.
                                + "    <span id='editAnim' class='image-edit' title='" + L("lcl_change") + "'>"
                                +        I("fa-fclt-edit")
                                + "    </span>"
                                + "  </span>"
                                : "  <span class='wrapper-span'>"
                                +      this_photoinfo.photoicon
                                + "  </span>"
                                )
                              +"</td>"
                              );
            }
        }
        else
        {
            Response.write("<td class='ins_deel'>"
                          +"  <span class='wrapper-span'>"
                          +"    <img id='photo' alt='" + L("lcl_obj_photo") + "' style='cursor: pointer;' class='ins_deel' src='" + safe.htmlattr(this_photoinfo.photopath) + "'>"
                          + ( this_ins.writeman && !ins_deleted
                            ? "    <span id='editAnim' class='image-edit' title='" + L("lcl_change") + "' onclick='edit_photo(this); FcltMgr.stopPropagation();'>"
                            +       I("fa-fclt-edit")
                            +"    </span>"
                            : ""
                            )
                          +"  </span>"
                          +"</td>");
        }

        ROFIELDTR("flddeel", L("lcl_obj_identification"), desc);
        ROFIELDTR("fld", L("lcl_discipline"), disc);
        ROFIELDTR("fld", L("lcl_obj_group"), group);

        var params = {};
        if (user.has("WEB_INSMGT"))
          params = { infoPointer: { Url: "/appl/ins/ins_srtdeel.asp?srtdeel_key=" + srtdeel_key }  }
        if (this_ins.writeman && !ins_deleted)
        {
          params.labelbutton = { icon: "fa-fclt-edit", title: L("lcl_change"), action: "ins_edit_srtdeel()" };
        }
        ROFIELDTR("fld", L("lcl_obj_sort"), sort + " (" + srtcode + ")", params);

        if (parent_key != null)
        {
          var binding_oms = ins.getBindingItemString(bind, bind_key, parent_key);
          var url = "appl/ins/ins_deel.asp?ins_key=" + parent_key + "&urole=" + urole;
          params = {infoPointer:{Url : url, Title: ""}};
          if (this_ins.writeman && this_ins.canChangeAlg)
          { // Voor onderdelen het bovenliggende object tonen en wijzigbaar maken met een button.
            params.labelbutton = { icon: "fa-fclt-edit", title: L("lcl_change"), action: "ins_edit_parentdeel()" };
          }
          ROFIELDTR("fld", L("lcl_ins_parentobject"), binding_oms, params);
        }

        params = {infoPointer:{Url : moreinfo, Title: ""}};
        if (parent_key > 0 && ins_key > 0 && this_ins.writeman)
        { // De bindingen terrein, ruimte, werkplek, persoon of afdeling wijzigbaar maken met een button.
          params.labelbutton = { icon: "fa-fclt-edit", title: L("lcl_change"), action: "ins_edit_owner()" };
        }
        ROFIELDTR("fld", binding_text, binding_item, params);

        if (aantal != 1)
          ROFIELDTR("fld", L("lcl_amount"), aantal + (srtdeel_eenheid ? " " + srtdeel_eenheid : ""));
        ROFIELDTR("fld", L("lcl_ins_opmerking"), opmerk, {suppressEmpty: true});
        if (S("ins_deel_flags") > 1 && flagkey > 0)
          ROFIELDTR("fld", L("lcl_ins_flags"), L("lcl_ins_flag"+flagkey), { icon: "fa-fclt-flag", iconclass: "insflag"+flagkey });

      BLOCK_END();

      BLOCK_START(("insGeo"), L("lcl_ins_meta_data"), {icon: "fa-clipboard"});
        ROFIELDTR("fld", L("extern_nr"), externnr, {suppressEmpty: true});
        ROFIELDTR("flddatetime", L("lcl_last_action"), toDateString(aanmaak));

        // Link naar de state_history
        var params = { infoPointer: { Url: "appl/ins/ins_state_history.asp?ins_key=" + ins_key,
                                      Title: L("lcl_state_details") + " " + desc
                                    },
                       suppressEmpty: true,
                       tooltip: toDateTimeString(statedate, true, false, true)
                     }
        ROFIELDTR("fld", L("lcl_deel_state"), state, params);

        ROFIELDTR("fld", L("lcl_ins_vervaldatum"), toDateString(vervaldatum), {suppressEmpty: true});
        ROCHECKBOXTR("fldcheck" + (!actief? " inactive" : ""), L("lcl_ins_active"), actief);
        FCLTpersoonselector("personH", "sgins_manager",
                            {label: L("lcl_ins_manager"),
                             perslidKey: perslid_key_beh,
                             moreinfo: urole != 'fe',
                             suppressEmpty: true,
                             readonly: true});
        if (lent_out)
          ROFIELDTR("fld", "", L("lcl_obj_is_lent_out"));

        var inlineplattegrond = bind == "R"; // Werkt alleen voor ruimtegebonden objecten
        if (tekenbaar)
        {
          if (getekend)
          {
            var params = { infoPointer: { Url: "../cad/showroom.asp?rKey=" + bind_key + "&ins_key=" + ins_key,
                                          Title: L("lcl_fg_gotofgheader") + " " + desc,
                                          Modal: true
                                        }
                         }
            var xyz ="";
            if (user.has("WEB_CADMSU") || user.has("WEB_CADOBJ")) // maar weinigen hoeven dit te zien
            {
              xyz = " ({0}, {1}, {2}) {3}".format(dwgx,dwgy,dwgz||0,(dwgrotatie == 0 ? "" : "@"+dwgrotatie));
            }
            ROFIELDTR("fld", L("lcl_obj_getekend"), L("lcl_obj_isgetekend")+safe.html(xyz), inlineplattegrond ? {} : params);
          }
          else
            ROFIELDTR("fld", L("lcl_obj_getekend"), L("lcl_obj_nietgetekend"));
        }
        if (!(bind == 'A'||bind == 'P') && xcoord && ycoord)  // latlon coordinaten, weinig gebruikt
        {
          // alleen plaatsgebonden objecten met ingevulde x/y krijgen een geo-blokje
          ROFIELDTR("fldshort", L("lcl_obj_geoxcoord"), safe.jsfloat(xcoord)); // tonen met punt?
          ROFIELDTR("fldshort", L("lcl_obj_geoycoord"), safe.jsfloat(ycoord));
        }
      BLOCK_END();

      if (inlineplattegrond && (getekend || tekenbaar))
      {
        BLOCK_START(("insPlan"), L("lcl_obj_getekend"), {icon: "fa-map-marker-alt", nopadding: true});
%>        <tr><td>
              <iframe id="MMap" name="MMap" src="../SlnkDWF/ToonIMG.asp"
                  frameborder="0" framespacing="0" scrolling="no"
                  style="width: 100%; height:100%">
              </iframe>
          </td></tr>
<%
        BLOCK_END();
      }

      if (ins_score_enabled)
      {
        BLOCK_START(("insCnd"), L("cnd_conditiegegevens"), {icon: "fa-weight"});
            var lclass = (ins_srtdeel_mjb_grensscore1 && ins_deel_mjb_score1>ins_srtdeel_mjb_grensscore1? " expired2" : "");
            ROFIELDTR("fld", L("ins_srtdeel_mjb_grensscore1"), ins_srtdeel_mjb_grensscore1, {suppressEmpty: true});
            ROFIELDTR("fld"+lclass, L("lcl_ins_deel_mjb_score1"), ins_deel_mjb_score1, {suppressEmpty: true});
            ROFIELDTR("fld", L("lcl_ins_deel_mjb_score2"), ins_deel_mjb_score2, {suppressEmpty: true});
        BLOCK_END();
      }

      BLOCK_START("insRunTime", L("lcl_ins_additional_details"), {icon: "fa-cogs"});
        if (uitvoertijd)
          uitvoertijd = uitvoertijd + " " + (uitvoertijd_eenheid == 'D'? L("lcl_mld_days") : L("lcl_mld_hours"))
        ROFIELDTR("fldshort", L("lcl_ins_uitvoertijd"), uitvoertijd, {suppressEmpty: true});
      BLOCK_END();

        // Note: levert op deze manier (soms?) ongeldige html op (tr zonder table)
      generateFlexKenmerkBlock({ urole: urole,
                                 ins_key: ins_key,
                                 srtdeelkey_array: srtdeel_key > 0? [srtdeel_key] : [],
                                 reado: true
                               });
 SUBFRAME_END(); %>
  </body>
</html>
<% ASPPAGE_END(); %>
