var strassenNamen;
var myAutocompleter;
					

					
Autocompleter.VC = Class.create(Autocompleter.Local, {
	onKeyPress: function(event) {
		if(this.active)
			switch(event.keyCode) {
				case Event.KEY_TAB:
					return false;
				case Event.KEY_RETURN:
					this.selectEntry();
					$('autocomplete_selectStrasse').fire("vc:autocomplete",{keypressed: Event.KEY_RETURN});
					Event.stop(event);
				case Event.KEY_ESC:
					this.hide();
					this.active = false;
					Event.stop(event);
					return;
				case Event.KEY_LEFT:
				case Event.KEY_RIGHT:
					return;
				case Event.KEY_UP:
					this.markPrevious();
					this.render();
					Event.stop(event);
					return;
				case Event.KEY_DOWN:
					this.markNext();
					this.render();
					Event.stop(event);
					return;
			}
		else
			if(event.keyCode==Event.KEY_TAB || event.keyCode==Event.KEY_RETURN ||
			(Prototype.Browser.WebKit > 0 && event.keyCode == 0)) return;

		this.changed = true;
		this.hasFocus = true;

		if(this.observer) clearTimeout(this.observer);
		this.observer =
			setTimeout(this.onObserverEvent.bind(this), this.options.frequency*1000);
	},
	initialize: function($super, element, update, url, options) {
		$super(element, update, url, options);
		this.clicked_outside = false;
		Event.observe(document, "click", this.onDocumentClick.bindAsEventListener(this));
		this.element.stopObserving("blur");
		this.element.observe("blur", this.onBlurOverride.bindAsEventListener(this));
    },
    onDocumentClick: function(event) {
		if (this.element.id != event.target.id) {
			this.clicked_outside = true;
		}
    },
    onBlurOverride: function(event) {
		var thisObject = this;
		var callback = function() {
			if (thisObject.clicked_outside) {
				thisObject.clicked_outside = false;
				thisObject.onBlur(event);
			}
			else {
				thisObject.element.focus();
			}
		}
		setTimeout(callback, 200);
    }
});


					
function clearForm() {
	document.getElementById('inputStrasse').value = '';
	document.getElementById('hausNr').value = '';
	DWRUtil.removeAllOptions("selectStrassen");
	DWRUtil.removeAllOptions("selectOrte");
						
	var overruledOrtsCode = document.getElementById('overruledOrtsCode');
						
	if (overruledOrtsCode!=null) {
		if (overruledOrtsCode.nodeName == 'INPUT') {
			overruledOrtsCode.value = "";
		}
		if (overruledOrtsCode.nodeName == 'SELECT') {
			DWRUtil.removeAllOptions("overruledOrtsCode");
		}
	}
}
					
function clearDoublettenForm() {
	var overruledOrtsCode = document.getElementById('overruledOrtsCode');
	if (overruledOrtsCode!=null) {
		if (overruledOrtsCode.nodeName == 'INPUT') {
			overruledOrtsCode.value = "";
		}
		if (overruledOrtsCode.nodeName == 'SELECT') {
			DWRUtil.removeAllOptions("overruledOrtsCode");
		}
	}
}

var vorletzteEingabe = '';
					
function checkHausnr() {
	var hausNr = document.getElementById('hausNr').value.replace(/^\s+|\s+$/g,'');
	if (hausNr==='') {
		alert(errHausnr);
		return false;
	}
	return true;
}
				
function checkAbholungForm (myform)
{
	if (document.getElementById('selectStrassen').value == '')
	{
		myStrassenVerzeichnis.getStrassen(document.getElementById ('inputStrasse').value, functionStrassen);							
	}
}
					
function submitStrassenName(inputStrasse) {
	document.getElementById('hausNr').value='';
	var eingabe = inputStrasse.value.replace(/^\s+|\s+$/g,'');
	if (vorletzteEingabe !== eingabe && eingabe !== '') {
		vorletzteEingabe = eingabe;
		myStrassenVerzeichnis.getStrassen(eingabe, functionStrassen);
	}
}
function submitStrassenNameNew(inputStrasse) {
	document.getElementById('hausNr').value='';
	var eingabe = inputStrasse.value.replace(/^\s+|\s+$/g,'');
	if ( eingabe.length >= 1 && vorletzteEingabe == '' || eingabe.length == 1 && vorletzteEingabe !== eingabe && eingabe !== '') { //							
		vorletzteEingabe = eingabe;
		myStrassenVerzeichnis.getStrassen(eingabe, functionStrassenNew);
	}
}
				
var strassenIndex = new Array();
var strassenIds = new Array();
var strassenNamen = new Array();
				
var processStrasseOptionValue	=	function(index) {	return strassenIds[index];		};
var processStrasseOptionText	=	function(index) {	return strassenNamen[index];	};
					
function genAutocomplete(){

	var mySelect= document.getElementById("selectStrassen");

	var i;

	for (i=0; i < mySelect.options.length; i++) {
		resultArray[i] = mySelect.options[i].value;
	}
}
var functionStrassen = function(data) {
	if (data !== null && typeof data == 'object') {
		strassenIndex = new Array();
		strassenIds = new Array();
		strassenNamen = new Array();
		for (var i=0; i<data.length; i++) {
			strassenIndex[i] = i;
			strassenIds[i] = data[i][0];
			strassenNamen[i] = data[i][1];
		}

		//								DWRUtil.removeAllOptions("selectStrassen");
		//								DWRUtil.addOptions("selectStrassen", strassenIndex, processStrasseOptionValue, processStrasseOptionText);
		var selStr = document.getElementById("selectStrassen");
		if (selStr){
			selStr.value=strassenIds[0];
		}
								
		if (strassenIds.length > 0) {
			myStrassenVerzeichnis.getOrte(strassenIds[0], functionOrte);
		}
		else {
			DWRUtil.removeAllOptions("selectOrte");
		}
	}
	else {
		alert("error strassen");
	}
};
						
var functionStrassenNew = function(data) {
	if (data !== null && typeof data == 'object') {
		strassenIndex = new Array();
		strassenIds = new Array();
		strassenNamen = new Array();
		resultArray=new Array();
		for (var i=0; i<data.length; i++) {
			strassenIndex[i] = i;
			strassenIds[i] = data[i][0];
			strassenNamen[i] = data[i][1];
			resultArray[data[i][0]]=data[i][1];
		}
								
		if (myAutocompleter == null)
			myAutocompleter = new Autocompleter.VC("inputStrasse", "autocomplete_selectStrasse", strassenNamen, {minChars:3,choices:250});
		else
		{				
			myAutocompleter.options.array= strassenNamen;
		}
		if (strassenIds.length == 1) {
			myStrassenVerzeichnis.getOrte(strassenIds[0], functionOrte);
		}
		else {
			DWRUtil.removeAllOptions("selectOrte");
		}
	}
	else {
		alert("error strassen");
	}
};
					




function submitStrassenCode(select) {
	for (i = 0; i < select.length; i++ ) {
		if (select.options[i].selected == true) {
			myStrassenVerzeichnis.getOrte(select.options[i].value, functionOrte);
		}
	}
}
					
function submitStrassenCodeNew(select) {
	for (i = 0; i < select.length; i++ ) {
		if (select.options[i].selected == true) {
			myStrassenVerzeichnis.getOrte(select.options[i].value, functionOrte);
		}
	}
}					
					
var ortsIndex = new Array();
var ortsIds = new Array();
var ortsNamen = new Array();
					
var processOrtOptionValue	=	function(index) {	return ortsIds[index];		};
var processOrtOptionText	=	function(index) {	return ortsNamen[index];	};
					
var functionOrte = function(data) {
	if (data !== null && typeof data == 'object') {
		ortsIndex = new Array();
		ortsIds = new Array();
		ortsNamen = new Array();
		for (i=0; i<data.length; i++) {
			ortsIndex[i] = i;
			ortsIds[i] = data[i][0];
			ortsNamen[i] = data[i][1];
		}
							
		DWRUtil.removeAllOptions("selectOrte");
		DWRUtil.addOptions("selectOrte", ortsIndex, processOrtOptionValue, processOrtOptionText);
						
	}
	else {
		alert("error orte");
	}
};

