| page.title=Search Results
|
| @jd:body
|
|
|
| <script src="http://www.google.com/jsapi" type="text/javascript"></script> |
| <script src="{@docRoot}assets/jquery-history.js" type="text/javascript"></script>
|
| <script type="text/javascript"> |
| var tabIndex = 0; |
| |
| google.load('search', '1'); |
| |
| function OnLoad() { |
| document.getElementById("search_autocomplete").style.color = "#000"; |
| |
| // create search control |
| searchControl = new google.search.SearchControl(); |
| |
| // use our existing search form and use tabs when multiple searchers are used |
| drawOptions = new google.search.DrawOptions(); |
| drawOptions.setDrawMode(google.search.SearchControl.DRAW_MODE_TABBED); |
| drawOptions.setInput(document.getElementById("search_autocomplete")); |
| |
| // configure search result options |
| searchOptions = new google.search.SearcherOptions(); |
| searchOptions.setExpandMode(GSearchControl.EXPAND_MODE_OPEN); |
| |
| // configure each of the searchers, for each tab |
| devSiteSearcher = new google.search.WebSearch(); |
| devSiteSearcher.setUserDefinedLabel("All Developers Site"); |
| devSiteSearcher.setSiteRestriction("http://developer.android.com/"); |
| |
| devGuideSearcher = new google.search.WebSearch(); |
| devGuideSearcher.setUserDefinedLabel("Dev Guide"); |
| devGuideSearcher.setSiteRestriction("http://developer.android.com/guide/"); |
| |
| referenceSearcher = new google.search.WebSearch(); |
| referenceSearcher.setUserDefinedLabel("Reference"); |
| referenceSearcher.setSiteRestriction("http://developer.android.com/reference/"); |
| |
| blogSearcher = new google.search.WebSearch(); |
| blogSearcher.setUserDefinedLabel("Blog"); |
| blogSearcher.setSiteRestriction("http://android-developers.blogspot.com"); |
| |
| groupsSearcher = new google.search.WebSearch(); |
| groupsSearcher.setUserDefinedLabel("Developer Groups"); |
| groupsSearcher.setSiteRestriction("001283715400630100512:ggqrtvkztwm"); |
| |
| sourceSiteSearcher = new google.search.WebSearch(); |
| sourceSiteSearcher.setUserDefinedLabel("Android Source"); |
| sourceSiteSearcher.setSiteRestriction("http://source.android.com"); |
| |
| homeSiteSearcher = new google.search.WebSearch(); |
| homeSiteSearcher.setUserDefinedLabel("Android Home"); |
| homeSiteSearcher.setSiteRestriction("http://www.android.com"); |
| |
| // add each searcher to the search control |
| searchControl.addSearcher(devSiteSearcher, searchOptions); |
| searchControl.addSearcher(devGuideSearcher, searchOptions); |
| searchControl.addSearcher(referenceSearcher, searchOptions); |
| searchControl.addSearcher(groupsSearcher, searchOptions); |
| searchControl.addSearcher(sourceSiteSearcher, searchOptions); |
| searchControl.addSearcher(blogSearcher, searchOptions); |
| |
| // configure result options |
| searchControl.setResultSetSize(google.search.Search.LARGE_RESULTSET); |
| searchControl.setLinkTarget(google.search.Search.LINK_TARGET_SELF); |
| searchControl.setTimeoutInterval(google.search.SearchControl.TIMEOUT_LONG); |
| searchControl.setNoResultsString(google.search.SearchControl.NO_RESULTS_DEFAULT_STRING); |
| |
| // upon ajax search, refresh the url and search title |
| searchControl.setSearchStartingCallback(this, function(control, searcher, query) { |
| // save the tab index from the hash |
| tabIndex = location.hash.split("&t=")[1]; |
| |
| $("#searchTitle").html("search results for <em>" + escapeHTML(query) + "</em>"); |
| $.history.add('q=' + query + '&t=' + tabIndex); |
| openTab(); |
| }); |
| |
| // draw the search results box |
| searchControl.draw(document.getElementById("leftSearchControl"), drawOptions); |
| |
| // get query and execute the search |
| if (location.hash.indexOf("&t=") != -1) { |
| searchControl.execute(decodeURI(getQuery(location.hash))); |
| } |
| |
| document.getElementById("search_autocomplete").focus(); |
| addTabListeners(); |
| } |
| // End of OnLoad |
| |
| |
| google.setOnLoadCallback(OnLoad, true); |
| |
| // when an event on the browser history occurs (back, forward, load) perform a search |
| $(window).history(function(e, hash) { |
| var query = decodeURI(getQuery(hash)); |
| searchControl.execute(query); |
| |
| $("#searchTitle").html("search results for <em>" + escapeHTML(query) + "</em>"); |
| }); |
| |
| // forcefully regain key-up event control (previously jacked by search api) |
| $("#search_autocomplete").keyup(function(event) { |
| return search_changed(event, false, '/'); |
| }); |
| |
| // open a tab, specified by its array position |
| function openTab() { |
| tabIndex = location.hash.split("&t=")[1]; |
| |
| // show the appropriate tab |
| var tabHeaders = $(".gsc-tabHeader"); |
| $(tabHeaders[tabIndex]).click(); |
| } |
| |
| // add event listeners to each tab so we can track the browser history |
| function addTabListeners() { |
| var tabHeaders = $(".gsc-tabHeader"); |
| for (var i = 0; i < tabHeaders.length; i++) { |
| $(tabHeaders[i]).attr("id",i).click(function() { |
| var tabHeaders = $(".gsc-tabHeader"); |
| var tabIndex = $(this).attr("id");
|
| $.history.add('q=' + getQuery(location.hash) + '&t=' + tabIndex); // update the hash with the new tab |
| }); |
| } |
| } |
| |
| function getQuery(hash) {
|
| var hashParts = hash.split('&t='); |
| var queryParts = hashParts[0].split('='); |
| return queryParts[1]; |
| } |
| |
| /* returns the given string with all HTML brackets converted to entities |
| TODO: move this to the site's JS library */ |
| function escapeHTML(string) { |
| return string.replace(/</g,"<") |
| .replace(/>/g,">"); |
| } |
| |
| </script>
|
|
|
| <div id="mainBodyFixed" style="width:auto; margin:20px">
|
| <h2 id="searchTitle">search results</h2>
|
| <img src="{@docRoot}assets/images/hr_gray_main.jpg" />
|
| <div><br /></div>
|
| <div id="leftSearchControl" class="search-control">Loading...</div>
|
| </div>
|