
/**
 * Provides suggestions for state names (USA).
 * @class
 * @scope public
 */
function RemoteStateSuggestions() {

    if (typeof XMLHttpRequest != "undefined") {
        this.http = new XMLHttpRequest();
    } else if (typeof ActiveXObject != "undefined") {
        this.http = new ActiveXObject("MSXML2.XmlHttp");
    } else {
        alert("No XMLHttpRequest object available. This functionality will not work.");
    }

}

/**
 * Request suggestions for the given autosuggest control. 
 * @scope protected
 * @param oAutoSuggestControl The autosuggest control to provide suggestions for.
 */
RemoteStateSuggestions.prototype.requestSuggestions = function (oAutoSuggestControl /*:AutoSuggestControl*/,
                                                          bTypeAhead /*:boolean*/) {

    var oHttp = this.http;

    //if there is already a live request, cancel it
    if (oHttp.readyState != 0) {
        oHttp.abort();
    }                 

    //build the URL 
    //?SearchWord=" + document.frmSelect.elements["chkSearch"].checked + "&SearchString=" + encodeURIComponent(oAutoSuggestControl.textbox.value);        
    var sURL = "./GetENTITYelements.aspx?SearchString=" + encodeURIComponent(oAutoSuggestControl.textbox.value);   

    //open connection to states.txt file    
    oHttp.open("get", sURL , true);

    oHttp.onreadystatechange = function () {		
        if (oHttp.readyState == 4) {
        		
            //evaluate the returned text JavaScript (an array)
          
			if (oHttp.responseText != '') {					
				try{
					var aSuggestions = eval(oHttp.responseText);  
					
                    //provide suggestions to the control
                    oAutoSuggestControl.autosuggest(aSuggestions, bTypeAhead);                    
				}
				catch(e){                   
				}			 
            };                             
        }    
    };    
    oHttp.send(null);
    
};
