// START - For Tooltips...

var offsetxpoint=-60 //Customize x offset of tooltip
var offsetypoint=20 //Customize y offset of tooltip
var ie=document.all
var ns6=document.getElementById && !document.all
var enabletip=false

function ietruebody(){
return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}

function ddrivetip(thetext, thecolor, thewidth){
	var tipobj = document.getElementById('dhtmltooltip');
	if (ns6||ie){
		if (typeof thewidth!="undefined" && thewidth!="") tipobj.style.width=thewidth+"px"
		if (typeof thecolor!="undefined" && thecolor!="") tipobj.style.backgroundColor=thecolor
		tipobj.innerHTML=thetext
		enabletip=true
		return false
	}
}

function starttipcount(thetext, thecolor, thewidth){
	timeout=setTimeout("ddrivetip('"+thetext+"', '"+thecolor+"', "+thewidth+");changetip()",300);
}

function stoptipcount(){
	clearTimeout(timeout);
}

function positiontip(e){
	var tipobj = document.getElementById('dhtmltooltip');
	curX=(ns6)?e.pageX : event.clientX+ietruebody().scrollLeft;
	curY=(ns6)?e.pageY : event.clientY+ietruebody().scrollTop;
	//Find out how close the mouse is to the corner of the window
	rightedge=ie&&!window.opera? ietruebody().clientWidth-event.clientX-offsetxpoint : window.innerWidth-e.clientX-offsetxpoint-20
	bottomedge=ie&&!window.opera? ietruebody().clientHeight-event.clientY-offsetypoint : window.innerHeight-e.clientY-offsetypoint-20

	leftedge=(offsetxpoint<0)? offsetxpoint*(-1) : -1000
	if (enabletip){
		changetip();
	}
}
	
function changetip() {
	var tipobj = document.getElementById('dhtmltooltip');
	//if the horizontal distance isn't enough to accomodate the width of the context menu
	if (rightedge<tipobj.offsetWidth)
		//move the horizontal position of the menu to the left by it's width
		tipobj.style.left=ie? ietruebody().scrollLeft+event.clientX-tipobj.offsetWidth+"px" : window.pageXOffset+e.clientX-tipobj.offsetWidth+"px"
	else if (curX<leftedge)
		tipobj.style.left="5px"
	else
		//position the horizontal position of the menu where the mouse is positioned
		tipobj.style.left=curX+offsetxpoint+"px"

	//same concept with the vertical position
	if (bottomedge<tipobj.offsetHeight)
		tipobj.style.top=ie? ietruebody().scrollTop+event.clientY-tipobj.offsetHeight-offsetypoint+"px" : window.pageYOffset+e.clientY-tipobj.offsetHeight-offsetypoint+"px"
	else
		tipobj.style.top=curY+offsetypoint+"px"
		tipobj.style.visibility="visible"
	
}

function hideddrivetip(){
	stoptipcount();
	tipobj = document.getElementById('dhtmltooltip');
	if (ns6||ie){
		enabletip=false
		tipobj.style.visibility="hidden"
		tipobj.style.left="-1000px"
		tipobj.style.backgroundColor=''
		tipobj.style.width=''
	}
}

document.onmousemove=positiontip

// END - For Tooltips...

function init_dictionary(termArray){
	//go_dictionary(termArray);
}

function go_dictionary(termArray){
	for(var i in termArray){
		//alert (i + ' is an index of ' + termArray[i]);
		highlight_dictionary(i, termArray[i], document.body);
	}
}

function highlight_dictionary(term, definition, container){
	var term_low = term.toLowerCase();

	for(var i=0; i<container.childNodes.length; i++){
		var node = container.childNodes[i];

		if (node.nodeType == 3){
			var data = node.data;
			var data_low = data.toLowerCase();
			if (data_low.indexOf(term_low) != -1){
				//term found!
				var new_node = document.createElement('SPAN');
				new_node.setAttribute("onmouseover", "starttipcount('"+definition+"','', 300)");
				new_node.setAttribute("onmouseout", "hideddrivetip()");
				node.parentNode.replaceChild(new_node,node);
				var result;
				while((result = data_low.indexOf(term_low)) != -1){
					new_node.appendChild(document.createTextNode(data.substr(0,result)));
					new_node.appendChild(document.createTextNode(data.substr(result,term.length)+' '));
					var icon = document.createElement("img");
					icon.setAttribute("src", "images/nav/dictionary_item.gif");
					new_node.appendChild(icon);
					data = data.substr(result + term.length);
					data_low = data_low.substr(result + term.length);
				}
				new_node.appendChild(document.createTextNode(data));
			}
		}else{
			//recurse
			highlight_dictionary(term, definition, node);
		}
	}
}

function create_node_dictionary(child){
	var node = document.createElement('SPAN');
	node.style.textDecoration = 'underline';
	node.appendChild(child);
	return node;
}