function DMenu(menuId)
{
	this.actMenu = null;
	this.timeoutRef = null;
	this.mm = document.getElementById(menuId);
	var self = this;

	this.initRec = function(ul)
	{
		var i;
		for (i = 0; i < ul.childNodes.length; i++) {
			if (ul.childNodes[i].childNodes[1] != undefined && ul.childNodes[i].childNodes[1].tagName == "UL") {
				ul.childNodes[i].onmouseover = function() {
					self.mover(this);
				}
				ul.childNodes[i].onmouseout = function() {
					self.mout(this);
				}
				this.initRec(ul.childNodes[i].childNodes[1]);
			}
		}
	}

	this.setStyle = function (ul, lvl)
	{
		var i, maxWidth = 0;
		if (lvl >= 2) {
			if (ul.parentNode.parentNode.offsetWidth)
				ul.style.left = ul.parentNode.parentNode.offsetWidth + 0 + "px";
		}
		maxWidth = ul.offsetWidth;
		for (i = 0; i < ul.childNodes.length; i++) {
			if (lvl >= 1) {
				ul.childNodes[i].childNodes[0].childNodes[0].style.width =  maxWidth + "px";
			}
			if (ul.childNodes[i].childNodes[1] != undefined && ul.childNodes[i].childNodes[1].tagName == "UL") {
				this.setStyle(ul.childNodes[i].childNodes[1], lvl + 1);
			}
		}
	}

	this.mover = function(li)
	{
		li.className = li.className + " sel"
	}

	this.mout = function(li)
	{
		this.timeoutRef = window.setTimeout(function() {self.mclose(li);}, 100);
	}

	this.mclose = function(li)
	{
		li.className = li.className.replace(/\s?sel/, "");
		this.timeoutRef = null;
	}

	this.lvl1Click = function(mItem)
	{
		if (this.actMenu && this.actMenu != mItem.parentNode) {
			this.actMenu.className = "";
		}
		mItem.parentNode.className = "sel";
		this.actMenu = mItem.parentNode;
		return false;
	}

	this.setStyle(this.mm, 0);

	var i, subm;
	for (i = 0; i < this.mm.childNodes.length; i++) {
		subm = this.mm.childNodes[i];
		if (subm.className.search(/sel/) != -1) {
			this.actMenu = subm;
		}
		if (subm.childNodes[1] != undefined) {
			subm.childNodes[0].onclick = function() {
				return self.lvl1Click(this);
			}
			this.initRec(subm.childNodes[1]);
		}
	}

}


