var fadeInTooltipTimeout;

function enableTooltips() {

	//create tooltipParent div
	var h = document.createElement("div");
	h.id = "tooltipParent";
	h.setAttribute("id", "tooltipParent");
	h.style.position = "absolute";

	$(document.body).insert({'top':h});


	//loop thru everything and check for tip class
	$$('*').each(function(el) {

		if(el != null && el.className.indexOf('tip') > -1) {

			var t_id = el.getAttribute("id");
			var t = el.getAttribute("title");
			
			if($(t_id + '_tooltip')) {

				var tooltip = $(t_id + '_tooltip');
				tooltip.tipDelay = 200;

				var custom_tipdelay = tooltip.getAttribute('title');

				if(custom_tipdelay != '' && custom_tipdelay != null) {
					tooltip.tipDelay = custom_tipdelay;	
				}

			} else if(t!=null && t.length!=0) {
				
				t = t.replace(/(\s{1}\|{1}\s{1})/g, '<br />');
				el.removeAttribute("title");
	
				//create tooltip span element
				var tooltip = document.createElement("div");
				tooltip.className = "tooltip";
				tooltip.tipDelay = 200;

				tooltip.innerHTML = t;

			} else {
				return false;	
			}

			el.tooltip = tooltip;

			addEvent(el, 'mouseover', function(el) {

				removeTooltips();

				$('tooltipParent').appendChild(this.tooltip);
				
				this.tooltip.style.display = '';

				fadeInTooltipTimeout = setInterval(function () {

					$('tooltipParent').style.display = '';

				}, this.tooltip.tipDelay);

			});

			addEvent(el, 'mouseout', function(el) {

				removeTooltips();

			});

			addEvent(el, 'mousemove', function(el) {
				Locate(el);
			});

		}

	});

}

initAdd(enableTooltips);


function removeTooltips() {
	
	try {
	clearInterval(fadeInTooltipTimeout);
	} catch(err) {}

	var d = $('tooltipParent');
	d.style.display = 'none';
	while(d.childNodes.length > 0) {
		d.removeChild(d.firstChild);	
	}

}

function Locate(e) {

	var posx=0,posy=0;
	if(e==null) e=window.event;
	if(e.pageX || e.pageY) {
		posx=e.pageX; posy=e.pageY;
	} else if(e.clientX || e.clientY) {
		if(document.documentElement.scrollTop) {
			posx=e.clientX+document.documentElement.scrollLeft;
			posy=e.clientY+document.documentElement.scrollTop;
		} else {
			posx=e.clientX+document.body.scrollLeft;
			posy=e.clientY+document.body.scrollTop;
		}
	}
	
	//now we have posx and posy for mouse co-ords
	
	var wwidth = 0; wheight = 0;
	
	if( typeof( window.innerWidth ) == 'number' ) {
		//Non-IE
		wwidth = window.innerWidth;
		wheight = window.innerHeight;	

	} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
		//IE 6+ in 'standards compliant mode'
		wwidth = document.documentElement.clientWidth;
		wheight = document.documentElement.clientHeight;
	} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
		//IE 4 compatible
		wwidth = document.body.clientWidth;
		wheight = document.body.clientHeight;
	}

	
	var twidth = 0;
	var theight = 0;
	
	try {

		twidth = $('tooltipParent').getWidth();
		theight = $('tooltipParent').getHeight();

	} catch(err) {}

	if((wwidth - twidth - posx) < 50) {

		$('tooltipParent').style.left=(posx-twidth-25)+"px";
		
	} else {		

		$('tooltipParent').style.left=(posx+25)+"px";
		
	}

	$('tooltipParent').style.top=(posy-5)+"px";
	$('tooltipParent').style.zIndex = '999';


}
