

// Oznaeí výskyt daného textu v rámci celého dokumentu.
// @param sText text, ktorý bude nájdený a oznaeený.
function search(sText)
{
	
	var oTelo=document.getElementById("telo");
	if (oTelo!=null) 
		searchWithinNode(oTelo, sText.toUpperCase(), sText.length);
}

// Nájde v dokumente element, ktorého textový uzol obsahuje daný text.
// @param oNode uzol v dokumente.
// @param sText ktorý má by? oznaeený.
// @param iLen dažka textu, ktorý má by? oznaeený.
function searchWithinNode(oNode, sText, iLen)
{
   var iPos, oElementSpan, oNodeText;
   var iSkip = 0;

   if(oNode.nodeType == 3) // Textový uzol.
   {
      iPos = oNode.data.toUpperCase().indexOf(sText);
      if(iPos >= 0) 
      { 
         // Rozdelenie tetxového uzla na 3 uzly, 
         // prieom stredný uzol obsahuje text na oznaeenie.
         oNodeText = oNode.splitText(iPos);
         oNodeText.splitText(iLen);

		 // Vytvorenie elementu SPAN, ktorý bude obsahova? oznaeený text.	
         oElementSpan = document.createElement("SPAN");
         oElementSpan.style.backgroundColor = "yellow";
		 oElementSpan.appendChild(oNodeText.cloneNode(true));

         // Nahradi? textový uzol elementom SPAN.
         oNodeText.parentNode.replaceChild(oElementSpan, oNodeText);
         iSkip = 1;
      }
   }
   else if(oNode.nodeType == 1 && oNode.childNodes) // Element. 
   {
      // Rekurzívne spracova? aj detské elementy.
      for(var iChild=0; iChild < oNode.childNodes.length; ++iChild) { 
         iChild = iChild + searchWithinNode(oNode.childNodes[iChild], sText, iLen);
      }
   }
   return iSkip;
}


