show/hide this revision's text 5 Added support for toggling visibility of group filters (rather than just showing them). Removed download link to my website.
show/hide this revision's text 4 Visual tweaks to show original group links below group header and indented. This keeps the "group feeling" in place rather than a direct replacement. I didn't see a way to send this directly to the original author so I'm updating it here.

Script to organize the Filters Menu by grouping filters together.

Anything in the filter name before the first colon is considered the filter's group name (e.g. if filter name is "Testing: Most Recent Build" then "Testing" is the group name). To group two or more filters together, use the same prefix for them, e.g. "Testing: Production", "Testing: Development".

If a group contains two or more filters, the Filters menu will show "Group Name: ..." instead of the filters. Clicking on this item will replace it with show the group's original list of filters indented below it.

Tested with FB 8. Latest version available from here

name:          Grouped Filters
description:   Changes Filters menu to group filters by group name
author:        Stepan Riha
version:       1.0.0.2

1.0.0.3

js:

$(document).ready(function() {

// Replace filter group name with its list of filters
var discloseGroup = function() {
    var group = $(this).data('group');
    var groupname = jQuery.trim(group.text+":");
    for(var j = 0; j < group.links.length; j++) {
        group.links[j].show();
        }
        group.link.hide()var html = group.links[j].html();
        html = html.replace(groupname, '');
        group.links[j].html(html);
        group.links[j].wrapInner('<span style="padding-left: 16px;">');

    }
    return false;
};  
    // Collect filter links and group by prefix
    var groups = [];
    var $prev = null;
    var group = null;
    $('#filterPopup a').each(function() {
        var $this = $(this);

        // Use everything up to first : as group name
        var text = $this.text();
        text = text.replace(/\:.*/, '');

        // Create new group, if necessary
        if(!group || group.text != text) {
            group = { text: text, links: [] };
            groups.push(group);
        }
        group.links.push($this);
    });

    // Process groups of 2 or more links
    for(var i = 0; i < groups.length; i++) {
        var group = groups[i];
        var links = group.links;
        if(links.length > 1) {
            // Hide links
            for(var j = 0; j < links.length; j++) {
                links[j].hide();
            }

            // Create group link
            group.link = $("<a href='#' class='filter_group'><span>" + group.text + ": " + links.length + " filters</span></a>")
                    .click(discloseGroup)
                    one("click",discloseGroup)
                    .data('group', group)
                    .insertBefore(links[0]);
        }
    }
});

css:

a.filter_group {
    padding-left: 17px !important;
    font-style: italic;
}

a.filter_group span {
    padding-left: 5px;
    border-left: solid 3px #B1C9DD;
}

a.filter_group:hover span {
    border-left-color: #E0E9F1;
}
show/hide this revision's text 3 Show # of filters in group text

Script to organize the Filters Menu by grouping filters together.

Anything in the filter name before the first colon is considered the filter's group name (e.g. if filter name is "Testing: Most Recent Build" then "Testing" is the group name). To group two or more filters together, use the same prefix for them, e.g. "Testing: Production", "Testing: Development".

If a group contains two or more filters, the Filters menu will show "Group Name: ..." instead of the filters. Clicking on this item will replace it with the group's original list of filters.

Tested with FB 8. Latest version available from here

name:          Grouped Filters
description:   Changes Filters menu to group filters by group name
author:        Stepan Riha
version:       1.0.0.1

1.0.0.2

js:

$(document).ready(function() {

    // Replace filter group name with its list of filters
    var discloseGroup = function() {
        var group = $(this).data('group');
        for(var j = 0; j < group.links.length; j++) {
            group.links[j].show();
        }
        group.link.hide();
        return false;
    };

    // Collect filter links and group by prefix
    var groups = [];
    var $prev = null;
    var group = null;
    $('#filterPopup a').each(function() {
        var $this = $(this);

        // Use everything up to first : as group name
        var text = $this.text();
        text = text.replace(/\:.*/, '');

        // Create new group, if necessary
        if(!group || group.text != text) {
            group = { text: text, links: [] };
            groups.push(group);
        }
        group.links.push($this);
    });

    // Process groups of 2 or more links
    for(var i = 0; i < groups.length; i++) {
        var group = groups[i];
        if(group.links.length var links = group.links;
        if(links.length > 1) {
            // Hide links
            for(var j = 0; j < group.links.lengthlinks.length; j++) {
                group.links[j].hide()links[j].hide();
            }

            // Create group link
            group.link = $("<a href='#' class='filter_group'><span>" + group.text + ": ..." + links.length + " filters</span></a>")
                    .click(discloseGroup)
                    .data('group', group)
                    .insertBefore(group.links[0]);
        insertBefore(links[0]);
        }
    }
});

css:

a.filter_group {
    padding-left: 17px !important;
    font-style: italic;
}

a.filter_group span {
    padding-left: 5px;
    border-left: solid 3px #B1C9DD;
}

a.filter_group:hover span {
    border-left-color: #E0E9F1;
}
show/hide this revision's text 2 Fixed script s.t. shared and private filters are grouped separately.
show/hide this revision's text 1 [made Community Wiki]