Home | History | Annotate | Download | only in js
      1 /**
      2  * Copyright (c) 2010 The Chromium Authors. All rights reserved.  Use of this
      3  * source code is governed by a BSD-style license that can be found in the
      4  * LICENSE file.
      5  */
      6 
      7 function testSearchSupport() {
      8   var i = document.createElement("input");
      9   i.setAttribute("type", "search");
     10   return i.type !== "text";
     11 };
     12 
     13 function filterSamples() {
     14   var clearlink = document.getElementById('clearlink');
     15   var searchinput = document.getElementById('searchinput');
     16   var noresults = document.getElementById('noresults');
     17 
     18   var searchtext = searchinput.value.toUpperCase();
     19   if (!canclear && searchtext != "" ) {
     20     clearlink.style.display = "inline";
     21   } else {
     22     clearlink.style.display = "none";
     23   }
     24   if (searchtext == currentfilter) {
     25     return;
     26   } else {
     27     currentfilter = searchtext;
     28     window.location.hash = searchinput.value;
     29   }
     30 
     31   noresults.style.display = 'none';
     32   var num_found = 0;
     33   for (var key in search_data) {
     34     if (search_data.hasOwnProperty(key)) {
     35       var sampleentry = document.getElementById(key);
     36       if (search_data[key].indexOf(searchtext) == -1) {
     37         sampleentry.style.display = "none";
     38       } else {
     39         sampleentry.style.display = "block";
     40         num_found += 1;
     41       }
     42     }
     43   }
     44   if (num_found == 0) {
     45     noresults.style.display = 'block';
     46   }
     47   removeSelected();
     48 };
     49 
     50 function removeSelected() {
     51   var anchors = document.getElementsByTagName('a');
     52   for (var i = 0, anchor; anchor = anchors[i]; i++) {
     53     if (anchor.className == "selected") {
     54       anchor.className = "";
     55     }
     56   }
     57 };
     58 
     59 function setFilter(text, target) {
     60   var searchinput = document.getElementById('searchinput');
     61   searchinput.value = text;
     62   filterSamples();
     63   target.className = "selected";
     64   searchinput.focus();
     65 };
     66 
     67 function clearFilter() {
     68   var searchinput = document.getElementById('searchinput');
     69   searchinput.value = "";
     70   filterSamples();
     71   searchinput.focus();
     72 };
     73 
     74 function initSearch() {
     75   var searchinput = document.getElementById('searchinput');
     76   if (canclear) {
     77     searchinput.addEventListener('click', filterSamples, false);
     78   }
     79 
     80   if (window.location.hash.length > 1) {
     81     var hash = window.location.hash.substring(1);
     82     var elem = document.getElementById(hash);
     83     if (elem) {
     84       elem.scrollIntoView();
     85     } else {
     86       setFilter(hash);
     87     }
     88   }
     89 };
     90 
     91 var currentfilter = "";
     92 var canclear = testSearchSupport();
     93 window.addEventListener('load', initSearch, false);
     94