var menuTimer = 0;
var menuTimer2 = 0;

/* ========================================================================== */

// 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'))
				return (maxW > elm.down('a').getWidth())?maxW:elm.down('a').getWidth();
			return 0;
		});
		// 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+'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 = 'over';
	// 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.tab > li > a').each(function(elm) {
		elm.className = elm.readAttribute('originalClass');
	});
	// LOOP AND RUN THE FOLLOWING ON ALL PNAV NESTED UL TAGS (SUBMENUS)
	$$('#pNav > ul.tab > 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 IS CALLED ON PNAV SUBMENU LI MOUSEOVER
var openSubSubMenu = function(srcElm) {
	// CLEAR THE TIMEOUT FOR ANY CURRENTLY CLOSING MENUS
	clearTimeout(menuTimer2);
	// SET THE CURRENT PNAV SUBMENU A TAG TO over
	srcElm.down('a').className = 'over';
	// LOOK DOWN THE DOM FROM THE PNAV SUBMENU 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 SUB-SUBMENUS
			closeAllSubSubMenus();

			// SHOW THE UL WITH DEFAULT PROTOTYPE, ADJUST LEFT TO POSITION RIGHT OF SUBMENU
			srcElm = srcElm.down('ul');
			srcElm.style.left = (srcElm.up('ul').getWidth()-4)+'px';
			srcElm.show();

			// SET THE A TAG WIDTHS FOR THIS SUB-SUBMENU
			adjustWidth(srcElm);
		}
	} else {
		// IF THIS SUBMENU DOES NOT HAVE A NESTED UL, QUICK CLOSE ALL SUB-SUBMENUS
		closeAllSubSubMenus();
	}
}

// FUNCTION IS CALLED ON PNAV SUBMENU LI MOUSEOUT
var closeSubSubMenu = function() {
	// CLOSE ALL SUB-SUBMENUS ON A 100 MILLISECOND DELAY
	menuTimer2 = setTimeout(closeAllSubSubMenus, 100);
}

var closeAllSubSubMenus = function() {
	// LOOP AND RUN THE FOLLOWING ON ALL PNAV SUBMENU NESTED UL TAGS (SUB-SUBMENUS)
	$$('#pNav > ul > li > ul > li > ul').each(function(elm) {
		// HIDE THE NESTED UL
		elm.hide();
	});
}

/* ========================================================================== */

// FUNCTION TO RUN ON DOM LOADED, SETUP DROP SHADOWS AND MENU EVENTS
var initCSS = function() {
	// MAKE SURE ALL DROP SHADOWS ARE FULL WIDTH - IE FIX
	if (Prototype.Browser.IE) {
		$$('.dropBottom').each(function(elm) {
			elm.style.width = elm.up('div').getWidth()+'px';
		});
	}

	// 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() });
	});
	// ATTACH EVENTS TO PNAV SUBMENU LI TAGS FOR MOUSEOVER AND MOUSEOUT
	$$('#pNav > ul > li > ul > li').each(function(elm) {
		elm.observe('mouseover', function(){ openSubSubMenu(elm) });
		elm.observe('mouseout', function(){ closeSubSubMenu() });
	});
}

/* ========================================================================== */

// RUN initCSS ON DOM LOADED IF IT EXISTS
document.observe("dom:loaded", function() {
	if (typeof(initCSS) == 'function')
		initCSS();
});