/*******************************************************************************
 *
 * MENU
 *
 * ****************************************************************************/

/* Questi sono i tags ammessi all'interno di un menu'
 */
var jsmenu_tags = new Array("ul", "h3");
var jsmenu_config = {
	div_name	: "menu",
	header_tag	: "h2"
}


/* funzione main per dynmenu */
function jsmenu_main(){
	if(document.getElementsByTagName && document.getElementById){
		jsmenu_build_list();
        jsmenu_restore_status();
	}
}

/*
 * Memorizza lo stato corrente del menu' utilizzando un cookie
 */ 
function jsmenu_store_status() {
    var hs = document.getElementById(jsmenu_config['div_name']).getElementsByTagName(jsmenu_config['header_tag']);
    var cookie = "";
    for (var i = 0; i < hs.length; i++){
        var li = hs[i].parentNode;
        for (var k = 0; k < jsmenu_tags.length; k++) {
            var tag = jsmenu_tags[k];
            var elements = li.getElementsByTagName(tag);
            for (var j = 0; j < elements.length; j++) {
                cookie += i + "," + j + ":" + elements[j].style.display + " ";
            }
        }
    }
    /* Il menu' dopo il login cambia. Uso due diversi cookies per
     * distinguere i due casi ed evitare malfunzionamenti.
     */
    cookie_name = "menu_status_" + hs.length;
    utils_set_cookie(cookie_name, cookie);

}

/*
 * Ripristina lo stato del menu' in base ai dati del cookie
 */
function jsmenu_restore_status() {
    var hs = document.getElementById(jsmenu_config['div_name']).getElementsByTagName(jsmenu_config['header_tag']);
    cookie_name = "menu_status_" + hs.length;
    var cookie = utils_get_cookie(cookie_name); 
    var menu_status = new Array();
    if (cookie) {
        var tmp = cookie.split(" ");
        for (var i = 0; i < tmp.length; i++) {
            var tmp2 = tmp[i].split(":");
            menu_status[tmp2[0]] = tmp2[1];
        }
    }
   	for (var i = 0; i < hs.length; i++) {
   		hs[i].style.cursor = "pointer";
   		var li = hs[i].parentNode;
   		for (var k = 0; k < jsmenu_tags.length; k++) {
   			var tag = jsmenu_tags[k];
   			var elements = li.getElementsByTagName(tag);
   			for (var j = 0; j < elements.length; j++) {
                if (cookie) {
                    elements[j].style.display = menu_status[i + "," + j];
                } else {
           			elements[j].style.display = "none";
                }
   			}
   		}
    }
}

function jsmenu_find_brother(elem) {
	var tmp = elem.nextSibling;
    if (!tmp) return false;
    while (tmp.nodeType!=1) {
        tmp = tmp.nextSibling;
        if (!tmp) return false;
    }
	return tmp;
}

function jsmenu_onclick(){
    var li = this.parentNode;
	var tmp = jsmenu_find_brother(this);
	while (tmp) {
		tmp.style.display = (tmp.style.display == "block") ? "none" : "block";
		var tmp = jsmenu_find_brother(tmp);
	}

    /* questo codice serve per avere un solo menu' aperto per volta */
	var hs = document.getElementById(jsmenu_config['div_name']).getElementsByTagName(jsmenu_config['header_tag']);
	for (var i=0; i < hs.length; i++){
        if (hs[i] != this) {
            var tmp = jsmenu_find_brother(hs[i]);
            while (tmp) {
        		tmp.style.display = "none";
        		var tmp = jsmenu_find_brother(tmp);
        	}
        }
	}
    /* ----- */
    jsmenu_store_status();
}


function jsmenu_build_list(){
	var hs = document.getElementById(jsmenu_config['div_name']).getElementsByTagName(jsmenu_config['header_tag']);
	for (var i=0; i < hs.length; i++){
		hs[i].onclick=jsmenu_onclick;
	}
}

