var IE4 = (document.all && !document.getElementById) ? true : false;
var IE5 = (document.all && document.getElementById) ? true : false;
var IE = (document.all) ? true : false;

var NS4 = (document.layers) ? true : false;
var NS6 = (document.getElementById && !document.all) ? true : false;
var NS = (NS4 || NS6) ? true : false;

var first = true;
var infolayer = null;
var infoWidth = 150;
var infoNoBR = false;

function init_infolayer() {
	first = false;
	if ( document.createElement ) {
		infolayer = document.createElement("DIV");
		document.body.appendChild(infolayer);
		infolayer.id = "infoLayer";
		infolayer.style.cssText = "position:absolute;visibility:hidden;z-index:9999;top:200;left:200;";
	} else if ( NS4 ) {
		infolayer = new Layer(100);
	}
}


function showInfo( e, text, obj ) {
	if ( first ) init_infolayer();
	if ( text == "" ) return;
	if ( !infolayer ) return;
	var infoContent = "";
	
	infoContent += "<table cellspacing=0 cellpadding=0 border=0 width=" + infoWidth + "><tr><td align=right>";
	
	if (infoNoBR) infoContent += "<table cellspacing=1 cellpadding=2 border=0 bgcolor=black>";
	else		  infoContent += "<table cellspacing=1 cellpadding=2 border=0 bgcolor=black>";
	infoContent += "<tr><td class=anvisn bgcolor=white>";
	if (infoNoBR) infoContent += "<nobr>";
	infoContent += text;
	if (infoNoBR) infoContent += "</nobr>";
	infoContent += "</td></tr></table>";

	infoContent += "</td></tr></table>";

	setLayerText(infolayer.id, infoContent);
	moveInfo(e, obj);
	showLayer(infolayer.id);
}

function moveInfo(e, obj) {
	if ( !infolayer ) return;

	var width = getLayerContentWidth(infolayer.id);
	var height = getLayerContentHeight(infolayer.id);
	
	if ( document.createElement ) {
		if (obj) {
			if ( e.clientX < (width+10) )	x = getOffsetLeft(obj) + 3;
			else							x = getOffsetLeft(obj) - width - 3;
			
			if ( e.clientY < (height+10) )	y = getOffsetTop(obj) + 3;
			else 							y = getOffsetTop(obj) - height - 3;
		} else {
			if ( e.clientX < (width+10) )	x = e.clientX + document.body.scrollLeft + 3;
			else							x = e.clientX + document.body.scrollLeft - width - 3;
			
			if ( e.clientY < (height+10) )	y = e.clientY + document.body.scrollTop + 3;
			else 							y = e.clientY + document.body.scrollTop - height - 3;
		}
		
		if ( e.clientX < (width+10) && e.clientY < (height+10) ) x += 10;
	} else {
		x = e.x - width - 10;
		y = e.y - height;
	}
	
	moveLayerTo( infolayer.id, x, y );
}

function hideInfo() {
	if ( !infolayer ) return;
	hideLayer(infolayer.id);
}

function setLayerText(id, text) {
	obj = findObj(id);
	if ( !obj ) return;
	if (NS4) { 
		obj.document.open();
		obj.document.write(text);
		obj.document.close();
	}
	else obj.innerHTML = text;
}

function showLayer(id) {
	obj = findObj(id);
	if ( !obj ) return;
	if (obj.style) obj.style.visibility = "visible";
	else obj.visibility = "show";
}

function hideLayer(id) {
	obj = findObj(id);
	if ( !obj ) return;
	if (obj.style) obj.style.visibility = "hidden";
	else obj.visibility = "hide";
}

function moveLayerTo(id, x, y) {
	obj = findObj( id );
	if ( !obj ) return;
	if ( obj.style ) obj = obj.style;
	obj.top = y;
	obj.left = x;
}

function getLayerContentWidth(id) {
	obj = findObj( id );
	if ( !obj ) return 0;

	if ( NS4 ) return obj.document.width;
	else if (NS6) return ( (this.contentWidth) ? this.contentWidth : obj.offsetWidth );
	else if (IE) return parseInt(obj.scrollWidth);
	else return 0;
}

function getLayerContentHeight(id) {
	obj = findObj( id );
	if ( !obj ) return 0;

	if ( NS4 ) return obj.document.height;
	else if (NS6) return ( (this.contentHeight) ? this.contentHeight : obj.offsetHeight );
	else if (IE) return parseInt(obj.scrollHeight);
	else return 0;
}

function findObj( id ) {
	obj = null;
	if ( document.getElementById ) obj = document.getElementById( id );
	else if ( document.all ) obj = document.all[ id ];
	else if ( document.layers )	obj = document.layers[ id ];

	return obj;
}

function getOffsetTop(obj) {
	if (obj.offsetParent) {
		if (obj.offsetParent.tagName == "BODY") {
			return obj.offsetTop;
		} else {
			return (obj.offsetTop + getOffsetTop(obj.offsetParent)); 
		}
	}
}

function getOffsetLeft(obj) {
	if (obj.offsetParent) {
		if (obj.offsetParent.tagName == "BODY") {
			return obj.offsetLeft;
		} else {
			return (obj.offsetLeft + getOffsetLeft(obj.offsetParent)); 
		}
	}
}

