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