<% /*
     $Revision$
     $Id$

     File:          timezoneselector.inc
     Description:   Algemene interface functie om een timezone te kiezen
                    Deze moet je kunnen includen en aanroepen.
                    Als iemand vindt dat het een Suggest zou moeten zijn heeft die gelijk

     parameters     fieldName:    veldnaam van het srtperslidKey veld. Dit veld wordt gesubmit.
                    params:       object met meegegeven parameters.
*/ %>
<!-- #include file="../Shared/selector.inc" -->
<%
FCLTHeader.Requires({ plugins: ["jQuery"] });

function FCLTtimezoneselector(fieldName, params)
{
    if (typeof params == "undefined") params = {};

    // Wat we opslaan is een IANA string. Door readonly hier te ondersteunen regelen we de presentatie centraal
    var sql = "SELECT tzname,"
            + "       '(UTC ' || RTRIM(TZ_OFFSET(tzname), CHR(0)) || ') ' || tzname AS label"
            + "  FROM V$TIMEZONE_NAMES"
            + ((params.readonly && params.initVal != "")  // als die NULL is, levert dit -terecht- ook niks op, gewenst sideeffect
              ? " WHERE tzname = " + safe.quoted_sql(params.initVal)  // alleen de initVal tonen, dit is geen key
              : " WHERE NOT tzname LIKE '%GMT%'"         // filter aliassen
                + " AND ("
                + "     tzname LIKE 'Europe/%' OR"
                + "     tzname LIKE 'America/%' OR"
                + "     tzname LIKE 'Asia/%' OR"
                + "     tzname LIKE 'Australia/%' OR"
                + "     tzname LIKE 'Africa/%' OR"
                + "     tzname LIKE 'Pacific/%'"
                + " )"
            + " GROUP BY tzname, TZ_OFFSET(tzname)"
            + " ORDER BY TO_NUMBER(SUBSTR(TZ_OFFSET(tzname), 1, 3)"
            + "               || SUBSTR(TZ_OFFSET(tzname), 5, 2)) ASC,"
            + "          tzname"
              );

    // de FCLTselector doet het niet lekker met initVal, readonly en suppressEmpty
    // daarom doen we dat hier zelf
    if (params.readonly)
    {
      oRs = Oracle.Execute(sql);
      if (!oRs.eof)
        ROFIELDTR("fld", L("lcl_prs_person_timezone"), oRs("label").value, {suppressEmpty: true});
      oRs.close();
    }
    else
      FCLTselector(fieldName, sql,
                { label: params.label||L("lcl_timezone"),
                  initKey: params.initVal || "",  // of de servertijdzone?
                  emptyKey: params.emptyKey || "",
                  emptyOption: params.emptyOption || ""
                });
}
%>