The menu position is determined by YUI, via the following function:
Code:
this.toggle_menu = function(menuid, uniqueid)
{
var divObj = YAHOO.util.Dom.get('menu' + menuid + '_' + this.instanceid);
var aObj = YAHOO.util.Dom.get('click' + uniqueid + '_' + this.instanceid);
if (!divObj)
{
// Just to prevent errors
return false;
}
if (divObj.style.display == 'none' && menuid != this.menuid)
{
if (this.menuid)
{
// Turn off the previous menu
this.toggle_menu(this.menuid);
}
// Set the new menu id
this.menuid = menuid;
// Hack the menu to show
divObj.style.display = 'inline';
divObj.style.position = 'absolute';
divObj.style.top = (YAHOO.util.Dom.getY(aObj) + parseInt(aObj.offsetHeight)) + 'px';
divObj.style.left = YAHOO.util.Dom.getX(aObj) + 'px';
right = (parseInt(divObj.style.left) + divObj.offsetWidth);
if (right >= YAHOO.util.Dom.getViewportWidth())
{
divObj.style.left = (YAHOO.util.Dom.getViewportWidth() - divObj.offsetWidth) + 'px';
}
}
else
{
// Hide the open menu
divObj.style.display = 'none';
this.menuid = 0;
}
return false;
}
"aObj" is the link a member clicks on. Your custom skin is somehow breaking the YAHOO.util.Dom.getY(), YAHOO.util.Dom.getX() and offsetHeight variables. YUI cannot correctly detect the absolute position of the link object (that opens the menu), whereas it can in skins that are closely based on the default skin.
If you happen to find the solution for this problem, please do post it as a number of other custom skins also suffer from this problem (mostly Skinbox skins).
Fillip