var menuBgColor = "#e6eaee";
var menuBgColorOver = "#ccd6e0";
var disableHide = false;
var lastLayer = ""; // keep the last open layer name

var layerList = new Object();
var layerIdx  = 0;

function UBS_getImagePosition(imgName)
{
        var coords = new Object();
        coords.x = UBS_getX(document.images[imgName]);
        coords.y = UBS_getY(document.images[imgName]);
        return coords;
}

function UBS_getX(obj)
{
        if (obj)
        {
                if (ns4) return obj.x;

                return( obj.offsetParent==null ? obj.offsetLeft : obj.offsetLeft+UBS_getX(obj.offsetParent) );
        }
}

function UBS_getY(obj)
{
        if (obj)
        {
                if (ns4) return obj.y;

                return( obj.offsetParent==null ? obj.offsetTop : obj.offsetTop+UBS_getY(obj.offsetParent) );
        }
}

function UBS_updateLayerPosition(layerName,imgName)
{
        if (lastLayer==layerName)
        {
                UBS_hideAll(layerName);
        }
        else
        {
                disableHide = false;
                UBS_hideAll();
        }
        
        if (ns4)
        {
                var coords = UBS_getImagePosition(imgName);
                var x = coords.x;
                var y = coords.y + 6;

                var obj = document.layers[layerName];
                obj.x = x;
                obj.y = y;
                obj.visibility = "show";
        }
        else
        {
                var obj = (ie4) ? document.all[layerName] : document.getElementById(layerName);
                obj.align      = "left"; // override td alignment
                // obj.style.left = x;
                // obj.style.top  = y;
                obj.style.visibility = "visible";
        }

        UBS_showLayer('coverlayer');

        if (w3c||ie4)
        {
                disableHide = true;
                setTimeout("UBS_enableHide()",1000);
        }

        lastLayer = layerName;
}

function UBS_setLayerVisiblity(layerName,status)
{
        if (ns4)
        {
                document.layers[layerName].visibility = (status=="hidden") ? "hide" : "show";
        }
        else
        {
                var obj = (ie4) ? document.all[layerName] : document.getElementById(layerName);
                obj.style.visibility = status;
        }
}

function UBS_hideLayer(layerName)
{
        if (disableHide) return;

        UBS_setLayerVisiblity(layerName,"hidden");
}

function UBS_showLayer(layerName)
{
        UBS_setLayerVisiblity(layerName,"visible");
}

function UBS_hideAll(layerToIgnore)
{
        for (var i in layerList)
        {
                var layerName=layerList[i].name;
                if (layerName!=layerToIgnore) UBS_hideLayer(layerName);
        }
}

function UBS_tableHTML(layerObj)
{
        var layerName = layerObj.name;
        var html = "";
        html += "<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" width=\"136\">";
        // ns4 bug: first row is not displayed
        if (ns4) html += "<tr><td><img src=\"/0.gif\"></td></tr>";

        for (var i in layerObj.links)
        {
                var text = layerObj.links[i].text;
                var link = layerObj.links[i].link;
                var bold = layerObj.links[i].bold ? "bold":"";

                if (link=="")
                {
                        html += "<tr bgcolor=\""+menuBgColor+"\">";
                        html += "<td><p class=\"metamenuitem\"><span class=\"menutext"+bold+"\">"+text+"</span></p></td>";
                        html += "</tr>";
                }
                else
                {
                        html += "<tr bgcolor=\""+menuBgColor+"\" onmouseover=\"this.bgColor='"+menuBgColorOver+"';\" onmouseout=\"this.bgColor='"+menuBgColor+"';\">";
                        html += "<td><p class=\"metamenuitem\"><a href=\""+link+"\" class=\"menutext"+bold+"\">"+text+"</a></p></td>";
                        html += "</tr>";
                }
        }
        html += "</table>";

        return html;
}

function UBS_layerHTML(layerObj)
{
        layerList[layerIdx++]=layerObj;

        var layerName = layerObj.name;
        var html = "";

        if (layerName=="coverlayer") return UBS_layerCover();

        if (ns4)
        {
                html = "<layer name=\""+layerName+"\" zIndex=\"15\" onmouseover=\"UBS_showLayer('"+layerName+"')\" onmouseout=\"UBS_hideLayer('"+layerName+"')\" visibility=\"hide\">"+UBS_tableHTML(layerObj)+"</layer>";
        }
        else
        {
                html = "<div id=\""+layerName+"\" onmouseover=\"UBS_showLayer('"+layerName+"')\" onmouseout=\"UBS_hideLayer('"+layerName+"')\">"+UBS_tableHTML(layerObj)+"</div>";
        }

        return html;
}

function UBS_layerCover()
{
        // special layer to hide layers (ie: bug when moving the mouse to fast)
        var html = "";

        if (ns4)
        {
                html = "<layer name=\"coverlayer\" left=\"0\" top=\"0\" onmouseover=\"UBS_hideAll()\" visibility=\"hide\"></layer>";
        }
        else
        {
                html = "<div id=\"coverlayer\" onmouseover=\"UBS_hideAll()\" onmousemove=\"UBS_hideAll()\"></div>";
        }

        return html;
}

function UBS_buildLinks(str)
{
        var pairsObj = str.split("|");
        var linksObj = new Object();
        for (var i in pairsObj)
        {
                var valuesObj = pairsObj[i].split(",");

                linksObj[i] = new Object();
                linksObj[i].text = valuesObj[0];
                linksObj[i].link = valuesObj[1];
                if (valuesObj[2]) linksObj[i].bold = valuesObj[2];
        }
        return linksObj;
}

function UBS_enableHide()
{
        disableHide = false;
}
