function registerAutocompletion(targetId, mode, additionalParameter, resultCallback) {
	var url = '/?eID=tx_npkrankenhaussuche_ajax&mode=' + mode;
	if (additionalParameter != undefined) {
		url += '&additionalParameter=' + additionalParameter;
	}
	$('#' + targetId).autocomplete(url, {
		width: 450,
		max: 20,
		minChars: 1,
		dataType: 'json',
		autoFill: true,
		parse: function(data) {
			return $.map(data, function(row) {
				return {
					data: row,
					value: row.Schluesselnummer,
					result: row.Schluesselnummer
				}
			});
		},
		formatItem: function(row) {
			return row.Schluesselnummer + ' ' + row.Beschreibung;
		}
	}).result(function(event, data, formatted) {
		if (resultCallback != undefined) {
			resultCallback();
		}
	});
}

function loadOptions(selector, mode, targetId, additionalParameter) {
	$('#' + targetId).html('');
	var parameters = {mode: mode, q: $(selector).val()};
	if (additionalParameter != undefined) {
		parameters.additionalParameter = additionalParameter;
	}
	$.getJSON("/?eID=tx_npkrankenhaussuche_ajax",parameters, function(json){
		var options = '';
		for (var i = 0; i < json.length; i++) {
			var label = json[i].Schluesselnummer + ' ' + json[i].Beschreibung;
			options += '<option title="' + label + '" value="' + json[i].Schluesselnummer + '">' + label + '</option>';
		}
		$('#' + targetId).html(options);
	});
}