﻿// JScript File
var openMenu = null;
var onMenuID = "";

var menus = new Array();

function MenuMouseOver(evt)
{
    var src;
    if (!evt) src = event.srcElement;
    else src = evt.target;
    if (src.tagName == "A") src = src.parentNode;
    
    var mnu = src.parentNode.parentNode;
    var mnuin = document.getElementById(mnu.id + "_IN_");
    if ((mnuin != null) && (mnuin.childNodes.length > 0))
    {
        onMenuID = mnuin.id;
        ApriMenu(mnuin);
    }
}

function Menu2MouseOver(evt)
{
    var src;
    if (!evt) src = event.srcElement;
    else src = evt.target;
    while ((src != null) && (src.id.indexOf("_IN_") == -1))
        src = src.parentNode;
    onMenuID = src.id;
}

function MenuMouseOut(evt)
{
    onMenuID = "";
}


function ApriMenu(mnuin)
{
    if (mnuin == openMenu) return;
    
    if (openMenu != null)
        ChiudiMenu(openMenu);
    var mnu = mnuin.parentNode;
    var h = parseInt(mnuin.style.height);
    mnuin.style.top = "-" + h.toString() + "px";
    mnuin.style.visibility = "visible";
    var hh = 25 + h;
    mnu.style.height = hh.toString() + "px";
    var mnuOp = null;
    for(var i = 0; i < menus.length; i++)
        if (menus[i].menu == mnuin)
        {
            mnuOp = menus[i];
            break;
        }
    if (mnuOp == null)
    {
        mnuOp = new Object();
        mnuOp.menu = mnuin;
        mnuOp.position = -h;
        menus[menus.length] = mnuOp;
    }
    mnuOp.opening = true;
    mnuOp.posTo = 0;
    openMenu = mnuin;
}

function ChiudiMenu()
{
    if (openMenu != null)
    {
        var t = parseInt(openMenu.style.top);
        var h = parseInt(openMenu.style.height);
        var mnuOp = null;
        for(var i = 0; i < menus.length; i++)
            if (menus[i].menu == openMenu)
            {
                mnuOp = menus[i];
                break;
            }
        if (mnuOp == null)
        {
            mnuOp = new Object();
            mnuOp.menu = openMenu;
            mnuOp.position = t;
            menus[menus.length] = mnuOp;
        }
        mnuOp.opening = false;
        mnuOp.posTo = -h;
        openMenu = null;
    }
}

var checkCount = 0;
function CheckChiudiMenu()
{
    checkCount += 1;
    if (checkCount == 10)
    {
        checkCount = 0;
        // Controlla se il menu aperto attualmente deve chiudersi
        if ((openMenu != null) && (onMenuID != openMenu.id))
            ChiudiMenu();
    }
    
    // Fa lo slide dei menu attualmente in movimento
    for(var i = 0; i < menus.length; i++)
    {
        var mnuOp = menus[i];
        if (mnuOp.opening)
        {
            // menu che si apre
            var incr = Math.min(20, Math.abs(mnuOp.posTo - mnuOp.position));
            mnuOp.position += incr;
            var mnuin = mnuOp.menu;
            mnuin.style.top = mnuOp.position.toString() + "px";
//            var mnu = mnuin.parentNode;
//            mnu = mnu.nextSibling;
//            while (mnu != null)
//            {
//                var tt = parseInt(mnu.style.top) + incr;
//                mnu.style.top = tt.toString() + "px";
//                mnu = mnu.nextSibling;
//            }
            // Completamente aperto?
            if (mnuOp.position >= mnuOp.posTo)
            {
                for(var j = i+1; j < menus.length; j++)
                    menus[j-1] = menus[j];
                menus.length -= 1;
                i -= 1;
            }
        }
        else
        {
            // menu che si chiude
            var incr = Math.min(20, Math.abs(mnuOp.posTo - mnuOp.position));
            mnuOp.position -= incr;
            var mnuin = mnuOp.menu;
            mnuin.style.top = mnuOp.position.toString() + "px";
//            var mnu = mnuin.parentNode;
//            mnu = mnu.nextSibling;
//            while (mnu != null)
//            {
//                var tt = parseInt(mnu.style.top) - incr;
//                mnu.style.top = tt.toString() + "px";
//                mnu = mnu.nextSibling;
//            }
            // Completamente chiuso?
            if(mnuOp.position <= mnuOp.posTo)
            {
                mnuin.style.visibility = "hidden";
                mnuin.parentNode.style.height = "25px";
                for(var j = i+1; j < menus.length; j++)
                    menus[j-1] = menus[j];
                menus.length -= 1;
                i -= 1;
            }
        }
    }
    // Resetta il timer
    setTimeout("CheckChiudiMenu();", 10);
}

function PrepareMenu()
{
    var divOut = null, divIn = null;
    
    // cerca leftMenu e leftBar
    var leftBar = document.getElementById("leftBar");
    var leftMenu = document.getElementById("leftMenu");
    // scorre i children di leftMenu
    var i = 0, vtop = 25, mnu = 1, divInH = 0, zIdx = 100;
    var found = false;
    while(i < leftMenu.childNodes.length)
    {
        found = false;
        var ch = leftMenu.childNodes.item(i);
        if (ch.tagName == "P")
        {
            if (ch.className.indexOf("CE-VoceMenu13Livello1") != -1)
            {
                // trovata voce di 1° livello
                found = true;
                divOut = document.createElement("DIV");
                divOut.className = "divOut";
                divOut.id = "MNU" + mnu.toString();
                divOut.style.zIndex = zIdx;
                zIdx -= 1;
                leftBar.appendChild(divOut);
                var divP = document.createElement("DIV");
                divP.className = "divP";
                divOut.appendChild(divP);
                divP.appendChild(ch);
                ch.onmouseover = MenuMouseOver;
                ch.onmouseout = MenuMouseOut;
                divIn = document.createElement("DIV");
                divInH = 0;
                divOut.appendChild(divIn);
                divIn.className = "divIn";
                divIn.id = "MNU" + mnu.toString() + "_IN_";
                divIn.style.visibility = "hidden";
                divIn.onmouseover = Menu2MouseOver;
                divIn.onmouseout = MenuMouseOut;
                divOut.style.top = vtop.toString() + "px";
                vtop += 30;
                mnu += 1;
            }
            else if (ch.className.indexOf("CE-VoceMenu13Livello") != -1)
            {
                // voci di livelli inferiori
                found = true
                divInH += 14;
                divIn.style.height = divInH.toString() + "px";
                divIn.appendChild(ch);
            }
        }
        if (!found) i++;
    }
    // Rimuove leftMenu svuotato
    leftMenu.style.visibility = "hidden";
}

function StartTimer()
{
    setTimeout("CheckChiudiMenu();", 10);
}

function PageStartup()
{
    PrepareMenu();
    StartTimer();
}


