/***********************************************************************************************************************/
/*												SnapMenu Version 1.1												   */
/*											  © 2005 Snap Technologies												   */
/*											   written by: Doug Clegg 												   */
/***********************************************************************************************************************/


/********* Netcrap Variables for positioning *********/
var NNitem;
var leftFixNN4 = -10;
var topFixNN4 = 8;
var subLeftFixNN4 = 7;
var subTopFixNN4 = -25;


// *********************************** DO NOT CHANGE BELOW ***********************************

/***** 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
				}
			}
		}
	}
}

//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;
		}
	}
}


// 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 = "";

function createNav(categoryID,subcategoryID,NavName,NavLink) {
	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 + "\">" + NavName + "</a>");
	}
	linkOpen = 1;
}

function createSub(categoryID,subcategoryID,pageID,NavName,NavLink) {
	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 + "\">" + 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;
	}
}

