var IE=document.all?true:false;
var xPosition=0;
var yPosition=0;
document.onmousemove=getMouseXY;

var elementTracking=new Array();

function getMouseXY(e) {
	if(IE) {
		xPosition=event.clientX + document.body.scrollLeft;
		yPosition=event.clientY + document.body.scrollTop;
	} else {
		xPosition=e.pageX;
		yPosition=e.pageY;
	}
	return true;
}

function tagIncrement (tagId) {
	if(elementTracking[tagId]==undefined)
		elementTracking[tagId]=0;
	elementTracking[tagId]++;
}

function createHoveringDiv (url, tagId, className) {
	elementTracking[tagId]=0;
	elementTracking[tagId]++;

	// If we have an existing element with this tag, delete it
	var newDiv=document.getElementById(tagId);
	if(!newDiv) {
		var newDiv=document.createElement('div');
		newDiv.id=tagId;
		newDiv.style.position='absolute';
		newDiv.style.zIndex=10;
		newDiv.innerHTML="<center style='padding: 5px;'><b>Loading...</b><br><br><img src=/images/Formatting/Loading.gif></center>";
		newDiv.style.left=xPosition-200;
		newDiv.style.top=yPosition-160;
		newDiv.className=className;
		if(newDiv.attachEvent) {
			newDiv.attachEvent("onmouseover", function(event){tagIncrement(tagId);});
			newDiv.attachEvent("onmouseout", function(event){deleteHoveringDiv(tagId);});
		} else {
			newDiv.addEventListener("onMouseOver", function(event){tagIncrement(tagId);}, false);
			newDiv.addEventListener("onMouseOut", function(event){deleteHoveringDiv(tagId);}, false);
		}
		document.body.appendChild(newDiv);
		AJAX_Request('GET', url, true, '', tagId);
	} else {
		newDiv.style.left=xPosition-200;
		newDiv.style.top=yPosition-160;
		newDiv.innerHTML="<center style='padding-5px;'><b>Loading...</b><br><br><img src=/images/Formatting/Loading.gif></center>";
		AJAX_Request('GET', url, true, '', tagId);
	}
}

function deleteHoveringDiv (tagId) {
	if(elementTracking[tagId] && elementTracking[tagId]>0) {
		elementTracking[tagId]--;
		setTimeout("permaDeleteDiv('"+tagId+"')", 1000);
	}
}

function permaDeleteDiv (tagId) {
	if(elementTracking[tagId]==0) {
		var oldDiv=document.getElementById(tagId);
		if(oldDiv)
			oldDiv.parentNode.removeChild(oldDiv);
	} else {
		setTimeout("timedDecrement('"+tagId+"');", 20000);
	}
}

function timedDecrement (tagId) {
	if(elementTracking[tagId]>0) {
		elementTracking[tagId]--;
		setTimeout("timedDecrement('"+tagId+"');", 20000);
	} else {
		deleteHoveringDiv(tagId);
	}
}
