var httpRequest;
var myDiv;
var arrIDs = new Array(0);
var arrTexts = new Array(0);
document.onclick = HidePopUp;

function HidePopUp(e)
{
    if(document.getElementById("glossaryTarget"))
    {
        var target = document.getElementById("glossaryTarget");
        target.style.display = "none";
    }
}

function ShowGlossaryPopup(id)
{
	if (FindAndShowGlossaryEntry(id))
		return;

	var glossaryDirector = "/GetPopUpItem.aspx";
	if (window.XMLHttpRequest)
		httpRequest = new XMLHttpRequest();
	else if (window.ActiveXObject) 
		httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
	else
		return;

	httpRequest.open('GET', glossaryDirector + "?id=" + id, true);
	httpRequest.onreadystatechange = CheckState;
	httpRequest.send('');
}

function CheckState() 
{
	if (httpRequest.readyState == 4 && httpRequest.status == 200)
	{
		var arrGlossary = httpRequest.responseText.split('|');
		arrIDs.length = arrIDs.length + 1;
		arrTexts.length = arrIDs.length;
		arrIDs[arrIDs.length] = arrGlossary[0];
		arrTexts[arrTexts.length] = arrGlossary[1];
		RenderGlossaryPopup(arrGlossary[1]);
	}
}

function FindAndShowGlossaryEntry(id)
{
	for (i = 0; i < arrIDs.length; i++)
	{
		if (id == arrIDs[i])
		{
			RenderGlossaryPopup(arrTexts[i]);
			return true;
		}
	}	
	return false;
}

function RenderGlossaryPopup(glossaryText)
{
	if (glossaryText != null || glossaryText != "")
	{
		document.getElementById("definition").innerHTML = glossaryText;
		AssignPosition();
	}
}

var cX = 0; var cY = 0; var rX = 0; var rY = 0;

function UpdateCursorPosition(e){ cX = e.pageX; cY = e.pageY;}

function UpdateCursorPositionDocAll(e){ cX = event.clientX; cY = event.clientY;}

if(document.all) { document.onmousemove = UpdateCursorPositionDocAll; }
else { document.onmousemove = UpdateCursorPosition; }

function AssignPosition() 
{
	if(self.pageYOffset)
	{
		rX = self.pageXOffset;
		rY = self.pageYOffset;
	}
	else if(document.documentElement && document.documentElement.scrollTop) 
	{
		rX = document.documentElement.scrollLeft;
		rY = document.documentElement.scrollTop;
	}
	else if(document.body) 
	{
		rX = document.body.scrollLeft;
		rY = document.body.scrollTop;
	}
	if(document.all) 
	{
		cX += rX; 
		cY += rY;
	}
		
	GetMyDiv();
	myDiv.style.left = (cX-60) + "px";
	myDiv.style.display = "block";
	myDiv.style.top = (cY - 15 - myDiv.offsetHeight) + "px";
}

function GetMyDiv()
{
    if (myDiv == null)
    {
	    myDiv = document.getElementById("glossaryTarget");
	    myDiv.style.display = "none";
    }
}

