// JavaScript written by Milen Hristov <max4o@g00net.org>
// Menu version 1.0

var mxOpened = new Object();
var mxHide   = new Object();

function mxTopOver( obj, mid ) {
    var pos, psize, size, submenu;
    submenu = document.getElementById('submenu' + mid );
    if ( ! submenu ) {
        return
    }
    mxClear();
    mxOpened[mid] = 'open';
    mxHideAll();
    pos  = mxFindPos( obj.parentNode );
    psize = mxFindSize( obj.parentNode.parentNode.parentNode );
    size = mxFindSize( obj.parentNode );
    mxShow( submenu, pos[0] + size[0] + 2, pos[1] );
    mxFillHide();
}
function mxOver() {
    var t, obj, pos, size, submenu, i ;
    obj = arguments[0];
    mxClear();
    for ( i = 1 ; i < arguments.length ; i++ ) {
        submenu = document.getElementById('submenu' + arguments[i]);
        if ( submenu ) {
            mxOpened[arguments[i]] = 'open';
            if ( submenu.style.visibility != 'visible' ) {
                pos  = mxFindPos( document.getElementById('sublink' + arguments[i]) );
                size = mxFindSize( obj );
                mxShow(submenu, pos[0] + size[0] - 3, pos[1] );
            }
        }
        obj = submenu;
    }
    mxHideAll();
    mxFillHide();

}
function mxShow( submenu, left, top ) {
    submenu.style.left = left + 'px';
    submenu.style.top  = top + 'px';;
    submenu.style.visibility = 'visible';
}
function mxClear() {
    mxOpened = new Object();
}
function mxOut() {
    mxClear();
    window.setTimeout("mxHideAll()",1000);
}
function mxHideAll() {
    var t, obj;
    for ( t in mxHide ) {
        if ( mxOpened[t] == 'open' ) {
            continue;
        }
        obj = document.getElementById('submenu' + t);
        if ( obj ) {
            obj.style.visibility = 'hidden';
        }
    }
}
function mxFillHide() {
    var t;
    for ( t in mxOpened ) {
        mxHide[t] = 'close';
    }
}
function mxFindPos( obj ) {
    var p, x, y;
    x = obj.offsetLeft;
    y = obj.offsetTop;
    p = obj;
    while ( p.offsetParent ) {
        p = p.offsetParent;
        x += p.offsetLeft;
        y += p.offsetTop;
    }
    return new Array( x, y );
}
function mxFindSize( obj ) {
    return new Array( obj.offsetWidth, obj.offsetHeight );
}
