/* JavaScript enhanced CSS menus by Vesa Piittinen, http://goldpanda.merri.net/

LICENSE
-------
- free for personal and commercial use
- free to do changes as long as the license remains the same and the license is left intact
- you may not claim the code to be your own: credit original author(s) where appropriate

*/

hide = setTimeout('null', 1);
addEvent(window, 'unload', function() { clearTimeout(hide); });

function menu_activate(element, focused) {
	var oldelement = document.getElementById('active');
	if(!focused) {
		if (oldelement != element) {
			if(!!oldelement && oldelement.getAttribute('class') == 'focus') {
				oldelement.setAttribute('id', 'old_active');
			} else if(!!oldelement) {
				oldelement.removeAttribute('id');
			}
		}
		element.setAttribute('id', 'active');
	} else {
		if (oldelement != element) {
			if(!!oldelement) {
				var oldelement = document.getElementById('old_active');
				if(!!oldelement) {
					oldelement.removeAttribute('class');
					oldelement.removeAttribute('id');
				}
				element.setAttribute('id', 'old_active');
			} else {
				element.setAttribute('id', 'active');
			}
		}
		element.setAttribute('class', 'focus');
	}
	clearTimeout(hide);
	hide = setTimeout('null', 1);
}

function menu_deactivate(element, blurred) {
	var oldelement = document.getElementById('old_active');
	if(!blurred) {
		if(!!oldelement && oldelement.getAttribute('class') == 'focus') {
			if(!!element.getAttribute('class')) { element.removeAttribute('class'); }
			element.removeAttribute('id');
			oldelement.setAttribute('id', 'active');
		} else if(!element.getAttribute('class')) {
			clearTimeout(hide);
			hide = setTimeout('menu_hide()', 500);
		}
	} else {
		if(!!oldelement) {
			oldelement.removeAttribute('class');
			oldelement.removeAttribute('id');
		}
		element.removeAttribute('class');
		element.removeAttribute('id');
	}
}

function menu_hide() {
	var oldelement = document.getElementById('old_active');
	if(!!oldelement) {
		oldelement.removeAttribute('class');
		oldelement.removeAttribute('id');
	}
	var element = document.getElementById('active');
	if(!!element) {
		if(!!element.getAttribute('class')) { element.removeAttribute('class'); }
		element.removeAttribute('id');
	}
	clearTimeout(hide);
	hide = setTimeout('null', 1);
}

function menu_enable(menu_id, unclickable) {
	menu_id += '';
	linksElements = document.getElementById(menu_id).getElementsByTagName('a');
	for (var i = 0; i < linksElements.length; i++) {
		if (linksElements[i].parentNode.parentNode.getAttribute('id') == menu_id) {
			addEvent(linksElements[i].parentNode, 'mouseover', function() { menu_activate(this); });
			addEvent(linksElements[i].parentNode, 'mouseout', function() { menu_deactivate(this); });
			addEvent(linksElements[i], 'focus', function() { menu_activate(this.parentNode, true); });
			addEvent(linksElements[i], 'blur', function() { menu_deactivate(this.parentNode, true); });
			if(!!unclickable) {
				addEvent(linksElements[i], 'click', function() { return false; });
			}
		} else {
			linksElements[i].setAttribute('rel', menu_id);
			addEvent(linksElements[i], 'focus', function() {
				var element = this.parentNode;
				var beforeelement = this;
				var menuname = this.getAttribute('rel');
				while ( !!element && (element.getAttribute('id') != menuname) ) {
					var beforeelement = element;
					var element = element.parentNode;
				}
				menu_activate(beforeelement, true);
			});
			addEvent(linksElements[i], 'blur', function() {
				var element = this.parentNode;
				var beforeelement = this;
				var menuname = this.getAttribute('rel');
				while ( !!element && (element.getAttribute('id') != menuname) ) {
					var beforeelement = element;
					var element = element.parentNode;
				}
				menu_deactivate(beforeelement, true);
			});
		}
	}
}