<% /*
    $Revision$
    $Id$

    File:           bez/bez_flexkenmerk.inc
    Description:    Functie die html code genereert voor de presentatie van de flexvelden
    Parameters:     urole                Rol van de gebruiker (frontend, frontoffice, backoffice, management info)
                    reado                Readonly
                    flexcolumns          aantal kolommen voor flexkenmerken
                    advanced             Geadvanceerd
    Context:        Functie wordt aangeroepen door
                    1) load_kenmerk.asp
                    2) bez_edit_xxx.asp die initieel serverside deze html code invoegd.
    Note:           We ondersteunen vooralsnog geen *afspraak* kenmerken maar alleen per bezoeker.
*/ %>
<!-- #include file="../Shared/kenmerk_common.inc" -->
<%
function getSqlBezFlex(bez_key, filter)
{
  var filter = filter || [];
  return sql = "SELECT    k.bez_kenmerk_key              kenmerk_key, "
             + lcl.xsql('k.bez_kenmerk_omschrijving', 'k.bez_kenmerk_key') +" kenmerk_omschrijving, "
             + "         k.bez_kenmerk_kenmerktype      kenmerk_kenmerktype, "
             + "         k.fac_kenmerkdomein_key        kenmerkdomein_key, "
             + "         k.bez_kenmerk_lengte           kenmerk_lengte, "
             + "         k.bez_kenmerk_dec              kenmerk_dec, "
             + "         k.bez_kenmerk_nmin             kenmerk_nmin, "
             + "         k.bez_kenmerk_nmax             kenmerk_nmax, "
             + (bez_key > 0
               ? "     (SELECT v.bez_kenmerkwaarde_waarde "
                 + "      FROM bez_kenmerkwaarde v "
                 + "      WHERE v.bez_bezoekers_key = " + bez_key
                 + "      AND v.bez_kenmerk_key = k.bez_kenmerk_key"
                 + "      AND v.bez_kenmerkwaarde_verwijder IS NULL)"
               : lcl.xsql('k.bez_kenmerk_default', 'k.bez_kenmerk_key')
               ) + "                                    kenmerk_waarde, "
             + "         k.bez_kenmerk_volgnr           kenmerk_volgnr, "
             + lcl.xsql('k.bez_kenmerk_dimensie', 'k.bez_kenmerk_key') +" kenmerk_dimensie, "
             + lcl.xsql('k.bez_kenmerk_hint', 'k.bez_kenmerk_key') +" kenmerk_hint, "
             + lcl.xsql('k.bez_kenmerk_default', 'k.bez_kenmerk_key') +" kenmerk_default, "
             + "         k.bez_kenmerk_verplicht        kenmerk_verplicht, "
             + "         k.bez_kenmerk_groep            kenmerk_groep, "
             + "         NULL otherpath, "
             + "         k.bez_kenmerk_toonbaar         kenmerk_toonbaar,"
             + "         k.bez_kenmerk_uniek            kenmerk_uniek,"
             + "         k.bez_kenmerk_regexp           kenmerk_regexp"
             + "    FROM bez_kenmerk k "
             + "   WHERE k.bez_kenmerk_verwijder IS NULL "
             + (filter.length > 0 ? " AND " + filter.join(" AND ") : "")
             + "ORDER BY k.bez_kenmerk_volgnr, "
             + lcl.xsql('k.bez_kenmerk_omschrijving', 'k.bez_kenmerk_key');
}

function generateFlexKenmerkCode(params)
{
  var bez_key = params.bez_key? params.bez_key : -1; // bez_bezoekers_key
  var reado = params.reado; // Readonly
  var flexcolumns = params.flexcolumns;
  var advanced = params.advanced; // Geavanceerd
  var flexcolumns= params.flexcolumns;
  var prs_key = (params.prs_key? params.prs_key : -1); // Perslid key
  var cont_key = (params.cont_key? params.cont_key : -1); // Contactpersoon key
  var beznum = params.beznum; // Bezoeker nummer
  var requiredbyfield = params.requiredbyfield; // required flexkenmerken is alleen required als veld met name=requiredbyfield is ingevuld
  var flexstart = params.flexstart;
  var flexend = params.flexend;
  var notr = params.notr;
  var ispopup = params.ispopup;
  var nolabel = params.nolabel;
  var tmpfolder = params.tmpfolder;
  var filter = params.filter;

  function isReadonly (volgnummer)  //??
  {   // Backo mag kenmerken < 900 wel zien maar niet wijzigen. Kenmerken > 900 mag hij wel wijzigen.
      // Zie ook load_kenmerk.asp en bez_edit_bezoekers.inc
      if (reado)
        return true
      else
      {
        var backo = !user.has("WEB_BEZFOF");
        return (ispopup && backo && volgnummer < 900)
      }
  }

  var sql = getSqlBezFlex(bez_key, filter);

  var trn = 0;

  listKenmerk(sql,
              "BEZ", // Module
              bez_key,
              { flexcolumns: flexcolumns,
                label_colspan: ((notr || ispopup) ? null : (params.mobile? 1 : (S("bez_sel_contactpersoon") > 0 || S("bez_sel_internpersoon")? 3 : 2)) ),
                kenmerk_search: advanced,
                fnIsReadonly: isReadonly,
                prs_key: prs_key, // Wordt alleen gebruikt als geldt (!kenmerk_search && !multiMode)
                cont_key: cont_key, // Wordt alleen gebruikt als geldt (!kenmerk_search && !multiMode)
                parentKey: bez_key,
                hideVervallen: bez_key < 0,
                nameprefix: "flex" + beznum + "_",
                mobile: params.mobile,
                requiredbyfield: requiredbyfield,
                serie: beznum, // Het serie nummer (onderscheid tussen bezoekers) voor dezelfde serie flexkenmerken
                flexstart: flexstart,
                flexend: flexend,
                notr: notr,
                nolabel: nolabel,
                tmpfolder: tmpfolder
              }
             );
} %>

