
var menu = function () {
return {

container : {},
hidden : {},
init : function () {
    menu.container = $('#menu');
    $('#menu .dir').each(
        function () {
            var me = $(this);
            me.click(menu.toggle);
            var id = me.attr('id').replace(/^handle_/,'');
            var subdir = $('#subdir_'+id);
            var icon = $('#icon_'+id);
            var iconpath = icon.attr('src').replace(/\/[^\/]+$/,'');
            if (menu.hidden[id] == true){ // Supposed to be collapsed. Clicky-time!
                subdir.hide();
                icon.attr('src',iconpath+'/folder_closed.gif');
            }
            else if (menu.hidden[id] == false){ // Hidden is false, so it's visible.  Don't collapse it.
                subdir.show();
                icon.attr('src',iconpath+'/folder_open.gif');
            }
            else { // Undefined, default is hidden, so click it.
                me.click();
            }
        }
    );
    /* Disabled for debugging purposes
    $('#menu .menuitem').each(
        function () {
            $(this).click(menu.openitem);
        }
    );
    */
    return true;
},
toggle : function () {
    var me = $(this);
    var id = me.attr('id').replace(/^handle_/,'');
    var subdir = $('#subdir_'+id);
    var icon = $('#icon_'+id);
    var iconpath = icon.attr('src').replace(/\/[^\/]+$/,'');
    if (menu.hidden[id]){
        subdir.show();
        icon.attr('src',iconpath+'/folder_open.gif');
        menu.hidden[id] = false;
    }
    else {
        menu.hidden[id] = true;
        icon.attr('src',iconpath+'/folder_closed.gif');
        subdir.hide();
    }
},
openitem : function (e) {
    var me = $(this);
    var href = me.attr('href');
    var main = $('#main');
    if (main.length == 1 && typeof(tulpa2) == 'object' && typeof(tulpa2.exchange) == 'function'){
        e.preventDefault();
        tulpa2.exchange({
            data : {
                call    : 'populateMain',
                href    : href
            }
        });
        me.addClass('visited');
        return false;
    }
    else {
        return true;
    }
},
refresh : function () {
   tulpa2.exchange({
        data : {
            call    : 'refreshMenu',
        },
        success : function (menuHTML){
            menu.container.empty().html(menuHTML);
            menu.init();
        },
    });
   return true;
}

}}();

$(menu.init);

