function SDMenu(id)
{ // id = my_menu
	if (!document.getElementById || !document.getElementsByTagName)
		return false;
	this.menu = document.getElementById(id);
	this.submenus = this.menu.childNodes;
	this.speed = 5;
//	this.expandMenu(this.submenus[0]);

//	this.dotask(window, function(){this.saveStateInCookie()}, "unload")

/*
	document.body.Attributes("onload") = function()
	{
console.log("test");
		alert("Thank You, Surf by again.");
	}
*/
}

SDMenu.prototype.init = function()
{
	var mainInstance = this;
	for (var i=0; i<this.submenus.length; i++)
	{
		this.submenus[i].getElementsByTagName("span")[0].onclick = function()
		{
			mainInstance.toggleMenu(this.parentNode); // parentNode = div.sdmenu div
		};

		// ==================================
		// ADDED FOR SECOND LEVEL MENUS

		var subsubmenus = this.submenus[i].childNodes;
		for(var j=0; j<subsubmenus.length; j++)
		{
			if(subsubmenus[j].tagName == "DIV")
			{
				subsubmenus[j].getElementsByTagName("span")[0].onclick = function()
				{
					mainInstance.toggleMenu(this.parentNode); // parentNode = ?
				};

//				mainInstance.collapseMenu(subsubmenus[j]);
			}
		}
	}
};

/*
SDMenu.prototype.saveStateInCookie = function()
{
	console.debug("hello world3");

	var mainInstance = this;
	for (var i=0; i<this.submenus.length; i++)
	{
		if(submenu[i].className != "collapsed")
		{
			// preserve submenu
		}
	}
}

SDMenu.prototype.dotask = function(target, functionref, tasktype)
{ //assign a function to execute to an event handler (ie: onunload)
	console.debug("hello world2");

	var tasktype=(window.addEventListener)? tasktype : "on"+tasktype

	if (target.addEventListener)
		target.addEventListener(tasktype, functionref, false)
	else if (target.attachEvent)
		target.attachEvent(tasktype, functionref)
}
*/

SDMenu.prototype.toggleMenu = function(submenu)
{
	if (submenu.className == "collapsed")
		this.expandMenu(submenu);
	else
		this.collapseMenu(submenu);
};

SDMenu.prototype.expandMenu = function(submenu)
{
/* old version
	var fullHeight = submenu.getElementsByTagName("span")[0].offsetHeight;
	var links = submenu.getElementsByTagName("a");
	for (var i = 0; i < links.length; i++)
		fullHeight += links[i].offsetHeight;
	var moveBy = Math.round(this.speed * links.length);
*/

// new version using only first children (childNodes)
	var fullHeight = 0;
	var links = submenu.childNodes;
	for (var i=0; i<links.length; i++)
		fullHeight += links[i].offsetHeight;
	var moveBy = Math.round(this.speed * links.length);
// /new version

//	var mainInstance = this;
	var intId = setInterval(function()
	{
		var curHeight = submenu.offsetHeight;
		var newHeight = curHeight + moveBy;
		if (newHeight < fullHeight)
			submenu.style.height = newHeight + "px";
		else
		{
			clearInterval(intId);
			submenu.style.height = "";
			submenu.className = "";
		}
	}, 30);

	this.collapseOthers(submenu);
//	this.collapseChildren(submenu);
};

SDMenu.prototype.collapseMenu = function(submenu)
{
	var minHeight = submenu.getElementsByTagName("span")[0].offsetHeight;

//	var moveBy = Math.round(this.speed * submenu.getElementsByTagName("a").length);
	var moveBy = Math.round(this.speed * submenu.childNodes.length);

//	var mainInstance = this;
	var intId = setInterval(function()
	{
		var curHeight = submenu.offsetHeight;
		var newHeight = curHeight - moveBy;
		if (newHeight > minHeight)
			submenu.style.height = newHeight + "px";
		else
		{
			clearInterval(intId);
			submenu.style.height = "";
			submenu.className = "collapsed";
		}
	}, 30);
};

SDMenu.prototype.collapseOthers = function(submenu)
{
	var siblingMenus = submenu.parentNode.childNodes;
	for (var i=0; i<siblingMenus.length; i++)
		if(siblingMenus[i].tagName == "DIV")
			if (siblingMenus[i] != submenu && siblingMenus[i].className != "collapsed")
				this.collapseMenu(siblingMenus[i]);
};

SDMenu.prototype.expandAll = function()
{
	for (var i = 0; i < this.submenus.length; i++)
		if (this.submenus[i].className == "collapsed")
			this.expandMenu(this.submenus[i]);
};

SDMenu.prototype.collapseChildren = function(submenu)
{
	var children = submenu.childNodes;
	for(var i=0; i<children.length; i++)
	{
		if(children[i].tagName == "DIV")
			this.collapseMenu(children[i]);
	}
}

