var is = new Object();
is.ie = (document.all) ? 1:0;
is.ns4 = (document.layers) ? 1:0;
is.w3c = (document.getElementById && !is.ie) ? 1:0;
is.win = (navigator.userAgent.toLowerCase().indexOf("win") > 0) ? 1:0;
is.mac = (navigator.userAgent.toLowerCase().indexOf("mac") > 0) ? 1:0;

var ns = (document.layers)? true:false;
var curX = 0;
var curY = 0;
var dropName = 'nothing';
var inTmp = false;

function showLayerOld (strName)
{
    if (dropName!='nothing' && dropName!=strName) hideLayer(dropName);
    toppmeny_show(strName);
    dropName = strName;
}
function showMenu (strName, ofsW)
{
    inTmp = (dropName==strName);
    if (inTmp) return;
    if (dropName!='nothing' && dropName!=strName) hideLayer(dropName);
    var ofsX = toppmeny_getPageX('position_layer');
    if (ofsX && ofsW) {
        toppmeny_moveTo(strName, ofsX+ofsW, null);
    }
    toppmeny_show(strName);
    dropName = strName;
}
function hideLayer (strName)
{
    toppmeny_hide(strName);
    dropName = 'nothing';
}

// New functions to handle NS6 //
function toppmeny_getObj (strLayer, objLayerOwner)
{
    if (typeof(document.getElementById)!='undefined' && document.getElementById) return document.getElementById(strLayer);
    if (is.ie) return document.all[strLayer];
    else if (is.ns4) {
        if (!objLayerOwner) objLayerOwner = document.layers;
        var i = 0;
        var layer = objLayerOwner[strLayer];
        while (!layer && (i < objLayerOwner.length))
            layer = toppmeny_getObj(strLayer, objLayerOwner[i++].document.layers);
        return layer;
    }
    else if (is.w3c) return document.getElementById(strLayer);
}
function toppmeny_show (strLayer)
{
    var objLayer = toppmeny_getObj(strLayer);
    if (objLayer) {
        if (is.ie||is.w3c) objLayer.style.visibility = "visible";
        else if (is.ns4) objLayer.visibility = "show";
    }
}
function toppmeny_hide (strLayer)
{
    var objLayer = toppmeny_getObj(strLayer);
    if (objLayer) {
        if (is.ie||is.w3c) objLayer.style.visibility = "hidden";
        else if (is.ns4) objLayer.visibility = "hide";
    }
}
function toppmeny_moveTo (strLayer, x, y)
{
    var objLayer = toppmeny_getObj(strLayer);
    if (objLayer) {
        if (is.ie) {
            if (x || x==0) objLayer.style.pixelLeft = x;
            if (y || y==0) objLayer.style.pixelTop = y;
        } else if (is.ns4) {
            if (x || x==0) objLayer.left = x;
            if (y || y==0) objLayer.top = y;
        } else if (is.w3c) {
            if (x || x==0) objLayer.style.left = x + "px";
            if (y || y==0) objLayer.style.top = y + "px";
        }
    }
}
function toppmeny_setX (strLayer, intX)
{
    var objLayer = toppmeny_getObj(strLayer);
    if (objLayer && typeof(objLayer.style)=='object') {
        if (is.ie||is.w3c) return objLayer.style.left = intX+'px';
        else if (is.ns4) return objLayer.left = intX+'px';
    }
}
function toppmeny_getX (strLayer)
{
    var objLayer = toppmeny_getObj(strLayer);
    if (objLayer) {
        if (is.ie||is.w3c) return objLayer.offsetLeft;
        else if (is.ns4) return objLayer.left;
    }
}
function toppmeny_getY (strLayer)
{
    var objLayer = toppmeny_getObj(strLayer);
    if (objLayer) {
        if (is.ie||is.w3c) return objLayer.offsetTop;
        else if (is.ns4) return objLayer.top;
    }
}
function toppmeny_getW (strLayer)
{
    var objLayer = toppmeny_getObj(strLayer);
    if (objLayer) {
        if (is.ie) return objLayer.clientWidth;
        else if (is.ns4) return objLayer.clip.width;
        else if (is.w3c) {
            var style = getComputedStyle(objLayer,null);
            return parseInt(style.getPropertyValue('width'));
        }
    }
}
function toppmeny_getH (strLayer)
{
    var h;
    var objLayer = toppmeny_getObj(strLayer);
    if (objLayer) {
        if (is.ie) h = objLayer.clientHeight;
        else if (is.ns4) h = objLayer.clip.height;
        else if (is.w3c) {
            var style = getComputedStyle(objLayer,null);
            return parseInt(style.getPropertyValue('height'));
        }
    }
    return h;
}
function toppmeny_getPageX (strLayer)
{
    if (!(e=toppmeny_getObj(strLayer))) return 0;
    var x = 0;
    while (e) {
        if (typeof(e.offsetLeft)!='undefined') x += e.offsetLeft;
        e = typeof(e.offsetParent)!='undefined' ? e.offsetParent : null;
    }
    return x;
}

function init ()
{
    if (is.ns4||is.w3c) document.captureEvents(Event.MOUSEDOWN);
    document.onmousedown = toppmeny_mouseDown;
}

function toppmeny_mouseDown (evt)
{
    if (is.ns4||is.w3c) {
        curX = evt.pageX;
        curY = evt.pageY;
    } else {
        curX = event.x + document.body.scrollLeft;
        curY = event.y + document.body.scrollTop;
    }
    if (!inTmp && dropName!='nothing') closeDropLayer(dropName);
    inTmp = false;
}

function closeDropLayer (strLayer)
{
    var top = toppmeny_getY(strLayer);
    var left = toppmeny_getX(strLayer);
    var right = left + toppmeny_getW(strLayer);
    var bottom  = top + toppmeny_getH(strLayer);
    if ((curY<top||curY>bottom)||(curX<left||curX>right)) hideLayer(strLayer);
}

init();

