/*-----------------------------------------------------------------------------
-
-	This file contains proprietary and confidential information from WebAssist.com
-	Corporation.  Any unauthorized reuse, reproduction, or modification without
-	the prior written consent of WebAssist.com is strictly prohibited.
-
-	Copyright 2011 WebAssist.com Corporation.  All rights reserved.
------------------------------------------------------------------------------*/
var Bing_page_size = 25;
var Bing_appID = "68118101D75C4FF217611D6F8172595955A5B793";
var Bing_sites = "www.truecourses.com";
if (Bing_page_size>50) // Max limit (API)
  Bing_page_size = 50;
var Bing_start = 0;
var Bing_end = 0;
var Bing_all = 0;
var Bing_index = 0;
var Bing_first = "&lt;&lt;";
var Bing_previous = "&lt;";
var Bing_next = "&gt;";
var Bing_last = "&gt;&gt;";
var Bing_query = "";

function processBingQuery(appid, sites, page_size)
{
	if (appid != null) Bing_appID = appid;
	if (sites != null) Bing_sites = sites;
	if (page_size != null && !isNaN(page_size)) Bing_page_size = page_size;
	if (Bing_page_size>50) Bing_page_size = 50;// Max limit (API)
	// Check form GET first
	var urlArray = window.location.href.split("?");
	if (urlArray[1])
	{
		var urlParams = urlArray[1].split("&");
		for (var i=0; i<urlParams.length; i++)
		{
			var curParam = urlParams[i].split("=");
			if (curParam[0] == "Bing_query")
			{
				Bing_query= curParam[1];
				break;
			}
		}
	}
	else if (document.getElementById('Bing_query'))
	{
		Bing_query = document.getElementById('Bing_query').value;
	}
	if (Bing_query == "" && Bing_sites == "") {
		var output = document.getElementById("BingResults");
		if (!output)
		{
			return;
		}
		output.innerHTML = "Please enter a search term.";
		return;
	}
	getBingResults(Bing_query);
}

function getBingResults(query, start)
{        
	if (!start) // reset to defaults
	{
		start = 0;
 		Bing_end = 0;
		Bing_all = 0;
		Bing_index = 0;
	}
	else
	{
		Bing_start = start;
	}

	var url = 'http://api.bing.net/json.aspx?AppId='+Bing_appID+'&Version=2.2&Sources=Web&Query='+encodeURIComponent(query)+( (Bing_sites) ? '+site:'+encodeURIComponent(Bing_sites) : "" )+'&Web.Count='+Bing_page_size+'&Web.Offset='+start+'&JsonType=callback&JsonCallback=showBingResults';
  //url += '&ts='+new Date().getTime().toString(); // prevent caching
	var bScript = document.getElementById("BingScript");
	if (bScript)
	{
		document.getElementsByTagName('head')[0].removeChild(bScript);
	}
    
	var script = document.createElement("script");        
	script.setAttribute("src",url);
	script.setAttribute("id","BingScript");    
	script.setAttribute("type","text/javascript");     
	document.getElementsByTagName('head')[0].appendChild(script);
}  

function showBingResults(response)
{
	var output = document.getElementById("BingResults");
	if (!output)
	{
		return;
	}
	if (!response || !response.SearchResponse || !response.SearchResponse.Web)
	{
		if (response.SearchResponse && response.SearchResponse.Errors) {
			switch (response.SearchResponse.Errors[0].Code) {
				case 1002:
				case 2001:
					output.innerHTML = "Invalid API Key, please verify the API Key entered is correct and try again.";
					break;
				default:
					output.innerHTML = "Error code: " + response.SearchResponse.Errors[0].Code + " Message: " + response.SearchResponse.Errors[0].Message;
					break;
			}
		}
		else
			output.innerHTML = "An unknown error has occurred";
		return;
	}
	output.innerHTML = ""; // clear output
	var results = response.SearchResponse.Web.Results;
	Bing_all = response.SearchResponse.Web.Total; // get the amount of results
	if(Bing_all>1000) // Max of 1000 (API limitation)
		 Bing_all = 1000;
	Bing_start = response.SearchResponse.Web.Offset; // get start position
	Bing_end = (Bing_all > Bing_start+Bing_page_size)?Bing_start+Bing_page_size:Bing_all;
	
	if (Bing_end!=0) 
		Bing_start = Bing_start+1;
	else 
		Bing_start = 0;
	
	var header = document.createElement("div");
	header.setAttribute("id","ResultsHeader");
	if (!results)
	{
		header.innerHTML = "Your search did not return any results.";
	}
	else
	{
		header.innerHTML = "Displaying " + (Bing_start)+ " to " + Bing_end + " of "+ Bing_all + " results";
	}	
	output.appendChild(header);
	
	var resultsListItem = null;
	var resultStr = "";
	if (results)
	{
		var nav = document.createElement("div");
		nav.setAttribute("id","ResultsNav");
		if (Bing_start != 1)
		{
			var current = Bing_start;
			var prev = current - Bing_page_size - 1;
			if (prev < 0)  prev = 0;
			nav.innerHTML += ' <a href="#" onclick="getBingResults(\''+Bing_query+'\',0);">'+Bing_first+'</a> <a href="#" onclick="getBingResults(\''+Bing_query+'\','+prev+');">'+Bing_previous+'</a>'; 
		}
		if (Bing_end != Bing_all)
		{
			var current = Bing_start;
			var next = current + Bing_page_size - 1;
			if (next > Bing_all)  next = Bing_all;
			var total = Bing_all;
			var remain = total % Bing_page_size;
			if (remain==0) remain = Bing_page_size;
			var last = Bing_all - remain;
			nav.innerHTML += ' <a href="#" onclick="getBingResults(\''+Bing_query+'\','+next+');">'+Bing_next+'</a> <a href="#" onclick="getBingResults(\''+Bing_query+'\','+last+');">'+Bing_last+'</a>';         	
		}
		output.appendChild(nav);
	
		for (var i = 0; i < results.length; ++i)
		{
			resultsListItem = document.createElement("div");
			resultsListItem.setAttribute("class","ResultItem");
			resultsTitle = document.createElement("p");
			resultsTitle.setAttribute("class","ResultTitle");
			resultsTitle.innerHTML = '<a href="' + results[i].Url + '">' + results[i].Title + '</a>';	            
			resultsDesc = document.createElement("p");
			resultsDesc.setAttribute("class","ResultDesc");   	            
			resultsDesc.innerHTML = results[i].Description;
			resultsListItem.appendChild(resultsTitle);
			resultsListItem.appendChild(resultsDesc);
			output.appendChild(resultsListItem);
		}  
	}

}

