private void RenderSelection(StringBuilder sb, 
            int index,
            long selectedValue,
            string key,
            CategoryFacet facet,
            ProductProperty property,
            List<CategoryFacet> allFacets,
            CategoryPageViewModel model,
            List<BreadCrumbItem> extraCrumbs)
        {
            string selectedName = string.Empty;
            var sn = (from c in property.Choices
                      where c.Id == selectedValue
                      select c.ChoiceName).SingleOrDefault();
            if (sn != null)
            {
                selectedName = sn;
                extraCrumbs.Add(new BreadCrumbItem() { Name = sn });
                ViewBag.MetaDescription += " | " + sn;
                ViewBag.Title += " | " + sn;
            }
            sb.Append("<h6 class=\"filter\">" + property.DisplayName + "</h6> ");

            string baseUrl = model.LocalCategory.RewriteUrl + "?node=" + CategoryFacetKeyHelper.ClearSelfAndChildrenFromKey(key, allFacets, facet.Id);
            sb.Append("<ul class=\"filterselected\"><li>");
            sb.Append(" <a href=\"" + baseUrl + "\">");
            sb.Append(selectedName);
            sb.Append(" [clear]</a></li></ul>");
        }
        protected void btnNew_Click(object sender, ImageClickEventArgs e)
        {
            this.Save();

            CategoryFacetManager manager = CategoryFacetManager.InstantiateForDatabase(MTApp.CurrentRequestContext);

            
            CategoryFacet f = new CategoryFacet();
            f.CategoryId = this.BvinField.Value;
            f.PropertyId = long.Parse(this.lstProperty.SelectedItem.Value);
            f.FilterName = this.lstProperty.SelectedItem.Text;
            f.ParentPropertyId = long.Parse(this.lstParents.SelectedItem.Value);
            f.DisplayMode = CategoryFacetDisplayMode.Single;

            f.SortOrder = manager.FindMaxSortForCategoryParent(this.BvinField.Value, f.ParentPropertyId);

            if (!ExistsAlready(manager, f.CategoryId, f.PropertyId))
            {
                manager.Create(f);
            }
            
            RenderFilterTree();            
        }
        private void RenderNonSelection(StringBuilder sb, int index, long selectedValue, string key,
            CategoryFacet facet, ProductProperty property, List<ProductFacetCount> counts,
            CategoryPageViewModel model)
        {
            sb.Append("<h6 class=\"filter\">" + property.DisplayName + "</h6>");
            sb.Append("<ul class=\"filterselections\">");
            foreach (ProductPropertyChoice c in property.Choices)
            {
                string newKey = CategoryFacetKeyHelper.ReplaceKeyValue(key, index, c.Id);
                string baseUrl = model.LocalCategory.RewriteUrl + "?node=" + newKey;
                string sqlKey = CategoryFacetKeyHelper.ParseKeyToSqlList(newKey);
                ProductFacetCount fc = new ProductFacetCount();
                foreach (ProductFacetCount f in counts)
                {
                    if (f.Key == sqlKey)
                    {
                        fc = f;
                        break;
                    }
                }

                if (fc.ProductCount > 0)
                {
                    sb.Append("<li><a href=\"" + baseUrl + "\">");
                    sb.Append(c.ChoiceName);
                    sb.Append(" (" + fc.ProductCount.ToString() + ")");
                    sb.Append("</a></li>");
                }
            }
            sb.Append("</ul>");
        }