function GeteilteEingabe() {
	var elemente = new Array();
	var erlaubteZeichen = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ123456789';
	
	this.elementHinzufuegen = function (element) {
		elemente.push(element);
		
		element.onkeydown = function (e) { weiterspringen(e); };
	};
	
	var sucheElement = function (aktuelles, vor) {
		for (var i = 0; i < elemente.length; i++) {
			if (elemente[i] == aktuelles) {
				if (vor && i !== 0) {
					return elemente[i - 1];
				}
				else if (!vor && i !== (elemente.length - 1)) {
					return elemente[i + 1];
				}
			}
		}
		return false;
	};
	
	var aktuelleEingabezeigerPosition = function (element) {
		if (element.selectionStart) { // Gecko
			return element.selectionStart;
		}
		else if (document.selection) { // IE
			var auswahl = document.selection.createRange();
			var kopie = auswahl.duplicate();
			var position = 0;
			while(kopie.move('character', -1) !== 0) {
				position++;
			}
			
			return position;
		}
		return false;
	};
	
	function eingabezeigerAendern(element, zeichen) {
		if (typeof document.selection != 'undefined')  { // IE
			var pos = document.selection.createRange();
			pos.move('character', zeichen);
			pos.select();
		}
		else if (typeof element.setSelectionRange != 'undefined') { // Gecko
			element.setSelectionRange(zeichen, zeichen);
		}
		
	}

	function weiterspringen(event) {
		var e = (window.event) ? window.event : event;
		var keyCode = (e.keyCode) ? e.keyCode : e.charCode;
		var sourceElement = (e.srcElement) ? e.srcElement : e.target;
		var erlaubtesZeichen = erlaubteZeichen.indexOf(String.fromCharCode(keyCode)) != -1;
		
		if (keyCode === 8 || keyCode === 37) {
			if (aktuelleEingabezeigerPosition(sourceElement) === 0) {
				var vorherigesElement = sucheElement(sourceElement, true);
				if (false !== vorherigesElement) {
					vorherigesElement.focus();
					eingabezeigerAendern(vorherigesElement, vorherigesElement.value.length);
				}
			}
		}
		else if (keyCode === 39 || erlaubtesZeichen) {
			if (aktuelleEingabezeigerPosition(sourceElement) == sourceElement.getAttribute('maxlength') || 
			        (keyCode === 39 && aktuelleEingabezeigerPosition(sourceElement) == sourceElement.value.length)) {
				var naechstesElement = sucheElement(sourceElement, false);
				if (false !== naechstesElement) {
					naechstesElement.focus();
					
					eingabezeigerAendern(naechstesElement, 0);
				}
			}
		}
	}
}


