function SDMenu(id) {
	if (!document.getElementById || !document.getElementsByTagName)
		return false;
	this.menu = document.getElementById(id);
	this.submenus = this.menu.getElementsByTagName("div");
	this.speed = 1;
	this.oneSmOnly = true;
}
SDMenu.prototype.init = function() {
	var mainInstance = this;
	this.menu.onmouseout = function (){
		mainInstance.collapseAll();
	}
	for (var i = 0; i < this.submenus.length; i++){
		this.submenus[i].getElementsByTagName("span")[0].onmouseover = function() {
			mainInstance.expandMenu(this.parentNode.getElementsByTagName("ul")[0]);
		};
	};
};
SDMenu.prototype.toggleMenu = function(submenu) {
	  if (submenu.className == "expanded")
		this.collaspseMenu(submenu);
	  else
		this.expandMenu(submenu);
};
SDMenu.prototype.expandMenu = function(submenu) {
	if (submenu.className == "collasped"){
	this.collapseOthers(submenu);
	var fullWidth = 0;
	var links = submenu.getElementsByTagName("a");
	for (var i = 0; i < links.length; i++)
		if (fullWidth < links[i].offsetWidth)
			fullWidth = links[i].offsetWidth;
	var moveBy = Math.round( fullWidth / this.speed);
	submenu.className = "expanded";
	submenu.style.width = "0px";
	var mainInstance = this;
	
	var intId = setInterval(function() {
		var curWidth = submenu.offsetWidth;
		var newWidth = curWidth + moveBy;
		if (newWidth < fullWidth)
			submenu.style.width = newWidth + "px";
		else {
			clearInterval(intId);
			submenu.style.width = "";
		}
	}, 30);
	}
};
SDMenu.prototype.collapseMenu = function(submenu) {
	var minWidth = 0;
	var moveBy = Math.round(submenu.offsetWidth / this.speed);
	var mainInstance = this;
	var intId = setInterval(function() {
		var curWidth = submenu.offsetWidth;
		var newWidth = curWidth - moveBy;
		if (newWidth > minWidth)
			submenu.style.width = newWidth + "px";
		else {
			clearInterval(intId);
			submenu.style.width = "0px";
			submenu.className = "collasped";
		}
	}, 30);
};
SDMenu.prototype.collapseOthers = function(submenu) {
	if (this.oneSmOnly) {
		var submenus = this.menu.getElementsByTagName('ul');
		for (var i = 0; i < submenus.length; i++){
			if (submenus[i] != submenu)
				this.collapseMenu(submenus[i]);
		}
	}
};
SDMenu.prototype.collapseAll = function() {
	var obj = event.toElement;
    while( obj!=null && obj!=this.menu){
        obj = obj.parentElement;
    }
    if( obj==null ){
		var submenus = this.menu.getElementsByTagName('ul');
		for (var i = 0; i < submenus.length; i++)
			if (submenus[i].className != "collapsed")
				this.collapseMenu(submenus[i]);
	}
};