<% /*

    $Revision$
    $Id$

    File:               alg.inc
    Status:
    Description:        defines usefull functions (both serverside and clientside)
    Globals defined:
    Context:
    Note:               Met betrekking tot werkplekken:
                            ALGUSE schrijfrechten==>je mag PRS_WERKPLEK records aanmaken/muteren/verwijderen
                            PRSBOF schrijfrechten==>je mag PRS_PERSLIDWERKPLEK records aanmaken/muteren/verwijderen
                                                    en/of PRS_RUIMTEAFDELING records
                        Met betrekking tot ruimtes
                            ALGMAN schrijfrechten==>je mag ALG_RUIMTE records aanmaken etc.
                            ALGUSE schrijfrechten==>je mag flexkenmerken boven de 100 en afhankelijk van <<== werkt nog niet
                                                     S("alg_ruimtenr_aut_use") ook nog ruimtenummer/omschrijving
    PAS OP: De diverse canWriteRegio etc. functies heten eigenlijk verkeerd.
            RegioInScope etc. zou een beel betere benaming zijn geweest
 */

alg = {
        // merk op: ALGMAN heeft geen PRS-scope, ALGUSE wel maar die negeren we
        checkAutorisation: function (isOptional)
        {
          var autfunction = "WEB_ALGMAN";
          var authparams = user.checkAutorisation(autfunction, true);
          if (authparams) {

            var mALGreadlevel  = authparams.ALGreadlevel;
            var mALGwritelevel = authparams.ALGwritelevel;
          }
          else {
            var mALGreadlevel  = 9;
            var mALGwritelevel = 9;
          }

          var autfunction = "WEB_ALGUSE";
          var authparams = user.checkAutorisation(autfunction, isOptional);
          if (authparams)
          {
            var uALGreadlevel  = authparams.ALGreadlevel;
            var uALGwritelevel = authparams.ALGwritelevel;
          }
          else
          {
            var uALGreadlevel  = 9;
            var uALGwritelevel = 9;
          }

          // From now use the highest authorisations (lowest values)
          var ALGreadlevel  = mALGreadlevel  < uALGreadlevel?  mALGreadlevel : uALGreadlevel ;
          var ALGwritelevel = mALGwritelevel < uALGwritelevel? mALGwritelevel: uALGwritelevel;

          var autfunction = "WEB_RUIMAN";
          var authparams = user.checkAutorisation(autfunction, true);
          if (authparams) {

            var rmALGreadlevel  = authparams.ALGreadlevel;
            var rmALGwritelevel = authparams.ALGwritelevel;
          }
          else {
            var rmALGreadlevel  = 9;
            var rmALGwritelevel = 9;
          }

          var autfunction = "WEB_TERMAN";
          var authparams = user.checkAutorisation(autfunction, true);
          if (authparams) {

            var tmALGreadlevel  = authparams.ALGreadlevel;
            var tmALGwritelevel = authparams.ALGwritelevel;
          }
          else {
            var tmALGreadlevel  = 9;
            var tmALGwritelevel = 9;
          }

          return ({ALGreadlevel: ALGreadlevel, ALGwritelevel: ALGwritelevel,
                   mALGreadlevel: mALGreadlevel, mALGwritelevel: mALGwritelevel,
                   uALGreadlevel: uALGreadlevel, uALGwritelevel: uALGwritelevel,
                   rmALGreadlevel: rmALGreadlevel, rmALGwritelevel: rmALGwritelevel,
                   tmALGreadlevel: tmALGreadlevel, tmALGwritelevel: tmALGwritelevel
                   });
        },


        func_enabled: function alg_func_enabled (alg_key, p_onrgoedlvl)
        {
            var onrgoedlvl = (p_onrgoedlvl ? p_onrgoedlvl.toUpperCase() : "");
            if (alg_key < 0 ||
                onrgoedlvl == "G" || onrgoedlvl == "T" || onrgoedlvl == "V" || onrgoedlvl == "R")
            {
                var rresult = user.func_enabled("ALG",
                                                null, // geen disciplines
                                                alg_key,
                                                null); // nooit prs-scope

                var autfunctionMAN = "WEB_ALGMAN";
                var autfunctionUSE = "WEB_ALGUSE";
                switch (onrgoedlvl)
                {
                    case "T": autfunctionMAN = "WEB_TERMAN";
                              break;
                    case "R": autfunctionMAN = "WEB_RUIMAN";
                              autfunctionUSE = "WEB_RUIUSE";
                              break;
                }

                // Met ALG* bepaal je wat je ziet (Read).
                rresult.readman  = rresult.canRead (autfunctionMAN);
                rresult.readuse = rresult.canRead (autfunctionUSE);
                // Met RUI* en TER* bepaal je wat je kunt wijzigen (Write).
                rresult.readmgt = rresult.canRead("WEB_ALGMGT");
                rresult.writemgt = rresult.canWrite("WEB_ALGMGT");
                rresult.writeman = rresult.canWrite(autfunctionMAN);
                rresult.writeuse = rresult.canWrite(autfunctionUSE);
            }
            else // iets meer werk
            {
                var rresult = user.func_enabled("ALG",
                                   null, // geen disciplines
                                   null, // deze werkt niet voor alg_key van regio's, districten en locaties
                                   null); // nooit prs-scope

                var sql= "SELECT -1 FROM DUAL"; // hoe 'ver' weg is alg_key?
                switch (onrgoedlvl)
                {
                    case "L":
                            sql = "SELECT MAX(niveau) FROM fac_v_my_locations "
                                + "WHERE prs_perslid_key = " + user_key
                                + " AND alg_locatie_key = " + alg_key;
                            break;
                    case "D":
                            sql = "SELECT MAX(niveau) FROM fac_v_my_districts "
                                + "WHERE prs_perslid_key = " + user_key
                                + " AND alg_district_key = " + alg_key;
                            break;
                    case "E":
                            sql = "SELECT MAX(niveau) FROM fac_v_my_regions "
                                + "WHERE prs_perslid_key = " + user_key
                                + " AND alg_regio_key = " + alg_key;
                            break;
                }
                var oRs = Oracle.Execute(sql);
                var level = (oRs(0).Value==null)?-1:oRs(0).Value;
                oRs.Close();

                rresult.readmgt = rresult.authparams("WEB_ALGMGT").ALGreadlevel <= level;
                rresult.writemgt = rresult.authparams("WEB_ALGMGT").ALGwritelevel <= level;
                rresult.readman = rresult.authparams("WEB_ALGMAN").ALGreadlevel <= level;
                rresult.writeman = rresult.authparams("WEB_ALGMAN").ALGwritelevel <= level;
                rresult.readuse = rresult.authparams("WEB_ALGUSE").ALGreadlevel <= level;
                rresult.writeuse = rresult.authparams("WEB_ALGUSE").ALGwritelevel <= level;
            }
            rresult.canCndAggr = rresult.writeuse;
            rresult.canReadNotes = (rresult.readuse || rresult.readman);
            rresult.canWriteNotes = rresult.canReadNotes;
            return rresult;
        },

        canWriteRegio: function (pregio_key, pniveau)
        {
          if (pniveau <= -1)
          {
          return true;
          }
          else
          {
            var sql = "SELECT alg_regio_key FROM fac_v_my_regions "
                    + "WHERE prs_perslid_key = " + user_key
                    + " AND alg_regio_key = " + pregio_key
                    + " AND niveau = " + pniveau;

            var oRs = Oracle.Execute(sql);
            var res = !oRs.eof;
            oRs.Close();
            return (res);
            }
        },

        canWriteDistrict: function (pdistrict_key, pniveau)
        {
          if (pniveau <= -1)
          {
          return true;
          }
          else
          {
            var sql = "SELECT alg_district_key FROM fac_v_my_districts "
                    + "WHERE prs_perslid_key = " + user_key
                    + " AND alg_district_key = " + pdistrict_key
                    + " AND niveau = " + pniveau;

            var oRs = Oracle.Execute(sql);
            var res = !oRs.eof;
            oRs.Close();
            return (res);
            }
        },

        canWriteLocatie: function (plocatie_key, pniveau)
        {
          if (pniveau <= -1)
          {
          return true;
          }
          else
          {
            var sql = "SELECT alg_locatie_key FROM fac_v_my_locations "
                    + "WHERE prs_perslid_key = " + user_key
                    + " AND alg_locatie_key = " + plocatie_key
                    + " AND niveau = " + pniveau;

            var oRs = Oracle.Execute(sql);
            var res = !oRs.eof;
            oRs.Close();
            return (res);
          }
        },

        canWriteGebouw: function (pgebouw_key, pniveau)
        {
          if (pniveau <= -1)
          {
            return true;
          }
          else
          {
            var sql = "SELECT alg_gebouw_key FROM fac_v_my_buildings "
                    + "WHERE prs_perslid_key = " + user_key
                    + " AND alg_gebouw_key = " + pgebouw_key
                    + " AND niveau = " + pniveau;

            var oRs = Oracle.Execute(sql);
            var res = !oRs.eof;
            oRs.Close();
            return (res);
        }
        },

        canWriteVerdieping: function (pverdieping_key, pniveau)
        {
          if (pniveau <= -1)
          {
            return true;
          }

          else
          {
            var sql = "SELECT alg_verdieping_key FROM fac_v_my_floors "
                    + "WHERE prs_perslid_key = " + user_key
                    + " AND alg_verdieping_key = " + pverdieping_key
                    + " AND niveau = " + pniveau;

            var oRs = Oracle.Execute(sql);
            var res = !oRs.eof;
            oRs.Close();
            return (res);
          }
        },

        canWriteRuimte: function (pruimte_key, pniveau)
        {
          if (pniveau <= -1)
          {
            return true;
          }
          else
          {
            var sql = "SELECT alg_ruimte_key FROM fac_v_my_rooms "
                    + "WHERE prs_perslid_key = " + user_key
                    + " AND alg_ruimte_key = " + pruimte_key
                    + " AND niveau = " + pniveau

            var oRs = Oracle.Execute(sql);
            var res = !oRs.eof;
            oRs.Close();
            return (res);
          }
        },

        alg_gebouwinfo: function _alg_gebouw(alg_gebouw_key)
        {
          var sql = "SELECT g.alg_gebouw_naam"
                  + "     , g.alg_gebouw_toon_telefoon"
                  + "     , g.alg_gebouw_toon_email"
                  + "     , g.alg_gebouw_toon_kenteken"
                  + "     , g.alg_gebouw_code"
                  + "     , g.alg_gebouw_omschrijving"
                  + "     , g.alg_srtgebouw_key"
                  + "     , g.prs_kostenplaats_key"
                  + "     , g.mld_adres_key"
                  + "     , g.alg_gebouw_opmerking"
                  + "     , g.alg_gebouw_ordernr"
                  + "     , g.alg_gebouw_bez"
                  + "     , g.alg_gebouw_mld"
                  + "     , g.alg_locatie_key"
                  + "     , k.prs_kostenplaats_module"
                  + "     , " + S("prs_kpn_string") + " kpstring"
                  + "     , " + S("prs_pers_string") + " budgethouder"
                  + "     , p.prs_perslid_key"
                  + "     , COALESCE(g.alg_gebouw_beginuur, -1) alg_gebouw_beginuur"
                  + "     , COALESCE(g.alg_gebouw_einduur, -1) alg_gebouw_einduur"
                  + "     , mld_vrije_dagen_id"
                  + "  FROM alg_gebouw g"
                  + "     , prs_kostenplaats k"
                  + "     , prs_perslid p"
                  + " WHERE g.prs_kostenplaats_key = k.prs_kostenplaats_key(+)"
                  + "   AND k.prs_perslid_key = p.prs_perslid_key(+)"
                  + "   AND g.alg_gebouw_key = " + alg_gebouw_key;
          var oRs = Oracle.Execute(sql);

          var result = {};
          if (!oRs.eof)
          {
            result = { alg_gebouw_key: alg_gebouw_key,
                       alg_gebouw_naam: oRs("alg_gebouw_naam").Value,
                       alg_gebouw_toon_telefoon: oRs("alg_gebouw_toon_telefoon").Value,
                       alg_gebouw_toon_email: oRs("alg_gebouw_toon_email").Value,
                       alg_gebouw_toon_kenteken: oRs("alg_gebouw_toon_kenteken").Value,
                       alg_gebouw_code: oRs("alg_gebouw_code").Value,
                       alg_gebouw_omschrijving: oRs("alg_gebouw_omschrijving").Value,
                       alg_srtgebouw_key: oRs("alg_srtgebouw_key").Value,
                       alg_kostenplaats_key: oRs("prs_kostenplaats_key").Value,
                       mld_adres_key: oRs("mld_adres_key").Value,
                       alg_gebouw_opmerking: oRs("alg_gebouw_opmerking").Value,
                       alg_gebouw_ordernr: oRs("alg_gebouw_ordernr").Value,
                       alg_gebouw_bez: oRs("alg_gebouw_bez").Value == "1",
                       alg_gebouw_mld: oRs("alg_gebouw_mld").Value == "1",
                       alg_locatie_key: oRs("alg_locatie_key").Value,
                       kostenplaats_omschrijving: oRs("kpstring").Value,
                       kostenplaats_module: oRs("prs_kostenplaats_module").Value,
                       kostenplaats_budgethouder_key: oRs("prs_perslid_key").Value,
                       kostenplaats_budgethouder: oRs("budgethouder").Value,
                       gebouw_beginuur: oRs("alg_gebouw_beginuur").Value,
                       gebouw_einduur: oRs("alg_gebouw_einduur").Value,
                       vrije_dagen: {id: oRs("mld_vrije_dagen_id").Value}
                     };
          }
          oRs.Close();
          if (result.vrije_dagen.id && result.vrije_dagen.id.toUpperCase() != "DEFAULT")
          {
            var vrije_dagen_alt = [];
            var sql = "SELECT mld_vrije_dagen_datum"
                    + "  FROM mld_vrije_dagen"
                    + " WHERE mld_vrije_dagen_id = " + safe.quoted_sql(result.vrije_dagen.id);
            var oRs = Oracle.Execute(sql);
            while (!oRs.eof)
            {
              vrije_dagen_alt.push((new Date(oRs("mld_vrije_dagen_datum").Value)).getTime());
              oRs.MoveNext();
            }
            oRs.Close();
            if (vrije_dagen_alt.length)
              result.vrije_dagen.alt = vrije_dagen_alt;
          }

          return result;
        },

        alg_terreinsectorinfo: function _alg_terreinsector(alg_terreinsector_key)
        {
          var sql = "SELECT g.alg_terreinsector_naam"
                  + ", g.alg_terreinsector_code"
                  + ", g.alg_terreinsector_omschrijving"
                  + ", g.alg_srtterreinsector_key"
                  + ", g.prs_kostenplaats_key"
                  + ", g.alg_terreinsector_ordernr"
                  + ", g.alg_locatie_key"
                  + ", k.prs_kostenplaats_module"
                  + ", " + S("prs_kpn_string") + " kpstring"
                  + ", " + S("prs_pers_string") + " budgethouder"
                  + ", p.prs_perslid_key"
                  + " FROM alg_terreinsector g"
                  + ", prs_kostenplaats k"
                  + ", prs_perslid p"
                  + " WHERE g.prs_kostenplaats_key = k.prs_kostenplaats_key"
                  + " AND k.prs_perslid_key = p.prs_perslid_key"
                  + " AND g.alg_terreinsector_key = " + alg_terreinsector_key;
          var oRs = Oracle.Execute(sql);

          var result = {};
          if (!oRs.eof)
          {
            result = { alg_terreinsector_key: alg_terreinsector_key,
                       alg_terreinsector_naam: oRs("alg_terreinsector_naam").Value,
                       alg_terreinsector_code: oRs("alg_terreinsector_code").Value,
                       alg_terreinsector_omschrijving: oRs("alg_terreinsector_omschrijving").Value,
                       alg_srtterreinsector_key: oRs("alg_srtterreinsector_key").Value,
                       alg_kostenplaats_key: oRs("prs_kostenplaats_key").Value,
                       alg_terreinsector_ordernr: oRs("alg_terreinsector_ordernr").Value,
                       alg_locatie_key: oRs("alg_locatie_key").Value,
                       kostenplaats_omschrijving: oRs("kpstring").Value,
                       kostenplaats_module: oRs("prs_kostenplaats_module").Value,
                       kostenplaats_budgethouder_key: oRs("prs_perslid_key").Value,
                       kostenplaats_budgethouder: oRs("budgethouder").Value
                     };
          }
          oRs.Close();

          return result;
        },

        func_enabled_ruimte: // Wat mag ik zoal op deze specifieke ruimte?
          function _func_enabled_ruimte(pruimte_key) // kan ook gebruikt worden met verdieping_key
          {
            // WEB_PRSBOF is onderdeel van de PRS module
            var aresult = user.func_enabled("PRS",
                                            -1, // ins_discipline_key
                                            pruimte_key, // alg_key
                                            user_key, // prs_key
                                            false, // checkOptimistic
                                            true); // isOptional

            aresult.canPRSBOFwrite  = aresult.canWrite("WEB_PRSBOF"); // werkplekbeheer

            return aresult;
          },

        calc_algm2:  function _calc_algm2(alg_key, lvl)
        {
          var sql = "SELECT SUM (alg_ruimte_bruto_vloeropp) opp1, "
                  + "       MAX(alg_verdieping_bruto_vloeropp) opp_bruto, "
                  + "       SUM (alg_ruimte_opp_alt1) opp2, "
                  + "       SUM (alg_ruimte_opp_alt2) opp3 "
                  + "  FROM alg_v_aanwezigruimte r, alg_verdieping v "
                  + " WHERE v.alg_verdieping_key = r.alg_verdieping_key(+)";

          if (lvl == "G") {
            sql += "   AND alg_gebouw_key = " + alg_key
          } else if (lvl == "V") {
            sql += "   AND v.alg_verdieping_key = " + alg_key
          }
          sql += " GROUP BY v.alg_verdieping_key";

          if (lvl == "G") {
            sql = "SELECT SUM(opp1) opp1"
                + "     , SUM(opp_bruto) opp_floors"
                + "     , SUM(opp2) opp2"
                + "     , SUM(opp3) opp3"
                + "  FROM (" + sql + ")";
          }
          var oRs = Oracle.Execute(sql);

          var algm2 = { opprooms: oRs("opp1").Value, oppalt1: oRs("opp2").Value, oppalt2: oRs("opp3").Value }

          if (lvl == "V") {
            algm2.oppfloor = oRs("opp_bruto").Value;
          } else if (lvl == "G") {
            algm2.oppfloors = oRs("opp_floors").Value;
          }

          oRs.Close();

          return algm2;
        },

        alg_onroerendgoed_flex_params: function(p_niveau, p_inlijst)
        {
          var sql = "SELECT DISTINCT " + lcl.xsqla("k.alg_kenmerk_omschrijving", "k.alg_kenmerk_key")
                  + "     , k.alg_kenmerk_kenmerktype"
                  + "  FROM alg_kenmerk k"
                  + " WHERE (BITAND(alg_kenmerk_inlijst, " + (p_inlijst? p_inlijst : 1) + ") = " + (p_inlijst? p_inlijst : 1) + ")"
                  + "   AND (BITAND(alg_kenmerk_systeem, 4) = 0 OR k.alg_kenmerk_systeem IS NULL)"
                  + "   AND k.alg_kenmerk_niveau = " + safe.quoted_sql_upper(p_niveau)
                  + "   AND k.alg_kenmerk_verwijder IS NULL";
          var oRs = Oracle.Execute(sql);
          var v_flexParams = { anyflex: !oRs.eof};

          if (v_flexParams.anyflex)
          {
            var multiflex = false;
            v_flexParams.bijlageflex = (oRs("alg_kenmerk_kenmerktype").Value == "M");
            v_flexParams.flexlabel = oRs("alg_kenmerk_omschrijving").Value;
            oRs.MoveNext();
            if (!oRs.eof)
            {
              multiflex = true;
              v_flexParams.flexlabel = L("lcl_flexlist_alg_" + p_niveau.toLowerCase());
              while (!oRs.eof)
              {
                if (oRs("alg_kenmerk_kenmerktype").Value == "M")
                  v_flexParams.bijlageflex = true;
                oRs.MoveNext();
              }
            }
          }
          oRs.Close();

          var onrgoed_fld = "";
          switch (p_niveau)
          {
            case "E": onrgoed_fld = "e.alg_regio_key"; break;
            case "D": onrgoed_fld = "d.alg_district_key"; break;
            case "L": onrgoed_fld = "l.alg_locatie_key"; break;
            case "T": onrgoed_fld = "g.alg_terreinsector_key"; break;
            case "G": onrgoed_fld = "g.alg_gebouw_key"; break;
            case "V": onrgoed_fld = "v.alg_verdieping_key"; break;
            case "R": onrgoed_fld = "r.alg_ruimte_key"; break;
          }
          v_flexParams.sql = (v_flexParams.anyflex
                             ? ", (SELECT LISTAGG(" + (multiflex
                                                       ? lcl.xsql("k.alg_kenmerk_omschrijving", "k.alg_kenmerk_key") + " || ':' || chr(160) || "
                                                       : "")
                               + "                 CASE WHEN k.alg_kenmerk_kenmerktype = 'R' OR k.alg_kenmerk_kenmerktype = 'r' OR k.alg_kenmerk_kenmerktype = 'S'"
                               + "                      THEN flx.getdomeinwaarde(k.fac_kenmerkdomein_key, km.alg_onrgoedkenmerk_waarde)"
                               + "                      WHEN (  (   k.alg_kenmerk_kenmerktype = 'N'"
                               + "                              AND k.alg_kenmerk_lengte = 1"
                               + "                              AND k.alg_kenmerk_nmin = 0"
                               + "                              AND k.alg_kenmerk_nmax = 1"
                               + "                              AND (k.alg_kenmerk_dec = 0 OR k.alg_kenmerk_dec IS NULL)"
                               + "                              )"
                               + "                           OR (k.alg_kenmerk_kenmerktype = 'V')"
                               + "                           )"
                               + "                      THEN DECODE( km.alg_onrgoedkenmerk_waarde"
                               + "                                 , 0, " + safe.qL("lcl_check_0")
                               + "                                 , 1, " + safe.qL("lcl_check_1")
                               + "                                 , km.alg_onrgoedkenmerk_waarde"
                               + "                                 )"
                               + "                      ELSE km.alg_onrgoedkenmerk_waarde"
                               + "                 END"
                               + "               , CHR(13)"
                               + "               )"
                               + "        WITHIN GROUP (ORDER BY k.alg_kenmerk_volgnr)"
                               + "   FROM alg_kenmerk k"
                               + "      , alg_onrgoedkenmerk km"
                               + "  WHERE km.alg_onrgoed_key = " + onrgoed_fld
                               + "    AND km.alg_onrgoed_niveau = " + safe.quoted_sql_upper(p_niveau)
                               + "    AND k.alg_kenmerk_key = km.alg_kenmerk_key"
                               + "    AND (BITAND(k.alg_kenmerk_inlijst, " + (p_inlijst? p_inlijst : 1) + ") = " + (p_inlijst? p_inlijst : 1) + ")"
                               + "    AND (BITAND(k.alg_kenmerk_systeem, 4) = 0 OR k.alg_kenmerk_systeem IS NULL)" //  -- niet als vertrouwelijk
                               + "    AND k.alg_kenmerk_verwijder IS NULL"
                               + "    AND km.alg_onrgoedkenmerk_verwijder IS NULL"
                               + ") algflex"
                             : ""
                             )
          return v_flexParams;
        },

        alg_onroerendgoed_flex_bijlagen: function(p_niveau, p_alg_key, p_inlijst)
        {
          var bijlagen_aantal = 0;
          var bijlagen_oms = "";
          var bijlagen_lijst = [];
          var sql_k = "SELECT k.alg_kenmerk_key"
                    + "     , " + lcl.xsqla("k.alg_kenmerk_omschrijving", "k.alg_kenmerk_key")
                    + "  FROM alg_kenmerk k"
                    + " WHERE BITAND(k.alg_kenmerk_inlijst, " + (p_inlijst? p_inlijst : 1) + ") = " + (p_inlijst? p_inlijst : 1)
                    + "   AND k.alg_kenmerk_verwijder IS NULL"
                    + "   AND k.alg_kenmerk_kenmerktype= 'M'"
                    + "   AND k.alg_kenmerk_niveau = " + safe.quoted_sql_upper(p_niveau);
          var oRs_k = Oracle.Execute(sql_k);
          while (!oRs_k.eof)
          {
            var kenmerk_key = oRs_k("alg_kenmerk_key").Value;
            var bijlagen_oms = oRs_k("alg_kenmerk_omschrijving").Value;
            var bestanden = flexProps("ALG", p_alg_key, kenmerk_key, "A", {getFiles: true});
            var km_aantal = bestanden.files.length;
            for (var i=0; i<km_aantal; i++)
            {
              bijlagen_lijst.push(bestanden.files[i].name);
            }
            bijlagen_aantal += km_aantal;

            oRs_k.MoveNext();
          }
          oRs_k.Close();

          return ( bijlagen_aantal > 0
                 ?  "<span title='" +  safe.htmlattr(bijlagen_lijst.join("\n"))  + "'>"
                    + safe.html(bijlagen_oms) + ": " + bijlagen_aantal
                    + "</span>"
                 : ""
                 );
        }
  }
%>