function descendant(a, d) //ancestor, descendant
{
	if(a == d) return false;
	while (a != d && d.nodeName != 'BODY')
	{
		d = d.parentNode;
	}
	if(a == d) return true;
	return false;
}
function onq(id, action)
{
	for(var i=0; i<q.length; i++)
	{
		if(q[i][0] == id && q[i][1] == action) return true;
	}
	return false;
}
function remq(id, action)
{
	for(var i=0; i<q.length; i++)
	{
		if(q[i][0] == id && q[i][1] == action)
		{
			q.splice(i,1);
		}
	}
}
var q = Array();
function doPop(e, id, me)
{
	var evt = e || window.event;	//mouseover event
	var from = evt.relatedTarget || evt.fromElement;
	//var to = evt.target || evt.srcElement || evt.toElement;
	if(descendant(me,from.parentNode) || me==from.parentNode) return;
	if(!onq(id,"grow") && !onq(id,"shrink") && !onq(id,"doshrink"))
	{
		var fin = function(){
			remq(id,"grow");
			if(onq(id,"doshrink")){undoPop(null, id, me);}
		};
		q[q.length] = Array(id, "grow",
		 new Effect.Grow(id, {direction:'top-left', duration:0.2, afterFinish:fin}));
	}
}
function undoPop(e, id, me)
{
	var evt = e || window.event;	//mouseout event
	if(evt != null)
	{
		//var from = evt.target || evt.srcElement || evt.fromElement;
		var to = evt.relatedTarget || evt.toElement;
		if(descendant(me,to.parentNode) || me==to.parentNode) return;
	}
	if(!onq(id,"shrink") && !onq(id, "grow"))
	{
		remq(id,"doshrink");	//(if it's there)
		var fin = function(){
			remq(id,"shrink");
		}
		q[q.length] = Array(id, "shrink",
		 new Effect.Shrink(id, {direction:'top-left', duration:0.2, afterFinish:fin}));
	}
	else if(!onq(id, "shrink") && !onq(id, "doshrink"))
	{
		q[q.length] = Array(id, "doshrink", null);
	}
}
function undoPop2(e, id)	//when image is clicked (in case it's stuck open)
{
	if(!onq(id,"shrink") && !onq(id, "grow"))
	{
		remq(id,"doshrink");	//(if it's there)
		var fin = function(){
			remq(id,"shrink");
		}
		q[q.length] = Array(id, "shrink",
		 new Effect.Shrink(id, {direction:'top-left', duration:0.2, afterFinish:fin}));
	}
	else if(!onq(id, "shrink") && !onq(id, "doshrink"))
	{
		q[q.length] = Array(id, "doshrink", null);
	}
}

