/***********************************************************************************************************************/
/*												SnapMenu Version 1.2												   */
/*											  © 2005 Snap Technologies												   */
/*											   written by: Doug Clegg 												   */
/*											   						 												   */
/*											   See Bottom for Changes 												   */
/***********************************************************************************************************************/


/********* Netcrap Variables for positioning *********/
var NNitem;
var leftFixNN4 = -10;
var topFixNN4 = 8;
var subLeftFixNN4 = 7;
var subTopFixNN4 = -25;


// *********************************** DO NOT CHANGE BELOW ***********************************

// variable to hold regular javascript functions that run on mouse out
var mainNavJava;

/***** a function to clean up code for mouse over *****/
function mouseOverTop (catID){
	hideSub(sublastID);
	showNav("sub" + catID, "top" + catID, "img" + catID);
	stopTime("sub" + catID);
}


// variables for the timeout
var timerID = null;
var timerOn = false;
var lastID = undefined;

// declaration of variables for position value
var positionLeft;
var positionTop;

//start the timer for the delay
function startTime(navitem) { 
	if (timerOn == false) { 
		lastID = navitem;
 		timerID = setTimeout("hideNav('" + navitem + "');", 800);
		timerOn = true; 
 	} 
 }
 
 // stop timer for delay
 function stopTime(navitem) { 
 	if (timerOn) {
		if (navitem != lastID) {
			if (document.layers) {
				if (document.layers[lastID]) {
					hideSub(lastID);
				}
			} else {
				if (document.getElementById(lastID)) {
					hideSub(lastID);
				}
			}
		}
 		clearTimeout(timerID);
 		timerID = null;
 		timerOn = false;
 	}
 }

//show the nav item
function showNav(navitem,topitem,imageNo) {
	if (document.layers) { // check for netcrap
		if (document.layers[navitem]) {
			if (document.images[imageNo].x + strWidth > window.outerWidth) {
				document.layers[navitem].x = window.outerWidth - strWidth; // set position of nav menu if at edge of browser window
			} else {
				document.layers[navitem].x = document.images[imageNo].x + leftFixNN4; // set position of nav menu in normal position
			}
			document.layers[navitem].y = document.images[imageNo].y + topFixNN4; // fix the postion of visible nav menu
			document.layers[navitem].visibility = 'show'; // show current nav menu
			if (navitem != lastID) { // check if a nav menu is open
				if (document.layers[lastID]) {
					document.layers[lastID].visibility = 'hide'; // hide last nav menu that is open
				}
			}
		} else {
			if (lastID != undefined) { // check if a nav menu is open
				if (document.layers[navitem]) {
					hideNav(lastID); // hide last nav menu that is open
				}
			}
		}
	} else {
		if (document.getElementById(navitem)) {
			navPosition(topitem); // set position of nav menu
			document.getElementById(navitem).style.left = positionLeft;
			document.getElementById(navitem).style.top = positionTop;
			document.getElementById(navitem).style.display = 'block'; // show nav menu
		} else {
			if (lastID != undefined) { // check if a nav menu is open
				if (document.getElementById(lastID)) {
					hideNav(lastID); // hide last nav menu that is open
				}
			}
		}
	}
	if (mainNavJava != "" ) { // run any pending javascript in variable for mouse out
		eval(mainNavJava);
		mainNavJava = "";
	}
}

//hide the sub nav item
function hideNav(navitem) {
	if (document.layers) { // check for netcrap
		if (document.layers[navitem]) {
			document.layers[navitem].visibility = 'hide';
			lastID = undefined;
		}
	} else {
		if (document.getElementById(navitem)) {
			document.getElementById(navitem).style.display = 'none';
			lastID = undefined;
		}
	}
	if (mainNavJava != "" ) { // run any pending javascript in variable for mouse out
		eval(mainNavJava);
		mainNavJava = "";
	}
}


// set the position of the sub menu
function navPosition(topitem) {
	if(!document.layers){ // check for netcrap
		thePath = "document.getElementById(topitem)";
		parentObject = eval(thePath);
		leftOffsetVariable = 0;
		
		while (parentObject) {
			if (parseInt(parentObject.offsetLeft)) {
				leftOffsetVariable = leftOffsetVariable + parseInt(parentObject.offsetLeft);
			}
			thePath = thePath + ".offsetParent";
			parentObject = eval(thePath);
		}
		
		thePath = "document.getElementById(topitem)";
		parentObject = eval(thePath);
		TopOffsetVariable = parentObject.offsetHeight;
		
		while (parentObject) {
			if (parseInt(parentObject.offsetTop)) {
				TopOffsetVariable = TopOffsetVariable + parseInt(parentObject.offsetTop);
			}
			thePath = thePath + ".offsetParent";
			parentObject = eval(thePath);
		}
				
		positionLeft = leftOffsetVariable;
		
		if (navigator.appName == "Microsoft Internet Explorer") {
			if (positionLeft + strWidth > document.body.clientWidth) {
				positionLeft = (document.body.clientWidth - strWidth) + "px";
			} else {
			
				if (strMenuStyleUsed == "top") {
					positionLeft = leftOffsetVariable+ "px";
				} else if (strMenuStyleUsed == "left") {
					positionLeft = leftOffsetVariable + document.getElementById(topitem).offsetWidth + "px";
				}
			}
		} else {
			if (positionLeft + strWidth > window.outerWidth) {
				positionLeft = (window.outerWidth - strWidth) + "px";
			} else {
				if (strMenuStyleUsed == "top") {
					positionLeft = leftOffsetVariable+ "px";
				} else if (strMenuStyleUsed == "left") {
					positionLeft = leftOffsetVariable + document.getElementById(topitem).offsetWidth + "px";
				}
			}
		}
		
		if (strMenuStyleUsed == "top") {
			positionTop = TopOffsetVariable+ "px";
		} else if (strMenuStyleUsed == "left") {
			positionTop = TopOffsetVariable - document.getElementById(topitem).offsetHeight + "px";
		}
		
	} else {
		positionLeft = 10;
		positionTop = 10;
	}
}

function changeNav(navitem,value,background,bgvalue) {
	if (!document.layers) { // check for netcrap
		if (document.getElementById(navitem)) {
			strNav = 'document.getElementById("'+navitem+'").style.color = "'+value+'"';
			eval(strNav);
			strNav = 'document.getElementById("'+navitem+'").style.' + background + ' = "'+bgvalue+'"';
			eval(strNav);
		}
	}
}



/******************************************   FUNCTIONS FOR THIRD LEVEL NAVIGATION *****************************************/
var subtimerID = null;
var subtimerOn = false;
var sublastID = undefined;

//start delay for sub nav item
function subStartTime(subitem) {
	if (subtimerOn == false) { //make sure the timer is not already started
		sublastID = subitem; //set the last item over to current item
 		subtimerID = setTimeout("hideSub('" + subitem + "');", 800);//set timeout functions and delay time in milliseconds *** setTimeout("FUNCTIONS", TIME);
		subtimerOn = true; //set the timer check to true
 	} 
}

//stop delay for sub nav item
function substopTime(subitem) {
 	if (subtimerOn) { //check if timer is on
		if (subitem != sublastID) { //make sure last item over is not the current item
			if (document.layers) { // check for netcrap
				if (document.layers[sublastID]) {
					hideSub(sublastID); //run hide function for last item over
				}
			} else {
				if (document.getElementById(sublastID)) {
					hideSub(sublastID); //run hide function for last item over
				}
			}
		}
 		clearTimeout(subtimerID); //stop the timeout function
 		subtimerID = null; //set timer id to null
 		subtimerOn = false; //set timer check to false
 	}
 }

//show the sub nav item
function showSub(subitem,parentLayer,imageNo,imageNo2) {
	if (document.layers) { // check for netcrap
		if (document.layers[lastID].document.layers[subitem]) {
			if (document.layers[lastID].document.images[imageNo].x + document.images[imageNo2].x + strWidth > window.outerWidth) {
				document.layers[lastID].document.images[imageNo].align = strNNImageAlign;
				document.layers[lastID].document.layers[subitem].x = document.layers[lastID].document.images[imageNo].x - strWidth + 60;
			} else {
				document.layers[lastID].document.layers[subitem].x = document.layers[lastID].document.images[imageNo].x + subLeftFixNN4;
			}
			document.layers[lastID].document.layers[subitem].y = document.layers[lastID].document.images[imageNo].y + subTopFixNN4;
			document.layers[lastID].document.layers[subitem].visibility = 'show'; //show item
			if (subitem != sublastID) {
				if (document.layers[lastID].document.layers[sublastID]) {
					document.layers[lastID].document.layers[sublastID].visibility = 'hide';
				}
			}
		} else {
			if (sublastID != undefined) {//check that lat sub is not undefined
				if (document.layers[lastID].document.layers[sublastID]) {
					hideSub(sublastID); //run hide function for last item over
				}
			}
		}
	} else {
		if (document.getElementById(subitem)) {
			document.getElementById(subitem).style.display = 'block'; //show item
			checkPosition(subitem);
		} else {
			if (sublastID != undefined) {//check that lat sub is not undefined
				if (document.getElementById(sublastID)) {
					hideSub(sublastID); //run hide function for last item over
				}
			}
		}
	}
}

//hide the sub nav item
function hideSub(subitem) {
	if (document.layers) { // check for netcrap
		if (document.layers[lastID]) {
			if (document.layers[lastID].document.layers[subitem]) {
				document.layers[lastID].document.layers[subitem].visibility = 'hide';//hide item
				sublastID = undefined;
			}
		}
	} else {
		if (document.getElementById(subitem)) {
			document.getElementById(subitem).style.display = 'none';//hide item
			sublastID = undefined;
		}
	}
}

function checkPosition(subitem) {
	if(navigator.appName == "Microsoft Internet Explorer"){
		if (document.getElementById(subitem)) {
			if (document.getElementById(subitem).offsetParent.offsetParent.offsetLeft + strSubWidth + strWidth > document.body.clientWidth) {
				document.getElementById(subitem).style.left = -1 * (strWidth-2);
			} else {
				document.getElementById(subitem).style.left = strWidth;
			} 
		}
	} else {
		if (document.getElementById(subitem)) {
			if (document.getElementById(subitem).offsetParent.offsetParent.offsetLeft + strSubWidth + strWidth > window.outerWidth) {
				document.getElementById(subitem).style.left = -1 * (strWidth-2) + "px";
			} else {
				document.getElementById(subitem).style.left = strWidth + "px";
			} 
		}
	}
}

// Functions to create menu elements

var subOpen = 0;
var navOpen=0;
var linkOpen = 0;
var subHide = undefined;
var topFix = "";
var defaultBGOver = strBGOver;
var defaultBGRegular = strBGRegular;

function createNav(categoryID,subcategoryID,NavName,NavLink,NavBG,NavBGOver,NavBGOut) {
	
	if (NavBG != undefined && strBackgroundValue == "backgroundImage") {
		newBG = " style='background-image:url(" + NavBG + ");'";
	} else {
		newBG = ""
	}
	if (NavBGOver != undefined && strBackgroundValue == "backgroundImage") {
		strBGOver = "url(" + NavBGOver + ")";
	} else {
		strBGOver = defaultBGOver;
	}
	if (NavBGOut != undefined && strBackgroundValue == "backgroundImage") {
		strBGRegular = "url(" + NavBGOut + ")";
	} else {
		strBGRegular = defaultBGRegular;
	}
	
	if (subOpen == 1) {
		if (document.layers) { // check for netcrap
			document.write("</table></layer>");
		} else {
			document.write("</ul>");
		}
		subOpen = 0;
	}
	
	if (linkOpen == 1) {
		if (!document.layers) { // check for netcrap
			document.write("</li>");
		}
		linkOpen = 0;
	}
	
	if (navOpen == 0) {
		if (document.layers) { // check for netcrap
			document.write("<layer class='menu' id='sub" + categoryID + "' width='100%' height='100%' visibility='hide'><table width='" + strWidth + "' class='subnav' bordercolor='" + strBorderColor + "' border='" + strBorderWidth + "' cellpadding='0' cellspacing='0'>");
		} else {
			document.write("<ul id=\"sub" + categoryID + "\" class=\"menu\" onMouseOver=\"stopTime('sub" + categoryID + "');\" onMouseOut=\"startTime('sub" + categoryID + "');\">");
		}
		navOpen = 1;
	}
	if (document.layers) { // check for netcrap
		document.write("<tr><td class='subnav'><a href=" + NavLink + " class=subnav id=nav" + categoryID + "-" + subcategoryID + " onMouseOver=showSub('sub" + categoryID + "-" + subcategoryID + "','sub" + categoryID + "','img" + categoryID + "-" + subcategoryID + "','img" + categoryID + "');substopTime('sub" + categoryID + "-" + subcategoryID + "');stopTime('sub" + categoryID + "'); onMouseOut=subStartTime('sub" + categoryID + "-" + subcategoryID + "');startTime('sub" + categoryID + "');>" + NavName + "</a><img src='images/dotblank.gif' width=1 height=1 align='right' name='img" + categoryID + "-" + subcategoryID + "'></td></tr>");
	} else {
		document.write("<li onMouseOver=\"showSub('sub" + categoryID + "-" + subcategoryID + "');substopTime('sub" + categoryID + "-" + subcategoryID + "');changeNav('nav" + categoryID + "-" + subcategoryID + "',strColorOver,strBackgroundValue,'" + strBGOver + "');\" onMouseOut=\"subStartTime('sub" + categoryID + "-" + subcategoryID + "');changeNav('nav" + categoryID + "-" + subcategoryID + "',strFontColor,strBackgroundValue,'" + strBGRegular + "');\"><a href=\"" + NavLink + "\" class=\"subnav\" id=\"nav" + categoryID + "-" + subcategoryID + "\"" + newBG + ">" + NavName + "</a>");
	}
	linkOpen = 1;
}

var defaultSubBGOver = strSubBGOver;
var defaultSubBGRegular = strSubBGRegular;

function createSub(categoryID,subcategoryID,pageID,NavName,NavLink,subNavBG,subNavBGOver,subNavBGOut) {
	
	if (subNavBG != undefined && strSubBackgroundValue == "backgroundImage") {
		newSubBG = " style='background-image:url(" + subNavBG + ");'";
	} else {
		newSubBG = ""
	}
	if (subNavBGOver != undefined && strSubBackgroundValue == "backgroundImage") {
		strSubBGOver = "url(" + subNavBGOver + ")";
	} else {
		strSubBGOver = defaultSubBGOver;
	}
	if (subNavBGOut != undefined && strSubBackgroundValue == "backgroundImage") {
		strSubBGRegular = "url(" + subNavBGOut + ")";
	} else {
		strSubBGRegular = defaultSubBGRegular;
	}
	
	if (subOpen == 0) {
		if (document.layers) { // check for netcrap
			document.write("<layer visibility='hide' id='sub" + categoryID + "-" + subcategoryID + "'><table width='" + strSubWidth + "' class='subnav2' bordercolor='" + strSubBorderColor + "' border='" + strSubBorderWidth + "' cellpadding='0' cellspacing='0' bgcolor='" + strSubBGColor + "'>");
		} else {
			document.write("<ul id=\"sub" + categoryID + "-" + subcategoryID + "\" class=\"submenu\">");
			topFix = "class=\"topfix\"";
		}
		subOpen = 1;
	}
	if (document.layers) { // check for netcrap
		document.write("<tr><td class='subnav2'><a href='" + NavLink + "' onMouseOver=showSub('sub" + categoryID + "-" + subcategoryID + "','sub" + categoryID + "','img" + categoryID + "-" + subcategoryID + "','img" + categoryID + "');substopTime('sub" + categoryID + "-" + subcategoryID + "');stopTime('sub" + categoryID + "'); onMouseOut=subStartTime('sub" + categoryID + "-" + subcategoryID + "');startTime('sub" + categoryID + "'); class='subnav2'>" + NavName + "</a></td></tr>");
	} else {
		document.write("<li " + topFix + " onMouseOver=\"changeNav('2nav" + subcategoryID + "-" + pageID + "',strSubColorOver,strSubBackgroundValue,'" + strSubBGOver + "');\" onMouseOut=\"changeNav('2nav" + subcategoryID + "-" + pageID + "',strSubFontColor,strSubBackgroundValue,'" + strSubBGRegular + "');\"><a href=\"" + NavLink + "\" class=\"subnav2\" id=\"2nav" + subcategoryID + "-" + pageID + "\" " + newSubBG + ">" + NavName + "</a></li>");
	}
	topFix ="";
}
	
function closeUL() {
	if (subOpen == 1) {
		if (document.layers) { // check for netcrap
			document.write("</table></layer>");
		} else {
			document.write("</ul></li>");
		}
		subOpen = 0;
		linkOpen = 0;
	}
	
	if (navOpen == 1) {
		if (document.layers) { // check for netcrap
			document.write("</table></layer>");
		} else {
			document.write("</ul>");
		}
		navOpen = 0;
	}
}


/*
--------------------------------------------- Changes By Date --------------------------------------------

	Nov 2, 2005
		Changes made to keep top level of navigation in over state while in dropdown menus
			21 - Added Variable mainNavJava to hold the functions that were ran by the onMouseOut action.  Now runs commands with menu timing
		    106-109 - Added if statement to run javascript held in mainNavJava variable
			125-128 - Added if statement to run javascript held in mainNavJava variable
	
	Nov 3, 2005
		Changes made to allow the setting of the individual backgrounds of each menu item on second level
			325-326 - 2 Variables to hold default background values
			328 - Added three variable reads to funcation (backgroundStart/backgroundOver/backgroundOut)
			330-344 - 3 if statements to set variable for background images
			373 - '" + strBGOver + "' replaced strBGOver and a newBG was added for changes above
		Same as above for third level
			378-379
			381
			383-397
			411
			
----------------------------------------------------------------------------------------------------------
*/
