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

    Description:    Mobile taakdetailscherm
    Parameters:     vereist ins_key en optioneel deelsrtcont_key
    Note:           Ik vind de werking wat impliciet/schimmig irt deelsrtcont_key.
                    Voor een bestaande inspectie moet nu redundant de ins_key ook
                    worden meegegeven en dat gaat in principe ten koste van de mogelijkheden
*/
%>

<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/selector.inc" -->
<!-- #include file="../mld/mld.inc" -->
<!-- #include file="../ins/ins.inc" -->
<!-- #include file="../ins/ins_flexkenmerksrtcontrole.inc" -->
<!-- #include file="../ins/ins_inspect_list.inc" -->
<!-- #include file="./mobile.inc" -->
<!-- #include file="./iface.inc" -->
<!-- #include file="./resultset_table.inc" -->

<%
// Get parameters
var ins_key = getQParamInt("ins_key", -1);
var today = getQParamInt("today", -1);
var nested = getQParamInt("nested", 0);
nested++;
var alg_ruimte_key = getQParamInt("alg_ruimte_key", -1);
var srtcontrole_key = getQParamInt("srtcontrole_key", -1);
var deelsrtcont_key = getQParamInt("deelsrtcont_key", -1); // Bestaande inspectie
var defaultmode_key = getQParamInt("defaultmode", -1); // Default controlemode

var qry_params = {};

if (alg_ruimte_key > 0)
{
  var sql = "SELECT COALESCE(MIN(ins_deel_key), -1) ins_deel_key"
          + "  FROM ins_v_deelenonderdeel_gegevens dg,"
          + "       ins_srtcontrole sc"
          + " WHERE dg.ins_srtdeel_key = sc.ins_srtinstallatie_key"
          + "    AND (sc.ins_srtcontrole_niveau = 'S'"
          + "     AND sc.ins_srtinstallatie_key = dg.ins_srtdeel_key"
          + "      OR sc.ins_srtcontrole_niveau = 'G'"
          + "     AND sc.ins_srtinstallatie_key = dg.ins_srtgroep_key"
          + "      OR sc.ins_srtcontrole_niveau = 'D'"
          + "     AND sc.ins_srtinstallatie_key = dg.ins_discipline_key)"
          + "     AND (dg.ins_deel_vervaldatum IS NULL OR dg.ins_deel_vervaldatum > TRUNC(SYSDATE))"
          + "    AND dg.alg_ruimte_key = " + alg_ruimte_key;
  var oRs = Oracle.Execute(sql);
  var ins_key = oRs("ins_deel_key").Value;
  oRs.Close();
}

if (ins_key > 0)
{ // Probeer alg_ruimte_key te achterhalen.
  var sql = "SELECT ins_alg_ruimte_key"
          + "  FROM ins_v_deelenonderdeel"
          + " WHERE ins_deel_key = " + ins_key;
  var oRs = Oracle.Execute(sql);
  var alg_ruimte_key = oRs("ins_alg_ruimte_key").Value;
  oRs.Close();

  var vorige_insp_sql = insp.list_sql(ins_key, -1, {past: true, present: false, future: false});
  var oRs_i = Oracle.Execute(vorige_insp_sql);
  var oAr = [];
  while (!oRs_i.eof)
  {
    var rs = { seq: oRs_i("seq").Value
             , insp_dt:  oRs_i("ins_deelsrtcontrole_datum").Value
             , insp_oms: oRs_i("ins_srtcontrole_omschrijving").Value
             };
    oAr.push(rs);
    oRs_i.MoveNext();
  }
  oRs_i.Close();
}

if (ins_key < 0)
{
   shared.simpel_page(L("lcl_pda_ins_noinspect"));
}

var qrc = getQParamInt("qrc", 0) != 0;
var submit = getQParam("submit", "X") == "F";

if (srtcontrole_key < 0)
{ // De soort controles moet vooraf bekend zijn zodat ook de kenmerken direct getoond kunnen worden (niet clientside).
  // Als er meerdere mogelijk zijn, dan eerst een keuze laten maken.
  var sql = "SELECT COUNT (isc.ins_srtcontrole_key) aantal_srtcontoles"
          + "     , MIN(isc.ins_srtcontrole_key) min_srtcontrole_key"
          + "     , id.ins_deel_omschrijving"
          + "  FROM ins_v_deelenonderdeel id"
          + "     , ins_srtdeel s"
          + "     , ins_srtcontrole isc"
          + " WHERE s.ins_srtdeel_key = id.ins_srtdeel_key"
          + "   AND (isc.ins_srtcontrole_niveau = 'S'"
          + "    AND isc.ins_srtinstallatie_key = id.ins_srtdeel_key"
          + "     OR isc.ins_srtcontrole_niveau = 'G'"
          + "    AND isc.ins_srtinstallatie_key = s.ins_srtgroep_key"
          + "     OR isc.ins_srtcontrole_niveau = 'D'"
          + "    AND isc.ins_srtinstallatie_key = id.ins_discipline_key)"
          + "   AND id.ins_deel_key = " + ins_key
          + (today != -1
            ? " AND (TRUNC(FAC.nextcyclusdatedeel (id.ins_deel_key, isc.ins_srtcontrole_key, 1)) <= TRUNC(sysdate) "
              + " OR (SELECT idsc1.ins_deelsrtcontrole_status"
              + "       FROM ins_deelsrtcontrole idsc1"
              + "      WHERE idsc1.ins_deelsrtcontrole_key = (SELECT MAX(idsc2.ins_deelsrtcontrole_key)"
              + "                                               FROM ins_deelsrtcontrole idsc2"
              + "                                              WHERE idsc2.ins_deel_key = id.ins_deel_key"
              + "                                                AND idsc2.ins_srtcontrole_key = isc.ins_srtcontrole_key"
              + "                                                AND idsc2.ins_scenario_key = 1)) < 6"
              + "   )"
            : "")
          + " GROUP BY id.ins_deel_omschrijving";

  var oRs = Oracle.Execute(sql);
  if (oRs.Eof) // er is niets over
  {
    //shared.simpel_page(L("lcl_pda_ins_noinspect"));
    %>
  <html>
    <head>
<%    FCLTMHeader.Generate({}); %>
    </head>
    <body>
      <script>
        // Terug naar de lijst
<%      if (nested > 0)
        { %>
          window.history.go(-<%=nested%>); // Aantal schermen terug.
<%       } %>
      </script>
    </body>
  </html>
<% ASPPAGE_END();
    Response.End;
  }

  var aantal_srtcontoles = oRs("aantal_srtcontoles").Value;
  var ins_deel_omschrijving = oRs("ins_deel_omschrijving").Value;
  if (aantal_srtcontoles == 1)
    srtcontrole_key = oRs("min_srtcontrole_key").Value;
  oRs.close();
}

var this_ins = ins.func_enabled_deel(ins_key,
                                     {srtcont_key: srtcontrole_key,
                                      deelsrtcont_key: deelsrtcont_key
                                     });
// Inplannen kan ik niet op mobile.
// Net als op de desktop mag ik de inspecties zien als je this_ins.canInspShow rechten hebt.
// Ook als je op dit moment geen acties op inspectie kunt uitvoeren zou je de laatste inspectie toch mogen zien.
// Niet alleen kijken naar de (this_ins.canInspStart || this_ins.canInspClose || this_ins.canInspFinish) rechten.
user.auth_required_or_abort(this_ins.canInspShow || this_ins.canDoAnyInspect);

var canMsuEdit = this_ins.canMsuEdit;

if (srtcontrole_key < 0 || defaultmode_key > 0)
{ // Eerst een soort controle bepalen.
  // De default controle mode van de srtcontrole "ins_srtcontrole.ins_controlemode_key" kan ik niet bepalen omdat de srtcontrole_key niet bekend is,
  // of de defaultmode_key is meegegeven en deze waarde overruled de default controle mode van de srtcontrole.
%>
  <html>
    <head>
<%    FCLTMHeader.Generate({}); %>
      <style>
        .prefixcol { height: 40px;
                     background-color: #66C2AF;
                     padding: 7px;
                   }
        .ui-listview > .ui-li-has-thumb > .ui-btn,
        .ui-listview > .ui-li-static.ui-li-has-thumb {
        	min-height: auto;
        	padding-left: 60px;
        }
      </style>
    </head>
    <body>
<%
  PAGE_START();

  var multiactions = [];
  if (defaultmode_key > 0) {
      multiactions.push({ icon: "fa-check", action: "default_inspect", caption: L("lcl_ins_stop") });
  }

  HEADER({
    title: L("lcl_ins_controle_choose_srt") + " (" + ins_deel_omschrijving + ")",
    back: !qrc,
    multiactions: multiactions.length
  });
  CONTENT_START();

  function fncolLink(oRs)
  {
    return "../pda/ins_inspect.asp?qrc=" + (qrc ? 1 : 0) + "&ins_key=" + ins_key + "&srtcontrole_key=" + oRs("ins_srtcontrole_key").Value;
  };

  // Eerst een soort controle bepalen.
  var sql = "SELECT i.ins_srtcontrole_key"
          + "     , " + lcl.xsqla('i.ins_srtcontrole_omschrijving', 'i.ins_srtcontrole_key')
          + "     , i.ctr_discipline_key"
          + "  FROM ( SELECT isc.ins_srtcontrole_key"
          + "              , isc.ins_srtcontrole_eenheid"
          + "              , isc.ins_srtcontrole_omschrijving"
          + "              , id.ins_deel_key"
          + "              , isc.ctr_discipline_key"
          + "              , isc.ins_srtcontrole_eind"
          + "           FROM ins_v_deelenonderdeel id"
          + "              , ins_srtdeel s"
          + "              , ins_srtcontrole isc"
          + "          WHERE s.ins_srtdeel_key = id.ins_srtdeel_key"
          + "            AND (isc.ins_srtcontrole_niveau = 'S'"
          + "            AND isc.ins_srtinstallatie_key = id.ins_srtdeel_key"
          + "             OR isc.ins_srtcontrole_niveau = 'G'"
          + "            AND isc.ins_srtinstallatie_key = s.ins_srtgroep_key"
          + "             OR isc.ins_srtcontrole_niveau = 'D'"
          + "            AND isc.ins_srtinstallatie_key = id.ins_discipline_key)"
          + "            AND id.ins_deel_key = " + ins_key + ") i"
          + "      LEFT JOIN"
          + "        (SELECT xcp.ins_srtcontroledl_xcp_eenheid"
          + "              , xcp.ins_srtcontrole_key"
          + "              , xcp.ins_deel_key"
          + "              , xcp.ins_srtcontroledl_xcp_eind"
          + "           FROM ins_srtcontroledl_xcp xcp"
          + "          WHERE xcp.ins_deel_key = " + ins_key
          + "            AND xcp.ins_scenario_key = 1"
          + "        ) xcp"
          + "      ON     i.ins_deel_key = xcp.ins_deel_key"
          + "         AND i.ins_srtcontrole_key = xcp.ins_srtcontrole_key"
          + " WHERE COALESCE (ins_srtcontroledl_xcp_eenheid, ins_srtcontrole_eenheid) <> 0"
          + "   AND (COALESCE(xcp.ins_srtcontroledl_xcp_eind, i.ins_srtcontrole_eind) IS NULL"
          + "        OR COALESCE(xcp.ins_srtcontroledl_xcp_eind, i.ins_srtcontrole_eind) > TRUNC(SYSDATE, 'DD')" // Vervallen taken niet tonen.
          + "        OR (SELECT idsc1.ins_deelsrtcontrole_status"              // Vervallen taken die nog een inspectie hebben lopen, wel tonen.
          + "              FROM ins_deelsrtcontrole idsc1"
          + "             WHERE idsc1.ins_deelsrtcontrole_key = (SELECT MAX (idsc2.ins_deelsrtcontrole_key)"
          + "                                                      FROM ins_deelsrtcontrole idsc2"
          + "                                                     WHERE idsc2.ins_deel_key = xcp.ins_deel_key"
          + "                                                       AND idsc2.ins_srtcontrole_key = xcp.ins_srtcontrole_key"
          + "                                                       AND idsc2.ins_scenario_key = 1)) != 6)"
          // Alleen de disciplines tonen waar de user rechten op heb.
          + "   AND i.ctr_discipline_key IN (SELECT g.ins_discipline_key"
          + "                                  FROM fac_v_webgebruiker g"
          + "                                     , fac_functie f"
          + "                                 WHERE g.fac_functie_key = f.fac_functie_key"
          + "                                   AND f.fac_functie_code = 'WEB_CTRUSE'"
          + "                                   AND g.fac_gebruiker_prs_level_write < 9"
          + "                                   AND g.fac_gebruiker_alg_level_write < 9"
          + "                                   AND g.prs_perslid_key = " + user_key + ")"
          + (today != -1 ? " AND TRUNC(FAC.nextcyclusdatedeel (i.ins_deel_key, i.ins_srtcontrole_key, 1)) <= TRUNC(sysdate) " : "");

  var rst = new ResultsetTable({sql: sql,
                                keyColumn: "ins_srtcontrole_key",
                                linkColumn: fncolLink,
                                detailColumn: "ins_srtcontrole_omschrijving",
                                multiactions: multiactions,
                                ID: "srtcontroletable",
                                showAll: true,
                                noSearch: true
                                });

  var cnt = rst.processResultset();

  CONTENT_END();
  FOOTER();
  PAGE_END();
%>
    <script>
        function ins_submit_callback(json)
        {
          if (json.success)
          {
            jqToast(L("lcl_mobile_data_saved"));
            FcltMgr.reload({appendurl: "nested=-1"}); // Geen nesting.
          }
        }
        function default_inspect(deelsrtcont_key_arr)
        {
            var data = { ins_keys: <%=ins_key%>,
                         srtcont_key_arr: deelsrtcont_key_arr.join(","),
                         sel_controlemode: <%=defaultmode_key%>,
                         savemode: "C", // Afmelden/Afronden inspectie. (Close).
                         finish: 1      // Inspectie direct afronden.
                       };
            <% protectRequest.dataToken("data"); %>

            $.post("<%=rooturl%>/appl/ins/ins_inspect_save.asp",
                 data,
                 McltCallbackAndThen(ins_submit_callback),
                 "json");

        }
    </script>
<%
}
else
{ // Er is een soort controle key PF: maar niet noodzakelijkerwijs een ins_key eigenlijk
  var sql = "SELECT id.ins_deel_omschrijving"
          + "  FROM ins_deel id"
          + " WHERE id.ins_deel_key = " + ins_key;
  var oRs = Oracle.Execute(sql);
  var subject = oRs("ins_deel_omschrijving").Value;
  oRs.Close();

  var sql = "SELECT idsc.ins_deelsrtcontrole_key"
          + "     , idsc.ins_deelsrtcontrole_status"
          + "     , idsc.ins_controlemode_key"
          + "     , idsc.ins_deelsrtcontrole_opmerking"
          + "     , cd.ins_discipline_omschrijving"
          + "     , isc.ins_srtcontrole_options options"
          + "     , isc.ins_controlemode_key default_controlemode_key"
          + "  FROM ins_srtcontrole isc"
          + "     , ins_deelsrtcontrole idsc"
          + "     , ctr_v_aanwezigdiscipline cd"
          + " WHERE isc.ins_srtcontrole_key = idsc.ins_srtcontrole_key(+)" // Er kan nog voor de eerste keer geinspecteerd moeten worden.
          + "   AND isc.ctr_discipline_key = cd.ins_discipline_key(+)"
          + "   AND idsc.ins_deel_key(+) = " + ins_key                     // PF: lijkt mij alleen indien deelsrtcont_key == -1
          + "   AND isc.ins_srtcontrole_key = " + srtcontrole_key          // PF: lijkt mij alleen indien deelsrtcont_key == -1
          + "   AND idsc.ins_scenario_key(+) = 1"
          + (deelsrtcont_key > 0
            ? "   AND idsc.ins_deelsrtcontrole_key = " + deelsrtcont_key
            : "")
          + " ORDER BY ins_deelsrtcontrole_datum DESC";
  var oRs = Oracle.Execute(sql);
  // Waarden moeten aanwezig zijn. Mocht dat niet zo zijn dan is er iets fout.

  var deelsrtcont_key = oRs("ins_deelsrtcontrole_key").Value != null && oRs("ins_deelsrtcontrole_status").Value != 6? oRs("ins_deelsrtcontrole_key").Value : -1;
  var ins_deelsrtcontrole_status = oRs("ins_deelsrtcontrole_status").Value != null? oRs("ins_deelsrtcontrole_status").Value : -1;
  var sccat = oRs("ins_discipline_omschrijving").Value;
  var isc_options = oRs("options").Value;
  var status_str = "";
  switch (ins_deelsrtcontrole_status)
  {
    case -1:
    case 6:  status_str = L("lcl_ins_controle_new"); // Als status "Voltooid(6)" is, dan nieuwe invoer van inspectie. Voor voltooide inspecties wordt bestand ins_inspect_hist.asp gebruikt.
             break;
    case 0:
    case 2:
    case 3:
    case 5:  status_str = ins.getinspectstatustext(ins_deelsrtcontrole_status);
             break;
  }
  var default_controlemode_key = oRs("default_controlemode_key").Value || -1;
  var ins_controlemode_key = oRs("ins_controlemode_key").Value != null && ins_deelsrtcontrole_status != 6? oRs("ins_controlemode_key").Value : default_controlemode_key;
  var ins_deelsrtcontrole_opmerking = oRs("ins_deelsrtcontrole_opmerking").Value != null && ins_deelsrtcontrole_status != 6? oRs("ins_deelsrtcontrole_opmerking").Value : "";
  oRs.Close();
  %>

  <html>
    <head>
<%    FCLTMHeader.Generate({title: subject}); %>
    </head>
    <body>
<%
      var titletext = (sccat ? sccat + " " + subject: subject);
      PAGE_START();
      HEADER({title: titletext, back: (!qrc||srtcontrole_key>0), home: !qrc});
      CONTENT_START();
        deelsrtcontrole_datum = new Date();
%>
      <script type="text/javascript">
        var inspected_srtcontroles = new Array();
<%
        // Is er op de inspectiedatum of op het inspectieuur al geinspecteerd voor deze objecten?
        sql = "SELECT idsc.ins_deelsrtcontrole_datum"
            + "     , idsc.ins_deelsrtcontrole_key"
            + "     , COALESCE(xcp.ins_srtcontroledl_xcp_eenheid, isc.ins_srtcontrole_eenheid) eenheid"
            + "     , isc.ins_srtcontrole_mode"
            + "  FROM ins_deelsrtcontrole idsc"
            + "     , ins_srtcontrole isc"
            + "     , ins_srtcontroledl_xcp xcp"
            + " WHERE idsc.ins_srtcontrole_key = isc.ins_srtcontrole_key"
            + "   AND idsc.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)"
            + "   AND idsc.ins_deel_key = xcp.ins_deel_key(+)"
            + "   AND idsc.ins_deel_key IN (" + ins_key + ")"
            + "   AND isc.ins_srtcontrole_key = " + srtcontrole_key
            + "   AND idsc.ins_scenario_key = 1"
            + "   AND xcp.ins_scenario_key(+) = 1"
            + "   AND idsc.ins_deelsrtcontrole_status = 6" // Voltooide/Afgeronde inspecties. Lopende inspecties niet meenemen.
            + "   AND COALESCE(isc.ins_srtcontrole_periode, xcp.ins_srtcontroledl_xcp_periode) > 0";
        var oRs = Oracle.Execute(sql);
        while (!oRs.eof)
        {
%>
          inspected_srtcontroles[inspected_srtcontroles.length] = { srtcontrole_key: <%=srtcontrole_key%>,
                                                                    datum: <%=new Date(oRs("ins_deelsrtcontrole_datum").Value).getTime()%>,
                                                                    eenheid: <%=oRs("eenheid").Value%>,
                                                                    mode: <%=oRs("ins_srtcontrole_mode").Value%>
                                                                  };
<%
          oRs.MoveNext();
        }
        oRs.Close();
%>
        function ins_callback(json)
        {
          if (json.success)
          {
            jqToast(L("lcl_mobile_data_saved"));

            if (json.start || json.finish || json.savemode != "E")
              FcltMgr.reload({appendurl: "nested=<%=nested%>"});
          }
        }

        async function ins_submit(action)
        {
          var finish = false;
          var controlemodeField = (action == "E"? ["sel_controlemode"] : null);
          if (!await validateForm("u2", { checkExtraClass: (action == "F"? "mayberequired" : ""), checkNot: controlemodeField }))
            return false;

          if (action == "C" || action == "F")
          { // De uitvoerdatum van de inspectie is nu. Daardoor ligt deze na de laatste uitvoerdatum en niet in de toekomst.
            for (i = 0; i < inspected_srtcontroles.length; i++)
            {
              if (inspected_srtcontroles[i].srtcontrole_key == $("#srtcont_key_arr").val())
              {
                // Controle of er op de inspectiedatum (Vandaag) of op het inspectieuur (Dit uur) al inspecties zijn geweest.
                if (new Date().midnight().getTime() == new Date(parseInt(inspected_srtcontroles[i].datum)).midnight().getTime() &&
                    inspected_srtcontroles[i].eenheid > 0 &&
                    inspected_srtcontroles[i].mode == 0) // Geldt alleen voor momentmodus.
                { // Op dezelfde dag mag niet.
                  alert(L("lcl_ins_double_inspection_today"));
                  return false;
                }
                else if (new Date(new Date().setMinutes(0,0,0)).getTime() == new Date(new Date(parseInt(inspected_srtcontroles[i].datum)).setMinutes(0,0,0)).getTime() &&
                         inspected_srtcontroles[i].eenheid == 0 &&
                         inspected_srtcontroles[i].mode == 0) // Geldt alleen voor momentmodus.
                { // In hetzelfde uur mag niet.
                  alert(L("lcl_ins_double_inspection_hour"));
                  return false;
                }
                else if (new Date(new Date().setSeconds(0, 0)).getTime() == new Date(parseInt(inspected_srtcontroles[i].datum)).getTime() &&
                         inspected_srtcontroles[i].mode == 1)
                { // Een inspectie doen op dezelfde datumtijd (controledatum hetzelfde) mag niet omdat je daarna dan niet meer de volgende inspectie kunt doen.
                  // De geplande _org tijd is dan hetzelfde als de laatste inspectie omdat de volgende inspectie dan niet opgeschoven is.
                  // Inspecties op dezelfde datumtijd moeten dus afgevangen worden.
                  // Dit kan alleen voorkomen in de interval mode.
                  alert(L("lcl_ins_double_inspection"));
                  return false;
                }
              }
            }
          }

          if (action == "F")
          {
            if (<%=ins_deelsrtcontrole_status%> == 5)
            { // Gereed gemelde taak die voltooid moet worden. Alleen opmerking opslaan en status aanpassen.
              var data = { ins_keys: $("#ins_keys").val(),
                           dlsrtcont_key_arr: $("#dlsrtcont_key_arr").val()};

              protectRequest.dataToken(data);
              $.post("<%=rooturl%>/appl/ins/ins_inspect_finish.asp", data, McltCallbackAndThen(ins_callback), "json");
              return;
            }
            else
            {
              finish = true;
              action = "C";
            }
          }

          $("#savemode").val(action); // Vul savemode met "E": Wijzigen (Edit) of "C": Afmelden/Afronden (Close).
          $("#finish").val(finish? 1 : 0); // Inspectie direct wel/niet afronden.

          $.post($("form[name=u2]")[0].action,
                 $("form[name=u2]").serialize(),
                 McltCallbackAndThen(ins_callback),
                 "json");
        }

        async function ins_start()
        { // Controle verplichte velden.
          if (!await validateForm("u2"))
            return false;

          if (confirm(L("lcl_ins_starting")))
          {
            var data = $("form[name=u2]").serialize();
            $.post( "<%=rooturl%>/appl/ins/ins_inspect_start.asp"
                  , data
                  , McltCallbackAndThen(ins_callback)
                  , "json"
                  );
          }
        }

        async function ins_finish()
        { // Controle verplichte velden.
          if (!await validateForm("u2"))
            return false;

          if (confirm(L("lcl_ins_finishing")))
          {
            var data = $("form[name=u2]").serialize();
            $.post( "<%=rooturl%>/appl/ins/ins_inspect_finish.asp"
                  , data
                  , McltCallbackAndThen(ins_callback)
                  , "json"
                  );
          }
        }

        function onChangeSrtControle()
        {
          var s = "../ins/load_kenmerksrtcontrole.asp?srtcont_key=" + $("#srtcont_key_arr").val() + "&mobile=1";
          $.get(s, function (data) { flexReloaded(data, true); });
        }
<%
    if (qrc && submit && nested == 1 && this_ins.canInspFinish)
    {
      var canFinish = false;
      switch (ins_deelsrtcontrole_status)
      {
        case -1:
        case 0:
        case 6: if (this_ins.canInspStart) break;
        case 2:
        case 3:
        case 5: canFinish = true;
                break;
      }
      if (canFinish)
      { %>
        $(function()
        {
          ins_submit("F");
        });
<%
      }
    } %>

      </script>




      <form name="u2" action="../ins/ins_inspect_save.asp?ins_keys=<%=ins_key%>" method="post">
        <input type="hidden" name="ins_keys" id="ins_keys" value="<%=ins_key%>">
        <input type="hidden" name="dlsrtcont_key_arr" id="dlsrtcont_key_arr" value="<%=deelsrtcont_key%>">
        <input type="hidden" name="deelsrtcont_key" id="deelsrtcont_key" value="<%=deelsrtcont_key%>">
        <input type="hidden" name="srtcont_key_arr" id="srtcont_key_arr" value="<%=srtcontrole_key%>">
        <input type="hidden" name="savemode" id="savemode" value="E">
        <input type="hidden" name="finish" id="finish" value="0">
<%      ROFIELD("fld", L("lcl_ins_status"), status_str);

        // Ik wil de vorige controle + opmerking tonen; optie is nog class expired2 toe te voegen als te laat
        // (misschien dat ook al bij de button als er binnen een dag een inspectie moet of zo)
        // Let op: deze datum hangt af van de srtcontrole, als dat er meer dan 1 is vind ik het nu de moeite nog niet waard.
        var sql = "SELECT idsc.ins_deelsrtcontrole_datum"
                + "     , idsc.ins_deelsrtcontrole_opmerking"
                + "     , idsc.ins_deelsrtcontrole_plandatum"
                + "  FROM ins_deelsrtcontrole idsc"
                + " WHERE idsc.ins_deel_key = " + ins_key
                + "   AND idsc.ins_deelsrtcontrole_status = 6"
                + "   AND idsc.ins_scenario_key = 1"
                + " ORDER BY ins_deelsrtcontrole_datum DESC";
        var oRs = Oracle.Execute(sql);
        if (!oRs.eof)
        {
          ROFIELD("fld", L("lcl_ins_controle_last"), toDateTimeString(oRs("ins_deelsrtcontrole_datum").Value) + " " + (oRs("ins_deelsrtcontrole_opmerking").Value || ""), {moreinfo: "#ins-3-"+ins_key});

          var sql = "SELECT idsc.ins_deelsrtcontrole_plandatum"
                  + "  FROM ins_deelsrtcontrole idsc"
                  + " WHERE idsc.ins_deel_key = " + ins_key
                  + "   AND idsc.ins_deelsrtcontrole_status != 6"
                  + "   AND idsc.ins_scenario_key = 1";
          var oRs_p = Oracle.Execute(sql);

          if (!oRs_p.eof && oRs_p("ins_deelsrtcontrole_plandatum").Value != null)
            ROFIELD("fld", L("lcl_opdr_plandate"), toDateTimeString(oRs_p("ins_deelsrtcontrole_plandatum").Value));
          oRs_p.Close();
        }
        oRs.Close();

        sql = "SELECT " + lcl.xsqla('isc.ins_srtcontrole_omschrijving', 'isc.ins_srtcontrole_key')
            + "     , ctr_disc_params_controle_type"
            + "     , ins_srtcontrole_info"
            + "     , ins_srtcontrole_opmerking_text"
            + "  FROM ins_srtcontrole isc"
            + "     , ctr_disc_params cdp"
            + " WHERE ins_srtcontrole_key = " + srtcontrole_key
            + "   AND isc.ctr_discipline_key = cdp.ctr_ins_discipline_key";
        oRs = Oracle.Execute(sql);
        var srtcontrole_oms = oRs("ins_srtcontrole_omschrijving").Value;
        var srtcontrole_type = oRs("ctr_disc_params_controle_type").Value;
        var srtcontrole_info = oRs("ins_srtcontrole_info").Value;
        var srtcontrole_opmerking_txt = oRs("ins_srtcontrole_opmerking_text").Value;
        oRs.Close();

        // Er is geen inplannen van inspecties bij mobiel.
        // Dan taakafhandeling (controle_mode) tonen als:
        // a) De status is "In behandeling(2)" of "Gereed gemeld (5)".
        // b) De status "In behandeling(2)" is uitgeschakeld.
        if (ins_deelsrtcontrole_status == 2 || ins_deelsrtcontrole_status == 3 || ins_deelsrtcontrole_status == 5 || !this_ins.canInspStart)
        {
          ROFIELD("sel_srtcontrole_oms", L("lcl_ins_controle"), srtcontrole_oms, {});

          sql = "SELECT cm.ins_controlemode_key"
              + "     , " + lcl.xsqla('cm.ins_controlemode_oms', 'cm.ins_controlemode_key')
              + "  FROM ins_controlemode cm"
              + " WHERE ins_srtcontrole_type = " + srtcontrole_type;   // modelfoutje? moet langs ctr_disc_params_controle_type?
          FCLTselector("sel_controlemode",
                       sql,
                       { initKey: ins_controlemode_key,
                         label: L("lcl_ins_controle_mode"),
                         emptyOption: L("lcl_select_controlemode"),
                         required: true,
                         mobile: true,
                         readonly: false // Na het starten of indien het starten geen actieve actie is, moet de taakafhandeling altijd in te vullen of te wijzigen zijn.
                       }
                      );

          var insReq = (srtcontrole_opmerking_txt & 1);
          RWFIELD("opmerk", L("lcl_remark"), ins_deelsrtcontrole_opmerking, {multi: true, pclass: (insReq ? " required" : "")});

          generateFlexKenmerkBlock({deelsrtcontrole_key: deelsrtcont_key,
                                    srtcontrole_key: srtcontrole_key,
                                    mobile: true,
                                    submit: (ins_deelsrtcontrole_status == 2 || ins_deelsrtcontrole_status == 3 || ins_deelsrtcontrole_status == 5),
                                    close: (((ins_deelsrtcontrole_status == -1 || ins_deelsrtcontrole_status == 0 || ins_deelsrtcontrole_status == 6) && this_ins.canInspClose) ||
                                            ((ins_deelsrtcontrole_status == 2 || ins_deelsrtcontrole_status == 3) && this_ins.canInspClose)),
                                    finish: this_ins.canInspFinish,
                                    ins_status: ins_deelsrtcontrole_status == 6 && deelsrtcont_key < 0? -1 : ins_deelsrtcontrole_status
                                  });
        }

        CONTROLGROUP_START();
        if (oAr.length > 0)
          BUTTON(L("lcl_ins_controle_previous")+" ("+oAr.length+")", {linkid: "#ins-3-"+ins_key, icon: "fa-list"});

        if (srtcontrole_info)
          BUTTON(L("ins_srtcontrole_info"), {linkid: "#ins-2-"+ins_key, icon: "fa-info"});

        switch (ins_deelsrtcontrole_status)
        {
          case -1:
          case 6:  // Geen inplannen van inspecties bij mobiel.
          case 0:  if (this_ins.canInspStart)
                     BUTTON(L("lcl_ins_start"), {click: "ins_start()", icon: "fa-clock"});
                   else
                   {
                     if (this_ins.canInspClose)
                       BUTTON(L("lcl_ins_close"), {click: "ins_submit('C')", icon: "fa-flag"});
                     if (this_ins.canInspFinish)
                       BUTTON(L("lcl_ins_finish"), {click: "ins_submit('F')", icon: "fa-flag-checkered"});
                   }
                   break;
          case 2:
          case 3:
          case 5:  BUTTON(L("lcl_submit"), {click: "ins_submit('E')", icon: "fa-fclt-save"});
                   if ((ins_deelsrtcontrole_status == 2 || ins_deelsrtcontrole_status == 3) && this_ins.canInspClose)
                     BUTTON(L("lcl_ins_close"), {click: "ins_submit('C')", icon: "fa-flag"});
                   if (this_ins.canInspFinish)
                     BUTTON(L("lcl_ins_finish"), {click: "ins_submit('F')", icon: "fa-flag-checkered"});
                   break;
        }

        if (user.checkAutorisation("WEB_MLDUSE", true))
        {
          var tsql = "SELECT COUNT(m.mld_melding_key) aantal"
                   + "  FROM mld_melding_object mo, mld_melding m"
                   + " WHERE mo.mld_melding_object_verwijder IS NULL"
                   + "   AND mo.mld_melding_key = m.mld_melding_key"
                   + "   AND m.mld_melding_status IN (0, 2, 4, 7)"  // lopende meldingen
                   + "   AND mo.ins_deel_key = " + ins_key;
          var toRs = Oracle.Execute(tsql);
          if (toRs("aantal").Value == 0)
          { // Geen, dan moet ik dus willen toevoegen.
            // 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);
            if (oRs("aantal").Value > 0)
              BUTTON(L("lcl_mobile_newmelding"), {linkid: "./melding.asp?mld_key=-1&ins_key=" + ins_key + "&meldbronkey=10&deelsrtcont_key="+deelsrtcont_key, icon: "fa-plus" });
            oRs.Close();
          }
          else if (toRs("aantal").Value > 0 && user.checkAutorisation("WEB_MLDBOF", true))
          {
            BUTTON(L("lcl_mobile_meldingen") + " (" + toRs("aantal").Value + ")", {linkid: "./mld_list.asp?ins_key=" + ins_key + "&meldbronkey=10&deelsrtcont_key="+deelsrtcont_key, icon: "fa-exclamation-circle"});
          }
          toRs.Close();
        }
        CONTROLGROUP_END();
        IFACE.FORM_END();
  %></form><%
      CONTENT_END();
      FOOTER();
      PAGE_END();
        PAGE_START({id: "ins-2-"+ins_key, dialog: true})
          HEADER({title: srtcontrole_oms, back: true}) ;
          CONTENT_START();
            ROFIELD("fclthtml", "", srtcontrole_info, {multi: true});
          CONTENT_END();
        PAGE_END();

        PAGE_START({id: "ins-3-"+ins_key, dialog: true});
          HEADER({title: L("lcl_ins_controle_previous"), back: true, home: !qrc});
          CONTENT_START();

            function fncolHeader_hist(oRs)
            {
              var srtcontrole = safe.html(oRs("ins_srtcontrole_omschrijving").Value);
              return srtcontrole;
            };
            function fncolLink_hist(oRs)
            {
              qry_params.deelsrtcontrole_key = oRs("ins_deelsrtcontrole_key").Value;
              return "../pda/ins_inspect_hist.asp?ins_key=" + ins_key + "&deelsrtcontrole_key=" + oRs("ins_deelsrtcontrole_key").Value;
            };
            function fnPrefix_hist(oRs)
            {
              var object = safe.html(oRs("ins_deel_omschrijving").Value);
              var titletext = safe.html(oRs("ins_discipline_omschrijving").Value);
              return (titletext ? titletext + " " + object : object);
            };
            function fncolDetail_hist(oRs)
            {
              var objectsoort = safe.html(oRs("ins_srtdeel_omschrijving").Value);

              return objectsoort;
            };
            function fnAside_hist(oRs)
            {
              var inspectie_datum = oRs("ins_deelsrtcontrole_datum").Value;
              var inspectie_eenheid = oRs("eenheid").Value;
              if (inspectie_eenheid == 0)
                var dttxt = toDateTimeString(inspectie_datum);
              else
                var dttxt = toDateString(inspectie_datum);

              return safe.html(dttxt);
            };

            var rst_hist = new ResultsetTable({ sql: vorige_insp_sql,
                                                keyColumn: "ins_deelsrtcontrole_key",
                                                linkColumn:   fncolLink_hist,
                                                subheaderColumn: fnPrefix_hist,
                                                detailColumn: fncolDetail_hist,
                                                headerColumn: fncolHeader_hist,
                                                asideColumn:  fnAside_hist,
                                                ID: "hist_table",
                                                showAll: true,
                                                noSearch: true
                                             });

            var cnt_hist = rst_hist.processResultset();

          CONTENT_END();
        PAGE_END();
}
PDA_PAGE_END(); %>
	</body>
</html>
<% ASPPAGE_END(); %>
