// Sub-Navigation script
// Copyright 2007 Ken Dunnington

var nav = {
	name: "Navigation Functions",
	subMenus: [],
	currentElem: {},
	hideAll: function(except,speed) {
		s = speed || 300;
		$(this.subMenus).not(except).each( function() {
			// Top Nav: $(this).parents("ul").length == 1
			// Submanu: $(this).parents("ul").length > 1
			// Has Submenus: $(this).children("li").children("ul").length > 0
			if ($(except).parents("ul").length == 1) {
				var visible = $(this).filter(":visible");
				visible.hide(s);
				$(this).siblings("a.click").text("+").add($(this).siblings("a")).removeClass("active");
			}
		});
	},
	toggle: function() {
		var mySub = $(this).siblings("ul")[0];
		
		// Hide all the other open menus
		nav.hideAll(mySub);
		$(mySub).toggle(300);
		$(this).toggleClass("active");
		$(this).text() == "+" ? $(this).text("-") : $(this).text("+");
		$(this).siblings("a").toggleClass("active");
		return false;
	},
	hoverOn: function() {
		var parentLi = $(this).parent("li")[0];
		var mySub = $(this).siblings("ul")[0];
		
		nav.hideAll(mySub);
		$(parentLi).addClass("_open");
		$(this).addClass("active");
		$(mySub).show(300);
		$(mySub).hover(function() {},nav.subHoverOff);
	},
	hoverOff: function(e) {
		var rel = e.relatedTarget;
		var parentLi = $(rel).parents("._open");
		var mySub = $(this).siblings("ul");
		
		if (!parentLi.length) {
			mySub.hide(300);
			$(this).removeClass("active");
		} else {
			parentLi.removeClass("_open");
		}
	},
	subHoverOff: function(e) {
		var rel = e.relatedTarget;
		var sibAnchor = $(this).siblings(".hover")[0];
		var self = this;
		
		if (rel != sibAnchor) {
			setTimeout(function() {
				var containers = $(nav.currentElem).parents("ul");
				var i,container,hide = true;
				
				if (containers.length) {
					for (i = 0; i < containers.length; i++) {
						container = containers[i];
						if (container == self) {
							hide = false;
							break;
						}
					}
				}
				
				if (hide) {
					$(self).hide(300);
					$(sibAnchor).removeClass("active");
				}
			},
			1000);
		}
	}
};

$(document).ready(function() {
	nav.subMenus = $("a.click + ul").add("a.hover + ul");
	
	$("a.click").click(nav.toggle).siblings("ul").hide();
	$("a.hover").hover(nav.hoverOn,nav.hoverOff).siblings("ul").hide();
	$(document).mousemove(function(e) { nav.currentElem = e.target || e.currentTarget; });
	$("body").click(function(e) { 
		nav.hideAll($("a.click + ul"),100);
	});
});