
var objPopUp = null;
var popMenuOn = 0;

function popUp(evt, divID, spanID, movePop) {
	if (popMenuOn==1) popHide();
	document.onclick = popHide;
	var evt = (evt) ? evt : ((window.event) ? event : null);
	objPopUp = document.getElementById(divID);
	objLink = document.getElementById(spanID);
	//xPos = evt.clientX;
	//yPos = evt.clientY;
	
	// Scroll offset values:
	var yPos, xPos;
	if (window.pageYOffset)
		yPos=window.pageYOffset;
	else if (document.documentElement && document.documentElement.scrollTop)
		yPos=document.documentElement.scrollTop;
	else if (document.body)
		yPos=document.body.scrollTop;

	if (window.pageXOffset)
		xPos=window.pageXOffset;
	else if (document.documentElement && document.documentElement.scrollLeft)
		xPos=document.documentElement.scrollLeft;
	else if (document.body)
		xPos=document.body.scrollLeft;

	if (evt) {
		xPos += evt.clientX;
		yPos += evt.clientY;
	}

	//currently movePop is not used
	if (movePop) {
		if (xPos + objPopUp.offsetWidth > document.body.clientWidth)
			xPos = xPos - objPopUp.offsetWidth;
		if (yPos + objPopUp.offsetHeight > document.body.clientHeight)
			yPos = yPos - objPopUp.offsetHeight;
	}

//	objPopUp.style.left = DL_GetElementLeft(objLink) + 'px';
	//objPopUp.style.left = xPos + 'px';
//	objPopUp.style.top = (DL_GetElementTop(objLink) + objLink.offsetHeight) + 'px';
	//objPopUp.style.top = yPos + 'px';

	objPopUp.style.left = findPosX(objLink) + 'px';
	objPopUp.style.top = (findPosY(objLink) + objLink.offsetHeight) + 'px';


	objPopUp.style.visibility = 'visible';
}

function popHide() {
//alert(popMenuOn);
	if (popMenuOn == 0) {
		popMenuOn = 1;
		return;
	} else {
		if (objPopUp) {
			objPopUp.style.visibility = 'hidden';
			objPopUp = null;
		}
		popMenuOn = 0;
		document.onclick=null;	
	}
}

function DL_GetElementLeft(eElement)
{
    var nLeftPos = eElement.offsetLeft;          // initialize var to store calculations
    var eParElement = eElement.offsetParent;     // identify first offset parent element  
    while (eParElement != null)
    {                                            // move up through element hierarchy
        nLeftPos += eParElement.offsetLeft;      // appending left offset of each parent
        eParElement = eParElement.offsetParent;  // until no more offset parents exist
    }
    return nLeftPos;                             // return the number calculated
}

function DL_GetElementTop(eElement)
{
    var nTopPos = eElement.offsetTop;            // initialize var to store calculations
    var eParElement = eElement.offsetParent;     // identify first offset parent element  
    while (eParElement != null)
    {                                            // move up through element hierarchy
        nTopPos += eParElement.offsetTop;        // appending top offset of each parent
        eParElement = eParElement.offsetParent;  // until no more offset parents exist
    }
    return nTopPos;                              // return the number calculated
}


// This function finds the hoizontal position of an element
function findPosX(obj)
{
     var curleft = 0;
     if (obj.offsetParent)
          while (obj.offsetParent)
          {
               curleft += obj.offsetLeft
               obj = obj.offsetParent;
          }
     else if (obj.x)
          curleft += obj.x;
     return curleft;
}

// This function finds the vertical position of an element
function findPosY(obj)
{
     var curtop = 0;
     if (obj.offsetParent)
          while (obj.offsetParent)
          {
               curtop += obj.offsetTop
               obj = obj.offsetParent;
          }
     else if (obj.y)
          curtop += obj.y;
     return curtop; 
}

function insertInTextBox(textboxID, replaceText, newText) {
	var txtTags = document.getElementById(textboxID);
	txtTags.value = txtTags.value.substring(0, (txtTags.value.length-replaceText.length-1));
	addToTextBox(textboxID, newText);
	
  if (txtTags.createTextRange) {
    var range = txtTags.createTextRange();
    range.collapse(false);
    range.select();
  }
  else if (txtTags.setSelectionRange) {
    txtTags.focus();
    var length = txtTags.value.length;
    txtTags.setSelectionRange(length, length);
  }
//	txtTags.focus();
}

function addToTextBox(textboxID, value) {
	var txtTags = document.getElementById(textboxID);
	//this can operate on space or comma-separated text
	txtTags.value = txtTags.value.replace(",", " ");
	var tags = txtTags.value.split(" ");
	var found=false;
	//loop through existing text in textbox to make sure the new value doesn't already exist in there
	for (var i=0; i < tags.length; i++) {
		if (tags[i]==value) {
			found=true;
			break;
		}
	}
	if (!found) {
		if (txtTags.value.length > 0)
			txtTags.value += " ";
		txtTags.value += value;
	}
}

function popUpSelect(evt, nameArray, textboxID, divID, spanID) {
	var tbox = document.getElementById(textboxID);
	var div = document.getElementById(divID);
	div.innerHTML = "";
	div.style.visibility = 'hidden';
	var alltext = tbox.value;
	var comma = alltext.lastIndexOf(',');
	var space = alltext.lastIndexOf(' ');
	var startAt=-1;
	if (comma > space)
		startAt = comma;
	else if (space > comma)
		startAt = space;
	var checkText='';
	if (startAt >= 0)
		checkText = alltext.substring(startAt+1);
	else
		checkText = alltext;
	if (checkText.length > 0) {
		var chText = checkText.toLowerCase();
		for (var x=0; x < nameArray.length; x++) {
			var tagText = nameArray[x].toLowerCase();
			if (tagText.substring(0, checkText.length)==chText && tagText != chText)
				div.innerHTML += '<A class="menuLink" onclick="popHide()" href="javascript:insertInTextBox(\''+textboxID+'\', \''+checkText+'\', \''+nameArray[x]+'\');">'+nameArray[x]+'</A>';
		}
		if (div.innerHTML.length > 0) {
			popUp(evt, divID, spanID, true);
			popHide();
		}
	}
}
function clearTextBox(textboxID) {
	var tbox = document.getElementById(textboxID);
	tbox.value='';
}

function URLEncode(sStr) {
  return escape(sStr).replace(/\+/g, '%2B').replace(/\"/g,'%22').replace(/\'/g, '%27').replace(/\//g,'%2F');
}

function setFocus(textboxID) {
  var tbox = document.getElementById(textboxID);
  if (tbox) {
    if (tbox.createTextRange) {
      var range = tbox.createTextRange();
      range.collapse(false);
      range.select();
    }
    else if (tbox.setSelectionRange) {
      tbox.focus();
      var length = tbox.value.length;
      tbox.setSelectionRange(length, length);
    }
  }
}

