
/**
 * Provides suggestions for development names.
 * @class
 * @scope public
 */
function RemoteDevelopmentSuggestions() {

    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.
 */
RemoteDevelopmentSuggestions.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
    var sURL = "ajax/suggestions.php?userInput=" + encodeURIComponent(oAutoSuggestControl.textbox.value);
	
	
    //open connection to states.txt file
    oHttp.open("get", sURL , true)
	
	
    oHttp.onreadystatechange = function () {
        if (oHttp.readyState == 4) {
			if (oHttp.status == 200)
			{
				if (oAutoSuggestControl.textbox.value.length == mutex)
				{
					//evaluate the returned text JavaScript (an array)
					
					var temp = oHttp.responseText;
					var aSuggestions = eval(oHttp.responseText);
					//provide suggestions to the control
					if(aSuggestions.length > 1)
						bTypeAhead = false;
					oAutoSuggestControl.autosuggest(aSuggestions, bTypeAhead);
				}
				else
				{
					oAutoSuggestControl.hideSuggestions();
				}
			}
        }   
    };
    oHttp.send(null);
    

};