var $ie = (navigator.appName == "Microsoft Internet Explorer");
var $visible = false;
var $change = false;
var $infoWidth = 300;
 
function move_info($e) {
	if($visible) {
		var $info = document.getElementById("info_");
		var $x = -150;
      if($ie) { // Internet Explorer
    		$e = (document.documentElement.clientWidth > 0) ? document.documentElement : document.body;
			$info.style.left = $x + 150 + event.x + $e.scrollLeft + "px";
			$info.style.top= 20 + event.y + $e.scrollTop + "px";
    	}
		else { // Netscape
			var $left = $x + $e.pageX;
			//$info.style.left = ($left + $infoWidth > window.innerWidth) ? $left + window.pageXOffset + "px": $left + window.pageXOffset + "px";
			if($left + $infoWidth > window.innerWidth) {
				$info.style.right = 0 - window.pageXOffset + "px";
				$info.style.left = "auto";
			}
			else {
				if($left < window.pageXOffset) $left = window.pageXOffset;
				$info.style.left = $left + "px";
				$info.style.right = "auto";
			}
   		$info.style.top = 10 + $e.pageY + "px";
    	}
		if($change) {  // Change position then show the text
			$info.style.visibility = "visible";
			$change = false;
		}
  	}
}

function make_data($text) {
	var $reg = new RegExp("__", "g");
	var $tab = $text.split($reg);
	var $node = document.createElement("p")
	for($i = 0;$i < $tab.length; $i++) {
		var $br = document.createElement("br");
		var $textNode = document.createTextNode($tab[$i]);
	 	$node.appendChild($textNode);
	 	$node.appendChild($br);
	}
	return $node;
}

function show_info($status, $text) {
	var $info = document.getElementById("info_");
	$change = $info.style.visibility != $status;
	if($change) { // Info change
		// status : visible or hidden
		$visible = ($status == "visible");		
		if($visible) $info.replaceChild(make_data($text), $info.firstChild);
		else $info.style.visibility = "hidden";
		$newStatus = $status;
	}
}

function setToolTip($element, $text) {
	$text = $text.replace(new RegExp("\'", "g"), "\\'");
	if($ie) {
		$element.p_text = $text;
		$element.onmouseover = function() {show_info('visible', $text);};
		$element.onmouseout = function() {show_info('hidden', '');};		
	}
	else {
		$element.setAttribute("onmouseover", "javascript:show_info(\'visible\', \'"+$text+"\')");
		$element.setAttribute("onmouseout", "javascript:show_info(\'hidden\', \'\');");
	}
}

document.onmousemove = move_info;

function $($id) {return document.getElementById($id);}

function removeElt($elt) {
	$elt.parentNode.removeChild($elt);
	return false;
}

