function header_menu_item(id) {
	var obj = document.getElementById(id);
	if (!obj) return false;

	if (document.body.filters) {
		/* okay fine we'll wrap the element in a DIV to retain shape, and then
                   set the object itself to absolute position to fullfill MSIE's stupid
		   requirements to obtain opacity effects GRRRR >:( */
		obj.outerHTML = "<table border=0 cellpadding=0 cellspacing=0 width=" +
			obj.offsetWidth + " height=" + obj.offsetHeight + "><tr height=" +
			obj.offsetHeight + " valign=top align=left><td width=" + obj.offsetWidth + " valign=top align=left>" +
			obj.outerHTML + "</td></tr></table>";
		/* now that we replaced the obj the reference is invalid, so... */
		obj = document.getElementById(id);
		/* Ooooookay, now why is this attribute required to achieve opacity? */
		obj.style.position = "absolute";
		obj.style.filter = "progid:DXImageTransform.Microsoft.Alpha(enabled='true',style='0',opacity='50')";
	}

	obj.myOpacity = 50;
	obj.isHover = 0;

	obj.onmouseover = function() {
		this.isHover = 1;
	}
	obj.onmouseout = function() {
		this.isHover = 0;
	}
	obj.tick = function() {
		if (this.isHover) {
			if (this.myOpacity < 100)
				this.myOpacity += 25;
			if (this.myOpacity > 100)
				this.myOpacity = 100;
		}
		else {
			if (this.myOpacity > 50)
				this.myOpacity -= 10;
			if (this.myOpacity < 50)
				this.myOpacity = 50;
		}

		if (document.body.filters) {
			if (typeof(this.filters) != 'undefined') {
				var f = this.filters(0);
				if (f) {
					if (f.opacity != this.myOpacity) {
						f.opacity = this.myOpacity;
					}
				}
			}
		}
		else if (typeof(obj.style.opacity) != 'undefined') {
			var nop = (this.myOpacity / 100).toString();
			if (this.style.opacity != nop) {
				this.style.opacity = nop;
			}
		}
	}

	// tap into tick event set up by prologue.js
	document.imagehoverfadeticklist.push(obj);
}

