function RemoteSuggestions() {
	if (typeof XMLHttpRequest != "undefined") {
		this.http = new XMLHttpRequest();
	}
	else if (typeof ActiveXObject != "undefined") {
		this.http = new ActiveXObject("MSXML2.XmlHttp");
	}
	else {
		// pass, no type ahead support
	}
}


RemoteSuggestions.prototype.requestSuggestions = function (oAutoSuggestControl, bTypeAhead) {
	var oHttp = this.http;
	
	if (oHttp.readyState != 0) {
		oHttp.abort();
	}
	
	var sURL = "/ajax/getstate.py"
	var poststr = "userInput=" + encodeURI(oAutoSuggestControl.textbox.value);

	if (oAutoSuggestControl.textbox.value.length > 3) {	
		oHttp.open("POST", sURL, true);
		oHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		oHttp.setRequestHeader('Content-length', poststr.length);
		oHttp.setRequestHeader('Connection', "close");
		oHttp.onreadystatechange = function () {
			if (oHttp.readyState == 4) {
				var aSuggestions = eval(oHttp.responseText);
				oAutoSuggestControl.autosuggest(aSuggestions, bTypeAhead);
			}
		};
		oHttp.send(poststr);
	}
};
