/*
Ajax AutoSuggest
===========
This file contains the functions which will do the autosuggest on client end
@version: 1.0
@author:  Waseem Khan
@blog:    http://blog.pakcoders.com
*/

var ajaxObj = getAjaxObject();

function autoSuggest(id)
{
   var searchInput = getElemId(id).value;
   
   var url = "./srp/autosuggest.php";
   var params = "input=" + searchInput;
   
   if (trim(searchInput) !== "")
   {
	  sendRequest(ajaxObj, url, params, handleSuggestResponse);
   }
   else
   {
	  hideSuggestions();   
   }
}

function handleSuggestResponse()
{
   if (ajaxObj.readyState == 4)
   {
      if (ajaxObj.status == 200)
      {
		  try
		  {
			  var XMLResponse = ajaxObj.responseXML.documentElement;
			  // work with the xml response
			  var keywordsTag = XMLResponse.getElementsByTagName('keywords');
			  
			  var suggestions = new Array();
			  
			  for (var i = 0; i < keywordsTag.length; i++)
			  {
				 var keywords = keywordsTag.item(i).firstChild.data.toString();
				 suggestions.push(keywords);
			  }
			  showSuggestions(suggestions);
		  }
		  catch(e)
		  {
			  hideSuggestions();
			  if (trim(ajaxObj.responseText) !== "")
			  alert(ajaxObj.responseText);  
		  }
	  }
   }
}

function showSuggestions(suggestions)
{
   var listWrapID = getElemId("listWrap");
   listWrapID.style.visibility = "visible";
   
   var listID = getElemId("searchList");
   listID.innerHTML = "";
   
   for(var i = 0; i < suggestions.length; i++)
   {
     listID.innerHTML += "<li><a href=\"javascript:void(0);\" onclick=\"insertKeyword(this.innerHTML);\">" + suggestions[i] + "</a></li>";      
   }     
}


function hideSuggestions()
{
   var listWrapID = getElemId("listWrap");
   listWrapID.style.visibility = "hidden";	
}

function insertKeyword(str)
{
	getElemId("input").value = str;
	hideSuggestions();
}

function getAjaxObject()
{
  // initially set the object to false 
  var XMLHttpRequestObject = false;
  if (window.XMLHttpRequest)
  {
      // check for Safari, Mozilla, Opera...
	  XMLHttpRequestObject = new XMLHttpRequest();
  }
  else if (window.ActiveXObject) 
  {
      // check for Internet Explorer
	  XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
  }
  if (!XMLHttpRequestObject)
  {
	  alert("Your browser does not support Ajax.");
	  // return false in case of failure
	  return false;
  }
  // return the object in case of success
  return XMLHttpRequestObject;
}


function sendRequest(xmlHTTPObject, url, parameters, handleResponse)
{
   if(xmlHTTPObject)
   {
      // continue if the object is idle
      if (xmlHTTPObject.readyState == 4 || xmlHTTPObject.readyState == 0) 
      {
		 // open connection and send "GET" request to server
		 xmlHTTPObject.open("POST", url, true);
		 // send the appropriate headers
		 xmlHTTPObject.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		 // set the function to be called on a change in ajaxObj state
		 xmlHTTPObject.onreadystatechange = handleResponse;
		 // set additional parameters (to be sent to server) to null
         xmlHTTPObject.send(parameters);
      }
   }
}
