function trackSearch(sc, searcher, query)
{
  try { pageTracker._trackEvent('KeymanWeb Search', 'Google', query); }
  catch(e) {}
  return true;
}

var searchControl;
function loadGoogle() 
{
  if(currentEngine != 'google') return false;
  
	// Create a search control
	searchControl = new google.search.SearchControl();
	searchControl.setSearchStartingCallback(window, trackSearch);
	//searchControl.setResultSetSize(google.search.Search.LARGE_RESULTSET);
	
	// Add in a full set of searchers
	//var localSearch = new google.search.LocalSearch();
	//searchControl.addSearcher(new google.search.WebSearch());
	
	// web search, open
	var options = new google.search.SearcherOptions();
	options.setExpandMode(google.search.SearchControl.EXPAND_MODE_OPEN);
	searchControl.addSearcher(new google.search.WebSearch(), options);
	searchControl.setNoResultsString('No results found'); //google.search.SearchControl.NO_RESULTS_DEFAULT_STRING);
	
	// Set the Local Search center point
	//localSearch.setCenterPoint("Asia, IND");
	// Tell the searcher to draw itself and tell it where to attach
	searchControl.draw(document.getElementById("search"));
  
  var e = getGoogleSearchBox();
  if(e) e.focus();
}

// Switch search engines around between google and yahoo
var currentEngine = "google";

function getGoogleSearchBox()
{
	  return searchControl ? searchControl.input : null;
}

function getGoogleSearchForm()
{
	var searchId = document.getElementById("search");
  return searchId.firstChild.firstChild;
}

function searchEngine(engine)
{
	var searchId = document.getElementById("search");
	var currentSearchHtml = "";
	var searchHtml = "";
	var icon = "";
	var currentSearchField;
	var newSearchField = "";
	var googleSearchField ="";
	var yahooSearchField ="";
	var bingSearchField = "";
	var googleSearchField = "";
	
	// do nothing if switching to same engine
	if (engine == currentEngine)
	{
		return false;
	}
	
	// get the current search text
	switch (currentEngine)
	{
		case "google":
		{
			googleSearchField = getGoogleSearchBox();
			currentSearchHtml = googleSearchField ? googleSearchField.value : "";
			break;	
		}
		
		case "yahoo":
		{
			yahooSearchField = document.getElementById("yahooSearchField");
			currentSearchHtml = yahooSearchField ? yahooSearchField.value : "";
			break;	
		}
		
		case "bing":
		{
			bingSearchField = document.getElementById("searchText");
			currentSearchHtml = bingSearchField ? bingSearchField.value : "";
			break;
		}
	}

	currentSearchHtml.className = 'lang2';
	lang2elements = null;
	currentEngine = engine;	
	
	// new engine selected, change icon and set new engine
	switch (engine)
	{
		// yahoo
		case "yahoo":
		{
			searchHtml = "<form action='' method='get' onsubmit=\"bossSearch(this[0].value); return false;\"><input class='searchInput' id='yahooSearchField'><input value='Search' type='submit' class='searchBtn' onclick='clearPrevResults(); return true;'>	</form><div id='content'>";
			icon = "<img src='http://s.keymanweb.com/demo/images/yahooIcon.gif' />";
			searchId.innerHTML = searchHtml;
			newSearchField = document.getElementById("yahooSearchField");
			break;
		}

		// google
		case "google":
		{
			icon = "<img src='http://s.keymanweb.com/demo/images/googleIcon.gif' alt='google'/>";
			loadGoogle();
			newSearchField = getGoogleSearchBox();
			break;	
		}

		// bing
		case "bing":
		{
			icon = "<img src='http://s.keymanweb.com/demo/images/bingIcon.gif' />";
			searchHtml = "<form action='bingSearch()'><input type='text' id='searchText' value=''class='searchInput'/><input type='submit' value='Search' id='bingSearchButton' onclick='bingSearch(); return false;'  class='searchBtn'/></form><ol id='bingResultList'></ol>";
			searchId.innerHTML = searchHtml;
			newSearchField = document.getElementById("searchText");
			break;	
		}
	}
	
	//set the engine to use
	newSearchField.value = currentSearchHtml;
	document.getElementById("selectedEngineImg").innerHTML = icon;
  newSearchField.focus();
}

function clearPrevResults()
{
	document.getElementById("prevSearchResults").innerHTML = "";	
}

/*Bing specifics*/

var
  bingSearchScript = null;

function bingSearch() 
{
  var AppId = "&Appid=40D9AFDB48C1C7FD23C3955F711FBA474E5600ED";
  var serviceURI = "http://api.search.live.net/json.aspx?JsonType=callback&JsonCallback=bingSearchDone&sources=web";
	var search = "&query="+encodeURIComponent(document.getElementById("searchText").value);
	var fullUri = serviceURI + search + AppId;
	var head = document.getElementsByTagName('head');
	var script = document.createElement('script');
	script.type = "text/javascript";
	script.src = fullUri;
	
	if(bingSearchScript != null) head[0].removeChild(bingSearchScript);
	bingSearchScript = script;
	
	
  try { pageTracker._trackEvent('KeymanWeb Search', 'Bing', document.getElementById('searchText').value); }
  catch(e) {}
	
	head[0].appendChild(script);
}

function bingSearchDone(results) 
{
	clearPrevResults();
	var result = null;
	var parent = document.getElementById('bingResultList');
	parent.innerHTML = '';
	var child = null;
	var searchType = results.SearchResponse.Web;
	if(searchType.Total == 0)
	{
	  parent.innerHTML = 'No results found';
	  return false;
	}
	var resultLength = searchType.Results.length;
	for (var i = 0; i < resultLength; i++) 
	{
		result = searchType.Results[i];
		child = document.createElement('li');
		child.className = "bingResultlistitem";
		child.innerHTML = "<div><a href=" + result.Url + ">" + result.Title + "</a></div>" +
			"<div>" + result.Description + "</div>";
		parent.appendChild(child);
	}
}

/* Yahoo specifics */

var bossSearchScript = null;

var bossSearch = function(q)
{
  var appId = '&appid=5aDlFErV34FbkDyk1dMNf1XjDf1g7tNt1OtIZIvrDoKbpvODJBG1zA1mOsPd9Gg-';
  var serviceURI = 'http://boss.yahooapis.com/ysearch/web/v1/';
  var serviceParameters = '?callback=bossSearchDone&format=json';
  var fullUri = serviceURI + encodeURIComponent(q) + serviceParameters + appId 
	var head = document.getElementsByTagName('head');
	
  var script = document.createElement('script');
	script.type = 'text/javascript';
	script.src = fullUri;

	if(bossSearchScript != null) head[0].removeChild(bossSearchScript);
	bossSearchScript = script;

  try { pageTracker._trackEvent('KeymanWeb Search', 'Yahoo', q); }
  catch(e) {}
	
	head[0].appendChild(script);
	
	
	return false;
}

function bossSearchDone(q)
{
	clearPrevResults();
  var results = null;
  var results = q;
  var parent = document.getElementById('content');
  if(results.ysearchresponse.responsecode != 200)
  {
    parent.innerHTML = 'Error '+results.ysearchresponse.responsecode;
    return false;
  }
  if(results.ysearchresponse.count == 0)
  {
    parent.innerHTML = 'No results found';
    return false;
  }
  var resultLength = results.ysearchresponse.resultset_web.length;
  var list = document.createElement('ol');
  parent.appendChild(list);
  
  for(var i = 0; i < resultLength; i++)
  {
    var result = results.ysearchresponse.resultset_web[i];
    var child = document.createElement('li');
		child.className = "yahooResultlistitem";
		child.innerHTML = "<div><a title='"+result.dispurl+"' href='"+result.clickurl+"'>" + result.title + "</a></div>" +
			"<div>" + result.abstract + "</div>";
		list.appendChild(child);
  }
}