+ if (!action) {
+ var match = /^([-+?=]?)(.*)/.exec(query);
+ switch (match[1]) {
+ case '+': action = 'add'; break;
+ case '-': action = 'remove'; break;
+ case '?': action = 'toggle'; break;
+ case '=': action = 'filter'; break;
+ }
+ query = match[2];
+ }
+
+if (document.querySelector !== undefined) {
+ if (query == '' && action == 'add') {
+ // restore all columns if explicitly adding all ("+")
+ filtercols(table, function(){return true}, 'add');
+ // continue to restore rows
+ }
+ if (/^[a-z_]+$/.test(query) && document.querySelector('.b-a-'+query)) {
+ // column if class b-a-* exists
+ var match = function(th) {
+ if (!/\bb-a-/.test(th.className)) return;
+ return new RegExp('-'+query+'\\b').test(th.className);
+ }
+ return filtercols(table, match, action || 'toggle');
+ }
+}
+