function chr( ascii ) {   
    return String.fromCharCode(ascii);   
}  
var wordList = []; 
var definitionList = [];
var tipContainer = "";
var midWindow = 0;	
var midWindowWidth = 0; 
var midWindowHeight = 0;
var msgWidth = 0;
var msgHeight = 0;
var IE = false;	
var ContentID = 'page';

if (navigator.appName == 'Microsoft Internet Explorer'){IE = true;}

function stayHome(m){	
	
	if (IE)
	{
	 var currX = event.clientX;
	 var currY = event.clientY;
	}
	else	{
		 var currX = m.pageX;
		 var currY = m.pageY;
		}
	var sL = document.documentElement.scrollLeft;	
	var sT = document.documentElement.scrollTop;	
	if (currX > midWindowWidth)
	{			
	 if (IE)
		{
		 tipContainer.style.left = Number(currX - msgWidth - 10 + sL) + 'px';
		}
	 else 	{
		 tipContainer.style.left = Number(currX - msgWidth - 10) + 'px';
		}
	}
	else	{
	if (IE)
		{
		 tipContainer.style.left = Number(currX + 25 + sL) + 'px';
		}
	 else	{
		 tipContainer.style.left = Number(currX + 25) + 'px';
		}
	}		
	if (IE && currY >= midWindowHeight)
	{
	 tipContainer.style.top = Number(currY + sT - msgHeight) + 'px';			 
	}
	if (IE && currY < midWindowHeight)
	{
	 tipContainer.style.top = Number(currY + sT) + 'px'
	}
	if (!IE && currY - sT >= midWindowHeight)	
	{
	 tipContainer.style.top = Number(currY - msgHeight) + 'px';
	}	
	if (!IE && currY - sT < midWindowHeight)
	{
	 tipContainer.style.top = currY + 'px';
	}
}	

function getMidWindow(){		
	
	midWindowWidth = Math.round(document.documentElement.clientWidth/2);
	midWindowHeight = Math.round(document.documentElement.clientHeight/2);			
}

function hideDefinition(){

	tipContainer.style.display = 'none';
	while (tipContainer.lastChild)
	{
	 tipContainer.removeChild(tipContainer.lastChild);
	}
}

function getDefinition(currWord){

	var nDefinition = "";
	for (i=0; i<wordList.length; i++)
	{
	 if (wordList[i].toLowerCase() == currWord)
		{				 
		 nDefinition = definitionList[i];
		}
	}	
	return nDefinition; 
}

function showDefinition(defineThis){

	var toolTip = getDefinition(defineThis);
	tipContainer.style.display = '';
  tipContainer.innerHTML = toolTip;
	
	msgWidth = tipContainer.clientWidth;
	msgHeight = tipContainer.clientHeight;	
}

function initTip(){

	tipContainer = document.getElementById('nFloat')
	tipContainer.style.display = 'none';
	
	IE ? document.attachEvent('onmousemove', stayHome, false) :  document.addEventListener('mousemove', stayHome, false);
	getMidWindow();
}

function initTooltipContext(){

	var rawText = document.getElementById(ContentID); 
	var workText = rawText.innerHTML; 
	
  workText = workText.replace(/\<br*?\>/gi, " <br /> ")
	workText = workText.replace(/(\<div.*?\>)/gi,"$1 ").replace(/(\<\/div\>)/gi," $1");
  workText = workText.replace(/(\<p.*?\>)/gi,"$1 ").replace(/(\<\/p\>)/gi," $1");
  workText = workText.replace(/(\<a.*?\>)/gi,"$1 ").replace(/(\<\/a\>)/gi," $1");
  workText = workText.replace(/(\<span.*?\>)/gi,"$1 ").replace(/(\<\/span\>)/gi," $1");
  
	for (i=0; i<wordList.length; i++)
	{
	 var currWord = new RegExp("([\\s\\r\\n]+"+wordList[i]+"[\\s,;.:?!]+)",'gi');
	 workText = workText.replace(currWord," <span class='term'>$1<\/span> ");
	}
	rawText.innerHTML = workText;
	
}

function getElementsByClassName(oElm, strTagName, strClassName){
	var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	strClassName = strClassName.replace(/\-/g, "\\-");
	var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
	var oElement;
	for(var i=0; i<arrElements.length; i++){
		oElement = arrElements[i];
		if(oRegExp.test(oElement.className)){
			arrReturnElements.push(oElement);
		}
	}
	return (arrReturnElements)
}
