
function suche() {

	var treffer = 0;
	inst = (document.suche.inst.value) ? document.suche.inst.value : 0;
	plz = (document.suche.plz.value) ? document.suche.plz.value : 0;
	ort = (document.suche.ort.value) ? document.suche.ort.value : 0;
	var cache = new Array();	//	Datensatz-Index speichern

	if (inst) {
//		var cacheInst = new Array();	
		var pattern = new RegExp(inst, 'gi');

		for (i=0; i<adrArr.length; i++) {
			str = adrArr[i][0]; 
			str2 = adrArr[i][1];
			if (str.search(pattern) > -1 || str2.search(pattern) > -1) {
				cache.push(i); 
				++treffer;
			}
		}

	}

	if (plz && !inst.length) {
//		var cachePlz = new Array();	//	Datensatz-Index speichern
		var patternPlz = new RegExp("^"+plz, "gi");
		for (i=0; i<adrArr.length; i++) {
			strPlz = adrArr[i][3];
			if (strPlz.search(patternPlz) > -1) {
				cache.push(i); 
				++treffer;
			}
		}	
	}	
	
	if (plz && inst) {
		var hitsInCache = new Array();
		treffer = 0;
		var patternPlz = new RegExp("^"+plz, "gi");
		for (i=0; i<cache.length; i++) {
			strPlz = adrArr[cache[i]][3];
			if (strPlz.search(patternPlz) > -1) {
				hitsInCache.push(cache[i]); 
				++treffer;
			}
		}
		cache = hitsInCache;	
	}
	
	if (ort) {
		var ortPattern;
		var treffer = 0;		
		var hits = new Array();
		var wildcard = false;
		
		if (ort.indexOf('*') > -1) {
		// case 1: wildcard search
			ortPattern = new RegExp("^"+ort.substring (0, ort.indexOf('*')), "i");
			wildcard = true;
		}
		else {
		// case 2: whole word
			ortPattern = new RegExp("^"+ort, "gi");
		}
		// alert (ortPattern);
		
		for (i=0; i<adrArr.length; i++) {
			strOrt = adrArr[i][3].substring(6);
			if (strOrt.search(ortPattern) > -1) {
				hits.push(i);
				++treffer;
			}
		}

		cache = hits;	
		
	}

//	opener = window.open('results.htm','results','width=800,height=600,status=no,menubar=yes,toolbar=no,scrollbars=yes');

//	window.setTimeout("output(cache)", 4000); 
	output(cache);
}

function output(obj) {

	delLastResults();
	var erg = ( ort ) ? ( document.suche.ort.value ) : 
						((inst) ? ((!plz) ? inst : inst + " und " + plz ) : plz );
//	with (window.opener) {
	with (this) {
	document.getElementById("anzTreffer").firstChild.nodeValue = "Es wurden "+obj.length+" Einrichtungen gefunden für die Suchanfrage \"" +erg+ "\".";
	
	for (i=0; i<obj.length;i++) {
		id = obj[i];
//		alert(adrArr[id]);
		for (j=0; j<adrArr[id].length; j++) {
			var newDIV = document.createElement("div");
			
			var newDIVText = document.createTextNode(formatedTo(id,j));	// adrArr[i][j]);
			document.getElementById("results").appendChild(newDIV);
			anzDIV = document.getElementsByTagName("div").length;
			document.getElementsByTagName("div")[anzDIV-1].appendChild(newDIVText);
		}
		
		var newDataset = document.createElement("div");
		var leer = document.createTextNode('-------------');
		document.getElementById("results").appendChild(newDataset);
		document.getElementsByTagName("div")[anzDIV].appendChild(leer);
	}
 }
// alert(document.getElementById("results").hasChildNodes());

 this.focus();
}

function formatedTo(j,i) {

	var formated = "";
	if (i==4) { formated = (adrArr[j][i].length > 0) ? ("Tel. "+adrArr[j][i]) : ""; }
	else if (i==5) {formated = (adrArr[j][i].length > 0) ? ("Fax "+adrArr[j][i]) : ""; }
	else if (i==8) {formated = (adrArr[j][i].length > 0) ? ("Bundesland: "+adrArr[j][i]) : ""; }
	else if (i==9) {formated = (adrArr[j][i].length > 0) ? ("Zielgruppe / Arbeitsschwerpunkte: "+adrArr[j][i]) : ""; }
	else formated = adrArr[j][i];
	return formated;
}

function delLastResults () {
	while (document.getElementById("results").hasChildNodes()) {
		var Knoten=document.getElementById("results").lastChild;
		document.getElementById("results").removeChild(Knoten);
	}
	return true;
}