var idOrigin = 'menuVertical';
var currentLevel = null;
var currentElement = null;

function countInstances(string, word) {
  var substrings = string.split(word);
  return substrings.length - 1;
}

function razMenu() {
	var elOrigin = document.getElementById(idOrigin);
	all_li = elOrigin.getElementsByTagName("li");
	//alert(all_li.length);
	for (i=0;i<all_li.length;i++) {
		all_li_ul = all_li[i].getElementsByTagName('ul')[0];
		all_li[i].className = '';
		if (all_li_ul) {
			//alert(all_li_ul.id + ' / ' + all_li_ul.className);
			//si y a des fils 'li', il faut egalement enlever la classe
			for (var j=0; j<all_li_ul.childNodes.length; j++) {
				if (all_li_ul.childNodes[j].nodeName.toLowerCase() == 'li') {
					var all_li_ul_li = all_li_ul.childNodes[j];
					if (all_li_ul_li.className != '') all_li_ul_li.className = '';
				}
			}
			all_li_ul.style.display = 'none';
		}
	}
}

function m_show() {
	var elOrigin = document.getElementById(idOrigin);
	var elem = currentElement.parentNode;
	// on recupere le 'li' parent de l'element, il sera notre element de travail
	while (elem.nodeName.toLowerCase() != 'li') { elem = elem.parentNode; }
	//alert(elem.nodeName.toLowerCase() + ' -> ' + elem.id);
	// on compte le nb de '_' pour determiner le niveau
	currentLevel = countInstances(elem.id,'_');
	//alert(currentLevel);
	// on recupere la classe et les tags à traiter
	witchClass = 'NVniv' + currentLevel + 'Selected';
	// on stocke l'etat de l'element
	elemEtat = (elem.className == witchClass) ? 'opened' : 'closed';
	//alert(elem.id + ' -> ' + elemEtat);
	razMenu();
	// on reouvre les menus parents
	if (currentLevel > 1) {
		var elemParent = elem.parentNode;
		parentLevel = currentLevel;
		//alert(elemParent.nodeName.toLowerCase());
		while (elemParent.id != idOrigin) {
			//alert(elemParent.nodeName.toLowerCase() + ' -> ' + elemParent.id);
			if (elemParent.nodeName.toLowerCase() == 'li') {
				parentLevel = parentLevel - 1;
				witchClassParent = 'NVniv' + parentLevel + 'Selected';
				//alert('elemParent.id : ' + elemParent.id + ' / witchClassParent : ' + witchClassParent);
				elemParent.className = witchClassParent;
				elemParent_ul = elemParent.getElementsByTagName('ul')[0];
				elemParent_ul.style.display = 'block';
			}
			elemParent = elemParent.parentNode;
		}
	}
	
	if (elemEtat == 'closed') {
		elem.className = witchClass;
		// on affiche ses sous menu
		subelem = elem.getElementsByTagName('ul')[0];
		subelem.style.display = 'block';
	}
	elem.getElementsByTagName('a')[0].blur();
}

function m_startC(node) {
	currentElement = node;
	var clockLien = setTimeout('m_show();',1);	
}
