Javascript for filtering the SP by name and description
[cascardo/ipsilon.git] / ui / js / divfilter.js
1 // Useful for debugging
2 function listProperties(obj) {
3    var propList = "";
4    for(var propName in obj) {
5       if(typeof(obj[propName]) != "undefined") {
6          propList += (propName + "=" + obj[propName] + ", ");
7       }
8    }
9    window.alert(propList);
10 }
11
12 $(function() {
13     'use strict';
14
15     var DivFilter = (function(Arr) {
16         var _input;
17
18         function _onInputEvent(e) {
19             _input = e.target;
20             var divs = document.getElementById("providers");
21             var providerdivs = divs.getElementsByTagName("div");
22
23             for(var i=0; i < providerdivs.length; i++) {
24                 var anchor = providerdivs[i].getElementsByTagName("a");
25                 var x = _filter(anchor[0]);
26                 if (x == 0) {
27                     providerdivs[i].style.display = 'none';
28                     //$(providerdivs[i]).slideUp();
29                 } else {
30                     providerdivs[i].style.display = 'inline';
31                     //$(providerdivs[i]).slideDown();
32                 }
33             };
34         }
35
36         function _filter(anchor) {
37              var name = anchor.name.toLowerCase();
38              var desc = $(anchor).data("original-title");
39              var val = _input.value.toLowerCase();
40
41              if (desc === "None") {
42                  desc="";
43              } else {
44                  desc = desc.toLowerCase();
45              }
46
47              if (name.indexOf(val) === -1 && desc.indexOf(val) === -1) {
48                  return 0;
49              } else {
50                  return 1;
51              }
52         }
53
54         return {
55             init: function() {
56                 var inputs = document.getElementsByClassName('div-filter');
57                 Arr.forEach.call(inputs, function(input) {
58                     input.oninput = _onInputEvent;
59                 });
60         }
61     };
62 })(Array.prototype);
63
64 document.addEventListener('readystatechange', function() {
65     if (document.readyState === 'complete') {
66         DivFilter.init();
67     }
68 });
69
70 });