
/**
 * Provides suggestions for state names (USA).
 * @class
 * @scope public
 */

var stateSubObj = null;
var sendInProcess = false;

function StateSuggestions(type) {
	var http = createRequestObject();
	switch(type) {
		case 'location':
			var href = 'https://kunden.bmlfuw.lfrz.at/lfrz.at/portal_genussregion/gr/script/'+type+'/'+document.getElementById('POSTCODE').value;
			break;
		case 'street':
		default:
			var href = 'https://kunden.bmlfuw.lfrz.at/lfrz.at/portal_genussregion/gr/script/'+type+'/'+document.getElementById('LOCATION').value+'/'+document.getElementById('POSTCODE').value;
			break;
	}
	http.open("get", href);
	this.states = [];
	stateSubObj = this;
	http.onreadystatechange = function() {
			if (http.readyState == 4) {
				var response = http.responseText;
				stateSubObj.states = response.split(',');
				sendInProcess = false;
			}
	}
	sendInProcess = true;
	http.send(null);
}
function createRequestObject() {
	var ro;
	var browser = navigator.appName;
	if (browser == "Microsoft Internet Explorer") {
		ro = new ActiveXObject("Microsoft.XMLHTTP");
	} else {
		ro = new XMLHttpRequest();
	}
	return ro;
}

/**
 * Request suggestions for the given autosuggest control. 
 * @scope protected
 * @param oAutoSuggestControl The autosuggest control to provide suggestions for.
 */
StateSuggestions.prototype.requestSuggestions = function (oAutoSuggestControl /*:AutoSuggestControl*/) {
		var aSuggestions = [];
    var sTextboxValue = oAutoSuggestControl.textbox.value;
    
    if (sTextboxValue.length > 0){
        //search for matching states
        for (var i=0; i < this.states.length; i++) { 
            if (this.states[i].toLowerCase().indexOf(sTextboxValue.toLowerCase()) == 0) {
                aSuggestions.push(this.states[i]);
            } 
        }
    }

    //provide suggestions to the control
    oAutoSuggestControl.autosuggest(aSuggestions);
};