﻿  
    // Replace the following string with the AppId you received from the
    // Bing Developer Center.
    var AppId = "B5B9BAC532199F31F207540E544F84338F1CEB94";
    
    // Bing API 2.0 code sample demonstrating the use of the
    // Web SourceType over the JSON Protocol.
    function Search()
    {
        var qstring = document.getElementById("ctl00_ContentPlaceHolder1_searchinput").value;
        var requestStr = "http://api.bing.net/json.aspx?"
        
            // Common request fields (required)
            + "AppId=" + AppId
            + "&Query=" + qstring
            + "&Sources=Web"
            
            // Common request fields (optional)
            + "&Version=2.0"
            + "&Market=en-us"
            + "&Adult=Moderate"
            + "&Options=EnableHighlighting"

            // Web-specific request fields (optional)
            + "&Web.Count=8"
            + "&Web.Offset=0"
            + "&Web.Options=DisableHostCollapsing+DisableQueryAlterations"

            // JSON-specific request fields (optional)
            + "&JsonType=callback"
            + "&JsonCallback=SearchCompleted";

        var requestScript = document.getElementById("searchCallback");
        var e = document.createElement("script");
        e.src = requestStr;
        e.type = "text/javascript";
        document.getElementsByTagName("head")[0].appendChild(e); 
        //requestScript.src = requestStr;
    }

    function SearchCompleted(response)
    {
        var errors = response.SearchResponse.Errors;
        if (errors != null)
        {
            // There are errors in the response. Display error details.
            DisplayErrors(errors);
        }
        else
        {
            // There were no errors in the response. Display the
            // Web results.
            DisplayResults(response);
        }
    }

    function DisplayResults(response)
    {
        var output = document.getElementById("ctl00_ContentPlaceHolder1_serpframe");
        //var resultsHeader = document.createElement("h4");
        output.innerHTML = "";
        var resultsList = document.createElement("ul");
        //output.appendChild(resultsHeader);
        output.appendChild(resultsList);
    
        var results = response.SearchResponse.Web.Results;
        
        // Display the results header.
//        resultsHeader.innerHTML = "Bing API Version "
//            + response.SearchResponse.Version
//            + "<br />Web results for "
//            + response.SearchResponse.Query.SearchTerms
//            + "<br />Displaying "
//            + (response.SearchResponse.Web.Offset + 1)
//            + " to "
//            + (response.SearchResponse.Web.Offset + results.length)
//            + " of "
//            + response.SearchResponse.Web.Total
//            + " results<br />";
        
        // Display the Web results.
        var resultsListItem = null;
        var resultStr = "";
        for (var i = 0; i < results.length; ++i)
        {
            resultsListItem = document.createElement("li");
            resultsList.appendChild(resultsListItem);
            resultStr = "<a class=\"searchURL\" href=\""
                + results[i].Url
                + "\">"
                + results[i].Title
                + "</a><br /><div class=\"searchDesc\">"
                + results[i].Description
                + "</div><br />";

            // Replace highlighting characters with strong tags.
            
            resultsListItem.innerHTML = ReplaceHighlightingCharacters(resultStr,"<strong>","</strong>");
        }
    }
    
    function ReplaceHighlightingCharacters(text, beginStr, endStr)
    {
        // Replace all occurrences of U+E000 (begin highlighting) with
        // beginStr. Replace all occurrences of U+E001 (end highlighting)
        // with endStr.
        var regexBegin = new RegExp("\uE000", "g");
        var regexEnd = new RegExp("\uE001", "g");
              
        return text.replace(regexBegin, beginStr).replace(regexEnd, endStr);
    }

    function DisplayErrors(errors)
    {
        var output = document.getElementById("output");
        var errorsHeader = document.createElement("h4");
        var errorsList = document.createElement("ul");
        output.appendChild(errorsHeader);
        output.appendChild(errorsList);
        
        // Iterate over the list of errors and display error details.
        errorsHeader.innerHTML = "Errors:";
        var errorsListItem = null;
        for (var i = 0; i < errors.length; ++i)
        {
            errorsListItem = document.createElement("li");
            errorsList.appendChild(errorsListItem);
            errorsListItem.innerHTML = "";
            for (var errorDetail in errors[i])
            {
                errorsListItem.innerHTML += errorDetail
                    + ": "
                    + errors[i][errorDetail]
                    + "<br />";
            }
            
            errorsListItem.innerHTML += "<br />";
        }
    }
