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

     File:               cnt_search.asp
     Description:        Filterscherm voor overzicht contracten
     Parameters:         urole                Rol van de gebruiker (frontend, frontoffice, backoffice, management info)
                         cnt_persoon_key      Naam (contractpartij)
                         comp_key             Uitvoerder
                         dep_key              Afdeling / Eigenaar
                         prs_eig_key          Eigenaar
                         prs_beh_key          Beheerder
                         cnt_key              Contractnummer
                         descript             Beschrijving
                         loc_key              Locatie
                         bld_key              Gebouw
                         srtdeel              Objectsoort
                         disc                 Contractsoort / discipline
                         mantel               Mantel
                         cntAct               Status Actief(0)
                         cntInact             Status Inactief(1)
                         cntNew               Status Nieuw(2)
                         cntTgoe              Status Ter goedkeuring(3)
                         cntFFutu             Fase Toekomstig binnen status actief
                         cntFAct              Fase Actueel binnen status actief
                         cntFRap              Fase Rappel binnen status actief
                         cntFOpz              Fase In opzegtermijn binnen status actief
                         cntFVerl             Fase Verlopen binnen status actief
     Globals:
     Context:
     Note:
*/ %>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/iface.inc" -->
<!-- #include file="../Shared/selector.inc" -->
<!-- #include file="../Shared/afdelingselector.inc" -->
<!-- #include file="../Shared/bedrijfselector.inc" -->
<!-- #include file="../Shared/persoonselector.inc" -->
<!-- #include file="../Shared/plaatsselector.inc" -->
<!-- #include file="../Shared/kostenplaatsselector.inc" -->
<!-- #include file="../Shared/xd.inc" -->
<!-- #include file="../Shared/kostensoortselector.inc" -->

<%
FCLTHeader.Requires({ plugins:["jQuery", "kenmerk"] });

/***** Get webform parameters *****/
var urole = getQParamSafe("urole", "bo");
var fronto = (urole == "fo"); // unused
var backo = (urole == "bo");
var minfo = (urole == "mi");  // unused
var frontend = (urole == "fe" || (!fronto & !backo & !minfo));

//var adv_enabled = getQParam("adv_enabled", 0) == 1;
var cnt_persoon_key = getQParamInt("cnt_persoon_key", -1); // Naam (contractpartij)
var cnt_persoon_omschr = getQParam("cnt_persoon_omschr", ""); // Naam (contractpartij) omschrijving
var comp_key = getQParamInt("comp_key", -1); // Uitvoerder
var comp_omschr = getQParam("comp_omschr", ""); // Uitvoerder omschrijving
var dep_key = getQParamInt("dep_key", -1); // Afdeling / Eigenaar
var prs_eig_key = getQParamInt("prs_eig_key", -1); // Eigenaar
var prs_beh_key = getQParamInt("prs_beh_key", -1); // Beheerder
var cnt_num = getQParam("cnt_key", ""); // Contractnummer (zoekveld, unsafe)
var descript = getQParam("descript", ""); // Beschrijving
var reg_key = getQParamInt("regio_key", -1); // Regio
var dist_key = getQParamInt("district_key", -1);
var loc_key = getQParamInt("locatie_key", -1); // Locatie
var bld_key = getQParamInt("gebouw_key", -1); // Gebouw
var loc_omschr = getQParam("loc_omschr", ""); // Locatie omschrijving
var srtdeel = getQParamInt("srtdeel", -1); // Objectsoort
var disc = getQParamInt("disc", -1); // Contractsoort / discipline
var disc_omschr = getQParam("disc_omschr", ""); // Contractsoort / discipline omschrijving
var mantel = getQParamInt("mantel", -1); // Mantel
var kp_key = getQParamInt("kp_key", -1); // Kostenplaats
var ks_key = getQParamInt("ks_key", -1); // Kostensoort
var alg_startlevel = getQParamInt("alg_startlevel", 2); // Startlevel van plaatsselector (Locatie)
var autosearch = getQParamInt("autosearch", 0) == 1; // Direct lijst tonen

var cntAct = getQParamInt("cntAct", 0) == 1; // Status Actief(0)
var cntInact = getQParamInt("cntInact", 0) == 1; // Status Inactief(1)
var cntNew = getQParamInt("cntNew", 0) == 1; // Status Nieuw(2)
var cntTgoe = getQParamInt("cntTgoe", 0) == 1; // Status Ter goedkeuring(3)

var cntFFutu = getQParamInt("cntFFuto", 0) == 1; // Fase toekomstig binnen status actief
var cntFAct = getQParamInt("cntFAct", 0) == 1; // Fase actueel binnen status actief
var cntFRap = getQParamInt("cntFRap", 0) == 1; // Fase rappel binnen status actief
var cntFOpz = getQParamInt("cntFOpz", 0) == 1; // Fase in opzegtermijn binnen status actief
var cntFVerl = getQParamInt("cntFVerl", 0) == 1; // Fase verlopen binnen status actief

if (!cntNew && !cntTgoe && !cntAct && !cntInact)
{
  cntAct = true; // standard checked
  if (!cntFFutu && !cntFAct && !cntFRap && !cntFOpz)
  {
    cntFFutu = true; // standard checked
    cntFAct = true; // standard checked
    cntFRap = true; // standard checked
    cntFOpz = true; // standard checked
  }
}

var search = getQParamInt("search", 0) == 1;
/***** End get webform parameters *****/

var autfunction = "";
switch(urole)
{
  case "fe": autfunction = "WEB_CNTUSE";
             break;
  case "bo": autfunction = "WEB_CNTMAN";
             break;
}

// Als je geheel geen CNTUSE én geen CNTMAN heb mag je later uiteindelijk nog
// wel de contracten zien waarvan je beheerder/eigenaar bent. Je listboxen en
// dergelijke in het zoek-scherm zullen wel leeg blijven bij gebrek aan scope
var authparams = user.checkAutorisation(autfunction, true) || {};
%>

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

    <script type="text/javascript">
<% if (xd.enabled()) {%>
      function xdclicked()
      {
        var doxd = document.getElementById("xd").checked;
        $(".noxd").toggle(!doxd);
        $(".onlyxd").toggle(doxd);
        iface_toggleSecondarySearchblock(false); // altijd uitschakelen
      }
<% } %>

      function doSubmit()
      {
<% if (xd.enabled()) { %>
        if ($("#xd").is(":checked"))
        {
              $("form[name=u2]").attr("action", "cnt_search_list_xd.asp");
        } else {
              $("form[name=u2]").attr("action", "cnt_search_list.asp");
        }
<% } %>

<%      if (backo)
        { %>
          doSubmitWithKenmerken();
<%      }
        else
        { %>
          document.forms.u2.submit();
<%      } %>
      }

<%    if (backo)
      { %>
        function myModal()
        {
          if ($('#disc').val() == -1)
          {
            alert(L("lcl_cnt_nosrttype_selected"));
            return;
          }

          var key = $('#disc').val();
          var url = "load_kenmerk.asp?disc=" + $('#disc').val()
                  + "&advanced=1";
          var titel = "<%=L("lcl_cnt_kenmerken")%>";
          showKenmerkModal(url, titel)
        }
<%    } %>

      function onChangedKostensrtgrp()
      {
        //sgKs.setValue($("#ks_key").val(), $("#ks_key_show").val(), true, true, null, true);
        // Regel hierboven werkt niet goed omdat CheckExist een get call veroorzaakt om te kijken of waarde bestaat.
        // In de tussentijd verstoort CheckJustOne dit process met een $.getJSON()
        // Dus gewoon Kostensoort leegmaken
        sgKs.setValue(-1, "", true, false, null, true);
        sgKs.CheckJustOne();
      }

      function onChangedDienst()
      {
        //sgComp.setValue($("#sComp_key").val(), $("#sComp_key_show").val(), true, true, null, true);
        // Regel hierboven werkt niet goed omdat CheckExist een get call veroorzaakt om te kijken of waarde bestaat.
        // In de tussentijd verstoort CheckJustOne dit process met een $.getJSON()
        // Dus gewoon Uitvoerende leegmaken
        sgComp.setValue(-1, "", true, false, null, true);
        sgComp.CheckJustOne();
      }
<%    if (autosearch)
      { %>
        $(document).ready(function()
                          {
                            // Direct lijst tonen
                            doSubmit();
                          });
<%    } %>

    </script>
  </head>

<% /* TODO: flexkenmerk filtervelden meegeven tijdens submit */ %>
  <body id="searchbody" onLoad="if (<%=search? 1 : 0%> == 1) document.forms.u2.submit();">
    <div id="search">
      <form name="u2" target="workFrame" action="cnt_search_list.asp" method="post">
        <input type="hidden" name="urole" value="<%=urole%>">
<%    BLOCK_START("searchtable", L("lcl_filterblok"));%>
        <tr>
          <td class="searchkolom1"><!-- start column 1 -->
            <table><!-- x rijen, 2 kolommen: label + veld -->
<%
            if (xd.enabled())
                RWCHECKBOXTR("xd", "fldxd", L("lcl_xd_crossdomain"), false, {html: "onclick='xdclicked()'"});
%>
            <!-- Contractnummer -->
            <tr class="primsearch">
              <td class="label"><label for="cntnum"><%=L("lcl_cnt_intern_nr")%>:</label></td>
              <td><input type="text" class="fldcntnum" name="cntnum" value="<%=safe.htmlattr(cnt_num)%>"></td>
            </tr>

<%            // <!-- Catalogus -->
              sql = "SELECT d.ins_discipline_key, "
                  + lcl.xsqla('d.ins_discipline_omschrijving', 'd.ins_discipline_key')
                  + "  FROM cnt_discipline d"
                  + "     , cnt_disc_params cp"
                  + " WHERE d.ins_discipline_key = cp.cnt_ins_discipline_key"
                  + "   AND d.ins_discipline_verwijder IS NULL"
                  + "   AND d.ins_discipline_key IN"
                    + " (SELECT 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 = " + safe.quoted_sql(autfunction)
                    + "     AND (g.fac_gebruiker_alg_level_read < 9 AND g.fac_gebruiker_prs_level_read < 9)" // prs en alg read rechten
                    + "     AND g.prs_perslid_key = " + user_key + ")"
                  + " ORDER BY UPPER("+lcl.xsql('d.ins_discipline_omschrijving', 'd.ins_discipline_key')+")";
              FCLTselector("disc",
                           sql,
                           { initKey: disc,
                             label: L("lcl_cnt_srttype"),
                             //extraParamValue: "ex_value", // Wordt volgens mij niet gebruikt dus niet nodig.
                             trclass:"primsearch noxd",
                             emptyOption: "",
                             initEmpty: true // Altijd lege waarde tonen, ook als er maar 1 waarde is.
                           });
              RWFIELDTR("disc_omschr", "fld wildcardr", L("lcl_cnt_srttype"), safe.htmlattr(disc_omschr), { trclass: "onlyxd hidden", datatype: "text" });
  %>


            <!-- Beschrijving -->
            <tr class="primsearch">
              <td class="label"><label for="descript"><%=L("lcl_cnt_beschrijv")%>:</label></td>
              <td><input type="text" class="fld" id="descript" name="descript" value="<%=safe.htmlattr(descript)%>"></td>
            </tr>

<% //            <!-- Locatie en gebouw/terrein -->
              FCLTplaatsselector(authparams.ALGreadlevel, { regiokey: reg_key,
                                                            districtkey: dist_key,
                                                            locatiekey: loc_key,
                                                            gebouwkey: bld_key,
                                                            terrein: true,
                                                            startlevel: alg_startlevel,
                                                            eindlevel: 3, // gebouw
                                                            secsearch: 2,
                                                            trclass: "noxd",
                                                            whenEmpty: L("lcl_search_generic")  // want filter
                                                          });

              RWFIELDTR("loc_omschr", "fld wildcardr", L("lcl_location"), safe.htmlattr(loc_omschr), { trclass: "primsearch onlyxd hidden", datatype: "text" });
              FCLTkostenplaatsselector("kp_key",
                                       "kp_key",
                                       user_key,
                                       {label: L("lcl_cnt_kostenplaats"),
                                        kostenplaatsKey: kp_key,
                                        filtercode: "C",
                                        trclass:"secsearch noxd",
                                        whenEmpty: L("lcl_search_generic")  // want filter
                                       });

              // Kostensoortgroep
              sql_ksg = "SELECT ksg.prs_kostensoortgrp_key"
                      + "     , ksg.prs_kostensoortgrp_oms"
                      + "  FROM prs_kostensoortgrp ksg"
                      + " ORDER BY ksg.prs_kostensoortgrp_oms"
              FCLTselector("ksgrp_key",
                           sql_ksg,
                           { initKey: -1,
                             label: L("lcl_cnt_kostensoortgroep"),
                             onChange: "onChangedKostensrtgrp()",
                             trclass:"secsearch noxd",
                             whenEmpty: L("lcl_search_generic"),  // want filter
                             emptyOption: ""
                           });

              if (S("cnt_enable_kostensoort") != 0)
                FCLTkostensoortselector("ks_key",
                                        "sgKs",
                                        {label: L("lcl_cnt_kostensoort"),
                                         kostensoortKey: ks_key,
                                         trclass:"secsearch noxd",
                                         urlAdd: [{urlParam: "ksgrp_key", field: "ksgrp_key"}],
                                         whenEmpty: L("lcl_search_generic")  // want filter
                                        });
%>
            </table>
          </td><!-- end column 1 -->

          <!-- Second column -->
          <td valign=top>
            <table>
            <!-- DIENST -->
<%          sql_dienst = "SELECT prs_dienst_key"
                       + ", " + lcl.xsqla('prs_dienst_omschrijving', 'prs_dienst_key')
                       + " FROM prs_dienst"
                       + " ORDER BY UPPER("+lcl.xsql('prs_dienst_omschrijving', 'prs_dienst_key')+")"
            FCLTselector("dienst",
                         sql_dienst,
                         { initKey: -1,
                           label: L("lcl_prs_companies_dienst"),
                           onChange: "onChangedDienst()",
                           trclass: "noxd",
                           emptyOption: ""
                         });
            RWFIELDTR("cnt_persoon_omschr", "fld wildcardr", L("lcl_cnt_name"), safe.htmlattr(cnt_persoon_omschr), { trclass: "primsearch onlyxd hidden", datatype: "text" });
            // <!-- Bedrijfs-contractpartij -->
            FCLTbedrijfselector("sComp_key", // company uitvoerder
                                  "sgComp",
                                  { companyKey: comp_key,
                                    label: L("lcl_cnt_contractant"),
                                    filtercode: "C",
                                    trclass: "primsearch noxd",
                                    urlAdd: [{urlParam: "dienst", field: "dienst"}],
                                    whenEmpty: L("lcl_search_generic")  // want filter
                                  });
            RWFIELDTR("comp_omschr", "fld wildcardr", L("lcl_cnt_contractant"), safe.htmlattr(comp_omschr), { trclass: "primsearch onlyxd hidden", datatype: "text" });
              // <!-- Persoons-contractpartij -->
            FCLTpersoonselector("sName_key",
                                "sgPerson",
                                { perslidKey: cnt_persoon_key,
                                  label: L("lcl_person"),
                                  filtercode: "CNTN",
                                  trclass: "primsearch noxd",
                                  autlevel: authparams.PRSreadlevel,
                                  whenEmpty: L("lcl_search_generic")  // want filter
                                });
              // <!-- Eigenaar -->
              FCLTafdelingselector("sDept_key", // eigenaar
                                   "sgDept",
                                   { departmentKey: dep_key,
                                     label: L("lcl_cnt_owner"), // Eigenaar, is eigenlijk  afdeling: dep_name_level2
                                     autlevel: authparams.PRSreadlevel,
                                     trclass: "primsearch noxd",
                                     filtercode: "CNT",
                                     whenEmpty: L("lcl_search_generic")  // want filter
                                   });

                if (prs_eig_key > 0)
                {
                  %><input type='hidden' name='sCnt_owner_key' value='<%=prs_eig_key%>'><%
                }
                else
                {
                  // <!-- Verantwoordelijk manager -->
                   FCLTpersoonselector("sCnt_owner_key", // verantwoordelijk manager
                                       "sgCnt_owner",
                                       { //perslidKey: prs_eig_key,
                                         label: L("lcl_cnt_contact_eig"),
                                         filtercode: "CNTE",
                                         trclass: "secsearch noxd",
                                         autlevel: authparams.PRSreadlevel,
                                         whenEmpty: L("lcl_search_generic")  // want filter
                                       });
                }

                if (prs_beh_key > 0)
                {
                  %><input type='hidden' name='sBeh_key' value='<%=prs_beh_key%>'><%
                }
                else
                {
                  // <!-- Beheerder -->
                   FCLTpersoonselector("sBeh_key", // manager
                                       "sgBeh",
                                       { //perslidKey: prs_beh_key,
                                         label: L("lcl_cnt_beheerder"),
                                         filtercode: "CNT",
                                         trclass: "secsearch noxd",
                                         autlevel: authparams.PRSreadlevel,
                                         whenEmpty: L("lcl_search_generic")  // want filter
                                       });
                }

              // <!-- Objectsoort -->
              sql = "SELECT DISTINCT ins_srtdeel_key"
                  + ", "+ lcl.xsqla('ins_srtdeel_omschrijving','s.ins_srtdeel_key')  // || ' (' || ins_srtdeel_code" || ')'
                  + ", ins_srtdeel_upper"
                  + " FROM ins_v_aanwezigsrtdeel s"
                  + ", cnt_contract_object co "
                  + " WHERE co.cnt_ins_srtdeel_key = s.ins_srtdeel_key"
                  + " ORDER BY 3";
              FCLTselector("srtdeel",
                           sql,
                           { initKey: srtdeel,
                             label: L("lcl_obj_sort"),
                             trclass:"secsearch noxd",
                             emptyOption: "",
                             initEmpty: true // Altijd lege waarde tonen, ook als er maar 1 waarde is.
                           });

             // <!-- Mantel -->
             sql = "SELECT cnt_contract_key"
                 + "     , cnt_contract_nummer_intern || '-' || cnt_contract_omschrijving"
                 + " FROM cnt_v_aanwezigcontract c"
                 + "     , cnt_disc_params dp"
                 + "     , cnt_discipline d"
                 + " WHERE c.ins_discipline_key = dp.cnt_ins_discipline_key"
                 + "   AND d.ins_discipline_key = dp.cnt_ins_discipline_key"
                 + "   AND dp.cnt_srtcontract_type = 6"  // mastercontracts
                 + "   AND d.ins_discipline_verwijder IS NULL"
                 + "   AND d.ins_discipline_key IN"
                 + " (SELECT 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_CNTMAN'"
                 + "     AND (g.fac_gebruiker_alg_level_read < 9 AND g.fac_gebruiker_prs_level_read < 9)" // prs en alg read rechten
                 + "     AND g.prs_perslid_key = " + user_key + ")"
                 + " ORDER BY 2";
              FCLTselector("mantel",
                           sql,
                           { initKey: mantel,
                             label: L("lcl_cnt_mantel"),
                             trclass:"secsearch noxd",
                             emptyOption: "",
                             initEmpty: true // Altijd lege waarde tonen, ook als er maar 1 waarde is.
                           });
if (0 && xd.enabled()) {  // Future extension. Ik verwacht dergelijke functionaliteit in het algemeen voor XD, maar eerder nog bij meldingen en opdrachten tbv Behandelaar
%>
        <tr>
          <td class="label hidden xd"><label><%=L("lcl_cnt_mineonly")%>:</label></td>
          <td>
            <div class="statusboxes hidden xd">
              <input type="checkbox" name="zelf" id="zelf" value="1"><label for="zelf"><%=L("lcl_yes")%></label>
           </div>
        </td></tr>
<% } %>
        <!-- Status checkboxen -->
        <tr>
          <td class="label"><label><%=L("lcl_cnt_status")%>:</label></td>
          <td>
            <div class="statusboxes">
                <input type="checkbox" class="fldcntact" name="cntAct" id="cntAct" value="1" <%=cntAct? "checked" : ""%>><label for="cntAct"><%=(S("cnt_contract_approval") == 1? L("lcl_cnt_active_approval") : L("lcl_cnt_active"))%></label>
<% if (S("cnt_contract_approval") == 1) {%>
                <input type="checkbox" class="fldcntnew" name="cntNew" id="cntNew" value="1" <%=cntNew? "checked" : ""%>><label for="cntNew"><%=L("lcl_cnt_new")%></label>
                <input type="checkbox" class="fldcnttgoe" name="cntTgoe" id="cntTgoe" value="1" <%=cntTgoe? "checked" : ""%>><label for="cntTgoe"><%=L("lcl_cnt_forapproval")%></label>
<% }%>
                <input type="checkbox" class="fldcntinact" name="cntInact" id="cntInact" value="1" <%=cntInact? "checked" : ""%>><label for="cntInact"><%=L("lcl_cnt_inactive")%></label>
            </div>
          </td>
        </tr>
            </table>
          </td><!-- end column 2-->
        </tr>
        <tr class="noxd">
            <td colspan="2">
            <div id="statusboxes">
                <label><%=L("lcl_cnt_fase_actief")%>:</label>
                <input type="checkbox" class="fldcntffutu" name="cntFFutu" id="cntFFutu" value="1" <%=cntFFutu? "checked" : ""%>><label for="cntFFutu"><%=L("lcl_cnt_future")%></label>
                <input type="checkbox" class="fldcntfact" name="cntFAct" id="cntFAct" value="1" <%=cntFAct? "checked" : ""%>><label for="cntFAct"><%=L("lcl_cnt_topical")%></label>
                <input type="checkbox" class="fldcntfrap" name="cntFRap" id="cntFRap" value="1" <%=cntFRap? "checked" : ""%>><label for="cntFRap"><%=L("lcl_cnt_warn")%></label>
                <input type="checkbox" class="fldcntfopz" name="cntFOpz" id="cntFOpz" value="1" <%=cntFOpz? "checked" : ""%>><label for="cntFOpz"><%=L("lcl_cnt_cancel")%></label>
                <input type="checkbox" class="fldcntfverl" name="cntFVerl" id="cntFVerl" value="1" <%=cntFVerl? "checked" : ""%>><label for="cntFVerl"><%=L("lcl_cnt_past")%></label>
            </div>
          </td>
        </tr>
        </table>
<%    BLOCK_END();

      buttons = [{title: L("lcl_search"),  action:"doSubmit(0)" },
                 {title: L("lcl_shared_more"),  action:"iface_toggleSecondarySearchblock()", id : "btnMoreLess", xclass: "noxd" }
                ]
      if (backo)
        buttons.push({title: L("lcl_obj_advanced"),  action:"myModal()", xclass: "noxd" });
      CreateButtons(buttons, { entersubmit: true} );
%>
      </form>
    </div><!--search-->

    <div id="result">
      <iframe width="100%" height="100%"
              src="../Shared/empty.html"
              name="workFrame" id="workFrame"
              onload='FcltMgr.iframeLoaded(this)'
              frameborder="0" scrolling="no">
      </iframe>
    </div>

  </body>
</html>
