<% /*
     $Revision$
     $Id$

     File:          kostenplaatsselector.inc
     Description:   Algemene interface functie om een kostenplaats suggestbox te maken
                    Deze moet je kunnen includen en aanroepen.
                    Resulteert dan uiteindelijk in een zichtbaar textveld aangemaakt die de kostenplaatsen bevat (afdelingnaam veld)
                    en een hidden keyveld die de key van de kostenplaats bevat (kostenplaatskey veld).
                    Het kostenplaatsnaam veld heeft geen naam en wordt niet meegesubmit.
                    Het kostenplaatskey veld heeft een naam en wordt meegesubmit.
                    Het resultaat heeft de vorm "[<td>label</td><td>]selectveld[</td>]"
     parameters:    fieldName:    veldnaam van het kostenplaatskey veld. Dit veld wordt gesubmit.
                    objectName:   naam van het suggest object dat wordt aangemaakt.
                    params:       object met meegegeven parameters.
                                  kostenplaatsKey:   initiële key waarde van de kostenplaats die ingevuld moet worden.
                                  label:             label dat voor het kostenplaatsnaam veld wordt weergegeven.
                                  filtercode:        extra filtercode voor de query die gebruikt wordt voor de suggest.
                                  onChange:          onchange op het textveld.
                                  trclass:           wordt ook op de <tr> gezet
                                  extraParamField:   veldnaam voor een extra hidden parameter veld.
                                  isBad:             boolean die aangeeft dat het kostenplaats veld als ongeldig
                                                     en leeg weergegeven moet worden (true|false(default)).
                                  readonly:          geeft aan of het kostenplaats veld readonly weergegeven moet worden (true|false(default)).
                                  moreinfo:          unsupported
                                  suppressEmpty      Onderdrukt het veld helemaal indien EN readonly EN leeg
                                  inzage             Alleen de kostenplaatsen tonen waarvoor je inzage rechten hebt.
                                  mine               Kostenplaatsen waarvan ik de budgethouder van de kostenplaatsgroep ben, ook tonen.
                                  checkInit          De initiële waarde (key) moet gecheckt wordten of deze wel gekozen mag/kan worden (heb ik de rechten).
*/ %>

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

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

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

  if (!prs_key) prs_key = user_key;

  var lwhenEmpty = (params.whenEmpty != null ? params.whenEmpty :  (params.readonly ? L("lcl_select_readonly") : L("lcl_select_kostenplaats")));
  var lkostenplaatsName = (device.test(device.supportsPlaceholder) && !params.readonly ? "" : lwhenEmpty);
  var lextraInit = "";
  if (params.kostenplaatsKey && params.kostenplaatsKey > 0)
  {
    //var extraInf = ", 'Extra' extra";
    var extraInf = getExtraInfKostenplaats(params.extracode);
    if (params.checkInit)
    {
      var filt_params = { prs_key: prs_key,
                          //showeigenkp: params.showeigenkp, // Is een urlParam. Wordt nog niet in combinatie met checkInit gebruikt.
                          inzage: params.inzage,
                          mine: params.mine,
                          extraInf: extraInf
                        };
      var filtClause = getFiltClauseKostenplaats(params.filtercode, filt_params);
    }
    else
      var filtClause = {from: "", where: ""};

    var sql = "SELECT k.prs_kostenplaats_key kpkey"
            + "     , " + S("prs_kpn_string") + " kpstring"
            + "     , (SELECT kg.prs_kostenplaatsgrp_oms FROM prs_kostenplaatsgrp kg WHERE kg.prs_kostenplaatsgrp_key = k.prs_kostenplaatsgrp_key) descr"
            + "     , UPPER(" + S("prs_kpn_string") + ") upperkpstring"
            + extraInf
            + " FROM prs_kostenplaats k"
            + filtClause.from
            + " WHERE k.prs_kostenplaats_key = " + params.kostenplaatsKey
            + (params.readonly ? "" : "   AND k.prs_kostenplaats_verwijder IS NULL ")
            + filtClause.where;
    var oRs = Oracle.Execute(sql);
    if (!oRs.eof) {
        lkostenplaatsName = oRs("kpstring").Value;
        lextraInit = oRs("extra").Value
    }
    oRs.close();
  }

  var prsInUrlAdd = false;
  var prsInUrlField = "";
  if (!params.readonly)
  {
    if (params.urlAdd)
    {
      // Initiele urlAddTxt bepalen
      var urlAddTxt = "[";
      for (var i = 0; i < params.urlAdd.length; i++)
      {
        // Als kostenklant initieel niet is aangevinkt (kptoggle.ischecked is false) (en urlParam = "prs_key")
        // dan voor het veld (field) fieldName + "_userkey" nemen (user kostenplaatsen).
        urlAddTxt += (i > 0? ", " : "") + "{ urlParam: \"" + params.urlAdd[i].urlParam
                   + "\", field: \"" + (params.urlAdd[i].urlParam == "prs_key" && params.kptoggle && !params.kptoggle.ischecked? fieldName + "_userkey" : params.urlAdd[i].field) + "\" }";
        if (params.urlAdd[i].urlParam == "prs_key")
        {
          prsInUrlAdd = true;
          prsInUrlField = params.urlAdd[i].field;
        }
      }
      urlAddTxt += "]"
    }
    else if (params.kptoggle)
    { // Geen urlAdd meegegeven maar wel een kostenklant checkbox, dan kan prs_key meegekregen vaste prs_key zijn of user_key
      params.urlAdd = [{ urlParam: "prs_key", field: fieldName + "_userkey" }];
      var urlAddTxt = "[{ urlParam: \"" + params.urlAdd[0].urlParam + "\", field: \"" + params.urlAdd[0].field + "\" }]";
    }
  }

  // Bouw de url voor de kostenplaatsquery op
  // Geen autorisatie bij kostenplaatsen (prs_kostenplaats)
  var kpQueryUrl = rooturl + "/appl/shared/suggest/SuggestKostenplaats.asp?a=1"
                 + (!prsInUrlAdd && !params.kptoggle? "&prs_key=" + prs_key : "")
                 + (params.filtercode? "&filtcode=" + params.filtercode : "")
                 + (params.showall? "&showall=" + params.showall : "")
                 + (params.extracode? "&extracode=" + params.extracode : "")
                 + (params.inzage? "&inzage=1" : "")
                 + (params.mine? "&mine=1" : "");
  if (params.label)
  {
  %><tr <%=params.trclass? "class='" + params.trclass + "'":""%>><td class="label">
      <label class='selector' for="<%=fieldName%>"><%=params.kptoggle? params.label : L("lcl_account")%>:</label>
<%
    if (!params.kptoggle) {
%>
    </td>
    <td>
<%
    }
  }
  // no label
  if (params.kptoggle)
  {
%><span class='labelextra'><%
    CHECKBOX("fldmldkostenklant",
             "kostenklant",
             params.kptoggle.ischecked,
             { html: params.kptoggle && !params.readonly? " onClick='onChangeKk();" + (params.kptoggle.onChange && !params.readonly? params.kptoggle.onChange : "") + "'" : "",
               readonly: params.kptoggle.readonly,
               hidden: params.kptoggle.hidden
             });
%>
    <input type="hidden" id="<%=fieldName%>_userkey" value="<%=user_key%>">
   </span>
<%
    if (params.label) {
%>
    </td>
    <td>
<%
    }
  }
  // Noot: dit hierboven is een wat lousy nestingsconstructie om te ondersteunen
  //   [label vinkje][veld] of [vinkje veld] of [label][veld] of [veld]
   if (params.readonly) { %>
    <span id="<%=fieldName%>_show" class="readonly fldkp">
           <%=safe.html(lkostenplaatsName)%>
    </span>
<% } else { %>
    <input id="<%=fieldName%>_show" class="fldkp<%=!params.readonly&&params.required? " required" : ""%>" value="<%=safe.htmlattr(lkostenplaatsName)%>" placeholder="<%=lwhenEmpty%>"
           <%=params.readonly? " readonly tabindex=-1" : ""%>
           <%=params.onChange && !params.readonly? " sgonChange='" + params.onChange + "'" : ""%>>
<% } %>
        <input type="hidden" id="<%=fieldName%>" name="<%=fieldName%>" value="<%=params.kostenplaatsKey%>">
<%
    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)%>">
<%
    }

  if (!params.readonly)
  {
%>
    <script type="text/javascript">
<%    if (params.kptoggle)
      {
        if (params.urlAdd)
        { %>
          function onChangeKk()
          {
            // De te gebruiken prs_key veranderd als kostenklant is aangepast. Gebruik meegegeven prs_key (AAN) of user_key (UIT)
            if ($("#kostenklant").prop("checked"))
            { // Kostenklant UIT => AAN: Gebruik meegegeven prs_key veld.
              <%=objectName%>.reloadUrlAdd([{ urlParam: "prs_key", field: "<%=prsInUrlField%>" }])
            }
            else
            { // Kostenklant AAN => UIT: Gebruik user_key veld.
              <%=objectName%>.reloadUrlAdd([{ urlParam: "prs_key", field: "<%=fieldName%>_userkey" }])
            }
          }
<%      }
        else // !params.urlAdd
        { %>
          function onChangeKk()
          {
            // De te gebruiken prs_key veranderd als kostenklant is aangepast. Gebruik meegegeven prs_key (AAN) of user_key (UIT)
            if ($("#kostenklant").prop("checked"))
            { // Kostenklant UIT => AAN: Gebruik meegegeven prs_key.
              $("<%=fieldName%>_userkey").val(<%=prs_key%>);
            }
            else
            { // Kostenklant AAN => UIT: Gebruik user_key.
              $("<%=fieldName%>_userkey").val(<%=user_key%>);
            }
          }
<%      }
      } %>

      jQuery(document).ready( function()
                              {
                                <%=objectName%> = new Suggest({ objectName: "<%=objectName%>",
                                                                queryField: $("#<%=fieldName%>_show")[0],
                                                                queryUrl: "<%=kpQueryUrl%>",
                                                                initKey: <%=params.kostenplaatsKey? params.kostenplaatsKey : -1%>,
                                                                icon: "<%= S("currency_icon") %>",
                                                                keyField: $("#<%=fieldName%>")[0]
                                                                <%=params.urlAdd || params.kptoggle? ", urlAdd: " + urlAddTxt : ""%>
                                                                <%=params.extraParamField? ", extraParamField: $(\"" + "#" + params.extraParamField + "\")[0]" : ""%>
                                                                <%=params.extraParamField? ", initExtraParam: \"" + safe.jsstring("" + lextraInit) + "\"": ""%>
                                                                <%=params.isBad? ", isBad: true": ""%>
                                                              });
                              }
                            )
    </script>
<%
  }
  if (params.label)
  { %>
    </td></tr>
<%
  }

}
%>