public IEncodedString CategorySelectList(NBrightInfo info, String xpath, String attributes = "", Boolean allowEmpty = true, int displaylevels = 20, Boolean showHidden = false, Boolean showArchived = false, int parentid = 0, String catreflist = "", String prefix = "", bool displayCount = false, bool showEmpty = true, string groupref = "", string breadcrumbseparator = ">", string lang = "")
        {
            var rtnList = NBrightBuyUtils.BuildCatList(displaylevels, showHidden, showArchived, parentid, catreflist, prefix, displayCount, showEmpty, groupref, breadcrumbseparator, lang);

            if (attributes.StartsWith("ResourceKey:"))
            {
                attributes = ResourceKey(attributes.Replace("ResourceKey:", "")).ToString();
            }

            var strOut = "";

            var upd = getUpdateAttr(xpath, attributes);
            var id  = getIdFromXpath(xpath);

            strOut = "<select id='" + id + "' " + upd + " " + attributes + ">";
            var s = "";

            if (allowEmpty)
            {
                strOut += "    <option value=''></option>";
            }
            foreach (var tItem in rtnList)
            {
                if (info.GetXmlProperty(xpath) == tItem.Key.ToString())
                {
                    s = "selected";
                }
                else
                {
                    s = "";
                }
                strOut += "    <option value='" + tItem.Key.ToString() + "' " + s + ">" + tItem.Value + "</option>";
            }
            strOut += "</select>";

            return(new RawString(strOut));
        }