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";
    }
}

