
/**
 * Provides suggestions
 * @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 {
        this.http = null;
        //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*/,
                                                          sFname /*:FileName */) {

    if (this.http ==null) {return}
    var oHttp = this.http;

    //if there is already a live request, cancel it
    if (oHttp.readyState != 0) {
        oHttp.abort();
    }

    //build the URL
    var sChar = '?';
    if (sFname.indexOf('?') >= 0) {
        sChar = "&";
    }

    var sURL = sFname + sChar + "userInput=" + encodeURIComponent(oAutoSuggestControl.textbox.value);
    //open connection to suggestion file
    oHttp.open("get", sURL, true);
    oHttp.onreadystatechange = function() {
        if (oHttp.readyState == 4) {
            //evaluate the returned text JavaScript (an array)
            var aSuggestions=null;
            aSuggestions = eval(oHttp.responseText);
            //provide suggestions to the control
            oAutoSuggestControl.autosuggest(aSuggestions, bTypeAhead);

            /*if ((aSuggestions == '' || aSuggestions == null) && oAutoSuggestControl.TypeAhead == true) {
                oAutoSuggestControl.textbox.value = Left(oAutoSuggestControl.textbox.value, oAutoSuggestControl.textbox.value.length - 1);
                oAutoSuggestControl.provider.requestSuggestions(oAutoSuggestControl, bTypeAhead, sFname);
            }*/

        }
    };
    oHttp.send(null);
};

function Left(str, n){
	if (n <= 0)
	    return "";
	else if (n > String(str).length)
	    return str;
	else
	    return String(str).substring(0,n);
}

