
/**
 * Provides suggestions for state names (USA).
 * @class
 * @scope public
 */
function RemoteSuggestions(paramNames, paramValues) {
if(suggestDebug) {alert ('Remote suggestion for '+ paramNames);}
	var parameterNames = new Array();
	var parameterValues = new Array();
	
	this.parameterNames = paramNames; // copy parameters
	this.parameterValues = paramValues; // copy parameters
    if (typeof XMLHttpRequest != "undefined") {
        this.http = new XMLHttpRequest();
    } else if (typeof ActiveXObject != "undefined") {
        this.http = new ActiveXObject("MSXML2.XmlHttp");
    } else {
       if(suggestDebug) {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.
 */
RemoteSuggestions.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();
    }       
    url = 0;
    params = "";          
	for (i=0; i<this.parameterNames.length; i++){
		if(this.parameterNames[i].indexOf('url') ==0)
			url=this.parameterValues[i];
		else if(this.parameterNames[i].indexOf('function') ==0 )
			func=this.parameterValues[i];
		else {
			try {
				val = eval(this.parameterValues[i])
			} catch (err) {
				val = 'eval error';
			}
			if(params.length != 0) params = params + "&";
			params = params + encodeURIComponent(this.parameterNames[i]) + "=" + encodeURIComponent(val);
		}
	}
 	if (url) {
	    //build the URL
	       
	    var sURL = url+"?userInput=" + encodeURIComponent(oAutoSuggestControl.textbox.value);
	    sURL = sURL + "&function=" + encodeURIComponent(func);
		if(params.length != 0) params = "&" + params;
		sURL = sURL + params;
	    //open connection to states.txt file
if (suggestDebug) {alert ('Requsting Suggestions : '+ sURL);}
	    oHttp.open("get", sURL , true);
	    oHttp.onreadystatechange = function () {

	        if (oHttp.readyState == 4) {
	        	if (oHttp.status == 200) {
if (suggestDebug) {alert ('Suggestions Received : '+ oHttp.responseText);}
		            //evaluate the returned text JavaScript (an array)
		            try {
		            	var aSuggestions = eval(oHttp.responseText);
		            } catch (err) {
		            	// oHttp.send(null);
		            	return;
		            }
		            
		            //provide suggestions to the control
	            	oAutoSuggestControl.autosuggest(aSuggestions, bTypeAhead);        
		        }    
	        }
	    };
	    oHttp.send(null);
	}    

};