www.pudn.com > Java_web_shipin_gongsi-.rar > sdmenu.js, change:2011-04-03,size:3724b


function SDMenu(id) { 
	if (!document.getElementById || !document.getElementsByTagName) 
		return false; 
	this.menu = document.getElementById(id); 
	this.submenus = this.menu.getElementsByTagName("div"); 
	this.remember = true; 
	this.speed = 3; 
	this.markCurrent = true; 
	this.oneSmOnly = false; 
} 
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); 
		}; 
	if (this.markCurrent) { 
		var links = this.menu.getElementsByTagName("a"); 
		for (var i = 0; i < links.length; i++) 
			if (links[i].href == document.location.href) { 
				links[i].className = "current"; 
				break; 
			} 
	} 
	if (this.remember) { 
		var regex = new RegExp("sdmenu_" + encodeURIComponent(this.menu.id) + "=([01]+)"); 
		var match = regex.exec(document.cookie); 
		if (match) { 
			var states = match[1].split(""); 
			for (var i = 0; i < states.length; i++) 
				this.submenus[i].className = (states[i] == 0 ? "collapsed" : ""); 
		} 
	} 
}; 
SDMenu.prototype.toggleMenu = function(submenu) { 
	if (submenu.className == "collapsed") 
		this.expandMenu(submenu); 
	else 
		this.collapseMenu(submenu); 
}; 
SDMenu.prototype.expandMenu = function(submenu) { 
	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); 
	 
	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 = ""; 
			mainInstance.memorize(); 
		} 
	}, 30); 
	this.collapseOthers(submenu); 
}; 
SDMenu.prototype.collapseMenu = function(submenu) { 
	var minHeight = submenu.getElementsByTagName("span")[0].offsetHeight; 
	var moveBy = Math.round(this.speed * submenu.getElementsByTagName("a").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"; 
			mainInstance.memorize(); 
		} 
	}, 30); 
}; 
SDMenu.prototype.collapseOthers = function(submenu) { 
	if (this.oneSmOnly) { 
		for (var i = 0; i < this.submenus.length; i++) 
			if (this.submenus[i] != submenu && this.submenus[i].className != "collapsed") 
				this.collapseMenu(this.submenus[i]); 
	} 
}; 
SDMenu.prototype.expandAll = function() { 
	var oldOneSmOnly = this.oneSmOnly; 
	this.oneSmOnly = false; 
	for (var i = 0; i < this.submenus.length; i++) 
		if (this.submenus[i].className == "collapsed") 
			this.expandMenu(this.submenus[i]); 
	this.oneSmOnly = oldOneSmOnly; 
}; 
SDMenu.prototype.collapseAll = function() { 
	for (var i = 0; i < this.submenus.length; i++) 
		if (this.submenus[i].className != "collapsed") 
			this.collapseMenu(this.submenus[i]); 
}; 
SDMenu.prototype.memorize = function() { 
	if (this.remember) { 
		var states = new Array(); 
		for (var i = 0; i < this.submenus.length; i++) 
			states.push(this.submenus[i].className == "collapsed" ? 0 : 1); 
		var d = new Date(); 
		d.setTime(d.getTime() + (30 * 24 * 60 * 60 * 1000)); 
		document.cookie = "sdmenu_" + encodeURIComponent(this.menu.id) + "=" + states.join("") + "; expires=" + d.toGMTString() + "; path=/"; 
	} 
};