Commit | Line | Data |
---|---|---|
64a19c3d ML |
1 | function historyRadios(parent) { |
2 | var inputs = parent.getElementsByTagName('input'); | |
3 | var radios = []; | |
4 | for (var i = 0; i < inputs.length; i++) { | |
5 | if (inputs[i].name == "diff" || inputs[i].name == "oldid") { | |
6 | radios[radios.length] = inputs[i]; | |
7 | } | |
8 | } | |
9 | return radios; | |
10 | } | |
11 | ||
12 | // check selection and tweak visibility/class onclick | |
13 | function diffcheck() { | |
14 | var dli = false; // the li where the diff radio is checked | |
15 | var oli = false; // the li where the oldid radio is checked | |
16 | var hf = document.getElementById('pagehistory'); | |
17 | if (!hf) { | |
18 | return true; | |
19 | } | |
20 | var lis = hf.getElementsByTagName('li'); | |
21 | for (var i=0;i<lis.length;i++) { | |
22 | var inputs = historyRadios(lis[i]); | |
23 | if (inputs[1] && inputs[0]) { | |
24 | if (inputs[1].checked || inputs[0].checked) { // this row has a checked radio button | |
25 | if (inputs[1].checked && inputs[0].checked && inputs[0].value == inputs[1].value) { | |
26 | return false; | |
27 | } | |
28 | if (oli) { // it's the second checked radio | |
29 | if (inputs[1].checked) { | |
30 | oli.className = "selected"; | |
31 | return false; | |
32 | } | |
33 | } else if (inputs[0].checked) { | |
34 | return false; | |
35 | } | |
36 | if (inputs[0].checked) { | |
37 | dli = lis[i]; | |
38 | } | |
39 | if (!oli) { | |
40 | inputs[0].style.visibility = 'hidden'; | |
41 | } | |
42 | if (dli) { | |
43 | inputs[1].style.visibility = 'hidden'; | |
44 | } | |
45 | lis[i].className = "selected"; | |
46 | oli = lis[i]; | |
47 | } else { // no radio is checked in this row | |
48 | if (!oli) { | |
49 | inputs[0].style.visibility = 'hidden'; | |
50 | } else { | |
51 | inputs[0].style.visibility = 'visible'; | |
52 | } | |
53 | if (dli) { | |
54 | inputs[1].style.visibility = 'hidden'; | |
55 | } else { | |
56 | inputs[1].style.visibility = 'visible'; | |
57 | } | |
58 | lis[i].className = ""; | |
59 | } | |
60 | } | |
61 | } | |
62 | return true; | |
63 | } | |
64 | ||
65 | // page history stuff | |
66 | // attach event handlers to the input elements on history page | |
67 | function histrowinit() { | |
68 | var hf = document.getElementById('pagehistory'); | |
69 | if (!hf) { | |
70 | return; | |
71 | } | |
72 | var lis = hf.getElementsByTagName('li'); | |
73 | for (var i = 0; i < lis.length; i++) { | |
74 | var inputs = historyRadios(lis[i]); | |
75 | if (inputs[0] && inputs[1]) { | |
76 | inputs[0].onclick = diffcheck; | |
77 | inputs[1].onclick = diffcheck; | |
78 | } | |
79 | } | |
80 | diffcheck(); | |
81 | } | |
82 | ||
83 | hookEvent("load", histrowinit); |