var elementsWithPopup = new Array();
var popUpElement;
var popUpTextContainer;

function setupPopup() {
	elementsWithPopup = document.getElementById("chGal").childNodes;
	
	popUpElement = document.getElementById('popUp');
	popUpContent = document.getElementById('popupContent');
	
	for(var i=0; i <= elementsWithPopup.length; i++){
		if (elementsWithPopup[i] != undefined) {
			applyEventF(elementsWithPopup[i], "mouseover", popUp, false);
			applyEventF(elementsWithPopup[i], "mouseout", hideIt, false);
		}
	}
	
}
var IE = document.attachEvent?true:false;
var DOM = document.addEventListener?true:false;

function popUp(e) {
	popUpSrc = eventSource(e);
	
	var popUpText = getInnerText(popUpSrc, false);
	popUpContent.innerHTML = popUpText;
	
	pTop = getXPos(popUpSrc);
	pLeft = getYPos(popUpSrc);
	var pX = pTop + 50;
	var pY = pLeft + 50;
	
	
	placeIt(popUpElement, pX, pY);

}

function hideIt() {
	placeIt(popUpElement, 0, 0);
	popUpElement.style.display = "none";
}


function placeIt(object,x,y) {
	popUpElement.style.display = "block";
	object.style.left=x+"px";
	object.style.top=y+"px";
}

function getXPos(obj) {
	var curleft = 0;
	if(obj.offsetParent)
		while(1) 
		{
		  curleft += obj.offsetLeft;
		  if(!obj.offsetParent)
			break;
		  obj = obj.offsetParent;
		}
	else if(obj.x)
		curleft += obj.x;
	return curleft;
}

function getYPos(obj) {
	var curtop = 0;
	if(obj.offsetParent)
		while(1)
		{
		  curtop += obj.offsetTop;
		  if(!obj.offsetParent)
			break;
		  obj = obj.offsetParent;
		}
	else if(obj.y)
		curtop += obj.y;
	return curtop;
}

function moveIt(e) {
	placeIt(popUpElement, x, y);
}

function getInnerText(node,ignorewhitespace){
	var text = "";
	// if the node has children, loop through them
	if(node.hasChildNodes())
	{
		var children = node.childNodes;
		for(var i=0; i<children.length; i++)
		{
			// if node is a text node append it
			if(children[i].nodeName == "#text")
			{
				if(ignorewhitespace)
				{
					if(!/^\s+$/.test(children[i].nodeValue))
					{
						text = text.concat(children[i].nodeValue);
					}
				}
				else
				{
					text = text.concat(children[i].nodeValue);
				}
			}
			// if node is a line break append \n
			else if(children[i].nodeName == "BR")
			{
				text = text.concat("\n");
			}
			// otherwise call this function again to get the text
			else
			{
				text = text.concat(getInnerText(children[i]));
			}
		}
	}
	// it has no children, so get the text
	else
	{
		// if node is a text node append it
		if(node.nodeName == "#text")
		{
			text = text.concat(node.nodeValue);
		}
		// if node is a line break append \n
		else if(node.nodeName == "BR")
		{
			text = text.concat("\n");
		}
	}
	return text;
}


function withinIt(x, y, object) {
   within=false;
   otop=parseInt(object.style.top);
   obottom=otop+parseInt(object.style.height);
   oleft=parseInt(object.style.left);
   oright=oleft+parseInt(object.style.width);

   if ((y>otop && y<obottom) && (x>oleft && x<oright)) within=true;
   return within;
}

function eventSource(e) {
	if (IE) return event.srcElement;
	else if (DOM) return e.currentTarget;
}

function applyEventF(obj,ename,fname,capture) {
	if (IE) obj.attachEvent("on"+ename, fname);
	else if (DOM) obj.addEventListener(ename,fname,capture);
}

function removeEventF(obj,ename,fname,capture) {
	if (IE) obj.detachEvent("on"+ename, fname);
	else if (DOM) obj.removeEventListener(ename,fname,capture);
}

function eventPositionX(e) {
	if (IE)	return event.clientX;
	else if (DOM) return e.clientX;
}

function eventPositionY(e) {
	if (IE)	return event.clientY;
	else if (DOM) return e.clientY;
}




