<% /*
     $Revision$
     $Id$

     File:               PRS/prs_flexkenmerk.inc
     Description:        Functie die html code genereert voor de presentatie van de flexvelden
     Parameters:         reado          Readonly
                         link_key       prs_key, afd_key
                         srt_key        prs_srt_key
                         niveau         "P",
                         publiconly     als true dan alleen/alle kenmerken tussen 800 en 900 , ongeacht autorisatie
                                        (phonebook gebruik)
                         reado          false,
                         flexcolumns          aantal kolommen voor flexkenmerken
                         prsauthparams  (resultaat van prs.checkAutorisation voor writeman e.d., alleen personen)
     Context:            Functie wordt aangeroepen door
                         1) load_kenmerk.asp
                         2) prs_edit_xxx.asp die initieel serverside deze html code invoegt.
     Note:
*/ %>
<!-- #include file="../Shared/kenmerk_common.inc" -->
<%
function generateFlexKenmerkCode(params)
{
    var link_key = params.link_key; // organisatieding-key (B/A/C/P-key)
    var srt_key = params.srt_key; // soort perslid
    var niveau = params.niveau; // Onroerendgoed niveau (B/A/C/P)
    var advanced = params.advanced; // Geavanceerd
    var reqId = params.reqId; // Perslid key (!search && multiMode)
    var flexcolumns= params.flexcolumns;

    // Voor afdelingen, bedrijven en contactpersonen zijn we heel flexibel
    if (niveau=="B" || niveau=="A" || niveau=="C")
        params.prsauthparams = { writeman: true, writeuse: true, readman: true, readuse: true, readself: true, writeself: true }
    else if (niveau =="P" && !params.prsauthparams) // flex search
    {
       params.prsauthparams = { readman: true, readuse: true, readself: false }
       var authparamsUSE = user.checkAutorisation("WEB_PRSUSE", true)||{PRSreadlevel: 9};
       var authparamsMAN = user.checkAutorisation("WEB_PRSMAN", true)||{PRSreadlevel: 10};
       // Als authparamsMAN en authparamsUSE verschillen zou het heel ingewikkeld worden.
       // Daarom tonen we dan voor de veiligheid geen MAN meer.
       if (authparamsMAN.PRSreadlevel > -1 && authparamsMAN.PRSreadlevel != authparamsUSE.PRSreadlevel)
            params.prsauthparams.readman = false;;
       if (authparamsUSE.PRSreadlevel > -1)
            params.prsauthparams.readuse = false;;
    }
    // Van jezelf mag je vanalles zien.
    if (params.prsauthparams.readself)
        params.prsauthparams.readuse = true;

    function isReadonly (volgnummer)
    {
        if ( params.reado )
            return true;

        if (volgnummer <= 100 && params.prsauthparams.writeman )
            return false; // die mag je bewerken met PRSMAN

        if (volgnummer >= 800 && params.prsauthparams.writeself )
            return false; // die mag ik bewerken

        if (volgnummer >= 100 && params.prsauthparams.writeuse )
            return false; // die mag je bewerken met PRSUSE

        return true; // blijkbaar toch niet...
    }

    // Merk op dat een deel ook al door de query is uitgefilterd
    function isInvisible(volgnummer, ktype)
    {
        if (volgnummer<100 && !params.prsauthparams.readman )
            return true; // Invisible

        // Boven de 900 zijn de kenmerken privacy gevoelig->niet in telefoonboekje
        if (params.publiconly && volgnummer > 900)
            return true; // invisible in telefoonboekje

        if (params.publiconly && volgnummer > 800)
            return false; // sowieso wel *visible* in telefoonboekje, ongeacht autorisatie

        if (volgnummer>100 && !params.prsauthparams.readuse /* incl readself */)
            return true; // Invisible

        return false;
    }

    var authparamsPHB = user.checkAutorisation("WEB_PHONEB", true);

    var sql = "SELECT    k.prs_kenmerk_key              kenmerk_key, "
             + lcl.xsql('k.prs_kenmerk_omschrijving', 'k.prs_kenmerk_key') +" kenmerk_omschrijving, "
             + "         k.prs_kenmerk_kenmerktype      kenmerk_kenmerktype, "
             + "         k.fac_kenmerkdomein_key        kenmerkdomein_key, "
             + "         k.prs_kenmerk_lengte           kenmerk_lengte, "
             + "         k.prs_kenmerk_dec              kenmerk_dec, "
             + "         k.prs_kenmerk_nmin             kenmerk_nmin, "
             + "         k.prs_kenmerk_nmax             kenmerk_nmax, "
             + (link_key > 0
               ? "     (SELECT v.prs_kenmerklink_waarde "
                 + "      FROM prs_kenmerklink v "
                 + "      WHERE v.prs_link_key = " + link_key
                 + "      AND v.prs_kenmerklink_niveau = " + safe.quoted_sql(niveau)
                 + "      AND v.prs_kenmerk_key = k.prs_kenmerk_key "
                 + "      AND v.prs_kenmerklink_verwijder IS NULL)"
               : lcl.xsql('k.prs_kenmerk_default', 'k.prs_kenmerk_key')
               ) + "                                    kenmerk_waarde, "
             + "         k.prs_kenmerk_volgnr           kenmerk_volgnr, "
             + lcl.xsql('k.prs_kenmerk_dimensie', 'k.prs_kenmerk_key') +" kenmerk_dimensie, "
             + lcl.xsql('k.prs_kenmerk_hint', 'k.prs_kenmerk_key') +" kenmerk_hint, "
             + lcl.xsql('k.prs_kenmerk_default', 'k.prs_kenmerk_key') +" kenmerk_default, "
             + "         k.prs_kenmerk_verplicht        kenmerk_verplicht, "
             + "         k.prs_kenmerk_groep            kenmerk_groep, "
             + "         NULL otherpath, "
             + "         k.prs_kenmerk_toonbaar         kenmerk_toonbaar,"
             + "         k.prs_kenmerk_uniek            kenmerk_uniek,"
             + "         k.prs_kenmerk_regexp           kenmerk_regexp"
             + "    FROM prs_kenmerk k "
             + "   WHERE k.prs_kenmerk_niveau = " + safe.quoted_sql(niveau)
             + "     AND k.prs_kenmerk_verwijder IS NULL "
             + "     AND (k.prs_srtperslid_key IS NULL "
             + ((niveau=='P' && srt_key > 0)
               ? " OR k.prs_srtperslid_key = "+ srt_key +")"
               : ")"
               )
             + (!params.prsauthparams.readman?" AND prs_kenmerk_volgnr >= 100":"")
             + (!params.prsauthparams.readuse&&!authparamsPHB?" AND prs_kenmerk_volgnr <= 100":"")
             + (!params.prsauthparams.readuse&&authparamsPHB?" AND prs_kenmerk_volgnr BETWEEN 800 AND 900":"")
             + "   ORDER BY k.prs_kenmerk_volgnr, "
             + lcl.xsql('k.prs_kenmerk_omschrijving', 'k.prs_kenmerk_key');

    var trn = 0;

    listKenmerk(sql,
                "PRS", // Module
                link_key,
                { flexcolumns: flexcolumns,
                  kenmerk_search: advanced,
                  fnIsReadonly: isReadonly,
                  fnIsInvisible: isInvisible,
                  parentKey: link_key, // PF: kan ik me niet voorstellen ??
                  hideVervallen: link_key<0,
                  niveau: niveau,
                  kenmerk_module: niveau,
                  mobile: params.mobile
                }
               );
} %>
