﻿//constants
var timeout = 500;
var max_levels = 3;

//other vars
var closetimer = 0;
var ddmenuitem = new Array(0, 0, 0)
var mlayer = 0;

//open layer
function mopen(id, layer) {
    mlayer = layer;

    //cancel close timer
    mcancelclosetime();

    // close old layer
    for (var i = max_levels - 1; i >= layer; i--)
        if (ddmenuitem[i]) ddmenuitem[i].style.visibility = 'hidden';

    // get new layer and show it
    ddmenuitem[layer] = document.getElementById(id);
    ddmenuitem[layer].style.visibility = 'visible';
}

// close everything beyond shown layer
function mclose() {
    for (var i = max_levels - 1; i > mlayer; i--)
        if (ddmenuitem[i]) ddmenuitem[i].style.visibility = 'hidden';
}

//explicitly set the top layer and close anything beyond it
function set_top_layer(layer) {
    mlayer = layer-1;
    mclose();
}

//close all layers
function mcloseall() {
    for (var i = 0; i < max_levels; i++)
        if (ddmenuitem[i]) ddmenuitem[i].style.visibility = 'hidden';
}

//set close timer
function mclosetime() {
    closetimer = window.setTimeout(mclose, timeout);
}

//cancel close timer
function mcancelclosetime() {
    if (closetimer) {
        window.clearTimeout(closetimer);
        closetimer = null;
    }
}

//close layer when click-out
document.onclick = mcloseall; 

