1 function filtertable(query, action) {
2 var rows = document.getElementsByTagName('TBODY')[0].rows;
3 for (var i = 0; i < rows.length; i++) {
4 var keep = query.match(/^[A-Z0-9 ]{2,}$/) ? rows[i].cells[0].title.match(query, 'i')
5 : rows[i].cells[1].textContent.match(query, query.match(/[A-Z]/) ? '' : 'i');
8 rows[i].classList[keep ? 'add' : 'remove'](action);
11 if (keep) rows[i].classList.toggle(action);
14 rows[i].style.display = keep ? '' : 'none';
15 if (!Element.prototype.hasOwnProperty('classList')) continue;
18 rows[i].classList.remove('focus');
19 rows[i].classList.remove('target');
24 function newelement(tagname, attrlist, childlist) {
25 if (!attrlist) return document.createTextNode(tagname);
26 var el = document.createElement(tagname);
27 for (var name in attrlist)
28 el.setAttribute(name, attrlist[name]);
29 if (childlist) for (var i = 0; i < childlist.length; i++)
30 el.appendChild(childlist[i]);
34 function prependsearch(target) {
35 target.parentNode.insertBefore(newelement(
39 onsubmit: "filtertable(this.q.value, 'filter'); this.q.value = ''; return false",
45 onkeyup: "filtertable(this.value, this.value.length > 1 ? 'focus' : 'reset')",
50 onclick: "filtertable(this.form.q.value, 'target')",
52 newelement('input', {type:'submit', value:'filter'}),