function addEvent(element, eventName, eventListener) {
	if (element.addEventListener) {
		element.addEventListener(eventName, eventListener, 0);
	} else {
		if (element.attachEvent) {
			element.attachEvent("on" + eventName, eventListener);
		}
	}
}
function delEvent(element, eventName, eventListener) {
	if (element.removeEventListener) {
		element.removeEventListener(eventName, eventListener, 0);
	} else {
		if (element.detachEvent) {
			element.detachEvent("on" + eventName, eventListener);
		}
	}
}
var g_dropdown, g_dropdown_timeout;
function dropdown(dropdownEvent) {
	var dropdownElement;
	if (window.event) {
		dropdownElement = dropdownEvent.srcElement;
		event.cancelBubble = true;
	} else {
		dropdownElement = dropdownEvent.target;
		dropdownEvent.stopPropagation();
	}
	var handleKeyDown = function(keyEvent) {
		var keyEvent = keyEvent || event;
		if ((keyEvent.keyCode == 27) && !(keyEvent.ctrlKey || keyEvent.altKey)) {
			toggleDropDown();
		}
	};
	var handleClick = function(clickEvent) {
		var element = clickEvent ? clickEvent.target : event.srcElement;
		while (element) {
			if (element.className && (element.className.indexOf("b-dropdown") != -1)) {
				return
			}
			element = element.parentNode;
		}
		toggleDropDown();
	};
	var handleMouseOut = function() {
		g_dropdown_timeout = setTimeout(toggleDropDown, 1000);
	};
	var handleMouseOver = function() {
		clearTimeout(g_dropdown_timeout);
	};
	var toggleDropDown = function() {
		if (g_dropdown) {
			delEvent(document, "click", handleClick);
			delEvent(document, "keydown", handleKeyDown);
			delEvent(g_dropdown, "mouseout", handleMouseOut);
			delEvent(g_dropdown, "mouseover", handleMouseOver);
			g_dropdown.style.visibility = "hidden";
			var parentNode = g_dropdown.parentNode;
			parentNode.insertBefore(g_dropdown.lastChild, g_dropdown);
			parentNode.removeChild(g_dropdown.nextSibling);
			parentNode.removeChild(g_dropdown);
			g_dropdown = 0;
			return 1;
		}
		return 0;
	};
	if (!toggleDropDown()) {
		while (dropdownElement.className.indexOf("b-dropdown") == -1) {
			dropdownElement = dropdownElement.parentNode;
		}
		var parentNode = dropdownElement.parentNode;
		g_dropdown = document.createElement("div");
		g_dropdown.className = "b-dropdown-popup";
		parentNode.insertBefore(g_dropdown, dropdownElement);
		var browserUA = navigator.userAgent;
		var iframeNode = document.createElement("iframe");
		iframeNode.frameBorder = 0;
		if (browserUA.match(/MSIE/) && !browserUA.match("Opera")) {
			iframeNode.src = "javascript:'<body style=\\'background:none;overflow:hidden\\'>'";
		} else {
		}
		g_dropdown.appendChild(iframeNode);
		if ((browserUA.match(/MSIE [56]/) || ((document.compatMode != "CSS1Compat")
				&& browserUA.match(/MSIE/) && !browserUA.match(/Opera/)))) {
			var F = document.createElement("span");
			F.style.width = dropdownElement.offsetWidth + "px";
			F.style.height = dropdownElement.offsetHeight + "px";
			F.style.zoom = 1;
			parentNode.insertBefore(F, dropdownElement);
		} else {
			parentNode.insertBefore(dropdownElement.cloneNode(true), dropdownElement);
		}
		g_dropdown.appendChild(dropdownElement);
		addEvent(document, "keydown", handleKeyDown);
		addEvent(document, "click", handleClick);
		addEvent(g_dropdown, "mouseout", handleMouseOut);
		addEvent(g_dropdown, "mouseover", handleMouseOver);
	}
	return false;
};

