var activePopup=null;
var visualOffset=10;
var mouseOverTolerance=10;
function showPopup(trigger,popup) {
	try {
		if (activePopup!=popup) {
			popsToCheck=$$('.popupVert'); //vertical
			for (whichPop in popsToCheck) {
				if (popsToCheck[whichPop]!=$(popup)) {
					if (typeof(popsToCheck[whichPop])!='function') {
						new Effect.Opacity(popsToCheck[whichPop],{
							to: 0,
							duration: 0.5,
							fps: 30,
							afterFinish: function(o) {
								o.element.setStyle({
									display: 'none',
									cursor: 'auto'
								});
							}
						});
					}
				}
			}
			popsToCheck=$$('.popupHoriz'); //horiz
			for (whichPop in popsToCheck) {
				if (popsToCheck[whichPop]!=$(popup)) {
					if (typeof(popsToCheck[whichPop])!='function') {
						new Effect.Opacity(popsToCheck[whichPop],{
							to: 0,
							duration: 0.5,
							fps: 30,
							afterFinish: function(o) {
								o.element.setStyle({
									display: 'none',
									cursor: 'auto'
								});
							}
						});
					}
				}
			}
			$(popup).setStyle({
				top: '-1000px',
				left: '-1000px',
				opacity: 0,
				paddingLeft: '0px',
				paddingBottom: '0px',
				display: 'none'
			});
			contentPos=$('content').cumulativeOffset();
			triggerPos=$(trigger).cumulativeOffset();
			triggerDims=$(trigger).getDimensions();
			popupDims=$(popup).getDimensions();
			bodyOffset=document.body.cumulativeOffset();
			if ($(popup).hasClassName('popupHoriz')) {
				$(popup).setStyle({
					top: (triggerPos.top-contentPos.top+Math.round(triggerDims.height/2)-Math.round(popupDims.height/2))+'px',
					left: (triggerPos.left-bodyOffset.left+visualOffset)+'px',
					paddingLeft: (triggerDims.width)+'px',
					display: 'block',
					cursor: 'pointer'
				});
			} else {
				$(popup).setStyle({
					top: (triggerPos.top-contentPos.top-popupDims.height-(visualOffset/2))+'px',
					left: (triggerPos.left-bodyOffset.left+Math.round(triggerDims.width/2)-Math.round(popupDims.width/2)-10)+'px',
					paddingBottom: (triggerDims.height+(visualOffset*2))+'px',
					display: 'block',
					cursor: 'pointer'
				});
			}
			new Effect.Opacity($(popup),{
				to: 1,
				duration: 0.25,
				fps: 30,
				afterFinish: function(o) {
					Event.observe(document.body,'mousemove', hideAllPopups);
					activePopup=$(popup);
				}
			});
		}
	} catch(e) {
	}
}
function hideAllPopups(ev) {
	if (activePopup!=null) {
                e=ev.element();
		contentPos=$('content').cumulativeOffset();
                triggerPos=activePopup.cumulativeOffset();
                triggerDims=activePopup.getDimensions();
                bodyOffset=document.body.cumulativeOffset();
                hOffset=((document.viewport.getWidth()-document.body.getWidth())/2);
                checkleft=ev.pointerX()+mouseOverTolerance>(triggerPos.left-bodyOffset.left+hOffset);
                checkright=ev.pointerX()-mouseOverTolerance<(triggerPos.left-bodyOffset.left+triggerDims.width+hOffset);
                checktop=ev.pointerY()+mouseOverTolerance>(triggerPos.top);
                checkbottom=ev.pointerY()-mouseOverTolerance<(triggerPos.top+triggerDims.height);
                if (!checkleft || !checkright || !checktop || !checkbottom) {
                        new Effect.Opacity(activePopup,{
                                to: 0,
                                duration: 0.5,
                                fps: 30,
                                afterFinish: function(o) {
                                        o.element.setStyle({
                                                display: 'none',
                                                cursor: 'auto'
                                        });
                                }
                        });
                        activePopup=null;
                        Event.stopObserving(document.body,'mouseover', hideAllPopups);
                }
        }
}
