/**
 * Gestione di apertura e chiusura del menu
*/

function initMenu() {

    // Stati delle frecce
    var arrowNames = {
        open:  "resources/images/menuFrecciaGiu.png",
        close: "resources/images/menuFrecciaDx.png"
    }

    // Collezione degli elementi
    var collection = {};

    // Cambia lo stato della freccia
    var refreshArrow = function(id) {
        var arrow = collection[id].arrow;
        var state = collection[id].state;
        arrow.src = arrowNames[state];
    }

    // Cambia la visibilità degli elementi
    function refreshVisibility(id) {
        var state = collection[id].state;

        // Cambia la visibilità a seconda dello stato
        collection[id].list.forEach(function(item, index){
            if (state == "open") {
                item.removeClass("hide");
            } else {
                item.addClass("hide");
            }
        });
    }

    // Cambia lo stato di un elemento
    function chState(id, state) {
        switch(state) {
            case "open": state = "close"; break;
            case "close": state = "open"; break;
            default:
                if (collection[id].state == "close") state = "open";
                else if (collection[id].state == "open") state = "close";
                break;
        }
        collection[id].state = state;
        refreshArrow(id);
        refreshVisibility(id);
    }

    // Colleziono i menu apribili e gli elementi necessari
    $$("a.openclose").forEach(function(item, index){

        // Prendo il nome dell'elemento
        var id = item.id;
        var label = "son_" + id;

        // Prendo gli elementi correlati
        collection[id] = {};
        collection[id].el    = item
        collection[id].list  = $$("tr." + label);
        collection[id].arrow = item.getParent().getPrevious().getFirst();
        collection[id].state = "close";

        // Resetto la chiusura per IE
        //collection[id].el.getParent().setProperty("colspan", 1);

        // Resetto la freccia
        collection[id].arrow.addClass("arrow");
        refreshArrow(id);

        // Se sono nella pagina figlia della principale apro il menu
        if (hierarchy.indexOf(id) !== -1) { chState(id); }

        // Evento al click della freccia
        collection[id].arrow.addEvent("click", function() {
            chState(id);
        });
    });
    $('mainTable').setStyle('min-height', 500);
}

window.addEvent('domready', initMenu);

