/**
 * 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 srch = oAutoSuggestControl.textbox.value;
	var fld = oAutoSuggestControl.textbox.name;
	var len = srch.length;

	if (fld == "fld-state" || fld == "fld-state2"){
		doSearch = true;
	}else{
		if (len > 1){
			doSearch = true;
		}else{
			doSearch = false;
		}
	}
	
	if (doSearch){
		var oHttp = this.http;
		bTypeAhead = false;
		//if there is already a live request, cancel it
		if (oHttp.readyState != 0) {
			oHttp.abort();
		}                 
		var sURL = "/moo/suggest/suggestions2.asp?userInput=" + encodeURIComponent(oAutoSuggestControl.textbox.value) + "&fld=" + encodeURIComponent(oAutoSuggestControl.textbox.name);
		
		oHttp.open("get", sURL , true);
		oHttp.onreadystatechange = function () {
			if (oHttp.readyState == 4) {
				//evaluate the returned text JavaScript (an array)
				var aSuggestions = eval(oHttp.responseText);
			
				//provide suggestions to the control
				oAutoSuggestControl.autosuggest(aSuggestions, bTypeAhead);        
			}    
		};
		oHttp.send(null);
	}
};