/**
 * nav.js
 *
 * Simple implementation of drop-down menus
 *
 * Author: Tim Down (MarketingNet Ltd.)
 * Last update: 8/7/2005
 */

var disappearDelay = 300;

Array.prototype.contains = function(val) {
	for (var i = 0; i < this.length; i++) {
		if (this[i] == val) {
			return true;
		}
	}
	return false;
};

function isDescendantOf(node, ancestorNode) {
	while (node) {
		if (ancestorNode == node) {
			return true;
		}
		node = node.parentNode;
	}
	return false;
}

function addClass(el, cssClass) {
	if (!hasClass(cssClass)) {
		if (el.className) {
			el.className += " " + cssClass;
		} else {
			el.className = cssClass;
		}
	}
}

function hasClass(el, cssClass) {
	if (el.className) {
		var classNames = el.className.split(" ");
		return classNames.contains(cssClass);
	}
	return false;
}

function removeClass(el, cssClass) {
	if (hasClass(el, cssClass)) {
		// Rebuild the className property
		var existingClasses = el.className.split(" ");
		var newClasses = new Array()
		for (var i = 0; i < existingClasses.length; i++) {
			if (existingClasses[i] != cssClass) {
				newClasses[newClasses.length] = existingClasses[i];
			}
		}
		el.className = newClasses.join(" ");
	}
}

var navigationIsActive = false;
function activateNavigation() {
	if (!navigationIsActive) {
		navigationIsActive = true;
		//addClass(document.body, "navigationactive");
	}
}

function deactivateNavigation() {
	if (navigationIsActive) {
		navigationIsActive = false;
		//removeClass(document.body, "navigationactive");
	}
}

function mouseOverItem() {
	activateNavigation();
	addClass(this, "menuhover");
    addClass(this, "navitemon");
	// Disable timer
	if (menuDisappearTimer) {
		window.clearTimeout(menuDisappearTimer);
	}
	if (activeMenu) {
		if (!isDescendantOf(this, activeMenu)) {
			disappearMenu(activeMenu);
			activeMenu = this;
		}
	} else {
		activeMenu = this;
	}
}

function mouseOutItem() {
	window.clearTimeout(menuDisappearTimer);
	menuDisappearTimer = window.setTimeout("timeUp()", disappearDelay);
}

function disappearMenu(menu) {
	removeClass(activeMenu, "menuhover");
    removeClass(activeMenu, "navitemon");
}

function timeUp() {
	deactivateNavigation();
	if (activeMenu) {
		disappearMenu(activeMenu);
		activeMenu = null;
	}
}

function initMenus() {
	var mainNav = document.getElementById("mainnav");
	var els = mainNav.getElementsByTagName("div");
	for (var i = 0; i < els.length; i++) {
		if (hasClass(els[i], "navitem")) {
			els[i].onmouseover = mouseOverItem;
			els[i].onmouseout = mouseOutItem;
		}
	}
	addClass(mainNav, "loaded");
}

var activeMenu = null;
var menuDisappearTimer = null;

var windowOnloadHandlers = new Array();

window.onload = function() {
	for (var i = 0; i < windowOnloadHandlers.length; i++) {
    	windowOnloadHandlers[i]();
 	}
	initMenus();
}