188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectvar gSelectedIndex = -1;
288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectvar gSelectedID = -1;
388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectvar gMatches = new Array();
488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectvar gLastText = "";
542092024ebd81896e741829c50f37a7e0095392eRoman Nurikvar ROW_COUNT = 20;
688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectvar gInitialized = false;
788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectvar DEFAULT_TEXT = "search developer docs";
888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectfunction set_row_selected(row, selected)
1088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project{
1188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project    var c1 = row.cells[0];
1288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project  //  var c2 = row.cells[1];
1388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project    if (selected) {
1488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project        c1.className = "jd-autocomplete jd-selected";
1588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project  //      c2.className = "jd-autocomplete jd-selected jd-linktype";
1688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project    } else {
1788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project        c1.className = "jd-autocomplete";
1888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project  //      c2.className = "jd-autocomplete jd-linktype";
1988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project    }
2088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project}
2188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
2288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectfunction set_row_values(toroot, row, match)
2388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project{
2488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project    var link = row.cells[0].childNodes[0];
2542092024ebd81896e741829c50f37a7e0095392eRoman Nurik    link.innerHTML = match.__hilabel || match.label;
2688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project    link.href = toroot + match.link
2788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project  //  row.cells[1].innerHTML = match.type;
2888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project}
2988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
3088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectfunction sync_selection_table(toroot)
3188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project{
3288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project    var filtered = document.getElementById("search_filtered");
3388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project    var r; //TR DOM object
3488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project    var i; //TR iterator
3588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project    gSelectedID = -1;
3688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
3788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project    filtered.onmouseover = function() {
3888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project        if(gSelectedIndex >= 0) {
3988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project          set_row_selected(this.rows[gSelectedIndex], false);
4088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project          gSelectedIndex = -1;
4188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project        }
4288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project    }
4388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
4488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project    //initialize the table; draw it for the first time (but not visible).
4588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project    if (!gInitialized) {
4688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project        for (i=0; i<ROW_COUNT; i++) {
4788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project            var r = filtered.insertRow(-1);
4888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project            var c1 = r.insertCell(-1);
4988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project        //    var c2 = r.insertCell(-1);
5088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project            c1.className = "jd-autocomplete";
5188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project         //   c2.className = "jd-autocomplete jd-linktype";
5288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project            var link = document.createElement("a");
5388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project            c1.onmousedown = function() {
5488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project                window.location = this.firstChild.getAttribute("href");
5588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project            }
5688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project            c1.onmouseover = function() {
5788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project                this.className = this.className + " jd-selected";
5888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project            }
5988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project            c1.onmouseout = function() {
6088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project                this.className = "jd-autocomplete";
6188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project            }
6288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project            c1.appendChild(link);
6388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project        }
6488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project  /*      var r = filtered.insertRow(-1);
6588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project        var c1 = r.insertCell(-1);
6688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project        c1.className = "jd-autocomplete jd-linktype";
6788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project        c1.colSpan = 2; */
6888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project        gInitialized = true;
6988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project    }
7088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
7188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project    //if we have results, make the table visible and initialize result info
7288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project    if (gMatches.length > 0) {
7388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project        document.getElementById("search_filtered_div").className = "showing";
7488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project        var N = gMatches.length < ROW_COUNT ? gMatches.length : ROW_COUNT;
7588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project        for (i=0; i<N; i++) {
7688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project            r = filtered.rows[i];
7788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project            r.className = "show-row";
7888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project            set_row_values(toroot, r, gMatches[i]);
7988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project            set_row_selected(r, i == gSelectedIndex);
8088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project            if (i == gSelectedIndex) {
8188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project                gSelectedID = gMatches[i].id;
8288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project            }
8388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project        }
8488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project        //start hiding rows that are no longer matches
8588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project        for (; i<ROW_COUNT; i++) {
8688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project            r = filtered.rows[i];
8788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project            r.className = "no-display";
8888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project        }
8988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project        //if there are more results we're not showing, so say so.
9088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project/*      if (gMatches.length > ROW_COUNT) {
9188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project            r = filtered.rows[ROW_COUNT];
9288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project            r.className = "show-row";
9388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project            c1 = r.cells[0];
9488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project            c1.innerHTML = "plus " + (gMatches.length-ROW_COUNT) + " more";
9588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project        } else {
9688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project            filtered.rows[ROW_COUNT].className = "hide-row";
9788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project        }*/
9888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project    //if we have no results, hide the table
9988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project    } else {
10088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project        document.getElementById("search_filtered_div").className = "no-display";
10188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project    }
10288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project}
10388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
10488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectfunction search_changed(e, kd, toroot)
10588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project{
10688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project    var search = document.getElementById("search_autocomplete");
10742092024ebd81896e741829c50f37a7e0095392eRoman Nurik    var text = search.value.replace(/(^ +)|( +$)/g, '');
10888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
10988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project    // 13 = enter
1109033c1268889c8561d4d5ea0e0836079d7c31a94Scott Main    if (e.keyCode == 13) {
11188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project        document.getElementById("search_filtered_div").className = "no-display";
1129033c1268889c8561d4d5ea0e0836079d7c31a94Scott Main        if (kd && gSelectedIndex >= 0) {
11388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project            window.location = toroot + gMatches[gSelectedIndex].link;
11488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project            return false;
1159033c1268889c8561d4d5ea0e0836079d7c31a94Scott Main        } else if (gSelectedIndex < 0) {
1169033c1268889c8561d4d5ea0e0836079d7c31a94Scott Main            return true;
11788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project        }
11888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project    }
11988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project    // 38 -- arrow up
12088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project    else if (kd && (e.keyCode == 38)) {
12188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project        if (gSelectedIndex >= 0) {
12288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project            gSelectedIndex--;
12388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project        }
12488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project        sync_selection_table(toroot);
12588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project        return false;
12688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project    }
12788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project    // 40 -- arrow down
12888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project    else if (kd && (e.keyCode == 40)) {
12988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project        if (gSelectedIndex < gMatches.length-1
13088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project                        && gSelectedIndex < ROW_COUNT-1) {
13188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project            gSelectedIndex++;
13288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project        }
13388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project        sync_selection_table(toroot);
13488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project        return false;
13588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project    }
13688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project    else if (!kd) {
13788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project        gMatches = new Array();
13888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project        matchedCount = 0;
13988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project        gSelectedIndex = -1;
14042092024ebd81896e741829c50f37a7e0095392eRoman Nurik        for (var i=0; i<DATA.length; i++) {
14188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project            var s = DATA[i];
14242092024ebd81896e741829c50f37a7e0095392eRoman Nurik            if (text.length != 0 &&
14342092024ebd81896e741829c50f37a7e0095392eRoman Nurik                  s.label.toLowerCase().indexOf(text.toLowerCase()) != -1) {
14488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project                gMatches[matchedCount] = s;
14588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project                matchedCount++;
14688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project            }
14788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project        }
14842092024ebd81896e741829c50f37a7e0095392eRoman Nurik        rank_autocomplete_results(text);
14942092024ebd81896e741829c50f37a7e0095392eRoman Nurik        for (var i=0; i<gMatches.length; i++) {
15042092024ebd81896e741829c50f37a7e0095392eRoman Nurik            var s = gMatches[i];
15142092024ebd81896e741829c50f37a7e0095392eRoman Nurik            if (gSelectedID == s.id) {
15242092024ebd81896e741829c50f37a7e0095392eRoman Nurik                gSelectedIndex = i;
15342092024ebd81896e741829c50f37a7e0095392eRoman Nurik            }
15442092024ebd81896e741829c50f37a7e0095392eRoman Nurik        }
15542092024ebd81896e741829c50f37a7e0095392eRoman Nurik        highlight_autocomplete_result_labels(text);
15688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project        sync_selection_table(toroot);
15788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project        return true; // allow the event to bubble up to the search api
15888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project    }
15988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project}
16088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
16142092024ebd81896e741829c50f37a7e0095392eRoman Nurikfunction rank_autocomplete_results(query) {
16242092024ebd81896e741829c50f37a7e0095392eRoman Nurik    query = query || '';
16342092024ebd81896e741829c50f37a7e0095392eRoman Nurik    if (!gMatches || !gMatches.length)
16442092024ebd81896e741829c50f37a7e0095392eRoman Nurik      return;
16542092024ebd81896e741829c50f37a7e0095392eRoman Nurik
16642092024ebd81896e741829c50f37a7e0095392eRoman Nurik    // helper function that gets the last occurence index of the given regex
16742092024ebd81896e741829c50f37a7e0095392eRoman Nurik    // in the given string, or -1 if not found
16842092024ebd81896e741829c50f37a7e0095392eRoman Nurik    var _lastSearch = function(s, re) {
16942092024ebd81896e741829c50f37a7e0095392eRoman Nurik      if (s == '')
17042092024ebd81896e741829c50f37a7e0095392eRoman Nurik        return -1;
17142092024ebd81896e741829c50f37a7e0095392eRoman Nurik      var l = -1;
17242092024ebd81896e741829c50f37a7e0095392eRoman Nurik      var tmp;
17342092024ebd81896e741829c50f37a7e0095392eRoman Nurik      while ((tmp = s.search(re)) >= 0) {
17442092024ebd81896e741829c50f37a7e0095392eRoman Nurik        if (l < 0) l = 0;
17542092024ebd81896e741829c50f37a7e0095392eRoman Nurik        l += tmp;
17642092024ebd81896e741829c50f37a7e0095392eRoman Nurik        s = s.substr(tmp + 1);
17742092024ebd81896e741829c50f37a7e0095392eRoman Nurik      }
17842092024ebd81896e741829c50f37a7e0095392eRoman Nurik      return l;
17942092024ebd81896e741829c50f37a7e0095392eRoman Nurik    };
18042092024ebd81896e741829c50f37a7e0095392eRoman Nurik
18142092024ebd81896e741829c50f37a7e0095392eRoman Nurik    // helper function that counts the occurrences of a given character in
18242092024ebd81896e741829c50f37a7e0095392eRoman Nurik    // a given string
18342092024ebd81896e741829c50f37a7e0095392eRoman Nurik    var _countChar = function(s, c) {
18442092024ebd81896e741829c50f37a7e0095392eRoman Nurik      var n = 0;
18542092024ebd81896e741829c50f37a7e0095392eRoman Nurik      for (var i=0; i<s.length; i++)
18642092024ebd81896e741829c50f37a7e0095392eRoman Nurik        if (s.charAt(i) == c) ++n;
18742092024ebd81896e741829c50f37a7e0095392eRoman Nurik      return n;
18842092024ebd81896e741829c50f37a7e0095392eRoman Nurik    };
18942092024ebd81896e741829c50f37a7e0095392eRoman Nurik
19042092024ebd81896e741829c50f37a7e0095392eRoman Nurik    var queryLower = query.toLowerCase();
19142092024ebd81896e741829c50f37a7e0095392eRoman Nurik    var queryAlnum = (queryLower.match(/\w+/) || [''])[0];
19242092024ebd81896e741829c50f37a7e0095392eRoman Nurik    var partPrefixAlnumRE = new RegExp('\\b' + queryAlnum);
19342092024ebd81896e741829c50f37a7e0095392eRoman Nurik    var partExactAlnumRE = new RegExp('\\b' + queryAlnum + '\\b');
19442092024ebd81896e741829c50f37a7e0095392eRoman Nurik
19542092024ebd81896e741829c50f37a7e0095392eRoman Nurik    var _resultScoreFn = function(result) {
19642092024ebd81896e741829c50f37a7e0095392eRoman Nurik        // scores are calculated based on exact and prefix matches,
19742092024ebd81896e741829c50f37a7e0095392eRoman Nurik        // and then number of path separators (dots) from the last
19842092024ebd81896e741829c50f37a7e0095392eRoman Nurik        // match (i.e. favoring classes and deep package names)
19942092024ebd81896e741829c50f37a7e0095392eRoman Nurik        var score = 1.0;
20042092024ebd81896e741829c50f37a7e0095392eRoman Nurik        var labelLower = result.label.toLowerCase();
20142092024ebd81896e741829c50f37a7e0095392eRoman Nurik        var t;
20242092024ebd81896e741829c50f37a7e0095392eRoman Nurik        t = _lastSearch(labelLower, partExactAlnumRE);
20342092024ebd81896e741829c50f37a7e0095392eRoman Nurik        if (t >= 0) {
20442092024ebd81896e741829c50f37a7e0095392eRoman Nurik            // exact part match
20542092024ebd81896e741829c50f37a7e0095392eRoman Nurik            var partsAfter = _countChar(labelLower.substr(t + 1), '.');
20642092024ebd81896e741829c50f37a7e0095392eRoman Nurik            score *= 200 / (partsAfter + 1);
20742092024ebd81896e741829c50f37a7e0095392eRoman Nurik        } else {
20842092024ebd81896e741829c50f37a7e0095392eRoman Nurik            t = _lastSearch(labelLower, partPrefixAlnumRE);
20942092024ebd81896e741829c50f37a7e0095392eRoman Nurik            if (t >= 0) {
21042092024ebd81896e741829c50f37a7e0095392eRoman Nurik                // part prefix match
21142092024ebd81896e741829c50f37a7e0095392eRoman Nurik                var partsAfter = _countChar(labelLower.substr(t + 1), '.');
21242092024ebd81896e741829c50f37a7e0095392eRoman Nurik                score *= 20 / (partsAfter + 1);
21342092024ebd81896e741829c50f37a7e0095392eRoman Nurik            }
21442092024ebd81896e741829c50f37a7e0095392eRoman Nurik        }
21542092024ebd81896e741829c50f37a7e0095392eRoman Nurik
21642092024ebd81896e741829c50f37a7e0095392eRoman Nurik        return score;
21742092024ebd81896e741829c50f37a7e0095392eRoman Nurik    };
21842092024ebd81896e741829c50f37a7e0095392eRoman Nurik
21942092024ebd81896e741829c50f37a7e0095392eRoman Nurik    for (var i=0; i<gMatches.length; i++) {
22042092024ebd81896e741829c50f37a7e0095392eRoman Nurik        gMatches[i].__resultScore = _resultScoreFn(gMatches[i]);
22142092024ebd81896e741829c50f37a7e0095392eRoman Nurik    }
22242092024ebd81896e741829c50f37a7e0095392eRoman Nurik
22342092024ebd81896e741829c50f37a7e0095392eRoman Nurik    gMatches.sort(function(a,b){
22442092024ebd81896e741829c50f37a7e0095392eRoman Nurik        var n = b.__resultScore - a.__resultScore;
22542092024ebd81896e741829c50f37a7e0095392eRoman Nurik        if (n == 0) // lexicographical sort if scores are the same
22642092024ebd81896e741829c50f37a7e0095392eRoman Nurik            n = (a.label < b.label) ? -1 : 1;
22742092024ebd81896e741829c50f37a7e0095392eRoman Nurik        return n;
22842092024ebd81896e741829c50f37a7e0095392eRoman Nurik    });
22942092024ebd81896e741829c50f37a7e0095392eRoman Nurik}
23042092024ebd81896e741829c50f37a7e0095392eRoman Nurik
23142092024ebd81896e741829c50f37a7e0095392eRoman Nurikfunction highlight_autocomplete_result_labels(query) {
23242092024ebd81896e741829c50f37a7e0095392eRoman Nurik    query = query || '';
23342092024ebd81896e741829c50f37a7e0095392eRoman Nurik    if (!gMatches || !gMatches.length)
23442092024ebd81896e741829c50f37a7e0095392eRoman Nurik      return;
23542092024ebd81896e741829c50f37a7e0095392eRoman Nurik
23642092024ebd81896e741829c50f37a7e0095392eRoman Nurik    var queryLower = query.toLowerCase();
23742092024ebd81896e741829c50f37a7e0095392eRoman Nurik    var queryAlnumDot = (queryLower.match(/[\w\.]+/) || [''])[0];
23842092024ebd81896e741829c50f37a7e0095392eRoman Nurik    var queryRE = new RegExp(
23942092024ebd81896e741829c50f37a7e0095392eRoman Nurik        '(' + queryAlnumDot.replace(/\./g, '\\.') + ')', 'ig');
24042092024ebd81896e741829c50f37a7e0095392eRoman Nurik    for (var i=0; i<gMatches.length; i++) {
24142092024ebd81896e741829c50f37a7e0095392eRoman Nurik        gMatches[i].__hilabel = gMatches[i].label.replace(
24242092024ebd81896e741829c50f37a7e0095392eRoman Nurik            queryRE, '<b>$1</b>');
24342092024ebd81896e741829c50f37a7e0095392eRoman Nurik    }
24442092024ebd81896e741829c50f37a7e0095392eRoman Nurik}
24542092024ebd81896e741829c50f37a7e0095392eRoman Nurik
24688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectfunction search_focus_changed(obj, focused)
24788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project{
24888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project    if (focused) {
24988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project        if(obj.value == DEFAULT_TEXT){
25088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project            obj.value = "";
25188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project            obj.style.color="#000000";
25288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project        }
25388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project    } else {
25488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project        if(obj.value == ""){
25588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project          obj.value = DEFAULT_TEXT;
25688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project          obj.style.color="#aaaaaa";
25788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project        }
25888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project        document.getElementById("search_filtered_div").className = "no-display";
25988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project    }
26088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project}
26188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
26288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectfunction submit_search() {
26388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project  var query = document.getElementById('search_autocomplete').value;
264f1bac52fe28ba503c63c929d9d0711671273635fScott Main  document.location = toRoot + 'search.html#q=' + query + '&t=0';
26588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project  return false;
26688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project}
267