var menuTimer = 0;
var menuHorzPadding = 20;

/* ========================================================================== */

// FUNCTION IS CALLED ON SUBMENU/SUB-SUBMENU OPEN
var adjustWidth = function(srcElm) {
	// IF THE BROWSER IS IE DO THE FOLLOWING
	if (Prototype.Browser.IE) {
		var maxW = 125;
		// LOOP THROUGH ALL CHILDREN OF srcElm AND IF LI TAG, GET WIDTH.  FIND MAX WIDTH
		maxW = srcElm.immediateDescendants().max(function(elm) {
			if (elm.match('li') && elm.down('a'))
				return (maxW > elm.down('a').getWidth())?maxW:elm.down('a').getWidth();
			return maxW;
		});
		// LOOP THROUGH ALL CHILDREN OF srcElm AND IF LI TAG, SET NESTED A TAGS WIDTH = maxW
		srcElm.immediateDescendants().each(function(elm) {
			if (elm.match('li') && elm.down('a'))
				elm.down('a').style.width = (maxW-menuHorzPadding)+'px';
		});
	}
}

/* ========================================================================== */

// FUNCTION IS CALLED ON PNAV LI MOUSEOVER
var openSubMenu = function(srcElm) {
	// CLEAR THE TIMEOUT FOR ANY CURRENTLY CLOSING MENUS
	clearTimeout(menuTimer);
	// SET THE CURRENT PNAV A TAG TO over
	srcElm.down('a').className = 'on';
	// LOOK DOWN THE DOM FROM THE PNAV LI FOR A NESTED UL
	if (srcElm.down('ul')) {
		// IF WE FOUND A NESTED UL AND IT IS NOT ALREADY VISIBLE
		if (!srcElm.down('ul').visible()) {
			// QUICK CLOSE ALL SUBMENUS
			closeAllSubMenus();

			// SHOW THE UL TRYING SCRIPTACULOUS, THEN JQUERY, THEN DEFAULT PROTOTYPE
			srcElm = srcElm.down('ul');
			if (!Prototype.Browser.IE && typeof(Scriptaculous) != 'undefined' && typeof(Effect) != 'undefined')
				Effect.Appear(srcElm, { duration:.25 });
			else if (!Prototype.Browser.IE && typeof(jQuery) != 'undefined')
				$j(srcElm).slideDown(250);
			else
				srcElm.show();

			// SET THE A TAG WIDTHS FOR THIS SUBMENU
			adjustWidth(srcElm);
		}
	} else {
		// IF THIS MENU DOES NOT HAVE A NESTED UL, QUICK CLOSE ALL SUBMENUS
		closeAllSubMenus();
	}
}

// FUNCTION IS CALLED ON PNAV LI MOUSEOUT
var closeSubMenu = function() {
	// CLOSE ALL SUBMENUS ON A 100 MILLISECOND DELAY
	menuTimer = setTimeout(closeAllSubMenus, 100);
}

var closeAllSubMenus = function() {
	// SET ALL THE PNAV A TAGS BACK TO THEIR ORIGINAL CLASS AS THEY WERE ON PAGE LOAD
	$$('#pNav > ul > li > a').each(function(elm) {
		elm.className = elm.readAttribute('originalClass');
	});
	// LOOP AND RUN THE FOLLOWING ON ALL PNAV NESTED UL TAGS (SUBMENUS)
	$$('#pNav > ul > li > ul').each(function(elm) {
		// IF WE'RE USING JQUERY, STOP ALL PENDING ANIMATIONS
		if (typeof(jQuery) != 'undefined')
			$j(elm).stop(true,true);
		// HIDE THE NESTED UL
		elm.hide();
	});
}

/* ========================================================================== */

// FUNCTION TO RUN ON DOM LOADED, SETUP MENU EVENTS
var initCSS = function() {
	// CREATES ROUNDED CORNERS ON PNAV LI A
	$$('#pNav > ul > li > a').each(function(elm) {
		elm.update('<span class="n1">'+elm.innerHTML+'</span><span class="n2">&nbsp;</span>');
	});

	// STORE THE ORIGINAL CLASS ON PNAV ITEMS FOR USE ON MOUSEOUT
	$$('#pNav > ul.tab > li > a').each(function(elm) {
		elm.writeAttribute('originalClass', elm.className);
	});
	// ATTACH EVENTS TO PNAV LI TAGS FOR MOUSEOVER AND MOUSEOUT
	$$('#pNav > ul > li').each(function(elm) {
		elm.observe('mouseover', function(){ openSubMenu(elm) });
		elm.observe('mouseout', function(){ closeSubMenu() });
	});
}

/* ========================================================================== */

// RUN initCSS ON DOM LOADED IF IT EXISTS
document.observe("dom:loaded", function() {
	if (typeof(initCSS) == 'function')
		initCSS();
});