// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Hier wurde aus Zeitmangel geknuppt. Habt bitte Erbarmen.  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Globale Variablen **************************************************************************************************************
var liste, container, formname, obj;
var mainForm;
var pivot = new Number;
var suchstring;
var anfang = new Number;
var ende = new Number;
var TopOffset = new Number;
var zinit = 0;
var pflichtFelder;
// Testumgebung ******************************************************************************************************************
/*function test()
{
	evalStr = 'str;';
	eval(evalStr.replace('str', prompt()));
}
document.onkeydown = hotkey;
var G_keyBefore, G_keyBeforeBefore;
function hotkey(event)
{
	if(!event)
		event = window.event;
	if(event.keyCode != 13)
	{
		if(event.keyCode == 84 && G_keyBefore == 17 && G_keyBeforeBefore == 17)
		{
		
			G_keyBeforeBefore = -1;
			G_keyBefore = -1;
			test();
		}
		G_keyBeforeBefore = G_keyBefore;
		G_keyBefore = event.keyCode;
	}
	else
		return 0;
}*/
// Initialisierung globaler Variablen und seitenspezifischer Eigenschaften *******************************************************
function arrange(curContainer, curListe, curObj, curTopOffset)
{
	TopOffset = curTopOffset;
	if(document.getElementById(curObj).style.position != 'relative')
	{
		document.getElementById(curObj).style.position = 'relative';
	}
	document.getElementById(curContainer).style.top = document.getElementById(curObj).offsetTop + document.getElementById(curObj).offsetHeight + 'px';
	document.getElementById(curContainer).style.left = document.getElementById(curObj).offsetLeft + 'px';
	document.getElementById(curListe).style.width = document.getElementById(curObj).offsetWidth + 'px';
}

function setMainForm()
{
	var tmpObj = document.getElementById('xcc');
	if(tmpObj)
	{
		tmpObj = tmpObj.parentNode;
		while(tmpObj.tagName != 'FORM')
		{
			tmpObj = tmpObj.parentNode;
		}
		mainForm = String(tmpObj.name);
	}
}

function setMainForm2()
{
	var tmpObj2 = document.getElementById('xcc2');
	if(tmpObj2)
	{
		tmpObj2 = tmpObj2.parentNode;
		while(tmpObj2.tagName != 'FORM')
		{
			tmpObj2 = tmpObj2.parentNode;
		}
		mainForm2 = String(tmpObj2.name);
	}
}


function initSearch(curObj, curForm, curContainer, curListe, curTopOffset)
{
	if(obj != curObj)
	{
		if(document.getElementById(curContainer))
		{
			arrange(curContainer, curListe, curObj, curTopOffset);
		}
		obj = curObj;
		formname = curForm;
		container = curContainer;
		liste = curListe;
	}
	anfang = 0;
	ende = document.forms[formname].getElementsByTagName('select')[0].length - 1;
}
// Eventhandler für die Suchelement-Textbox **************************************************************************************
function get_ort(event)
{
	if(!event)
		event = window.event;
	//alert(event.keyCode);
	if(event.keyCode == 8 || event.keyCode == 46)
	{
		initSearch(obj, formname, container, liste, TopOffset);
	}
	if(event.keyCode == 13 && document.forms[formname].elements[liste].selectedIndex > -1)
	{
		set_ort(false);
	}
	else if(event.keyCode == 40 || event.keyCode == 38 || event.keyCode == 27)
	{
		switch(event.keyCode)
		{
			case 27:
				disappear();
			break;
			case 38:
				document.forms[formname].elements[liste].selectedIndex = document.forms[formname].elements[liste].selectedIndex - 1;
			break;
			case 40:
				document.forms[formname].elements[liste].selectedIndex = document.forms[formname].elements[liste].selectedIndex + 1;
			break;
		}
	}
	else
	{
		if(document.getElementById(obj).value.length > 2)
		{
			document.getElementById(container).style.display = 'block';	
			if(document.getElementById(obj).tagName == 'TEXTAREA')
			{
				//alert(document.getElementById(obj).value);
				value = document.getElementById(obj).value.split(',');
				value = value[value.length - 1];
			}
			else
			{
				value = document.getElementById(obj).value;
			}
			qsearch(obj, value);
			if(document.forms[formname].elements[liste].selectedIndex == -1)
				disappear();
		}
		else
		{
			disappear();
		}
	}
}
// Ersetzt Sonderzeichen und Umlaute *********************************************************************************************
var spec_chars = new Array();
spec_chars[0] = new Object();
spec_chars[0]['from'] = 'á';
spec_chars[0]['to'] = 'a';
spec_chars[1] = new Object();
spec_chars[1]['from'] = 'é';
spec_chars[1]['to'] = 'e';
spec_chars[2] = new Object();
spec_chars[2]['from'] = 'ó';
spec_chars[2]['to'] = 'o';
spec_chars[3] = new Object();
spec_chars[3]['from'] = 'ú';
spec_chars[3]['to'] = 'u';
spec_chars[4] = new Object();
spec_chars[4]['from'] = 'à';
spec_chars[4]['to'] = 'a';
spec_chars[5] = new Object();
spec_chars[5]['from'] = 'è';
spec_chars[5]['to'] = 'e';
spec_chars[6] = new Object();
spec_chars[6]['from'] = 'ò';
spec_chars[6]['to'] = 'o';
spec_chars[7] = new Object();
spec_chars[7]['from'] = 'ù';
spec_chars[7]['to'] = 'u';
spec_chars[8] = new Object();
spec_chars[8]['from'] = 'ß';
spec_chars[8]['to'] = 's';
function replace_specs(source)
{
	result = source;
	for(z=0;z<spec_chars.length;z++)
	{
		if(spec_chars[z]['from'] == source)
		{
			result = spec_chars[z]['to'];
			break;
		}
	}
	return result;
}
// Suchalgorithmus für Orte, Locations und Zweitort. Binäre Suche ****************************************************************
function qsearch(obj, e)
{
	pivot = (anfang + ende) / 2;
	pivot = Math.round(pivot);
	comparedata = document.forms[formname].elements[liste].options[pivot].value.toLowerCase();
	comparedata = comparedata.replace(/;/gi, '');
	comparedata = comparedata.substr(0, e.length);
	comparedata = comparedata.replace(/ä/gi, 'a');
	comparedata = comparedata.replace(/ö/gi, 'o');
	comparedata = comparedata.replace(/ü/gi, 'u');
	edata = e.toLowerCase();
	edata = edata.replace(/ä/gi, 'a');
	edata = edata.replace(/ö/gi, 'o');
	edata = edata.replace(/ü/gi, 'u');
	var buffer_e = '', buffer_c = '';
	for(z=0;z<e.length;z++)
	{
		buffer_e += replace_specs(edata.substr(z, 1));
		buffer_c += replace_specs(comparedata .substr(z, 1));
	}
	comparedata = buffer_c;
	edata = buffer_e;
	/*var str = 'flé';
	str = str.replace(/\W/gi, '');
	alert(RegExp.$1);
	if(comparedata > edata)
	alert(comparedata + ' > ' + edata);
	if(comparedata <= edata)
	alert(comparedata + ' <= ' + edata);*/
	if(comparedata == edata)
	{
		var z = 1;
		while(true && pivot > 0)
		{
			compdata = document.forms[formname].elements[liste].options[pivot - z].value.toLowerCase();
			compdata = compdata.substr(0, e.length);
			compdata = compdata.replace(/ä/gi, 'a');
			compdata = compdata.replace(/ö/gi, 'o');
			compdata = compdata.replace(/ü/gi, 'u');
			if(compdata == edata)
			{
				pivot--;
			}
			else
			{
				break;
			}
		}
		document.forms[formname].elements[liste].selectedIndex = pivot;
		return(true);
	}
	else
	{
		if(comparedata > edata)
		{
			ende = pivot - 1;
		}
		else
		{
			anfang = pivot + 1;
		}
		if(anfang <= ende)
		{
			qsearch(obj, edata);
		}
		else
		{
			document.forms[formname].elements[liste].selectedIndex = -1;
			return(false);
		}
	}
}
// Formatiert und schreibt die Daten in das Ausgabefeld **************************************************************************
function set_ort(keyboard, event)
{
	if(!event)
		event = window.event;
	if((keyboard && event.keyCode == 13) || !keyboard)
	{
		var temp = document.forms[formname].elements[liste].options[document.forms[formname].elements[liste].selectedIndex].value;
		//temp = temp.split(';')[1];
		//alert(temp);
		if(document.getElementById(obj).tagName == 'TEXTAREA')
		{
			//alert(document.getElementById(obj).innerHTML);
			tmpData = document.getElementById(obj).value.split(',');
			tmpData[tmpData.length - 1] = temp;
			document.getElementById(obj).value = tmpData.join(',') + ',';
		}
		else
		{
			//alert(document.getElementById(obj).innerHTML);
			document.getElementById(obj).value = temp;
		}
		disappear();
		initSearch(obj, formname, container, liste, TopOffset);
		document.getElementById(obj).focus();
	}
}
// Versteckt die Liste der Suchtreffer *******************************************************************************************
function disappear()
{
	document.getElementById(container).style.display = 'none';
}
// Zeigt/versteckt Hilfe *********************************************************************************************************
function helpme(on)
{
	if(on)
	{
		document.getElementById('container_helpme').style.display = 'block';
	}
	else
	{
		document.getElementById('container_helpme').style.display = 'none';
	}
}
function submitMex()
{

	setMainForm();

	document.forms[mainForm].submit();

}
function submitMex2()
{

	setMainForm2();

	document.forms[mainForm2].submit();

}
function checkbox(angeklickt)
{
 if (angeklickt) {
  document.getElementById("submitbutton").style.display="";
 } else {
  document.getElementById("submitbutton").style.display="none";
 }
}


function addText(wert)
{
  document.suchealle.tsuche.value = '';
  document.suchealle.tsuche.value = document.suchealle.tsuche.value + wert;
  document.suchealle2.tsuche.value = 'a';

}  

var angeschaltet = 0;

function anzeigen(das)
{
	//alert(das);
	if(das == 'aa' || das == 'a')
		das = 'a1';
	var angeschaltet2 = document.getElementById(angeschaltet);
	if(angeschaltet != 0)
		document.getElementById(angeschaltet).style.display = 'none';
	if(document.getElementById(das).style.display == 'none')
		document.getElementById(das).style.display = 'block';
	else
		document.getElementById(das).style.display = 'none';
	angeschaltet = das;
}


/*var merk;  // global deklarierte Variable

function rein(button)
{
	var pfad = button.getElementsByTagName('IMG')[0].src;			// Quelle der ersten Grafik im Link
  	if(pfad.indexOf('h.gif') < 0)
	{ 																// wenn es sich nicht bereits um die gehighlightete Version handelt
    	pfad = pfad.substring(0,pfad.indexOf('.gif')) + 'h.gif'; 	// wird der Button gehighlightet
    	button.getElementsByTagName('IMG')[0].src = pfad;
	}
}

function raus(button)
{
	if(button != merk)
	{  																// wenn es sich nicht um den zuletzt angeklickten Button handelt
	    var pfad = button.getElementsByTagName('IMG')[0].src;
    	pfad = pfad.substring(0,pfad.indexOf('h.gif')) + '.gif';  	// zurück zur Normalversion
	    button.getElementsByTagName('IMG')[0].src = pfad;
	}
}

function klick(button)
{
	merkAlt = merk; 												// Zwischenspeichern des zuletzt gemerkten Buttons, möglicherweise "undefined"
  	merk = button;  												// Aktuell geklickten Button merken
  	if(merkAlt)  													// wenn zuvor schon einmal ein Button gemerkt wurde, also nicht "undefined"
    	raus(merkAlt);  
										// Highlighting des nicht mehr akuellen Buttons entfernen
}*/

function search_form(opt_sel_id)
{
	if(opt_sel_id == -1)
		opt_sel_id = 0;
	this.element = document.getElementById('search_form');	
	this.e_opt_buts = document.getElementById('search_form_options').getElementsByTagName('A');
	this.opt_selected = this.e_opt_buts[opt_sel_id];
	var img = this.opt_selected.getElementsByTagName('IMG')[0];
	var path = img.src;
	if(path.indexOf('h.gif') == -1)
		path = path.substring(0, path.indexOf('.gif')) + 'h.gif';
	img.src = path;
	
	this.over = function(obj)
	{
		if(obj != this.opt_selected)
			this.highlight(obj);
	}
	
	this.out = function(obj)
	{
		if(obj != this.opt_selected)
			this.lowlight(obj);
	}
	
	this.click = function(obj)
	{
		//var obj = this.e_opt_buts[id];
		if(obj != this.opt_selected)
		{
			this.lowlight(this.opt_selected);
			this.highlight(obj);
			this.opt_selected = obj;
		}
	}
	
	this.highlight = function(obj)
	{
		var img = obj.getElementsByTagName('IMG')[0];
		var path = img.src;
		if(path.indexOf('h.gif') == -1)
			path = path.substring(0, path.indexOf('.gif')) + 'h.gif';
		img.src = path;
	}
	
	this.lowlight = function(obj)
	{
		var img = obj.getElementsByTagName('IMG')[0];
		var path = img.src;
		if(path.indexOf('h.gif') > -1)
			path = path.substring(0, path.indexOf('h.gif')) + '.gif';
		img.src = path;
	}
}

var SEARCH;

function init_search_form(suche)
{
	SEARCH = new search_form(suche);
	//alert('test');
}
