function preHandleContents(http_request) {
		//alert("Ready state: " + http_request.readyState +" and status = " + http_request.status);
        if (http_request.readyState == 4) {
            if (http_request.status == 200) {
				if (handleContent) {
					handleContent(http_request.responseText);
				}
            } else {
				if (handleContentError) {
					handleContentError('There was a problem with the request (' + http_request.status + ')');
				}
            }
        }
    }

function doEvalOnReturn(http_request) {
	//alert("Ready To Eval State: " + http_request.readyState +" and status = " + http_request.status);
	if (http_request.readyState == 4) {
		if (http_request.status == 200) {
			//alert("eval to " + http_request.responseText);
			eval(http_request.responseText);
		} else {
			handleContentError('There was a problem with the request (' + http_request.status + ')');
		}
	}
}

function makeRequest(url,postCommand,alternateHandleFunc,alternateObject) {

	var http_request = false;

	//alert("Request: (" + url + ") and post (" + postCommand + ") and func: (" + alternateHandleFunc + ")");
	if (window.XMLHttpRequest) { // Mozilla, Safari, ...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			http_request.overrideMimeType('text/xml');
		}
	} else if (window.ActiveXObject) { // IE
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if (!http_request) {
		alert('Giving up :( Cannot create an XMLHTTP instance');
		return false;
	}

	if (alternateHandleFunc == null || alternateHandleFunc ==  undefined) {
		http_request.onreadystatechange = function() { preHandleContents(http_request); };
	}		
	else {
		if (alternateObject) {
			http_request.onreadystatechange = function() { alternateHandleFunc(http_request,alternateObject); };
		}
		else 
			http_request.onreadystatechange = function() {alternateHandleFunc(http_request); };
		
	}

	if (postCommand)	{
		http_request.open("POST", url, true);
		http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		http_request.setRequestHeader("Content-length", postCommand.length);
	}
	else {
		http_request.open("GET", url, true);
	}
	http_request.setRequestHeader('Cache-Control', 'no-cache');
	http_request.send(postCommand);
}

function makeEvalRequest(url,postCommand) {
	makeRequest(url,postCommand,doEvalOnReturn);
}


function RemoteStateSuggestions() { this.autoSuggestControl = null; };


RemoteStateSuggestions.prototype.doSuggestOnReturn = function (http_request,oThis) {
	//alert("Ready To Eval State: " + http_request.readyState +" and status = " + http_request.status);
	if (http_request.readyState == 4) {
		if (http_request.status == 200) {
			//alert(http_request.responseText);
			//evaluate the returned text JavaScript (an array)
            aSuggestions = eval(http_request.responseText);			

            //provide suggestions to the control
            oThis.autoSuggestControl.autosuggest(aSuggestions, oThis.bTypeAhead);
		} else {
			handleContentError('There was a problem with the request (' + http_request.status + ')');
		}
	}
}

RemoteStateSuggestions.prototype.requestSuggestions = function (oAutoSuggestControl /*:AutoSuggestControl*/,
                                                          bTypeAhead /*:boolean*/) {

	this.autoSuggestControl = oAutoSuggestControl;
	this.typeAhead = bTypeAhead;
	strT = oAutoSuggestControl.textbox.value;
	if(strT.length >= 3){
	//build the URL
    var sURL = "ajGetFriends.php?user=" + escape(oAutoSuggestControl.textbox.value);
	makeRequest(sURL,'',this.doSuggestOnReturn,this);
	}
  
};

    