89fdd02069a993c82686a3494e019f499f9f913d
[moodle.git] / admin / report / capability / module.js
2 M.report_capability = {
3     select: null,
4     input: null,
5     button: null,
7     init: function(Y, strsearch) {
8         var context = M.report_capability;
10         // Find the form controls.
11         context.select = document.getElementById('menucapability');
12         context.button = document.getElementById('settingssubmit');
14         // Create a div to hold the search UI.
15         var div = document.createElement('div');
16         div.id = 'capabilitysearchui';
18         // Find the capability search input.
19         var input = document.createElement('input');
20         input.type = 'text';
21         input.id = 'capabilitysearch';
22         context.input = input;
24         // Create a label for the search input.
25         var label = document.createElement('label');
26         label.htmlFor = input.id;
27         label.appendChild(document.createTextNode(strsearch + ' '));
29         // Tie it all together
30         div.appendChild(label);
31         div.appendChild(input);
32         context.select.parentNode.insertBefore(div, context.select);
33         Y.on('keyup', context.typed, input);
34         Y.on('change', context.validate, context.select);
35         context.select.options[0].style.display = 'none';
36         context.validate();
37     },
39     typed: function() {
40         var context = M.report_capability;
42         var filtertext = context.input.value;
43         var options = context.select.options;
44         var onlycapability = -1;
45         for (var i = 1; i < options.length; i++) {
46             if (options[i].text.indexOf(filtertext) >= 0) {
47                 options[i].disabled = false;
48                 options[i].style.display = 'block';
49                 if (onlycapability == -1) {
50                     onlycapability = i;
51                 } else {
52                     onlycapability = -2;
53                 }
54             } else {
55                 options[i].disabled = true;
56                 options[i].selected = false;
57                 options[i].style.display = 'none';
58             }
59         }
60         if (onlycapability >= 0) {
61             options[onlycapability].selected = true;
62         }
63         if (onlycapability == -1) {
64             context.input.className = "error";
65         } else {
66             context.input.className = "";
67         }
68         context.validate();
69     },
71     validate: function() {
72         var context = M.report_capability;
73         context.button.disabled = (context.select.value == '');
74     }
75 }