numberOfSubmenus = 3;   // security to close open submenus wich should not be open
mouseOutDelay = 500    // ms
blindSpeed = 0.2        // sec

isOpen = 0;
effectPending = 0;
blindSpeedRetry = blindSpeed * 1000 + 150;

function submenuParallel(IDopen, IDclose) {
    var submenuOpen = document.getElementById('submenu_' + IDopen); 
    var submenuClose = document.getElementById('submenu_' + IDclose); 
    effectPending = 1;

    new Effect.Parallel([
      new Effect.BlindUp(submenuClose, { sync: true }), 
      new Effect.BlindDown(submenuOpen, { sync: true }) 
    ], { 
      duration: blindSpeed,
      delay: 0,
      afterFinish: function() { effectPending = 0 }
    });
    return false;
}
function submenuBlind(ID, typ) {
    var submenu = document.getElementById('submenu_' + ID); 
    if(effectPending == 0) {
        effectPending = 1;
        if(typ == 'BlindUp') {
            new Effect.BlindUp(submenu, { duration: blindSpeed, afterFinish: function() { effectPending = 0 } });
        } else {
            new Effect.BlindDown(submenu, { duration: blindSpeed, afterFinish: function() { effectPending = 0 } });
        }
        return false;
    } else {
        IDG = ID;
        typG = typ; 
        delayMenu = window.setTimeout("submenuBlind('"+IDG+"', '"+typG+"');", blindSpeedRetry);
    } 
}
function closeSubmenus(nowOpen) {
    numberOfSubmenus_cn = numberOfSubmenus + 1;
    for(i = 1; i < numberOfSubmenus_cn; i++) {
        if(i != nowOpen) {
            if(document.getElementById('submenu_' + i)) {
                document.getElementById('submenu_' + i).style.display = 'none';
            }
        }
    }
    if(effectPending == 1) {
        IDG = nowOpen;
        closeSubs = window.setTimeout("closeSubmenus("+IDG+");", 90);
    }
}
function submenuIn(ID) {
    if(window.DelayOut) { window.clearTimeout(DelayOut); }
    if(document.getElementById('submenu_' + ID)) {
        submenu  = document.getElementById('submenu_' + ID);
        if(effectPending != 1) {
            if(isOpen == 0) {
                submenuBlind(ID, 'BlindDown');
                isOpen = ID;
            }
            else {
                if(isOpen != ID) {
                    closeSubmenus(isOpen);
                    submenuParallel(ID, isOpen);
                    isOpen = ID;
                }
                else {
                    submenu.style.display = 'block';
                    isOpen = ID;
                }
            }
        } else {
            setTimeout("closeSubmenus(0);", 30);
            isOpen = 0;
            //IDG = ID;
            //setTimeout("submenuIn("+IDG+");", blindSpeedRetry);
            //return false;
        }
    } else {
        if(isOpen != 0) {
            submenuBlind(isOpen, 'BlindUp');
            isOpen = 0;
        }
    }
}
function submenuOut(ID) {
    if(document.getElementById('submenu_' + ID)) {
        IDG = ID;
        DelayOut = window.setTimeout("submenuOutDelay("+IDG+")", mouseOutDelay);
    }
}
function submenuOutDelay(ID) {
    submenu = document.getElementById('submenu_' + ID);
    submenuBlind(ID, 'BlindUp');
    setTimeout("closeSubmenus(0);", blindSpeedRetry);
    document.getElementById('main_menu_1').className = 'menu_left';
    document.getElementById('main_menu_2').className = 'menu_mid';
    document.getElementById('main_menu_3').className = 'menu_right';
    isOpen = 0;
}
function submenuStart(ID) {
    submenu = document.getElementById('submenu_' + ID);
    submenu.style.display = 'none';
}

function switchHighlight(ID, prev) {
    document.getElementById('main_menu_1').className = 'menu_left';
    document.getElementById('main_menu_2').className = 'menu_mid';
    document.getElementById('main_menu_3').className = 'menu_right';
    ID.className = prev + ' ' + prev + '_active';
}
