<% /*
     $Revision$
     $Id$

     File:          stdmeldingselector.inc
     Description:   Algemene interface functie om een standaardmelding suggestbox te maken

    parameters:     fieldName:    veldnaam van het key veld. Dit veld wordt gesubmit.
                    objectName:   naam van het suggest object dat wordt aangemaakt.
                    params:       object met meegegeven parameters.
                                  stdmelding_key:    initiële key waarde van de stdmelding die ingevuld moet worden.
                                  autfunctionKey:    verplicht fac_function_key
                                  perslidKey:        Verplicht: persoon waarvoor melding is, Kan ook met urlAdd meegegeven worden. De waarden wordt dan uit een veld gehaald.
                                  label:             label dat voor het veld wordt weergegeven.
                                  filtercode:        extra filtercode voor de query die gebruikt wordt voor de suggest.
                                  ins_key:           alleen als melding op dit object mogelijk is.
                                  onChange:          onchange op het textveld.
                                  extraParamField:   veldnaam voor een extra hidden parameter veld.
                                  isBad:             boolean die aangeeft dat het veld als ongeldig
                                                     en leeg weergegeven moet worden (true|false(default)).
                                  readonly:          geeft aan of het veld readonly weergegeven moet worden (true|false(default)).
                    TODO: Autoselect als er maar eentje is
*/ %>

<!-- #include file="./Suggest/stdmeldingFilter.inc" -->

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

function FCLTstdmeldingselector(fieldName, objectName, params)
{
  if (typeof params == "undefined") params = {};

  var lstdmeldingName = device.test(device.supportsPlaceholder) ? "" : L("lcl_select_stdmelding");

  // Is er een initiele waarde meegegeven? Zoek dan de omschrijving erbij!

  // Bijvoorbeeld params.perslidKey ook meegeven aan getFiltClauseStdmelding.
  // params.perslidKey kan ook meegegeven worden met urlAdd zodat de waarde uit een veld wordt gehaald
  if (params.urlAdd)
  {
    for (i in params.urlAdd)
    {
      if (params.urlAdd[i].init)
          params[params.urlAdd[i].urlParam] = params.urlAdd[i].init;
    }
  }

  var lextraInit = "";
  var filtClause = getFiltClauseStdmelding(params.filtercode, params, true);
  var extraInf = getExtraInfStdmelding(params.extracode);
  sql = "SELECT COUNT(*) aantal"
      + "  FROM mld_stdmelding sm"
      + ",      mld_discipline di"
      + filtClause.from
      + " WHERE sm.mld_ins_discipline_key = di.ins_discipline_key"
      + filtClause.where;
  var oRs = Oracle.Execute(sql);
  // Als er maar één vakgroep is, dan deze selecteren.
  var justone = (oRs("aantal").value == 1);
  if (oRs("aantal").value == 1)
  {
    sql = "SELECT mld_stdmelding_key,"
        +        lcl.xsqla('sm.mld_stdmelding_omschrijving','sm.mld_stdmelding_key')
        + ",     sm.mld_ins_discipline_key extra"
        + extraInf
        + " FROM mld_stdmelding sm"
        + ",     mld_discipline di"
        + filtClause.from
        + " WHERE sm.mld_ins_discipline_key = di.ins_discipline_key"
        + filtClause.where;
    var oRs = Oracle.Execute(sql);
    lstdmeldingName = oRs("mld_stdmelding_omschrijving").value;
    lextraInit = oRs("extra").value;
    params.stdmelding_key = oRs("mld_stdmelding_key").Value;
    if (params.ins_key > 0) // dan ben ik zeker nieuw
      params.readonly = true;
  }
  // TODO: dit gaat nog niet zo lekker; als ik binnen het kennelijk geldende filter geen Name kan vinden
  //       moet-ie dan bv bad worden getoond? Of wat?

  // Bouw de url voor de melding query op
  var stdmQueryUrl = rooturl + "/appl/shared/suggest/SuggestStdmelding.asp"
                     + "?autfunctionKey=" + params.autfunctionKey
                     + (params.perslidKey > 0? "&perslidKey=" + params.perslidKey : "") // Kan ook met urlAdd meegegeven worden
                     + (params.disc_key > 0? "&disc_key=" + params.disc_key : "")
                     + (params.srtdisc_key > 0? "&srtdisc_key=" + params.srtdisc_key : "")
                     + (params.ins_key > 0? "&ins_key=" + params.ins_key : "")
                     + (params.extracode? "&extracode=" + params.extracode : "")
                     + (params.filtercode? "&filtcode=" + params.filtercode : "");
  if (params.label)
  { %><tr>
    <td class="label">
      <label for="<%=fieldName%>"><%=params.label%>:</label>
        <%=params.moreinfo && S("faq_enabled") == 1? "<span class='"+"labelextra'><i class='fa fa-info-circle details' title='" + safe.htmlattr(L("lcl_faq_items")) + "'onclick='stdmeldingselector.kennisbankitems()'></i></span>" : "" %>
    </td>
    <td>
<%
  } %>
  <nobr>
    <input id="<%=fieldName%>_show" class="fldstdm<%=(!params.readonly && params.required)? " required" : ""%>" value="<%=safe.htmlattr(lstdmeldingName)%>"
           placeholder="<%=L("lcl_select_stdmelding")%>"
           <%=params.readonly? " readonly":""%>
           <%=params.onChange && !params.readonly? " sgonChange='" + params.onChange + "'":""%>
   >
    <input type="hidden" id="<%=fieldName%>" name="<%=fieldName%>" value="<%=params.stdmelding_key%>">
<%
    if (params.extraParamField)
    { /* het extra parameter veld wordt door suggest object gevuld */%>
      <input type="hidden" id="<%=params.extraParamField%>" name="<%=params.extraParamField%>" value="<%=safe.htmlattr(lextraInit)%>">
<%
    } %>
  </nobr>
<%

  if (!params.readonly)
  {
    if (params.urlAdd)
    {
      var urlAddTxt = "[";
      for (var i = 0; i < params.urlAdd.length; i++)
      {
        urlAddTxt += (i > 0? ", " : "") + "{ urlParam: \"" + params.urlAdd[i].urlParam + "\", field: \"" + params.urlAdd[i].field + "\" }";
      }
      urlAddTxt += "]"
    }
%>
    <script type="text/javascript">
      jQuery(document).ready( function()
                              {
                                <%=objectName%> = new Suggest({ objectName: "<%=objectName%>",
                                                                queryField: $("#<%=fieldName%>_show")[0],
                                                                queryUrl: "<%=stdmQueryUrl%>",
                                                                initKey: <%=params.stdmelding_key? params.stdmelding_key : -1%>,
                                                                keyField: $("#<%=fieldName%>")[0]
                                                                <%=params.urlAdd? ", urlAdd: " + urlAddTxt : ""%>
                                                                <%=params.extraParamField? ", extraParamField: $(\"" + "#" + params.extraParamField + "\")[0]" : ""%>
                                                                <%=params.extraParamField? ", initExtraParam: \"" + safe.jsstring("" + lextraInit) + "\"": ""%>
                                                                <%=params.isBad? ", isBad: true": ""%>
                                                                <%=params.readonly? ", fieldReadonly: true": ""%>
                                                                ,highlightDescript: true
                                                              });
<%                              // Indien veld dat meegegeven is met urlAdd niet aanwezig is, dan deze als hidden veld aanmaken en vullen met init waarde.
                                // Beter is om dan de waarde van perslidKey gewoon als parameter mee te geven. Onderstaande code kan dan wellicht weer weg.
                                if (params.urlAdd)
                                {
                                  for (i in params.urlAdd)
                                  { %>
                                    if ($("#<%=params.urlAdd[i].field%>").length == 0)
                                      $("#stdmeldingfields").append('<input type="hidden" id="<%=params.urlAdd[i].field%>" name="<%=params.urlAdd[i].field%>" value="<%=safe.htmlattr(params.urlAdd[i].init)%>">');
<%                                }
                                } %>
<%                              if (params.initOnChange && justone && (params.onChange))
                                { // Als initOnChange en er is 1 waarde dan wordt deze ingevuld. Dan moet ook de onChange() worden uitgevoerd.
%>
                                  <%=params.onChange%>(<%=params.stdmelding_key%>);
<%                              } %>
                              }
                            );

<%    if (params.moreinfo && S("faq_enabled") == 1)
      { %>
        stdmeldingselector =
        {
          kennisbankitems: function()
          {
            var stdm_key=$("#<%=fieldName%>")[0].value;
            if (stdm_key != -1 && $("#<%=params.extraParamField%>").val() > 0)
            {
              FcltMgr.openDetail("appl/fac/fac_faq_search.asp?autosearch=1&urole=bo&stdm_str=" + stdm_key, "<%=L("lcl_faq_kennisbank")%>");
            }
          }
        }
<%    } %>
    </script>
    <div id="stdmeldingfields">
    </div>
<%
  }
  else if (params.initOnChange && justone && params.onChange)
  { /* Ook onChange uitvoeren als initOnChange en readonly met meegegeven waarde */
%>
    <script type="text/javascript">
      jQuery(document).ready( function()
                              {
                                <%=params.onChange%>(<%=params.stdmelding_key%>, "", {suggestid: "<%=fieldName%>_show", init: true});
                              }
                            );
    </script>
<%
  }

  if (params.label)
  { %>
    </td></tr>
<%
  }
  return params; // mogelijk uitgebreid met onze ene stdmelding_key
}
%>