<% /*
     $Revision$
     $Id$

     File:          contactpersoonselector.inc
     Description:   Algemene interface functie om een contactpersonen suggestbox te maken
                    Deze moet je kunnen includen en aanroepen.
                    Resulteert dan uiteindelijk in een zichtbaar textveld aangemaakt die de contactpersoonnaam bevat (contactpersoonnaam veld)
                    en een hidden keyveld die de key van de contactpersoon bevat (contactpersoonkey veld).
                    Het contactpersoonnaam veld heeft geen naam en wordt niet meegesubmit.
                    Het contactpersoonkey veld heeft een naam en wordt meegesubmit.
                    Het resultaat heeft de vorm "[<td>label</td><td>]selectveld[</td>]"
    parameters:     fieldName:    veldnaam van het contactpersoonkey veld. Dit veld wordt gesubmit.
                    objectName:   naam van het suggest object dat wordt aangemaakt.
                    params:       object met meegegeven parameters.
                                  contactpersoonKey: initiële key waarde van de contactpersoon die ingevuld moet worden.
                                  label:             label dat voor het contactpersoonnaam 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 contactpersoonnaam veld als ongeldig
                                                     en leeg weergegeven moet worden (true|false(default)).
                                  readonly:          geeft aan of het contactpersoonnaam veld readonly weergegeven moet worden (true|false(default)).
                                  filtercode:        filtercode van extra filter clausule voor initiële waarde
                                  moreinfo:          geeft een extra informatie button achter het suggest veld. Klikken hierop geeft informatie
                                                     over de geselecteerde waarde
                                  suppressEmpty:     niets tonen als suppressEmpty en readonly
*/ %>

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

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

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

  var lwhenEmpty = (params.whenEmpty != null ? params.whenEmpty :  (params.readonly ? L("lcl_select_readonly") : L("lcl_select_contactpersoon")));
  var lcontactpersoonName = (device.test(device.supportsPlaceholder) ? "" : lwhenEmpty);
  var lextraInit = "";
  if (params.contactpersoonKey && params.contactpersoonKey > 0)
  {
    var filtClause = getFiltClauseContactpersoon(params.filtercode);

    sql = "SELECT cp.prs_contactpersoon_key"
        + ", " + S("prs_contactpers_string") + " naam"
        + ", b.prs_bedrijf_naam"
        + " FROM prs_contactpersoon cp"
        + " , prs_bedrijf b"
        + " WHERE cp.prs_bedrijf_key = b.prs_bedrijf_key"
        + " AND cp.prs_contactpersoon_key = " + params.contactpersoonKey
        + filtClause;
    var oRs = Oracle.Execute(sql);
    if (!oRs.eof)
    {
      lcontactpersoonName = oRs("naam").value;
      lextraInit = oRs("prs_bedrijf_naam").value;
    }
  }

  // Bouw de url voor de contactpersoons query op
  var contactpersoonQueryUrl = rooturl+"/appl/shared/suggest/SuggestContactpersoon.asp"
                             + ((typeof params.autlevel != "undefined")? "?autlevel=" + params.autlevel : "?autlevel=-1")
                             + (params.locatiekey? "&loc_key=" + params.locatiekey : "")
                             + (params.filtercode? "&filtcode=" + params.filtercode : "");
  if (params.label)
  { %><tr>
    <td class="label">
      <label class='selector' for="<%=fieldName%>"><%=params.label%>:</label>
     <%=params.moreinfo && !params.readonly ? "<span class='labelextra'><i class='fa fa-info-circle details' onclick='" + objectName + "_contactpersoondetails(\"" + fieldName + "\")'></i></span>" : ""%>
    </td>
    <td>
<%
  } %>
  <nobr>
    <input id="<%=fieldName%>_show" class="fldcontactpers<%=!params.readonly&&params.required? " required" : ""%><%=params.readonly && params.moreinfo ? " details" : ""%>" value="<%=safe.htmlattr(lcontactpersoonName)%>" placeholder="<%=lwhenEmpty%>"
           <%=params.readonly? " readonly" : ""%>
           <%=params.moreinfo && params.readonly ? " onclick='" + objectName + "_contactpersoondetails(\"" + fieldName + "\")'" : "" %>
           <%=params.onChange && !params.readonly? " sgonChange='" + params.onChange + "'" : ""%>>
    <input type="hidden" id="<%=fieldName%>" name="<%=fieldName%>" value="<%=params.contactpersoonKey%>">
    <%=params.moreinfo && !params.readonly && !params.label ? "<i class='fa fa-info-circle details' onclick='" + objectName + "_contactpersoondetails(\"" + fieldName + "\")'></i>" : ""%>

<%  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>
<%
  }
%>

  <script type="text/javascript">
    function <%=objectName%>_contactpersoondetails(fieldName)
    {
        var pkey=$('#'+fieldName)[0].value;
        var pname=$('#'+fieldName+'_show')[0].value;
        if (pkey != -1) {
            FcltMgr.openDetail("appl/prs/prs_contactpersoon.asp?cps_key=" + pkey, pname);
        } else {
            // FcltMgr.alert("Kies eerst een persoon?");
        }
    }
  </script>

<%
  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: "<%=contactpersoonQueryUrl%>",
                                                                initKey: <%=params.contactpersoonKey? params.contactpersoonKey : -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": ""%>
                                                              });
                                  if (FcltMgr.getCaller())
                                  {
                                      $("#<%=fieldName%>_caller").show();
                                  }
                              }
                            )
    </script>
<%
  }
}
%>