Added hook SkinTemplateNavigation which provides a way to tweak the navigation before...
[lhc/web/wiklou.git] / skins / common / allmessages.js
1 var allmessages_nodelist = false;
2 var allmessages_modified = false;
3 var allmessages_timeout = false;
4 var allmessages_running = false;
5
6 function allmessagesmodified() {
7 allmessages_modified = !allmessages_modified;
8 allmessagesfilter();
9 }
10
11 function allmessagesfilter() {
12 if ( allmessages_timeout )
13 window.clearTimeout( allmessages_timeout );
14
15 if ( !allmessages_running )
16 allmessages_timeout = window.setTimeout( 'allmessagesfilter_do();', 500 );
17 }
18
19 function allmessagesfilter_do() {
20 if ( !allmessages_nodelist )
21 return;
22
23 var text = document.getElementById('allmessagesinput').value.toLowerCase();
24 var nodef = allmessages_modified;
25
26 allmessages_running = true;
27
28 for ( var name in allmessages_nodelist ) {
29 var nodes = allmessages_nodelist[name];
30 var display = ( name.toLowerCase().indexOf( text ) == -1 ? 'none' : '' );
31
32 for ( var i = 0; i < nodes.length; i++)
33 nodes[i].style.display =
34 ( nodes[i].className == "def" && nodef
35 ? 'none' : display );
36 }
37
38 if ( text != document.getElementById('allmessagesinput').value.toLowerCase() ||
39 nodef != allmessages_modified )
40 allmessagesfilter_do(); // repeat
41
42 allmessages_running = false;
43 }
44
45 function allmessagesfilter_init() {
46 if ( allmessages_nodelist )
47 return;
48
49 var nodelist = new Array();
50 var templist = new Array();
51
52 var table = document.getElementById('allmessagestable');
53 if ( !table ) return;
54
55 var rows = document.getElementsByTagName('tr');
56 for ( var i = 0; i < rows.length; i++ ) {
57 var id = rows[i].getAttribute('id')
58 if ( id && id.substring(0,16) != 'sp-allmessages-r' ) continue;
59 templist[ id ] = rows[i];
60 }
61
62 var spans = table.getElementsByTagName('span');
63 for ( var i = 0; i < spans.length; i++ ) {
64 var id = spans[i].getAttribute('id')
65 if ( id && id.substring(0,17) != 'sp-allmessages-i-' ) continue;
66 if ( !spans[i].firstChild || spans[i].firstChild.nodeType != 3 ) continue;
67
68 var nodes = new Array();
69 var row1 = templist[ id.replace('i', 'r1') ];
70 var row2 = templist[ id.replace('i', 'r2') ];
71
72 if ( row1 ) nodes[nodes.length] = row1;
73 if ( row2 ) nodes[nodes.length] = row2;
74 nodelist[ spans[i].firstChild.nodeValue ] = nodes;
75 }
76
77 var k = document.getElementById('allmessagesfilter');
78 if (k) { k.style.display = ''; }
79
80 allmessages_nodelist = nodelist;
81 }
82
83 hookEvent( "load", allmessagesfilter_init );