Pop-up position..
Hej.Jeg har fundet nedenstående script og vil gerne høre om der er en der kan fortælle mig om det er muligt at styre hvor pop-up'en popper up henne... Pt popper de frem centreret ud for det billede der er onmouseover på men jeg ville gerne hvis de kunne poppe up samme sted alle sammen.. Giver det mening?
<script type="text/JavaScript">
var margin = 2;
var hideDelay = 0.1;
var clickable = true;
var curDiv;
var timeoutDate;
var performHide;
function Show(elm, divId, position)
{
catchEvent(elm, "mouseout", StartTimeout);
if(curDiv != null)
Hide(curDiv.id);
curDiv = document.getElementById(divId);
var elmPos = findPos(elm);
//Get element dimensions
var elmPosX = elmPos[0];
var elmPosY = elmPos[1];
var elmWidth = elm.offsetWidth;
var elmHeight = elm.offsetHeight;
//Get div dimensions
var popupWidth = curDiv.offsetWidth;
var popupHeight = curDiv.offsetHeight;
var posX = 0;
var posY = 0;
switch(position)
{
case 'top':
posX = (elmPosX + elmWidth/2) - (popupWidth/2);
posY = elmPosY - popupHeight - margin;
break;
case 'bottom':
posX = (elmPosX + elmWidth/2) - (popupWidth/2);
posY = elmPosY + elmHeight + margin;
break;
case 'left':
posX = elmPosX - popupWidth - margin*2;
posY = (elmPosY + elmHeight/2) - (popupHeight/2);
break;
default: // 'right'
posX = elmPosX + elmWidth + margin*2;
posY = (elmPosY + elmHeight/2) - (popupHeight/2);
break;
}
posX = Math.max(posX, 0);
posY = Math.max(posY, 0);
curDiv.style.left = posX + "px";
curDiv.style.top = posY + "px";
curDiv.style.visibility = 'visible';
StopTimeout();
if(clickable)
{
catchEvent(curDiv, "mouseout", StartTimeout);
catchEvent(curDiv, "mouseover", StopTimeout);
}
}
function StartTimeout()
{
performHide = true;
timeoutDate = new Date();
timeout = setTimeout("Timeout()", 100);
}
function StopTimeout()
{
performHide = false;
}
function Timeout()
{
if(!performHide)
return;
var date = new Date();
var diff = (date - timeoutDate)/1000;
if(diff > hideDelay)
{
if(curDiv != null)
Hide(curDiv.id);
return;
}
timeout = setTimeout("Timeout()", 100);
}
//Hides div-tag
function Hide(divId)
{
var popup = document.getElementById(divId);
popup.style.visibility = 'hidden';
}
//Returns the position of an object
function findPos(obj)
{
var curleft = curtop = 0;
if (obj.offsetParent)
{
curleft = obj.offsetLeft;
curtop = obj.offsetTop;
while (obj = obj.offsetParent)
{
curleft += obj.offsetLeft;
curtop += obj.offsetTop;
}
}
return [curleft,curtop];
}
function catchEvent(elm, strEvent, Function)
{
if (elm.addEventListener) // FireFox
elm.addEventListener(strEvent, Function, false);
else if (elm.attachEvent) // IE
elm.attachEvent("on"+strEvent, Function);
else // IE can do this, maybe some XYZbrowser has none of the above.
{
elm["on"+strEvent] = Function;
elm[strEvent] = Function;
}
}
</script>
