function getHighLightTerms()
 {
  var locate = window.location;

  document.highLight.searchTerm.value = locate;
  var text = document.highLight.searchTerm.value;
  point = text.lastIndexOf("?HighlightTerms");
  if (point > -1)
  {
   var getPageContent = document.getElementById("PageContent").innerHTML;
   MM_changeProp('PageContent','','style.display','none','DIV');
   highlightTerms(getPageContent, delineate(text));
  }
 }

function delineate(str)
 {
  point = str.lastIndexOf("=");
  return(str.substring(point+1,str.length));
 }


function highlightTerms(pageContent, searchTerms)
 {

  searchTerms = searchTerms.split("+");

  var assembledPage = "";

  var reassembledPage = "";

  var pageStuff = "";

// Archive the HTML tags so we don't search them for strings

  noTagStuff = pageContent;

  numTags = noTagStuff.split("<").length;

  var tagArchive = new Array();

  var assembledSearchText = "";

  for (x = 0; x < numTags; x++)

   {

     var point = 0;

     var point2 = 0;

     startTag = noTagStuff.indexOf("<");

     endTag = noTagStuff.indexOf(">");

     endTag = endTag + 1;

     tagArchive[x] = noTagStuff.substring(startTag,endTag);

     tagHolder = "|" + x + "¤";

     remainingText = noTagStuff.substring(endTag,noTagStuff.length);

     contentText = remainingText.substring(0,(remainingText.indexOf("<")));

     assembledSearchText += tagHolder + contentText;

     noTagStuff = remainingText;

   }

// Check to see if all search terms are in the page.
// Remove search terms that are not in the page.

  var y= 0;

  foundSearchTerms = new Array();                            // create new array to hold final set of search terms

  for (x = 0; x < searchTerms.length; x++)                   // loop through search terms passed to page
   {

     var regexp = eval("/\\b" + searchTerms[x] + "/gi");     // create case-insensitive regular expression

     if (assembledSearchText.match(regexp) != null)          // if match is not null...

      {

        foundSearchTerms[y] = searchTerms[x];                // put term in foundSearchTerms array

        y++;

      }

   }

   searchTerms = foundSearchTerms;                           // put found terms into searchTerms variable


// Build list of terms in assembledSearchText with string.match
// This is needed so that terms can be replaced with their original case

  var foundTerms = new Array();

  var startPoint = 0;

  var prefix = "¦";

  var suffix = "§";

  for (x = 0; x < searchTerms.length; x++)
   {

     var regexp = eval("/\\b" + searchTerms[x] + "/gi");

     foundTerms[x] = assembledSearchText.match(regexp);

   }

// Tag search terms with placeholders for the spans that are inserted later

  for (x = 0; x < searchTerms.length; x++)

   {

    for (y = 0; y < foundTerms[x].length; y++)

     {

      point = assembledSearchText.indexOf(foundTerms[x][y], startPoint);

      partialString = assembledSearchText.substring(0,point);

      partialString += prefix + foundTerms[x][y] + suffix;

      partialString += assembledSearchText.substring(point + foundTerms[x][y].length, assembledSearchText.length);

      startPoint =  point + foundTerms[x][y].length ;

      assembledSearchText = partialString;

     }

     startPoint = 0;

    }


// Reinsert the HTML tags

   assembledPage = assembledSearchText;

   for (x = 0; x < numTags; x++)

    {
 
     startTag = assembledPage.indexOf("|");

     endTag = assembledPage.indexOf("¤");

     endTag = endTag + 1;

     remainingText = assembledPage.substring(endTag,assembledPage.length);

     contentText = remainingText.substring(0,(remainingText.indexOf("|")));

     reassembledPage += tagArchive[x] + contentText;

     assembledPage = remainingText;

   }


// Insert the highlightedSearchTerm spans

     var regexp = /¦/ig;

     reassembledPage = reassembledPage.replace(regexp, "<span class=\"highlightSearchTerm\">");

     var regexp = /§/ig;

     reassembledPage = reassembledPage.replace(regexp, "</span>");

// Write the document

  document.write(reassembledPage);

// This also works, and means we don't need to hide the existing DIV
// document.getElementById("PageContent").innerHTML = reassembledPage;

}


