

// timeout per la chiusura del menų
var MENU_TIMEOUT = 100;

// directory delle immagini
var menuImgDir;

// stile dei menų
var menuWidth;
var menuTxtColor = "";
var menuTxtBg = "";
var menuTxtSize = 12;
var menuTxtBorder = "";
var submenuWidth = 160;
var submenuBg = "";
var submenuBorder = "solid #777777 1px";
var submenuSize = 12;
var submenuFlagItemImg = false;
var submenuItemBg = "#F4E9D3";
var submenuItemFg = "#484B38";
var submenuItemBorder = "solid #444444 2px";
var submenuFlagItemOverImg = true;
var submenuItemOverBg = "barra.jpg";
var submenuItemOverFg = "black";
var menuImgCode = "Over";

// riferimenti ai sottomenų (per il timeout, solo i.e.)
var menuArray = new Array();

/**
 * rollover delle immagini del menų
 */
function menuRollover() {
    if (this.src.search(/disabled/i) == -1) {
        this.src = (this.src.search(menuImgCode) == -1)
            ? this.src.replace(".jpg", menuImgCode + ".jpg")
            : this.src.replace(menuImgCode, '');
    }
}

/**
 * visualizzazione dei sottomenų
 */
function menuShow() {
    var menuRef = this.standby.split("|");
    var subMenu = document.getElementById("m" + menuRef[0] + "s" + menuRef[1]);
    if (subMenu) {
        subMenu.style.visibility = 'visible';
        if(menuArray[menuRef[0]])
            if(menuArray[menuRef[0]][menuRef[1]])
                clearTimeout(menuArray[menuRef[0]][menuRef[1]]);
    }
}

/**
 * nasconde i sottomenų
 */
function menuHide() {
    var menuRef = this.standby.split("|");
    var subMenu = document.getElementById("m" + menuRef[0] + "s" + menuRef[1]);
    if (subMenu) {
        var cmd = "document.getElementById('m" + menuRef[0] + "s" + menuRef[1] + "').style.visibility = 'hidden'";
        if (!menuArray[menuRef[0]])
            menuArray[menuRef[0]] = new Array();
        menuArray[menuRef[0]][menuRef[1]] = setTimeout(cmd, MENU_TIMEOUT);
    }
}

/**
 * stile onMouseOver dei sottomenų
 */
function menuOver() {
    if (submenuFlagItemOverImg) {
        this.style.background = "url('" + menuImgDir + submenuItemOverBg + "')";
        this.style.backgroundRepeat = "repeat-x";
        this.style.backgroundPosition = "center center";
    }
    else
        this.style.background = submenuItemOverBg;
    this.style.color = submenuItemOverFg;
}

/**
 * ripristino stile normale dei sottomenų
 */
function menuOut() {
    if (submenuFlagItemImg) {
        this.style.background = "url('" + menuImgDir + submenuItemBg + "')";
        this.style.backgroundRepeat = "repeat-x";
        this.style.backgroundPosition = "center center";
    }
    else
        this.style.background = submenuItemBg;
    this.style.color = submenuItemFg;
}

/**
 * creazione immagini del menų
 */
function menuCreateImg(src, link, top, left, menu, sub) {

    // creazione immagine
    var img = document.createElement("img");
    img.src = menuImgDir + src;
    if (navigator.appVersion.search(/msie 5.0/i) == -1)
        img.style.cursor = "pointer";
    img.style.border = "none";
    img.onmouseover = img.onmouseout = menuRollover;

    // creazione div
    var div = document.createElement("div");
    div.standby = menu + "|" + sub;
    div.style.width = menuWidth + "px";
    div.style.textAlign = "center";
    div.style.position = "absolute";
    div.style.top = top + "px";
    div.style.left = left + "px";
    div.style.zIndex = "1";
    div.onmouseover = menuShow;
    div.onmouseout = menuHide;
    
    // creazione link (ancora)
    if (link != "") {
        var a = document.createElement("a");
        a.href = link;
        a.appendChild(img);
        div.appendChild(a);
    }
    else
        div.appendChild(img);

    return div;

}

/**
 * creazione testi del menų
 */
function menuCreateText(text, link, top, left, menu, sub) {
    var div = document.createElement("div");
    if (navigator.appVersion.search(/msie 5.0/i) == -1)
        div.style.cursor = "pointer";
    div.style.zIndex = "1";
    div.style.position = "absolute";
    div.style.top = top + "px";
    div.style.left = left + "px";
    div.style.width = menuWidth + "px";
    div.style.textAlign = "center";
    div.style.fontWeight = "bold";
    div.style.fontSize = menuTxtSize + "px";
    div.style.color = menuTxtColor;
    div.style.background = menuTxtBg;
    div.style.border = menuTxtBorder;
    div.standby = menu + "|" + sub;
    div.innerHTML = text;
    div.onmouseover = menuShow;
    div.onmouseout = menuHide;
    if (link != "") {
        // creazione link (ancora)
        var a = document.createElement("a");
        a.href = link;
        a.appendChild(div);
        return a;
    }
    else
        return div;
}

/**
 * creazione sottomenų
 */
function menuCreateSub(items, top, left, menu, sub) {
    if (items.length > 0) {
        var table = document.createElement("table");
        table.id = "m" + menu + "s" + sub;
        table.standby = menu + "|" + sub;
        table.style.position = "absolute";
        table.style.top = top + "px";
        table.style.left = left + 1 + "px";
        table.style.visibility = "hidden";
        table.style.background = submenuBg;
        table.style.border = submenuBorder;
        table.style.width = submenuWidth + "px";
        table.onmouseover = menuShow;
        table.onmouseout = menuHide;
        
        var tbody = document.createElement("tbody");
        
        for (var i = 0; i < items.length; i = i + 2) {
            var tr = document.createElement("tr");

            var td = document.createElement("td");
            if (submenuFlagItemImg) {
                td.style.background = "url('" + menuImgDir + submenuItemBg + "')";
                td.style.backgroundRepeat = "repeat-x";
                td.style.backgroundPosition = "center center";
            }
            else
                td.style.background = submenuItemBg;
            td.style.border = submenuItemBorder;
            td.style.whiteSpace = "nowrap";
            
            var div = document.createElement("div");
            div.innerHTML = items[i];
            div.style.fontWeight = "bold";
            div.style.fontSize = submenuSize + "px";
            div.style.color = submenuItemFg;
            div.style.height = (submenuSize + 4) + "px";
            if (navigator.appVersion.search(/msie 5.0/i) == -1)
                div.style.cursor = "pointer";
            div.onmouseover = menuOver;
            div.onmouseout = menuOut;
            
            var a = document.createElement("a");
            if (items[i + 1] != "")
                a.href = items[i + 1];
            a.appendChild(div);
            td.appendChild(a);

            tr.appendChild(td);
            tbody.appendChild(tr);
        }

        table.appendChild(tbody);
        return table;

    }
    
}

/**
 * creazione di un menų
 * @param int   menu  indice del menų
 * @param array dim   dimensioni
 * @param array items immagini, testi e voci
 */
function createMenu(menu, dim, items) {

    // posizione del menu
    var menuX = dim[0];
    var menuY = dim[1];
    // orientamento del menų (0=orizz.,1=vert.)
    var menuType = dim[2];
    // altezza dei testi
    var menuTxtH = dim[3];
    // larghezza dei menų
    menuWidth = dim[4];
    // distanza tra i menų
    var menuDist = dim[5];
    // altezza dei submenu
    var menuSubH = menuTxtH + menuTxtSize + 2;

    // menų
    var menuDiv = document.createElement("div");
    menuDiv.style.zIndex = "100";

    // orientamento verticale
    if (menuType) {
        for (var i = 0; i < items[0].length; i++)
            menuDiv.appendChild(menuCreateImg(items[0][i], items[2][i],i * menuDist, 0, menu, i));
        for (var i = 0; i < items[1].length; i++)
            menuDiv.appendChild(menuCreateText(items[1][i], items[2][i], menuTxtH + i * menuDist, 0, menu, i));
        for (var i = 0; i < items[3].length; i++)
            menuDiv.appendChild(menuCreateSub(items[3][i], i * menuDist, menuWidth + 2, menu, i));
    }
    // orientamento orizzontale
    else {
        for (var i = 0; i < items[0].length; i++)
            menuDiv.appendChild(menuCreateImg(items[0][i], items[2][i], 0, i * menuDist, menu, i));
        for (var i = 0; i < items[1].length; i++)
            menuDiv.appendChild(menuCreateText(items[1][i], items[2][i], menuTxtH, i * menuDist, menu, i));
        for (var i = 0; i < items[3].length; i++)
            menuDiv.appendChild(menuCreateSub(items[3][i], menuSubH, i * menuDist, menu, i));
    }
    
    menuDiv.id = "menu" + menu;
    menuDiv.style.position = "absolute";
    menuDiv.style.top = menuX + "px";
    menuDiv.style.left = menuY + "px";
    return menuDiv;

}

/**
 * posizionamento di un menų
 * @param int menu indice del menų
 * @param int top  posizione verticale
 * @param int left posizione orizzontale
 */
function moveMenu(menu, top, left) {
    var menu = document.getElementById("menu" + menu);
    menu.style.top = top + "px";
    menu.style.left = left + "px";
}

