	var m_iGlobalRowComps      = -1;
	var m_iGlobalRowCompsMax   = 0;
	var m_iGlobalRowCats       = -1;
	var m_iGlobalRowCatsMax    = 0;
	var m_iGlobalRowFilters    = -1;
	var m_iGlobalRowFiltersMax = 0;
	
	var m_iStatusComp          = 1;
	var form_senden=false;
	
	var filterDisplay = 0;
	
	var m_sHtmlComps           = "" + 
		"<table summary=\"0\" id=\"table_comps\" width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">" + "\n" + 
		"	<tr id=\"tr_comps_0\"><td style=\"min-height:18px;padding-top:3px;padding-bottom:3px;\">&nbsp;</td></tr>" + "\n" + 
		"	<tr id=\"tr_comps_1\"><td style=\"min-height:18px;padding-top:3px;padding-bottom:3px;\">&nbsp;</td></tr>" + "\n" + 
		"	<tr id=\"tr_comps_2\"><td style=\"min-height:18px;padding-top:3px;padding-bottom:3px;\">&nbsp;</td></tr>" + "\n" + 
		"	<tr id=\"tr_comps_3\"><td style=\"min-height:18px;padding-top:3px;padding-bottom:3px;\">&nbsp;</td></tr>" + "\n" + 
		"	<tr id=\"tr_comps_4\"><td style=\"min-height:18px;padding-top:3px;padding-bottom:3px;\">&nbsp;</td></tr>" + "\n" + 
		"	<tr id=\"tr_comps_5\"><td style=\"min-height:18px;padding-top:3px;padding-bottom:3px;\">&nbsp;</td></tr>" + "\n" + 
		"	<tr id=\"tr_comps_6\"><td style=\"min-height:18px;padding-top:3px;padding-bottom:3px;\">&nbsp;</td></tr>" + "\n" + 
		"	<tr id=\"tr_comps_7\"><td style=\"min-height:18px;padding-top:3px;padding-bottom:3px;\">&nbsp;</td></tr>" + "\n" + 
		"	<tr id=\"tr_comps_8\"><td style=\"min-height:18px;padding-top:3px;padding-bottom:3px;\">&nbsp;</td></tr>" + "\n" + 
		"	<tr id=\"tr_comps_9\"><td style=\"min-height:18px;padding-top:3px;padding-bottom:3px;\">&nbsp;</td></tr>" + "\n" + 
		"	<tr>" + "\n" + 
		"		<td style=\"line-height:18px;border-top:1px solid #005c99;\"><div style=\"float:left\">&nbsp;&nbsp;</div><div style=\"float:right\"></div></td>" + "\n" + 
		"	</tr>" + "\n" + 
		"</table>" + "\n";
	
	var m_sHtmlCats            = "" + 
		"<form name=\"xhit_cats\">" + "\n" + 
		"	<input type=\"hidden\" name=\"cattr\" value=\"Kategorie\" />" + "\n" + 
		"</form>" + "\n";
	
	var m_sHtmlHitlist         = "" + 
		"<table width=\"100%\" cellspacing=\"0\" cellpadding=\"5\" border=\"0\">" + "\n" + 
		"	<tbody>" + "\n" + 
		"		<tr width=\"95%\">" + "\n" + 
		"			<td colspan=\"6\"><table width=\"100%\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\">" + "\n" + 
		"				<tbody>" + "\n" + 
		"					<tr>" + "\n" + 
		"						<td><nobr><div style=\"float: left;\">&nbsp;</div></nobr></td>" + "\n" + 
		"						<td width=\"100%\" align=\"center\"></td>" + "\n" + 
		"						<td><nobr><div style=\"float: right;\">&nbsp;</div></nobr></td>" + "\n" + 
		"					</tr>" + "\n" + 
		"				</tbody>" + "\n" + 
		"			</table></td>" + "\n" + 
		"		</tr>" + "\n" + 
		"		<tr width=\"95%\">" + "\n" + 
		"			<td colspan=\"6\"></td>" + "\n" + 
		"		</tr>" + "\n" + 
		"		<tr width=\"95%\">" + "\n" + 
		"			<td colspan=\"6\" style=\"font-size: 14px; font-weight: bold;\">&nbsp;</td>" + "\n" + 
		"		</tr>" + "\n" + 
		"		<tr width=\"95%\">" + "\n" + 
		"			<td colspan=\"6\" style=\"font-size: 12px;\">&nbsp;</td>" + "\n" + 
		"		</tr>" + "\n" + 
		"		<tr width=\"95%\">" + "\n" + 
		"			<td width=\"25%\" colspan=\"1\" style=\"font-size: 12px;\">&nbsp;</td>" + "\n" + 
		"			<td width=\"25%\" colspan=\"2\" style=\"font-size: 12px;\">&nbsp;</td>" + "\n" + 
		"			<td width=\"25%\" colspan=\"1\" style=\"font-size: 12px;\">&nbsp;</td>" + "\n" + 
		"			<td width=\"25%\" colspan=\"2\" style=\"font-size: 12px;\">&nbsp;</td>" + "\n" + 
		"		</tr>" + "\n" + 
		"		<!--" + "\n" + 
		"		<tr width=\"95%\">" + "\n" + 
		"			<td colspan=\"6\"></td>" + "\n" + 
		"		</tr>" + "\n" + 
		"		<tr width=\"95%\">" + "\n" + 
		"			<td colspan=\"6\"><div style=\"float: left;\">&nbsp;</div><div style=\"float: right;\">&nbsp;</div></td>" + "\n" + 
		"		</tr>" + "\n" + 
		"		-->" + "\n" + 
		"	</tbody>" + "\n" + 
		"</table>" + "\n";
		
var ajaxRequest;
	function loadXMLDoc(url) {
		abortPendingRequest(ajaxRequest);
	
		ajaxRequest = createAjaxRequest();
		ajaxRequest.onreadystatechange = processReqChange;
		
		ajaxRequest.open("GET", url);
		ajaxRequest.send(null);
	}

	function abortPendingRequest(request) {
		if((request != null) && (request.readyState != 0) && (request.readyState != 4)) {
			request.abort();
		}
	}
	
	function createAjaxRequest() {
		var C=null;
		try {
			C=new ActiveXObject("Msxml2.XMLHTTP");
		}		catch(e){
			try {
				C=new ActiveXObject("Microsoft.XMLHTTP");
			}			catch(sc){
				C=null;
			}
		}
		if(!C&&typeof XMLHttpRequest!="undefined"){
			C=new XMLHttpRequest();
		}
		return C;
	}

	function processReqChange() {
		if(ajaxRequest.readyState == 4){
			if(ajaxRequest.status == 200) {
				if(ajaxRequest.responseText == "") 
				{
					/*
						m_iStatusComp = 0;
						var myFx = new Fx.Style('comps', 'opacity',{duration:200}).start(1,0);
						
						if (document.getElementById('comps')) {
							document.getElementById('comps').innerHTML = "";
							document.getElementById('comps').style.visibility = "hidden";
						}

						if (document.getElementById('hitlist')) {
							document.getElementById('hitlist').innerHTML = "";
							document.getElementById('hitlist').style.visibility = "hidden";
						}

						if (document.getElementById('cat')) {
							document.getElementById('cat').innerHTML = "";
							document.getElementById('cat').style.visibility = "hidden";
						}

						if (document.getElementById('debug')) {
							document.getElementById('debug').innerHTML = "";
							document.getElementById('debug').style.visibility = "hidden";
						}
					*/
					}
				else {
					var sResponseText = ajaxRequest.responseText;
					var sDebug    = "";
					var sComps    = "";
					var sHitlist  = "";
					var sCats     = "";
					var sFilters  = "";
					var iPosStart = 0;
					var iPosEnd   = -1;
					
					iPosStart = sResponseText.search(/<comps>/i);
					if (iPosStart != -1) {
						iPosStart = iPosStart + "<comps>".length;
						iPosEnd   = sResponseText.search(/<\/comps>/i);
					
						if (iPosEnd > iPosStart) {
							sComps = sResponseText.substring(iPosStart, iPosEnd);
						}
						if (iPosStart > -1) {
							document.getElementById('comps').innerHTML        = (sComps != "" ? sComps  : m_sHtmlComps);
							
							if (m_iStatusComp != 1) {
								var myFx = new Fx.Style('comps', 'opacity',{duration:300}).start(0,1);
							}
							
							m_iGlobalRowComps    = -1;
							m_iGlobalRowCompsMax = (document.getElementById('table_comps') ? document.getElementById('table_comps').summary : 0);
							m_iStatusComp        = 1;
						}
					}
					iPosStart = sResponseText.search(/<hitlist>/i);
					if (iPosStart != -1) {
							iPosStart = iPosStart + "<hitlist>".length;
							iPosEnd   = sResponseText.search(/<\/hitlist>/i);
							
							if (iPosEnd > iPosStart) {
								sHitlist = sResponseText.substring(iPosStart, iPosEnd);
							}
							if (iPosStart > -1) {
								document.getElementById('hitlist').innerHTML = (sHitlist != "" ? sHitlist  : m_sHtmlHitlist);
							}
					}
					iPosStart = sResponseText.search(/<filters>/i);
					if (iPosStart != -1) {
								iPosStart = iPosStart + "<filters>".length;
								iPosEnd   = sResponseText.search(/<\/filters>/i);
								
								if (iPosEnd > iPosStart) {
									sFilters = sResponseText.substring(iPosStart, iPosEnd);
								}
								if (iPosStart > -1) {
									document.getElementById('filters').innerHTML = sFilters;
									if (sFilters == "") {
										document.getElementById('filters').innerHTML = "<form name=\"xhit_filters\"><input type=\"hidden\" name=\"fattr\" value=\"\" /></form>";
										//document.getElementById('filters').style.visibility = (sFilters != "" ? "visible" : "hidden");
										//document.getElementById('xhit_filters_container').style.display = (sFilters != "" ? "block" : "none");
										m_iGlobalRowFilters     = -1;
										m_iGlobalRowFiltersMax  = (document.getElementById('table_filters') ? document.getElementById('table_filters').summary : 0);
										
										filterDisplay = 0;
										if(filterDisplay == 0) {
											document.getElementById('xhit_filters_container').style.display = 'none';
										}
									}
								}
					}	
					iPosStart = sResponseText.search(/<cats>/i);
					if (iPosStart != -1) {
										iPosStart = iPosStart + "<cats>".length;
										iPosEnd   = sResponseText.search(/<\/cats>/i);
									if (iPosEnd > iPosStart){
										sCats = sResponseText.substring(iPosStart, iPosEnd);

									}
									if (iPosStart > -1) {
										document.getElementById('cats').innerHTML = (sCats != "" ? sCats  : m_sHtmlCats);

										m_iGlobalRowCats     = -1;
										m_iGlobalRowCatsMax  = (document.getElementById('table_cats') ? document.getElementById('table_cats').summary : 0);
									}
					}
				}
			}
		}
	}
	
function onKeyDownDocument(e) {
	IE = document.all && !window.opera;  // IE
	OP = window.opera;                   // Opera

	var Netscape = new Boolean();
	if(navigator.appName == "Netscape")  // Mozilla und Firefox
	Netscape = true;

	if (IE || OP) {
		intKeyNr = window.event.keyCode;
		Ereignis = window.event;
	}
	else if(Netscape == true){
		var evt = e || window.event;
		intKeyNr = evt.keyCode; //e.which;
		Ereignis = evt;
	}

	// Falls es sich um Cursor nach unten handelt
	if((intKeyNr == 40) && (m_iGlobalRowComps < m_iGlobalRowCompsMax - 1)){
		// ... Code, um Highlight abwärts zu schieben
		highlight("comps", m_iGlobalRowComps+1);
	}

	// Falls es sich um Cursor nach oben handelt
	if((intKeyNr == 38) && (m_iGlobalRowComps != 0)){
		// ... Code, um Highlight aufwärts zu schieben
		if (m_iGlobalRowComps == -1) 
			highlight("comps", m_iGlobalRowCompsMax-1);
		else
			highlight("comps", m_iGlobalRowComps-1);
	}

	// Falls RETURN in der Suggest-Liste gedrückt wurde
	if ((intKeyNr == 13) && (m_iGlobalRowComps >= 0 && m_iGlobalRowComps <= m_iGlobalRowCompsMax - 1)) {
		showCompsByCounter(m_iGlobalRowComps);
	}

	//var upKey	  = 88;	// =x
	//var downKey = 89; // =y
	var upKey	  = 33;	// =x
	var downKey = 34; // =y

	// mehr/zurück blättern
	//if (Ereignis.ctrlKey){
		if (intKeyNr == downKey || intKeyNr == upKey) {
			/*
			var gesamt_tmp = parseInt(document.getElementById('gesamt').innerHTML,10);
			var start_tmp  = parseInt(document.getElementById('start').innerHTML,10);
			var end_tmp    = parseInt(document.getElementById('end').innerHTML,10);
			*/

			if (intKeyNr == downKey){
				if (document.getElementById('a_comps_next')) {
					eval(document.getElementById('a_comps_next').href);
				}
				/*
				if(start_tmp > 10){
					startneu = start_tmp - 10;
					endneu   = end_tmp - 10;
					show(startneu, endneu);
				}
				*/
			}
			if (intKeyNr == upKey){
				if (document.getElementById('a_comps_back')) {
					eval(document.getElementById('a_comps_back').href);
				}
				/*
				if (gesamt_tmp > end_tmp){
					startneu = start_tmp + 10;
					endneu   = end_tmp + 10;
					show(startneu, endneu);
				}
				*/
			}
		}
	//}
	document.getElementById('suche').focus();
}

function highlight(sTable, iRow){
	
	if (sTable == "cats") {
		if (m_iGlobalRowCats != -1){
			document.getElementById('tr_' + sTable + "_" + m_iGlobalRowCats).bgColor = "";
		}
	}
	else if (sTable == "filters") {
		if (m_iGlobalRowFilters != -1) {
			document.getElementById('tr_' + sTable + "_" + m_iGlobalRowFilters).bgColor = "";
		}
	}
	else {
		if (m_iGlobalRowComps != -1) {
			document.getElementById('tr_' + sTable + "_" + m_iGlobalRowComps).bgColor = "#eff5f8";
		}
	}

	switch (sTable) {
		case "cats":
			document.getElementById('tr_' + sTable + "_" + iRow).bgColor = "#c0d6e5";
			m_iGlobalRowCats  = iRow;
			break;
		case "filters":
			document.getElementById('tr_' + sTable + "_" + iRow).bgColor = "#c0d6e5";
			m_iGlobalRowFilters  = iRow;
			break;
		case "comps":
			document.getElementById('tr_' + sTable + "_" + iRow).bgColor = "#c0d6e5";
			m_iGlobalRowComps = iRow;
			break;
	}
	window.focus();
}

function showCompsByCounter(iCounter) {
	document.getElementById('tr_comps_' + iCounter).onclick();
}

function show(sSend){
	var o      = document.getElementById('suche');
	var sSt    = getSearch(o);
	var sSend  = sSend + (sSend != "" ? "&" : "") + "st=" + encodeURIComponent(sSt);
	
	var sDebug = "0";
	var sCAttr = "";
	var sFAttr = "";
	var sSAttr = getSearchAttr("sattr");

	if (document.getElementsByName("debug")) {
		sDebug = document.getElementsByName("debug")[0].value;
	}
	if (document.xhit_cats) {
		sCAttr = document.xhit_cats.cattr.value;
	}
	if (document.xhit_filters) {
		sFAttr = document.xhit_filters.fattr.value;
	}
	sSend = setPara(sSend, "debug", sDebug);
	sSend = setPara(sSend, "cattr", encodeURIComponent(sCAttr));
	sSend = setPara(sSend, "fattr", encodeURIComponent(sFAttr));
	sSend = (sSAttr != "" ? setPara(sSend, "sattr", encodeURIComponent(sSAttr)) : sSend);

	if (sSt != "") {
		loadXMLDoc("getdata.php?" + sSend);
	}
}

function setComps(sComp) {
	var o = document.getElementById('suche');
	var sSearch = o.value;
	var aSearch;
	var iWord = 0;	
	
	
	if(o.length < 2) {
		document.getElementById('comps').style.visibility = "hidden";
		document.getElementById('engine_visible').style.visibility = "hidden";
		document.getElementById('engine_visible2').style.visibility = "hidden";
		document.getElementById('comps').style.display = "none";
		document.getElementById('engine_visible').style.display = "none";
		document.getElementById('engine_visible2').style.display = "none";
	}
	
	// Umlaut schützen, damit diese nicht als Worttrenner gelten
	sSearch = replaceUmlaute(sSearch, 0, 2)
	aSearch = sSearch.split(/\b/);
	for (var i = 0; i < aSearch.length; i++) {
		aSearch[i] = replaceUmlaute(aSearch[i], 2, 0)
	}
	
	sSt = aSearch.join("");
	
	var vieleWoerter = sSt.split(" ");
	if(vieleWoerter.length > 1) {
		var WoerterString;
		vieleWoerter.length = vieleWoerter.length - 1;
		WoerterString = vieleWoerter.join(" ");
		sComp = WoerterString + " " + sComp;
		
	}
	
		o.value = sSt;
		document.getElementById('suche').value = sComp;
					
	o.onkeyup();
	

}

function delFilter(sSend) {
	var o     = document.getElementById('suche');
	var sSt   = getSearch(o);
	var sSend = sSend + (sSend != "" ? "&" : "") + "st=" + encodeURIComponent(sSt);

	var sDebug = "0";
	var sCAttr = "";
	var sFAttr = "";
	var sSAttr = getSearchAttr("sattr");

	if (document.getElementsByName("debug")) {
		sDebug = document.getElementsByName("debug")[0].value;
	}
	if (document.xhit_cats) {
		sCAttr = document.xhit_cats.cattr.value;
	}
	if (document.xhit_filters) {
		sFAttr = document.xhit_filters.fattr.value;
	}
	
	sSend = setPara(sSend, "debug", sDebug);
	sSend = setPara(sSend, "cattr", encodeURIComponent(sCAttr));
	sSend = setPara(sSend, "fattr", encodeURIComponent(sFAttr));
	sSend = (sSAttr != "" ? setPara(sSend, "sattr", encodeURIComponent(sSAttr)) : sSend);


	if (sSt != "") {
		loadXMLDoc("getdata.php?" + sSend);
	}
	
	if(filterDisplay != 0) {
		filterDisplay = filterDisplay - 1;
	}
	if(filterDisplay == 0) {
		document.getElementById('xhit_filters_container').style.display = 'none';
	}
}

function addFilter(sSend) {
	filterDisplay = filterDisplay + 1;
	
	var o     = document.getElementById('suche');
	var sSt   = getSearch(o);
	var sSend = sSend + (sSend != "" ? "&" : "") + "st=" + encodeURIComponent(sSt);
	
	var sDebug = "0";
	var sCAttr = "";
	var sFAttr = "";
	var sSAttr = getSearchAttr("sattr");

	if (document.getElementsByName("debug")) {
		sDebug = document.getElementsByName("debug")[0].value;
	}
	if (document.xhit_cats) {
		sCAttr = document.xhit_cats.cattr.value;
	}
	if (document.xhit_filters) {
		sFAttr = document.xhit_filters.fattr.value;
	}
	sSend = setPara(sSend, "debug", sDebug);
	sSend = setPara(sSend, "cattr", encodeURIComponent(sCAttr));
	sSend = setPara(sSend, "fattr", encodeURIComponent(sFAttr));
	sSend = (sSAttr != "" ? setPara(sSend, "sattr", encodeURIComponent(sSAttr)) : sSend);

	if (sSt != "") {
		loadXMLDoc("getdata.php?" + sSend);
	}
	document.getElementById('xhit_filters_container').style.display = 'block';
}

function replaceUmlaute(sText, iIndexFrom, iIndexTo) {
	var aArray = new Array(3);
	var oRegExp;

	aArray[0] = new Array("Ö", "ö", "Ä", "ä", "Ü", "ü", "ß");
	aArray[1] = new Array("Oe", "oe", "Ae", "ae", "Ue", "ue", "ss");
	aArray[2] = new Array("_D6_", "_F6_", "_C4_", "_E4_", "_DC_", "_FC_", "_DF_");
	for (var i = 0; i < aArray[iIndexFrom].length; i++){
		oRegExp = new RegExp(aArray[iIndexFrom][i],"g");
		sText = sText.replace(oRegExp, aArray[iIndexTo][i]);
	}
	return sText;
}

function trim(sText) {
	var argv    = trim.arguments;
	var argc    = trim.arguments.length;
	var cTarget = (argc > 1) ? argv[1] : "\\s";

	sText = trimLeft(sText, cTarget);
	sText = trimRight(sText, cTarget);
	
	if(sText.length < 2) {
		document.getElementById('comps').style.visibility = 'hidden';
		document.getElementById('engine_visible').style.visibility = 'hidden';
		document.getElementById('engine_visible2').style.visibility = "hidden";
		document.getElementById('comps').style.display = "none";
		document.getElementById('engine_visible').style.display = "none";
		document.getElementById('engine_visible2').style.display = "none";
	}
	else {
		document.getElementById('comps').style.visibility = 'visible';
		document.getElementById('engine_visible').style.visibility = 'visible';
		document.getElementById('engine_visible2').style.visibility = 'visible';
		document.getElementById('comps').style.display = "block";
		document.getElementById('engine_visible').style.display = "block";
		document.getElementById('engine_visible2').style.display = "block";
	}
	
	return sText;
}

function trimLeft(sText) {
	var argv    = trimLeft.arguments;
	var argc    = trimLeft.arguments.length;
	var cTarget = (argc > 1) ? argv[1] : "\\s";

	sText = eval("sText.replace(/^" + cTarget + "*/, \"\")");
	return sText;
}

function trimRight(sText) {
	var argv    = trimRight.arguments;
	var argc    = trimRight.arguments.length;
	var cTarget = (argc > 1) ? argv[1] : "\\s";

	sText = eval("sText.replace(/" + cTarget + "*$/, \"\")");

	return sText;
}

function getPara(sUrl, sParaKey) {
	var sParaValue = "";
	var saUrl = new Array();

	sUrl  = sUrl.replace(/[^\?]*\?/, "");
	sUrl  = sUrl.replace(/\#[^\#]*$/, "");
	saUrl = sUrl.split("&");

	for (var i = 0; i < saUrl.length; i++) {
		saKeyValue = saUrl[i].split("=");
		if (saKeyValue[0].toLowerCase() == sParaKey.toLowerCase())
			return saKeyValue[1];
	}

	return "";
}

function setPara(sUrl, sParaKey, sParaValue) {
	var sReturn       = "";
	var bFound        = false;
	var sQuestionMark = "";
	var sAnchor       = "";
	var saUrl = new Array();

	sUrl          = sUrl.replace(/([^\?]*\?)/, "");
	sQuestionMark = RegExp.$1;
	sUrl          = sUrl.replace(/(\#.*$)/, "");
	sAnchor       = RegExp.$1;

	saUrl         = sUrl.split("&");
	for (var i = 0; i < saUrl.length; i++) {
		saKeyValue = saUrl[i].split("=");
		if (saKeyValue[0].toLowerCase() == sParaKey.toLowerCase()) {
			saKeyValue[1] = sParaValue;
			bFound        = true;
		}
		sReturn += (sReturn != "" ? "&" : "") + saKeyValue.join("=");
	}

	if (!bFound) {
		sReturn += (sReturn != "" ? "&" : "") + sParaKey + "=" + sParaValue;
	}
	return sQuestionMark + sReturn + sAnchor;
}

function onKeyUpSearch(e) {
	var bDirekt = false;

	if( !e ) {
		// if the browser did not pass the event information to the
		// function, we will have to obtain it from the event register
		if( window.event ) {
			// Internet Explorer
			e = window.event;
		} 
		else {
			// total failure, we have no way of referencing the event
			//return;
			// wurde aber vielleicht direkt aufgerufen...
			bDirekt = true;
		}
	}
	if (!bDirekt) {
		if (typeof(e.keyCode) == 'number') {
			// DOM
			e = e.keyCode;
		}
		else if (typeof(e.which) == 'number') {
			// NS 4 compatible
			e = e.which;
		}
		else if (typeof(e.charCode) == 'number') {
			// also NS 6+, Mozilla 0.9+
			e = e.charCode;
		}
		else {
			//total failure, we have no way of obtaining the key code
			return;
		}
	}
	
	markSelectionStart(this);

	var sValue = trim(this.value);
	if (sValue.length >= 0) {
		if (m_sValueLast != sValue) {
			var sDebug = "0";
			var sCAttr = "";
			var sFAttr = "";
			var sSAttr = getSearchAttr("sattr");

			if (document.getElementsByName("debug")) {
				sDebug = document.getElementsByName("debug")[0].value;
			}
			if (document.xhit_cats) {
				sCAttr = document.xhit_cats.cattr.value;
			}
			if (document.xhit_filters) {
				sFAttr = document.xhit_filters.fattr.value;
			}
		
			window.setTimeout("loadXMLDoc('getdata.php?"    + "debug=" + sDebug + "&" +
			                                                                             "" + (sCAttr != "" ? "cattr=" : "") + 
			                     "' + encodeURIComponent('" + sCAttr          + "')    + '" + (sCAttr != "" ? "&"      : "") + 
			                                                                                  (sFAttr != "" ? "fattr=" : "") + 
			                     "' + encodeURIComponent('" + sFAttr          + "')    + '" + (sFAttr != "" ? "&"      : "") + 
			                                                                                  (sSAttr != "" ? "sattr=" : "") + 
			                     "' + encodeURIComponent('" + sSAttr          + "')    + '" + (sSAttr != "" ? "&"      : "") + 
			                  "st=' + encodeURIComponent('" + getSearch(this) + "'))", 250);
			m_sValueLast = sValue;
		}
	}
}

function markSattr(o) {
	var bMultiSelect = true;
	var sName = o.name;
	var sType = o.type;	// radio oder checkbox
	var oChecked = null;
	var aElements = document.getElementsByName(sName);
	
	if (sType == "checkbox") {
		if (!bMultiSelect) {
			for (var i = 0; i < aElements.length; i++) {
				if (aElements[i].checked && aElements[i] != o) {
					oChecked = aElements[i];
					aElements[i].checked = false;
				}
			}
			if (oChecked == null)
				oChecked = o;
		
			o.checked = true;
		}
		else {
			for (var i = 0; i < aElements.length; i++) {
				if (aElements[i].checked && aElements[i] != o) {
					oChecked = aElements[i];
				}
			}
			if (oChecked == null)
				o.checked = true;
		}
	}

	if (bMultiSelect ||
	    oChecked != o) {
		var sSend  = "";
		var sSt    = getSearch(document.getElementById('suche'));
		var sDebug = "0";
		var sCAttr = "";
		var sFAttr = "";
		var sSAttr = getSearchAttr(sName);

		if (document.getElementsByName("debug")) {
			sDebug = document.getElementsByName("debug")[0].value;
		}
		if (document.xhit_cats) {
			sCAttr = document.xhit_cats.cattr.value;
		}
		if (document.xhit_filters) {
			sFAttr = document.xhit_filters.fattr.value;
		}
		sSend = setPara(sSend, "debug", sDebug);
		sSend = setPara(sSend, "cattr", encodeURIComponent(sCAttr));
		sSend = setPara(sSend, "fattr", encodeURIComponent(sFAttr));
		sSend = (sSAttr != "" ? setPara(sSend, "sattr", encodeURIComponent(sSAttr)) : sSend);
		sSend = setPara(sSend, "st", encodeURIComponent(sSt));

		if (sSt != "")
			loadXMLDoc("getdata.php?" + sSend);
	}
}

function getSearchAttr(sName) {
	var aElements = document.getElementsByName(sName);
	var sSattr    = "";

	for (var i = 0; i < aElements.length; i++) {
		if (aElements[i].checked) {
			sSattr += aElements[i].value + "[@]";
		}
	}
	sSattr = sSattr.replace(/\[\@\]$/, "");

	return sSattr;
}

var m_sValueLast      = "";
var m_iSelectionStart = -1;
var m_iSelectionWord  = -1;
var m_sSelectionWord  = -1;

function markSelectionStart(o) {
	var iSelectionStart = m_iSelectionStart;
	var iSelectionWord  = m_iSelectionWord;
	var sSelectionWord  = m_sSelectionWord;
	var sValue = o.value;
	
	if(sValue.length >=19) {
			document.getElementById('suche').style.fontSize = '18px';
			document.getElementById('suche').style.lineHeight = '25px';
			document.getElementById('suche').style.paddingTop = '4px';
			document.getElementById('suche').style.paddingBottom = '4px';
	
		}
		if(sValue.length >=21) {
			document.getElementById('suche').style.fontSize = '16px';
			document.getElementById('suche').style.lineHeight = '25px';
			document.getElementById('suche').style.paddingTop = '6px';
			document.getElementById('suche').style.paddingBottom = '6px';
		}
		if(sValue.length >=24) {
			document.getElementById('suche').style.fontSize = '14px';
			document.getElementById('suche').style.lineHeight = '25px';
			document.getElementById('suche').style.paddingTop = '7px';
			document.getElementById('suche').style.paddingBottom = '6px';
		}
		if(sValue.length >=27) {
			document.getElementById('suche').style.fontSize = '12px';
			document.getElementById('suche').style.lineHeight = '25px';
			document.getElementById('suche').style.paddingTop = '8px';
			document.getElementById('suche').style.paddingBottom = '8px';
		}
		if(sValue.length <= 18) {
			document.getElementById('suche').style.fontSize = '20px';
			document.getElementById('suche').style.lineHeight = '25px';
			document.getElementById('suche').style.paddingTop = '3px';
			document.getElementById('suche').style.paddingBottom = '2px';
		}

	m_iSelectionStart = getSelectionStart(o);
	if (m_iSelectionStart > -1) {
	    var sHtml  = "";
	    var aBeforeCaretWordsWithEndSpace  = trimLeft(sValue.substr(0, m_iSelectionStart)).split(/\b\s+\b|\b/);
	    var aAfterCaretWordsWithStartSpace = trimRight(sValue.substr(m_iSelectionStart)).split(/\b\s+\b|\b/);
	    var aBeforeCaretWords  = trim(sValue.substr(0, m_iSelectionStart)).split(/\s+/);
	    var aAfterCaretWords   = trim(sValue.substr(m_iSelectionStart)).split(/\s+/);
	    var bBeforeCaretEndSpace  = (aBeforeCaretWordsWithEndSpace.length  != aBeforeCaretWords.length);
	    var bAfterCaretStartSpace = (aAfterCaretWordsWithStartSpace.length != aAfterCaretWords.length);
		
		iBeforeCaretWords = (aBeforeCaretWordsWithEndSpace[0]  == "" ? 0 : aBeforeCaretWordsWithEndSpace.length);
		iAfterCaretWords  = (aAfterCaretWordsWithStartSpace[0] == "" ? 0 : aAfterCaretWordsWithStartSpace.length);
		sHtml += iBeforeCaretWords + "\n";
		for (var iWord = 0; iBeforeCaretWords > 0 && iWord < aBeforeCaretWordsWithEndSpace.length; iWord++) {
			sHtml += "[" + aBeforeCaretWordsWithEndSpace[iWord] + "]\n";
		}
		sHtml += "\n";
		sHtml += iAfterCaretWords  + "\n";
		for (var iWord = 0; iAfterCaretWords > 0 && iWord < aAfterCaretWordsWithStartSpace.length; iWord++) {
			sHtml += "[" + aAfterCaretWordsWithStartSpace[iWord] + "]\n";
		}
		
		if (iBeforeCaretWords == 0 && 
		    iAfterCaretWords  == 0) {
			m_iSelectionWord = -1;
			m_sSelectionWord = "";
		}
		else if (iBeforeCaretWords == 0) {
			m_iSelectionWord = 1;
			m_sSelectionWord = aAfterCaretWords[0];
		}
		else if (iAfterCaretWords == 0) {
			m_iSelectionWord = aBeforeCaretWords.length;
			m_sSelectionWord = aBeforeCaretWords[aBeforeCaretWords.length-1];
		}
		else if (bBeforeCaretEndSpace || bAfterCaretStartSpace) {
			if (bAfterCaretStartSpace) {
				m_iSelectionWord = aBeforeCaretWords.length;
				m_sSelectionWord = aBeforeCaretWords[aBeforeCaretWords.length-1];
			}
			else {
				m_iSelectionWord = aBeforeCaretWords.length + 1;
				m_sSelectionWord = aAfterCaretWords[0];
			}
		}
		else {
			m_iSelectionWord = aBeforeCaretWords.length;	// zerteilt
			m_sSelectionWord = aBeforeCaretWords[aBeforeCaretWords.length-1] + aAfterCaretWords[0];
		}
		
		sHtml += "\n";
		sHtml += "Wortnummer: " + m_iSelectionWord + "\n";
		sHtml += "Wort: " + m_sSelectionWord + "\n";
		//alert(sHtml);
	}
		
	if ((m_iSelectionWord != -1) &&
		(m_iSelectionWord != iSelectionWord ||
		 m_sSelectionWord != sSelectionWord) && 
		(m_sValueLast     == trim(sValue))) {	// weil dann wird eine komplett neue Suche ausgeführt
		sSend = "type=comps&st=" + encodeURIComponent(getSearch(o));
		loadXMLDoc("getdata.php?" + sSend);
	}
}

function getSearch(o) {
	var sValue  = o.value;
	var sSearch = trim(sValue);
	var aSearch = sSearch.split(/\s+/);

	aSearch.push(aSearch[m_iSelectionWord - 1]);
	aSearch.splice(m_iSelectionWord - 1, 1);

	return aSearch.join(" ");
}

function getSelectionStart(o) {
	if (o.createTextRange) {
		var oRange = document.selection.createRange().duplicate();

		var iMoved = oRange.moveEnd('character', o.value.length);
		if (oRange.text == '') return o.value.length;
		return o.value.lastIndexOf(oRange.text);
	}
	else 
		return o.selectionStart;
}

function getSelectionEnd(o) {
	if (o.createTextRange) {
		var oRange = document.selection.createRange().duplicate();

		oRange.moveStart('character', -o.value.length);
		return oRange.text.length;
	}
	else
		return o.selectionEnd;
}
	
function neueSuche(suchwort){
	var vWoerter = suchwort.split(" ");
	if(vWoerter.length > 1) {
		var WoerterStr;
		vWoerter.length = vWoerter.length - 1;
		WoerterStr = vWoerter.join(" ");
		suchwort = WoerterStr;
	}

	document.getElementById("suche").value = '';
	setComps(suchwort);
} 

function onLoad() {
	document.getElementById("suche").onkeyup = onKeyUpSearch;
	
	
	document.getElementById("suche").onkeydown = onKeyDownDocument;
}

window.onload = onLoad;