/*
 * Dies ist die elementare Funktion, die HTML-Tags um das Suchwort stellt
 */

function doHighlight(bodyText, searchTerm)
{

  highlightStartTag = "<span class='remark'>";
  highlightEndTag = "</span>";

  // hier finden wir alle Vorkommen und setzen die Tags

  var newText = "";
  var i = -1;
  var lcSearchTerm = searchTerm.toLowerCase();
  var lcBodyText = bodyText.toLowerCase();
    
  while (bodyText.length > 0) {
    i = lcBodyText.indexOf(lcSearchTerm, i+1);
    if (i < 0) {
      newText += bodyText;
      bodyText = "";
    } else {
      // ueberspringen alles innerhalb von Tags
      if (bodyText.lastIndexOf(">", i) >= bodyText.lastIndexOf("<", i)) {
        // ueberspringen alles innerhalb eines script-blocks
        if (lcBodyText.lastIndexOf("/script>", i) >= lcBodyText.lastIndexOf("<script", i)) {
          newText += bodyText.substring(0, i) + highlightStartTag + bodyText.substr(i, searchTerm.length) + highlightEndTag;
          bodyText = bodyText.substr(i + searchTerm.length);
          lcBodyText = bodyText.toLowerCase();
          i = -1;
        }
      }
    }
  }
  
  return newText;
}


/*
 * Die Funktion sucht den Suchtext. searchText ist zwingend anzugeben, andere sind optional.
 */
function highlightSearchTerms(searchText, treatAsPhrase, warnOnFailure)
{
  // wenn der treatAsPhrase Parameter wahr ist, suchen wir nach zusammenhaengenden Woertern ansonsten jedes einzeln
  if (searchText == "undef"){
  return true;
  }
  else {
  
  if (treatAsPhrase) {
    searchArray = [searchText];
  } else {
    searchArray = searchText.split(" ");
  }
  
  if (!document.body || typeof(document.body.innerHTML) == "undefined") {
    if (warnOnFailure) {
      alert("Sorry, aber aus irgendeinem Grund funktioniert die Suche nicht.");
    }
    return false;
  }
  
  var bodyText = document.body.innerHTML;
  for (var i = 0; i < searchArray.length; i++) {
    bodyText = doHighlight(bodyText, searchArray[i]);
  }
  
  document.body.innerHTML = bodyText;
  return true;
}
}

