function getWordDefinition(word) {
   return wordStructBody[word];
}

function generateTooltipFor(word) {
   return '::*::'+word+'::**::';
}



function enumerateElements (elements, element) {
   
   if (!element) {
      var body = document.getElementById('_main_body_cell_');
      if (!body) 
         return 1
      else
         enumerateElements(elements,body);
   } else {
      if (element.childNodes.length > 0) {
         for (var i = 0; i<element.childNodes.length; i++) {
            enumerateElements(elements,element.childNodes[i]);
         }
      } else {
         i = 1;
         elements.push(element);
         
         
      }
   }
}  


function processElements(elements) {
   for (var idx in elements) {
      var element = elements[idx];
      var textContent = null;
//      alert(idx+'\n'+elements[idx]);
      try {
         var innerHTML = element.parentNode.innerHTML;
         var parentNode = element.parentNode;
         
         if (element.textContent) {
            textContent = element.textContent;
         } else { /// IE
            textContent = element.nodeValue;
         }
         
         var isChanged = false;
         for (var word in wordStructBody) { 
            if (textContent && textContent.match(word)) {
//               alert('changing: '+word);
               isChanged = true;
               innerHTML = innerHTML.replace(eval('/('+word+'[^.,!?:; -]*)/g'),'<span class="coolLink" onmouseover="return escape(getWordDefinition(\''+word+'\'))">$&</span>');
            }
         }
         
         try {
            if (isChanged) {
               parentNode.innerHTML = innerHTML;
            }
         } catch (XX) {
//            alert('XX: '+XX);
         }
      } catch (E) {
//         alert('X-'+E);
      }
   }
}

var elements = new Array();
enumerateElements(elements);
processElements(elements);

