// Requires Prototype+Scriptaculous.

var timeout				= 300;		// How quickly should menus disappear (in ms)
var duration			= 0.5;
var menuCloseTimer		= [];
var items				= [];
var menus				= [];
var handle				= "";

function fadeIn(id) {
	Effect.Appear(id);	
}

function fadeOut(id) {
	Effect.Fade(id);	
}

function navOver(h) {
	if (!items[h]) {
		//db("** navOver " + h);

		handle = h;
		navOn(handle);
		
		if (document.getElementById("nav" + h) != null) {
			items[h] = true;
		}
		//db("dd" + handle +" is null?");
		if (document.getElementById("dd" + handle) != null) {
			
			menus[h] = true;
			cancelClose(handle);
			fadeIn("dd" + handle);
			//db("* Dropping down menu " + h);
		}
	}
	else {
		cancelClose(h);	
	}
}

function closeMenu(h) {	

	if (items[h]) {
		navOff(h);
	
		handle = "";
		items[h] = false;
		//db("Closing menu " + h + ", itemsh is now " + items[h]);	
	
		if (menus[h]) {
			//Effect.Fade("dd" + h, { duration: " + (duration/2) + " });
			document.getElementById("dd" + h).style.display = "none";
			menus[h] = false;
		}
	}
}

function navOut(h) {
	if (items[h]) {
		//db("navOut " + h);
		menuCloseTimer[h] = window.setTimeout("closeMenu('" + h + "')", timeout);
	}
	else {
		navOff(h);	
	}
}

function cancelClose(h) {
	if (items[h]) {
		//db("cancelling " + h);
		window.clearTimeout(menuCloseTimer[h]);
		menuCloseTimer[h] = null;
	}
}

document.onClick = closeMenu; 

function navOn(h) {
	if (document.getElementById('label'+h))
		Effect.Appear('label' + h, { duration: 0.5 });
	if (document.getElementById('nav'+h))
		Effect.Appear('nav' + h, { duration: 0.5, from: 0.7, to: 1 });	
}

function navOff(h) {
	if (document.getElementById('label'+h))
		Effect.Fade('label' + h, { duration: 0.25 });
	if (document.getElementById('nav'+h))
		Effect.Fade('nav' + h, { duration: 0.5, from: 1, to: 0.7 });
}
