addEvent = function () {
	if (window.addEventListener) {
		return function (element, event, callback) {
			element.addEventListener(event, callback, false);
		}
	} else if (window.attachEvent) {
		return function (element, event, callback) {
			element.attachEvent("on" + event, function(){callback.call(element)});
		}
	}
}()

addEvent(window, "load", function() {
	var els = document.getElementsByTagName("*");
	var submenus = [];
	for (var i = 0, l = els.length; i < l; ++i) {
		if (/\bsubmenu\b/i.test(els[i].className)) {
			submenus.push(els[i]);
		}
	}
	
	for (var i = 0, l = submenus.length; c = submenus[i++];) {
		var items = c.getElementsByTagName("*");
		for (var j = 0, k = items.length; h = items[j++];) {
			if (/\bclosed\b/i.test(h.className)) {
				addEvent(h, "mouseover", function (evt) {
					clearTimeout(this.hidetimer || 0);
					var e = evt || event;
					var t = e.srcElement || e.target;
					if (/\bclosed\b/i.test(this.className) & (t.className != "shadow")) {
						this.className = this.className.replace("closed", "opened");
					}
				});
				
				addEvent(h, "mouseout", function (evt) {
					var $ = this;
					if (/\bopened\b/i.test($.className)) {
						this.hidetimer = window.setTimeout(
							function(){
								$.className = $.className.replace("opened", "closed");
							}, 300
						);
					}
				});
			}
		}
	}
})
