]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blob - skins/common/allmessages.js
MediaWiki 1.14.0
[autoinstallsdev/mediawiki.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 );