
function Seitenbeschreibung(url,titel,keywords,beschreibung) {
 while ((url.length > 0) && (url.charAt(0) == " ")) {
  url = url.substring(1,url.length);
 }
 this.url = url;
 while ((titel.length > 0) && (titel.charAt(0) == " ")) {
  titel = titel.substring(1,titel.length);
 }
 this.titel = titel;
 this.keywords = keywords;
 this.beschreibung = beschreibung;
 return this;
}


function Datenbank() {
 for (var i = 0; i <= daten.length-1; i++) {
   //alert(daten[i][0]);
   this[db_laenge++] = new Seitenbeschreibung(daten[i][0],
   daten[i][1],
   daten[i][2],
   daten[i][3]);
 }
 return this;
}

function Suche(str) {
 menu_length = 0;
 stemp = new Object();
 stemp_length = 0;
 words_length = 0;
 words = new Object();
 pos = 0;
 while ((pos = str.indexOf(" ")) != -1
 && such_op != "exact") {
  words[words_length] = str.substring(0,pos);
  if (words[words_length].length > 0)
   words_length++;
  if (str.length == 1)
   str="";
  else
   str = str.substring(pos+1,str.length);
 }
 if (str.length > 0)
  words[words_length++] = str;
 for (q=0;q<words_length;q++) {
  stemp_length = 0;
  str = words[q].toLowerCase();
  len = (such_op=="and"&&q>0?menu_laenge:db_laenge);
  for (n=0; n<len; n++) {
   if (such_op=="and"&&q>0) {
    combo = (menu[n].title + " " + menu[n].beschreibung
     + " " + menu[n].keywords).toLowerCase();
   } else {
    combo = (database[n].titel + " " + database[n].beschreibung
     + " " + database[n].keywords).toLowerCase();
   }
   if (combo.indexOf(str) != -1)
    stemp[stemp_length++] = (such_op=="and"&&q>0?menu[n]:database[n]);
  }
  if (such_op!="and" && q>0) {
   added = 0;
   for (i=0;i<stemp_length;i++) {
    duplicate = false;
    for (j=0;j<menu_laenge&&!duplicate;j++) {
     if (menu[j] == stemp[i]) {
      duplicate = true;
     }
    }
    if (!duplicate)
     menu[menu_laenge+(added++)] = stemp[i];
   }
   menu_laenge += added;
  } else {
   for(h=0;h<stemp_length;h++)
    menu[h] = stemp[h];
   menu_laenge = stemp_length;
  }
 }
}

/* gesuchten Begriffe werden in Ergebnismenge hervorgehoben */
function Worthervorheben(str) {
 for(r=0; r<words_length; r++) {
  pos = -3;
  word = words[r].toLowerCase();
  while ((pos = str.toLowerCase().indexOf(word,pos+3)) != -1) {
   val = pos+word.length;
   str = str.substring(0,pos) + "*"
    + str.substring(pos,val) + "|"
    + str.substring(val,str.length);
  }
 }
 pos = -16;

/* Hier kann eine eigene Farbe gesetzt werden - momentane Einstellung: rot*/
 while ((pos = str.toLowerCase().indexOf("*",pos+16)) != -1)
  str = str.substring(0,pos) + "<font color='#000066'>"
   + str.substring(pos+1,str.length);
 pos = -7;
 while ((pos = str.toLowerCase().indexOf("|",pos+7)) != -1)
  str = str.substring(0,pos) + "</font>"
   + str.substring(pos+1,str.length);
 return str;
}

function start() {
/* Eingaben überprüfen */
 if ((document.entryform.keyword.value.length == 0)
 || (document.entryform.keyword.value == " ")) {
  alert("Bitte geben Sie zuerst einen Suchbegriff ein !");
  return false;
 }
 such_op = "or"
 var rubrik_string = (document.entryform.keyword.value == "Sitemap")?"<h3>Sitemap</h3>":"<h3>Suchergebnis</h3>";
// suche
Suche(document.entryform.keyword.value,such_op);
// ausgabe
var in_str = '';
var ges_str;
for (i=0; i<menu_laenge ; i++ ) {
 in_str += '<b><a href="'+menu[i].url+'">'+menu[i].titel+'</a></b><br>'+Worthervorheben(menu[i].beschreibung)+'<br><br>'
}
if (document.entryform.keyword.value != "Sitemap") {
 var cod_keywords = encodeURI(document.entryform.keyword.value);
 in_str += '<br><a href="suche.html">Neue Suche</a><br><br>'
 in_str += '&nbsp;&nbsp;&nbsp;<A class="klein" href="print_suche.html?keywords='+cod_keywords+'" target="_new" title="Suchergebnis Druckversion" onmouseover="status=\'Suchergebnis Druckversion\';return true;"><IMG src="img/print_22x19.gif" width="22" height="19" alt="Druckversion" border="0"> (Druckversion)</A>'
 var printbutton = "<A href='print_suche.html?keywords="+cod_keywords+"' target='_new' title='Suchergebnis Druckversion' onmouseover='status=\"Suchergebnis Druckversion\";return true;'><IMG src='img/print_22x19.gif' width='22' height='19' alt='Suchergebnis Druckversion' border='0'></A>"
 objprint.write(printbutton);
} else {
 in_str += '&nbsp;&nbsp;&nbsp;<A class="klein" href="print_sitemap.html" target="_new" title="Sitemap Druckversion" onmouseover="status=\'Sitemap Druckversion\';return true;"><IMG src="img/print_22x19.gif" width="22" height="19" alt="Druckversion" border="0"> (Druckversion)</A>'
}
oScroll.write(rubrik_string + in_str)

if (oScroll.height>oCont.h) {
      oUp.css.visibility = "visible";
      oDown.css.visibility = "visible";
      oRahmen.css.visibility = "visible";
      oLaeufer.css.visibility = "visible";
}

}

/* Datenbank wird eingelesen und verarbeitet */
db_laenge = 0;
var database = new Datenbank();
menu_laenge = 0;
var menu = new Object();
