ginebra/chrome/js/SearchSuggest.js
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 04 May 2010 12:39:35 +0300
changeset 0 1450b09d0cfd
permissions -rw-r--r--
Revision: 201015 Kit: 201018

//Constructor
function SearchSuggest(){
}

var searchArray = new Array(6);
var arrayLimit = 6;
var usercallback;

SearchSuggest.prototype.loadYahoo = function(query){
    var yUrl = "http://search.yahooapis.com/WebSearchService/V1/relatedSuggestion?";
    var yAppId = "appid=rv9RNS3V34GEz5NvGPBClnQaRVtN1tO57Di0OxX24nfHx1iqNA_QfahxpBoJJw--";
    var yOutput = "&output=json";
    var yResults = "&results = 5";
    var yCallBack = "&callback=SearchSuggest.prototype.processYahoo&query=";
    var yahooSuggest = yUrl + yAppId + yOutput + yCallBack + query;
    
    var headID = document.getElementsByTagName("head")[0];         
    var newScript = document.createElement('script');
    newScript.type = 'text/javascript';
    newScript.src = yahooSuggest;
    headID.appendChild(newScript);
}

SearchSuggest.prototype.processYahoo = function(resultObject){
    searchArray = [];
    if(resultObject.ResultSet && resultObject.ResultSet.Result){
        var n = arrayLimit < resultObject.ResultSet.Result.length ? arrayLimit : resultObject.ResultSet.Result.length;
        for(var i=0; i<n; i++) {
            searchArray[i] = resultObject.ResultSet.Result[i];
        }
    }
    usercallback(searchArray);
}

SearchSuggest.prototype.loadGoogle = function(query){
    var gUrl = "http://suggestqueries.google.com/complete/search?hl=en&json=t&jsonp=";
    var gCallBack = "SearchSuggest.prototype.processGoogle&q=";
    var googleSuggest = gUrl + gCallBack + query;
      
    var headID = document.getElementsByTagName("head")[0];         
    var newScript = document.createElement('script');
    newScript.type = 'text/javascript';
    newScript.src = googleSuggest;
    headID.appendChild(newScript);
}

SearchSuggest.prototype.processGoogle = function(resultObject){
    searchArray = [];
    if(resultObject){
        var n = arrayLimit < resultObject[1].length ? arrayLimit : resultObject[1].length;
        searchArray[0] = resultObject[0];
        for(var i=1; i<n; i++) {
            searchArray[i] = resultObject[1][i];
        }
    }
    usercallback(searchArray);
}

SearchSuggest.prototype.searchSuggest = function(queryString, getSearchUrl){
    //load yahoo suggest database. this has a limit of 5k hits/day per ip address.
    //this.loadYahoo(queryString);
    //load google suggest database
    this.loadGoogle(queryString);
    usercallback = getSearchUrl;
}