1var gSelectedIndex = -1; 2var gSelectedID = -1; 3var gMatches = new Array(); 4var gLastText = ""; 5var ROW_COUNT = 30; 6var gInitialized = false; 7var DEFAULT_TEXT = "search developer docs"; 8 9function set_row_selected(row, selected) 10{ 11 var c1 = row.cells[0]; 12 // var c2 = row.cells[1]; 13 if (selected) { 14 c1.className = "jd-autocomplete jd-selected"; 15 // c2.className = "jd-autocomplete jd-selected jd-linktype"; 16 } else { 17 c1.className = "jd-autocomplete"; 18 // c2.className = "jd-autocomplete jd-linktype"; 19 } 20} 21 22function set_row_values(toroot, row, match) 23{ 24 var link = row.cells[0].childNodes[0]; 25 link.innerHTML = match.label; 26 link.href = toroot + match.link 27 // row.cells[1].innerHTML = match.type; 28} 29 30function sync_selection_table(toroot) 31{ 32 var filtered = document.getElementById("search_filtered"); 33 var r; //TR DOM object 34 var i; //TR iterator 35 gSelectedID = -1; 36 37 filtered.onmouseover = function() { 38 if(gSelectedIndex >= 0) { 39 set_row_selected(this.rows[gSelectedIndex], false); 40 gSelectedIndex = -1; 41 } 42 } 43 44 //initialize the table; draw it for the first time (but not visible). 45 if (!gInitialized) { 46 for (i=0; i<ROW_COUNT; i++) { 47 var r = filtered.insertRow(-1); 48 var c1 = r.insertCell(-1); 49 // var c2 = r.insertCell(-1); 50 c1.className = "jd-autocomplete"; 51 // c2.className = "jd-autocomplete jd-linktype"; 52 var link = document.createElement("a"); 53 c1.onmousedown = function() { 54 window.location = this.firstChild.getAttribute("href"); 55 } 56 c1.onmouseover = function() { 57 this.className = this.className + " jd-selected"; 58 } 59 c1.onmouseout = function() { 60 this.className = "jd-autocomplete"; 61 } 62 c1.appendChild(link); 63 } 64 /* var r = filtered.insertRow(-1); 65 var c1 = r.insertCell(-1); 66 c1.className = "jd-autocomplete jd-linktype"; 67 c1.colSpan = 2; */ 68 gInitialized = true; 69 } 70 71 //if we have results, make the table visible and initialize result info 72 if (gMatches.length > 0) { 73 document.getElementById("search_filtered_div").className = "showing"; 74 var N = gMatches.length < ROW_COUNT ? gMatches.length : ROW_COUNT; 75 for (i=0; i<N; i++) { 76 r = filtered.rows[i]; 77 r.className = "show-row"; 78 set_row_values(toroot, r, gMatches[i]); 79 set_row_selected(r, i == gSelectedIndex); 80 if (i == gSelectedIndex) { 81 gSelectedID = gMatches[i].id; 82 } 83 } 84 //start hiding rows that are no longer matches 85 for (; i<ROW_COUNT; i++) { 86 r = filtered.rows[i]; 87 r.className = "no-display"; 88 } 89 //if there are more results we're not showing, so say so. 90/* if (gMatches.length > ROW_COUNT) { 91 r = filtered.rows[ROW_COUNT]; 92 r.className = "show-row"; 93 c1 = r.cells[0]; 94 c1.innerHTML = "plus " + (gMatches.length-ROW_COUNT) + " more"; 95 } else { 96 filtered.rows[ROW_COUNT].className = "hide-row"; 97 }*/ 98 //if we have no results, hide the table 99 } else { 100 document.getElementById("search_filtered_div").className = "no-display"; 101 } 102} 103 104function search_changed(e, kd, toroot) 105{ 106 var search = document.getElementById("search_autocomplete"); 107 var text = search.value; 108 109 // 13 = enter 110 if (!kd && (e.keyCode == 13)) { 111 document.getElementById("search_filtered_div").className = "no-display"; 112 if (gSelectedIndex >= 0) { 113 window.location = toroot + gMatches[gSelectedIndex].link; 114 return false; 115 } 116 } 117 // 38 -- arrow up 118 else if (kd && (e.keyCode == 38)) { 119 if (gSelectedIndex >= 0) { 120 gSelectedIndex--; 121 } 122 sync_selection_table(toroot); 123 return false; 124 } 125 // 40 -- arrow down 126 else if (kd && (e.keyCode == 40)) { 127 if (gSelectedIndex < gMatches.length-1 128 && gSelectedIndex < ROW_COUNT-1) { 129 gSelectedIndex++; 130 } 131 sync_selection_table(toroot); 132 return false; 133 } 134 else if (!kd) { 135 gMatches = new Array(); 136 matchedCount = 0; 137 gSelectedIndex = -1; 138 for (i=0; i<DATA.length; i++) { 139 var s = DATA[i]; 140 if (text.length != 0 && s.label.indexOf(text) != -1) { 141 gMatches[matchedCount] = s; 142 if (gSelectedID == s.id) { 143 gSelectedIndex = matchedCount; 144 } 145 matchedCount++; 146 } 147 } 148 sync_selection_table(toroot); 149 return true; // allow the event to bubble up to the search api 150 } 151} 152 153function search_focus_changed(obj, focused) 154{ 155 if (focused) { 156 if(obj.value == DEFAULT_TEXT){ 157 obj.value = ""; 158 obj.style.color="#000000"; 159 } 160 } else { 161 if(obj.value == ""){ 162 obj.value = DEFAULT_TEXT; 163 obj.style.color="#aaaaaa"; 164 } 165 document.getElementById("search_filtered_div").className = "no-display"; 166 } 167} 168 169function submit_search() { 170 var query = document.getElementById('search_autocomplete').value; 171 document.location = toRoot + 'search.html#q=' + query + '&t=0'; 172 return false; 173} 174