<% /*
     $Revision$
     $Id$

     File:          artikelgroepselector.inc
     Description:   Algemene interface functie om een artikelgroep suggestbox te maken
                    Deze moet je kunnen includen en aanroepen.
                    Resulteert dan uiteindelijk in een zichtbaar textveld aangemaakt die de artikelgroepen bevat (artikelgroepnaam veld)
                    en een hidden keyveld die de key van de artikelgroep bevat (artikelgroepkey veld).
                    Het artikelgroepnaam veld heeft geen naam en wordt niet meegesubmit.
                    Het artikelgroepkey veld heeft een naam en wordt meegesubmit.
                    Het resultaat heeft de vorm "[<td>label</td><td>]selectveld[</td>]"
    parameters:     fieldName:    veldnaam van het artikelgroepkey veld. Dit veld wordt gesubmit.
                    objectName:   naam van het suggest object dat wordt aangemaakt.
                    params:       object met meegegeven parameters.
                                  artikelgroepKey:   initiële key waarde van de artikelgroep die ingevuld moet worden.
                                  label:             label dat voor het artikelgroepnaam veld wordt weergegeven.
                                  filtercode:        extra filtercode voor de query die gebruikt wordt voor de suggest.
                                  onChange:          onchange op het textveld.
                                  extraParamField:   veldnaam voor een extra hidden parameter veld.
                                  isBad:             boolean die aangeeft dat het artikelgroepnaam veld als ongeldig
                                                     en leeg weergegeven moet worden (true|false(default)).
                                  readonly:          geeft aan of het artikelgroepnaam veld readonly weergegeven moet worden (true|false(default)).
                                  filtercode:        filtercode van extra filter clausule voor initiële waarde
                                  suppressEmpty:     niets tonen als suppressEmpty en readonly
*/ %>

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

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

function FCLTartikelgroepselector(fieldName, objectName, params)
{
  if (typeof params == "undefined") params = {};
  if (!(params.artikelgroepKey && params.artikelgroepKey > 0) && params.readonly && params.suppressEmpty) return;

  var lwhenEmpty = (params.whenEmpty != null ? params.whenEmpty :  (params.readonly ? L("lcl_select_readonly") : L("lcl_select_artikelgroep")));
  var lartikelgroepName = (device.test(device.supportsPlaceholder) ? "" : lwhenEmpty);
  var lextraInit = "";
  if (params.artikelgroepKey && params.artikelgroepKey > 0)
  {
    var filtClause = getFiltClauseArtikelgroep(params.filtercode, params);
    var extraInf = getExtraInfArtikelgroep(params.extracode);

    sql = "SELECT bsg.bes_srtgroep_key"
        + ", " + lcl.xsqla('bes_srtgroep_omschrijving', 'bes_srtgroep_key')
        + extraInf
        + " FROM bes_srtgroep bsg"
        + " WHERE bsg.bes_srtgroep_key = " + params.artikelgroepKey
        + " AND bes_srtgroep_verwijder IS NULL"
        + filtClause;
    var oRs = Oracle.Execute(sql);
    if (!oRs.Eof) // Kan bij bestaande bestelling als tussen aanmaak en opdracht
    {             // artikelgroep is verwijderd.
        lartikelgroepName = oRs("bes_srtgroep_omschrijving").value;
        lextraInit = oRs("extra").value;
    }
    oRs.Close();
  }
  else
  {
    var filtClause = getFiltClauseArtikelgroep(params.filtercode, params);
    var extraInf = getExtraInfArtikelgroep(params.extracode);
    sql = "SELECT COUNT(*) aantal"
        + " FROM bes_srtgroep bsg"
        + " WHERE bsg.bes_srtgroep_verwijder IS NULL"
        + (params.disc_key
          ? " AND bsg.ins_discipline_key = " + params.disc_key
          : "")
        + filtClause;
    var oRs = Oracle.Execute(sql);
    // Als er maar één vakgroep is, dan deze selecteren.
    if (oRs("aantal").value == 1)
    {
      sql = "SELECT bsg.bes_srtgroep_key"
          + ", " + lcl.xsqla('bes_srtgroep_omschrijving', 'bes_srtgroep_key')
          + extraInf
          + " FROM bes_srtgroep bsg"
          + " WHERE bsg.bes_srtgroep_verwijder IS NULL"
          + (params.disc_key
            ? " AND bsg.ins_discipline_key = " + params.disc_key
            : "")
          + filtClause;
      var oRs = Oracle.Execute(sql);
      lartikelgroepName = oRs("bes_srtgroep_omschrijving").value;
      lextraInit = oRs("extra").value;
      params.artikelgroepKey = oRs("bes_srtgroep_key").value;

    }
  }

  // Bouw de url voor de artikelgroepen query op
  var artikelgroepQueryUrl = rooturl+"/appl/shared/suggest/SuggestArtikelgroep.asp?a=1"
                           + (params.filtercode? "&filtcode=" + params.filtercode : "")
                           + (params.showall? "&showall=" + params.showall : "")
                           + (params.disc_key? "&disc_key=" + params.disc_key : "")
                           + (params.extracode? "&extracode=" + params.extracode : "");
  if (params.label)
  { %><tr>
    <td class="label">
      <label class='selector' for="<%=fieldName%>"><%=params.label%>:</label>
    </td>
    <td>
<%
  } %>
  <nobr>
    <input id="<%=fieldName%>_show" class="fldartgroep<%=!params.readonly&&params.required? " required" : ""%>" value="<%=safe.htmlattr(lartikelgroepName)%>" placeholder="<%=lwhenEmpty%>"
           <%=params.readonly? " readonly" : ""%>
           <%=params.onChange && !params.readonly? " sgonChange='" + params.onChange + "'" : ""%>>
    <input type="hidden" id="<%=fieldName%>" name="<%=fieldName%>" value="<%=params.artikelgroepKey%>">

<%  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.label)
  { %>
    </td></tr>
<%
  }

  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: "<%=artikelgroepQueryUrl%>",
                                         initKey: <%=params.artikelgroepKey? params.artikelgroepKey : -1%>,
                                         keyField: $("#<%=fieldName%>")[0],
                                         highlightDescript: true
                                         <%=params.urlAdd? ", urlAdd: " + urlAddTxt : ""%>
                                         <%=params.extraParamField? ", extraParamField: $(\"" + "#" + params.extraParamField + "\")[0]" : ""%>
                                         <%=params.extraParamField? ", initExtraParam: \"" + safe.jsstring("" + lextraInit) + "\"": ""%>
                                         <%=params.isBad? ", isBad: true": ""%>
                                         <%=params.readonly? ", fieldReadonly: true": ""%>
                                       });
       }
      )
    </script>
<%
  }
}
%>