
/**
 * Provides suggestions for state names (USA).
 * @class
 * @scope public
 */
function SearchSuggestions() {
    this.results = [];
}

 function initRequest() {


       if (window.XMLHttpRequest) {
           return new XMLHttpRequest();
       } else if (window.ActiveXObject) {
           isIE = true;
           return new ActiveXObject("Microsoft.XMLHTTP");
       }
   }
   function doCompletion(query, oAutoSuggestControl, bTypeAhead) {
	   var completeField = document.getElementById("completeField");
	  
			var url = "${env.uriPrefix}/searchautocomplete?baynoteAutoSearch=" + 
                   escape(query);
				   
           var req = initRequest();
           req.onreadystatechange = function() {
               if (req.readyState == 4) {
                   if (req.status == 200) {
					
                       parseMessages(req.responseXML, oAutoSuggestControl, bTypeAhead);
					  } else if (req.status == 204){
                       clearTable();
                   }
               }
           };
           req.open("POST", url, true);
           req.send(null);
       
   }
   function parseMessages(responseXML, oAutoSuggestControl, bTypeAhead) {
      
           var response = responseXML.getElementsByTagName(
                   "response")[0];
					
			 var tests = response.getElementsByTagName(
                   "terms")[0];
			
			
				
	  setResults(tests, oAutoSuggestControl, bTypeAhead);
		   
   }
   
 function setResults(result, oAutoSuggestControl, bTypeAhead) {

	var suggestions = [];
	 var size = result.childNodes.length;
	var li;
	  for (var i = 0; i < size; i++) {
		if(result.childNodes[i].nodeName == 'tm'){
		//alert(result.childNodes[i].firstChild.nodeValue);
		 suggestions.push(result.childNodes[i].firstChild.nodeValue);
		 
		}
	
    }

   oAutoSuggestControl.autosuggest(suggestions, bTypeAhead);
		
}
function clearTable() {
            var ind = completeTable.childNodes.length;
            for (var i = ind - 1; i >= 0 ; i--) {
                 completeTable.removeChild(completeTable.childNodes[i]);
            }
			}

/**
 * Request suggestions for the given autosuggest control. 
 * @scope protected
 * @param oAutoSuggestControl The autosuggest control to provide suggestions for.
 */
SearchSuggestions.prototype.requestSuggestions = function (oAutoSuggestControl /*:AutoSuggestControl*/,
                                                          bTypeAhead /*:boolean*/) {
   
	var aSuggestions = [];
    var sTextboxValue = oAutoSuggestControl.textbox.value;
    
    if (sTextboxValue.length > 0){
    doCompletion(sTextboxValue, oAutoSuggestControl, bTypeAhead);
      
    }

    //provide suggestions to the control
    
};
