0
true
null
anchorRight) ? "start" : "end";
// If the popup is not on the right nor on the left.
// Basically, that means one is above the other and one is bigger
// than the other.
// In that case, we can't easily choose a position for the arrow so
// we have to guess depending on which side the popup is more close to.
} else {
pack = (Math.abs(popupLeft - anchorLeft) < Math.abs(popupRight - anchorRight)) ? "start" : "end";
}
// In RTL, everything should be inverted.
if (window.getComputedStyle(this).direction == "rtl") {
pack = (pack == "start") ? "end" : "start";
}
arrowbox.pack = pack;
if (vertPos == 1) {
container.dir = "";
anchorClass = "top";
}
else if (vertPos == -1) {
container.dir = "reverse";
anchorClass = "bottom";
}
}
}
else if (vertPos == 0) {
container.orient = "";
arrowbox.orient = "vertical";
if (horizPos == 0) {
hideAnchor = true;
}
else {
arrowbox.pack = popupTop + popupRect.height / 2 < anchorTop ? "end" : "start";
if (horizPos == 1) {
container.dir = "";
anchorClass = "left";
}
else if (horizPos == -1) {
container.dir = "reverse";
anchorClass = "right";
}
}
}
else {
hideAnchor = true;
}
arrow.hidden = hideAnchor;
arrow.setAttribute("side", anchorClass);
this.setAttribute("side", anchorClass);
// set fading
var fade = this.getAttribute("fade");
var fadeDelay = (fade == "fast") ? 1 : fade == "slow" ? 4000 : 0;
if (fadeDelay) {
this._fadeTimer = setTimeout(function (self) {
self.style.opacity = 0.2;
}, fadeDelay, this);
}
]]>
clearTimeout(this._fadeTimer);
this.style.removeProperty("opacity");
this.setAttribute("panelopen", "true");
this.removeAttribute("panelopen");
return Components.interfaces.nsIAccessibleProvider.XULTooltip;
0
false
1)
this.hidePopup();
return;
}
// find out if the node we are entering is one of our anonymous children
while (rel) {
if (rel == this)
break;
rel = rel.parentNode;
}
// if the entered node is not a descendant of ours, hide the tooltip
if (rel != this && this._isMouseOver) {
this.hidePopup();
}
]]>