﻿//----------------------------
// JavaScript-Mini-Suchmaschine
// Home: jchanke.de/intern
// Version 1.1 vom Dezember 2002
// DATENBANK steckt in searchdata.js
// Formularerzeugung durch formmaker.js
// ----------------------------
// Modified by: Tobias Eiberle
// For specific inline search
// 2006 Jan
// ----------------------------


// generate searchform
function makesuchform(sublevel) {
suchform="<form name=\"suchen\" onsubmit=\"sucheextern("+sublevel+");return false;\"> "+
"<input class=\"searchfield\" type=\"text\" name=\"eingabe\" size=\"22\" > "+ 
"<input class=\"find2\" title=\"Suche starten\" type=\"button\" value=\" \" onClick='sucheextern("+sublevel+");return false;' />" +
"</form>\n";
document.write(suchform);
}

function makesuchformintern() {
suchform2="<form name=\"suchen\" "+ 
"onsubmit=\'return sucheintern()\'>"+
"<input class=\"searchfield\" type=\"text\" name=\"eingabe\"" +
"size=\"22\" /> "+
"<input class=\"find2\" type=\"button\" value=\" \" onClick=\'return sucheintern()\' \/>" +
"<\/form>\n";
document.write(suchform2);
}

function refreshintern(){
	if(window.location.search != ""){
		var pairs = window.location.search.substring(1).split('&');
		var params = new Object();
		var plus;
		
		for(var param in pairs)
		{
		var tmp = unescape( pairs[param] ).split('=');
		params[tmp[0]] = tmp[1];
		}
		
		for(var name in params)
		{
		if(name=="eingabe"){
			eingabe=decodeURI(params[name]);
		}
		}
		plus=eingabe.split("+");
		eingabe="";
		for(i=0;i<=plus.length-1;i++){
 			eingabe+=plus[i]+" ";
		}
		
	}
	auswertung();
}

function sucheintern(){
    document.getElementsByName("searchactivated")[0].value = "true";
	auswertung();
	//return false;	
}

function sucheextern(sublevel) {
	suchstring=document.suchen.eingabe.value;
	document.getElementsByName("searchactivated")[0].value = "true";
	sublevelstring="";
	if(sublevel>0){
		for(i=0;i<sublevel;i++){
				sublevelstring+="../";
		}
		window.location.href=sublevelstring+"search.html?eingabe="+encodeURI(suchstring);
	}
	
	else{
	window.location.href="search.html?eingabe="+encodeURI(suchstring);
  }
	//document.suchen.eingabe.value=suchstring;	
	auswertung();
}

// GLOBALE VARIABLEN
var suchtyp="and"; // umschaltbar auf "string"
//var eintraege=6; // Zahl der sichtbaren Einträge

// ENTFERNT LEERZEICHEN AN ANFANG UND ENDE
// schaltet ggf. auf STRING-Suche um
function leerzeichenweg(eg) {
while (eg.charAt(0)==" ") {
eg=eg.substring(1,eg.length);
}
while (eg.charAt(eg.length-1)==" ") {
eg=eg.substring(0,eg.length-1);
}
if ((eg.charAt(0)=='"') && 
(eg.charAt(eg.length-1)=='"')) {
eg=eg.substring(1,eg.length);
eg=eg.substring(0,eg.length-1);
suchtyp="string";
}
return eg;
}

// Ist das Suchwort vorhanden?
function vorhanden(suchworte, eg) {
	gefunden=true;
	if (suchtyp=="and") {
		eg=eg.split(" ");
		for (j=0;j<eg.length;j++) {
			//alert("suchworte.indexOf(eg[j]): "+ suchworte.indexOf(eg[j]));
			//alert("suchwortwert bei eg[j]) : "+ suchworte[suchworte.indexOf(eg[j])]);
			if (suchworte.indexOf(eg[j])==-1) {
				gefunden=false;
			}
		}
	}
	if (suchtyp=="string") {
		if (suchworte.indexOf(eg)==-1) {
			gefunden=false;
		}
	}
	return gefunden;
}

// gib html mit suchergebnisauswahltext (markiertes suchwort) zurueck
// mit Substring noch nicht ideal
function zusammenfassung3(suchworte, eg) {
	ergebnishtml="...";
	if (suchtyp=="and") {
		eg=eg.split(" ");
		for (j=0;j<eg.length;j++) {
			nocheinString=true;
			while(nocheinString){
				if (suchworte.indexOf(eg[j])!=-1) {
					derIndex=suchworte.indexOf(eg[j]);
					dieLaenge=eg[j].length;
					ergebnishtml=ergebnishtml+suchworte.substring(derIndex-40,derIndex-1)+" <span class=\"marked\">";
					ergebnishtml=ergebnishtml+suchworte.substring(derIndex,derIndex+eg[j].length)+"</span>";
					ergebnishtml=ergebnishtml+(suchworte.substring(derIndex+eg[j].length, derIndex+eg[j].length+40)+"...");
					suchworte=suchworte.substring(derIndex+eg[j].length,suchworte.length);
			 	}
			 	else{
			 		nocheinString=false;
			 	}
			 }
			 ergebnishtml=ergebnishtml+"...";
		}				
	}
	return ergebnishtml;
	
	
	if (suchtyp=="string") {
		if (suchworte.indexOf(eg)!=-1) {
			ergebnishtml="Das war ne Stringsuche";
		}
}return ergebnishtml;
}

// gib html mit suchergebnisauswahltext (markiertes suchwort) zurueck
// mit Substring noch nicht ideal
function zusammenfassung2(suchworte, eg) {
	ergebnishtml="...";
	if (suchtyp=="and") {
		eg=eg.split(" ");
		for (j=0;j<eg.length;j++) {
			nocheinString=true;
			while(nocheinString){
				if (suchworte.indexOf(eg[j])!=-1) {
					derIndex=suchworte.indexOf(eg[j]);
					ergebnishtml=ergebnishtml+suchworte.substring(derIndex-40,derIndex-1)+" <span class=\"marked\">";
					ergebnishtml=ergebnishtml+suchworte.substring(derIndex,derIndex+eg[j].length)+"</span>";
					ergebnishtml=ergebnishtml+(suchworte.substring(derIndex+eg[j].length, derIndex+eg[j].length+40)+"...");
					suchworte=suchworte.substring(derIndex+eg[j].length,suchworte.length);
			 	}
			 	else{
			 		nocheinString=false;
			 	}
			 }
			 ergebnishtml=ergebnishtml+"...";
		}				
	}
	return ergebnishtml;
	
	
	if (suchtyp=="string") {
		if (suchworte.indexOf(eg)!=-1) {
			ergebnishtml="Das war ne Stringsuche";
		}
}return ergebnishtml;
}


// gib html mit suchergebnisauswahltext (markiertes suchwort) zurueck
function zusammenfassung(suchworte, eg) {
	ergebnishtml="...";
	if (suchtyp=="and") {
		/*alert("suchtxyp ist and");*/
		eg=eg.split(" ");
		for (j=0;j<eg.length;j++) {
			for(a=0;a<suchworte.length;a++){
				if (eg[j]==suchworte[a]) {

					for(u=a-5;u<=a+5;u++){
						try{
						    if(suchworte[u]!=undefined && u!=a){
							ergebnishtml=ergebnishtml+suchworte[u]+" ";
							}
							if(u==a){
							ergebnishtml=ergebnishtml+"<span class=\"marked\">"+suchworte[u]+"</span> ";
							}
						}
						catch(Exception){
							alert("dat war ne ausnahme");
						}
					}
				ergebnishtml=ergebnishtml+"... "
				}
				
		}
		}

		return ergebnishtml;
	}
	if (suchtyp=="string") {
		if (suchworte.indexOf(eg)!=-1) {
			ergebnishtml="Das war ne Stringsuche";
		}
	}
	return ergebnishtml;
}



// function for writing HTML and Text into specific 
// HTML elements with the text to be written 
// and the id of the element as parameters
// URL: http://www.quirksmode.org/js/layerwrite.html
function writit(text,id)
{
	if (document.getElementById)
	{
		x = document.getElementById(id);
		x.innerHTML = '';
		x.innerHTML = text;
	}
	else if (document.all)
	{
		x = document.all[id];
		x.innerHTML = text;
	}
	else if (document.layers)
	{
		x = document.layers[id];
		text2 = '<P CLASS="testclass">' + text + '</P>';
		x.document.open();
		x.document.write(text2);
		x.document.close();
	}
}


// recursive function to delete all the children of a node
function deleteChildren(childString, idTag){ 
	if (childString.hasChildNodes()){		
		while(childString.hasChildNodes()){
		deleteChildren(childString.lastChild);
		childString.removeChild(childString.lastChild);	
		}
	} 
}


// LIEST FORMULARINHALT AUS
function auswertung() {
	//alert("Vor auswertung, im eingabefeld steht: "+document.suchen.eingabe.value);
	if(document.suchen.eingabe.value!=""){
	eingabe=document.suchen.eingabe.value;
	}
	//else{
	//eingabe=" ";}
	var eingklon=eingabe;
	var ausgabe="<h1>Suchresultate</h1>";
	var fundtext="";
	var fundzahl=0;
	var dcount=1;
	var dlauf;
	var suchworte, suchwortezwei, suchtitel, suchurl;

	if (eingklon.length<3){
ausgabe+="<p>Leider ist die Eingabe zu kurz. " +
"Die Eingabe muss mindestens <b>3 Zeichen</b> " +
"besitzen.</p><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />\n";
	}

    else { 
		// Eingabe in Kleinbuchstaben umwandeln
		eingklon=eingklon.toLowerCase();
		// Leerzeichen entfernen, auf STRING-Suche testen
		eingklon=leerzeichenweg(eingklon);
		// Daten aus Array ergebnis auslesen
		for(i=0;i<ergebnis.length;i++) {
			suchworte=ergebnis[i].split("|")[0];
			suchworte=suchworte.toLowerCase();
			suchwortezwei=suchworte;
			suchtitel=ergebnis[i].split("|")[1];
			suchwortezwei=suchtitel.toLowerCase()+" "+suchwortezwei;
			suchwortezwei=suchwortezwei.split(" ");
			suchworte=suchworte + " " + suchtitel.toLowerCase();

			// alert(suchworte); // NUR FÜR TESTZWECKE

			suchurl=ergebnis[i].split("|")[2];

			// Funktion aufrufen, die auf Suchbegriff testet
			if (vorhanden(suchworte, eingklon)) {
				fundzahl++; // Treffer zaehlen
				if (fundzahl%2==0){
					fundtext+="<tr class=\"odd\"><td>"+fundzahl + ".</td><td><a href=\""+suchurl+"\"" +"title=\"Hier klicken, um die entsprechende "+
					"Seite aufzurufen\">"+suchtitel+"<\/a></td><td>"+zusammenfassung2(suchworte,eingklon)+ "</td></tr>\n";
					//dlauf=dcount*eintraege;
				}else{
					fundtext+="<tr class=\"even\"><td>"+fundzahl + ".</td><td><a href=\""+suchurl+"\"" +"title=\"Hier klicken, um die entsprechende "+
					"Seite aufzurufen\">"+suchtitel+"<\/a></td><td>"+zusammenfassung2(suchworte,eingklon)+ "</td></tr>\n";
					//dlauf=dcount*eintraege;
				}
			}
		}
ausgabe+="<p>Die Suche nach <b>" + eingabe + "<\/b> ergab ";

if (fundzahl==0) {
ausgabe+="leider keine Treffer!<\/p><br /><br /><br /><br /><br /><br />";
}
//else if (fundzahl>eintraege) {
//ausgabe+=fundzahl + " Treffer!<br>\n" +
//"Hier die besten " + eintraege + " Treffer:<\/p>\n" +
//"<p>" + fundtext+"<\/p>\n";
//}
else { // Anfang else-Zweig 2
ausgabe+=fundzahl + " Treffer:</p>\n" + 
"<table class=\"infotable\"><tr class=\"head\"><th>&nbsp;</th><th>Suchergebnisse</th><th></th></tr>"+ fundtext+"</table>\n"+
"<div class=\"footeroptions\"><a href=\"#\"><img src=\"layout/icon_topofpage.gif\" alt=\"Seitenanfang\" \/> Seitenanfang<\/a>"+
"&nbsp;&nbsp;|&nbsp; <a href=\"javascript:window.print()\" > <img src=\"layout/icon_print.gif\" alt=\"Drucken\" \/> Drucken</a>"+					
"</div><br />";
} // Ende else-Zweig 2
} // Ende else-Zweig 1

// Alle Daten niederschreiben

deleteChildren(document.getElementById("contentcontainer"),'contentcontainer');
writit(ausgabe,'contentcontainer');
}

