var navOver = new Array();

var hidenavinterval;

var timeout_period = 500;

var initialized = false;



// This function initializes all of the nav arrays.

// It also moves the nav layers to the correct position relative to 'navtop'.

function init() {

	var topnav = getAbsYPos('navtop') +14;



	for (var i = 0; i < navLayers.length; i++) {

		navOver[navLayers[i]] = false;

		sY(gE(navLayers[i]), topnav + gY(gE(navLayers[i])));

	}

	for (var i = 0; i < subnavLayers.length; i++) {

		sY(gE(subnavLayers[i]), topnav + gY(gE(subnavLayers[i])));

	}

	for (var i = 0; i < subsubnavLayers.length; i++) {

		sY(gE(subsubnavLayers[i]), topnav + gY(gE(subsubnavLayers[i])));

	}

	

	initialized = true;

}



// Shows the nav menu referenced by 'nav'. It also hides all subnavs and subsubnavs.

function showNav(nav) {

	if (!initialized) return;

	

	clearTimeout(hidenavinterval);



	resetNavBg();



	hideNavExcept(nav);

	hideSubNavExcept('');

	hideSubSubNavExcept('');

	showSelectBoxes();



	sE(gE(nav));

	resetNavCheck(nav);

}



// Shows the subnav menu referenced by 'subnav'. It also hides all subsubnavs.

function showSubnav(subnav) {

	clearTimeout(hidenavinterval);

	

	resetSubNavBg();



	hideSubNavExcept(subnav);

	hideSubSubNavExcept('');



	sE(gE(subnav));

	showSelectBoxes();

	hideSelectBoxes(gE(subnav));

}



// Shows the subsubnav menu referenced by 'subsubnav'

function showSubSubnav(subsubnav) {

	clearTimeout(hidenavinterval);

	

	resetSubSubNavBg();



	hideSubSubNavExcept(subsubnav);

	

	sE(gE(subsubnav));

}



// Hides the nav menu referenced by 'nav' and hides all subnavs and subsubnavs

function hideNav(nav) {

	hE(gE(nav));



	rolloverOff(nav+'img');

}



// Hides all navs, subnavs and subsubnavs

function hideAll() {

	if (!initialized) return;



	hideNavExcept('');

	hideSubNavExcept('');

	hideSubSubNavExcept('');

	showSelectBoxes();

}



// Calls hideNav or all navs except the one referenced by 'nav'. If nav == '' it hides all navs.

function hideNavExcept(nav) {

	for (i = 0; i < navLayers.length; i++) {

		if (nav != navLayers[i]) {

			hideNav(navLayers[i]);

		}

	}

}



// Hides all subnavs except the one referenced by 'subnav'. If subnav == '' it hides all subnavs.

function hideSubNavExcept(subnav) {

	for (j = 0; j < subnavLayers.length; j++) {

		if (subnav != subnavLayers[j]) {

			hE(gE(subnavLayers[j]));

		}

	}

}



// Hides all subsubnavs except the one referenced by 'subsubnav'. If subsubnav == '' it hides all subsubnavs.

function hideSubSubNavExcept(subsubnav) {

	for (k = 0; k < subsubnavLayers.length; k++) {

		if (subsubnav != subsubnavLayers[k]) {

			hE(gE(subsubnavLayers[k]));

		}

	}

}



// Sets the timeout to check whether to close the nav or not

function startHideNav(nav) {

	navOver[nav] = false;

	hidenavinterval = setTimeout('checkNav(\"'+nav+'\")', timeout_period);

}



// Resets the variable used to check whether or not to close the nav

function resetNavCheck(nav) {

	clearTimeout(hidenavinterval);

	navOver[nav] = true;

}



// Checks whether it should close the nav. If the navOver[nav] still equals false, then it closes the nav.

function checkNav(nav) {

	if (navOver[nav] == false) {

		hideNav(nav);

		hideSubNavExcept('');

		hideSubSubNavExcept('');

		showSelectBoxes();

	}

}





// Hides any select boxes that are under the nav item referenced by navmenu

function hideSelectBoxes(navmenu)

{

	if (browser.isIE5up) {

	

		for (var i=0; i < document.all.tags("SELECT").length; i++) {

			obj = document.all.tags("SELECT")[i];



			if (! obj || ! obj.offsetParent) continue;

	

			objx = obj.offsetLeft;

			objy = obj.offsetTop;

			objParent = obj.offsetParent;



			while (objParent != null) {

				objx += objParent.offsetLeft;

				objy += objParent.offsetTop;

				objParent = objParent.offsetParent;

			}



			if (!((gX(navmenu) > (objx + obj.offsetWidth) || objx > (gX(navmenu) + navmenu.offsetWidth))||(objy > gY(navmenu) + navmenu.offsetHeight))) {

				obj.style.visibility = "hidden";

			}

		}

	}

}



// Shows any hidden select boxes

function showSelectBoxes() {

	if (browser.isIE5up) {

		for (i = 0; i < document.all.tags("SELECT").length; i++) {

			obj = document.all.tags("SELECT")[i];

			if (obj && obj.style.visibility=="hidden") obj.style.visibility = "";

		}

	}

}









///BG ROLLOVERS///



// BG rollover colours for the main nav and the secondary nav

var mainnavonColor = "#999977";

var mainnavoffColor = "#666666";

var mainaltnavonColor = "#999977";

var mainaltnavoffColor = "#7D7D7D";

var subnavonColor = "#999977";

var subnavoffColor = "#444444";

var subsubnavonColor = "#999977";

var subsubnavoffColor = "#222222";

var secnavonColor = "#666655";

var secnavoffColor = "#444444";



var lastanch = "";

var lastsec = "";

var lastsubanch = "";

var lastsubsec = "";

var lastsubsubanch = "";

var lastsubsubsec = "";



// Calls the function to change the bg color and stores the last nav rolled over

function bgrolloverOnNav(anch,sec) {

	bgrolloverOn(anch,sec);

	if (anch != lastanch) {

		resetNavBg();

		lastanch = anch;

		lastsec = sec;

	}

}



// Calls the function to change the bg color and stores the last subnav rolled over

function bgrolloverOnSubNav(anch,sec) {

	bgrolloverOn(anch,sec);

	if (anch != lastsubanch) {

		resetSubNavBg();

		lastsubanch = anch;

		lastsubsec = sec;

	}

}



// Calls the function to change the bg color and stores the last subsubnav rolled over

function bgrolloverOnSubSubNav(anch,sec) {

	bgrolloverOn(anch,sec);

	if (anch != lastsubsubanch) {

		resetSubSubNavBg();

		lastsubsubanch = anch;

		lastsubsubsec = sec;

	}

}



// Changes the bg color of the table cell holding the anchor 'anch'

function bgrolloverOn(anch,sec) {

	if ((browser.isIE)||(browser.isMOZ1up)||(browser.isNS6up)) anch.style.backgroundColor =  eval(sec+"onColor");

}



// Changes the bg color of the table cell holding the anchor 'anch'

function bgrolloverOff(anch, sec) {

	if ((browser.isIE)||(browser.isMOZ1up)||(browser.isNS6up)) anch.style.backgroundColor =  eval(sec+"offColor");

}



// Resets the last nav anchor rolled over

function resetNavBg() {

	if (lastanch != "") {

		bgrolloverOff(lastanch, lastsec);

		lastanch = "";

		lastsec = "";

	}

}



// Resets the last subnav anchor rolled over

function resetSubNavBg() {

	if (lastsubanch != "") {

		bgrolloverOff(lastsubanch, lastsubsec);

		lastsubanch = "";

		lastsubsec = "";

	}

}



// Resets the last subsubnav anchor rolled over

function resetSubSubNavBg() {

	if (lastsubsubanch != "") {

		bgrolloverOff(lastsubsubanch, lastsubsubsec);

		lastsubsubanch = "";

		lastsubsubsec = "";

	}

}