/*COPYRIGHT © JAMES WAKEFIELD 2003sTopic is being used as a variable name in drill pages for IO_menu -- here it is being used to match with menu_data.js information?  is it necessary that bothuse that variable name?  could it be changed here to have less confusion?see main_menu.js and variables/main_menu_data.js for original approach -- variables/menu_data.js also provides detailsdocument.write(horizMenu) command will probably appear in actual pagesMenuLevel1 is the old sThisDirectorysMenuLevel2 is the old sThisCategorysMenuLevel3 is the old sThisPageThe way I have it right now is to make the links relative -- so all of the pages should be on this server -- but with the sRoot variable, the address could become absolute, which is good for the AOL page, where I'm directing from the AOL page to the corresponding ChemPractice page*/	var nDrills = 0	// initialized -- modified in JUMP-TO MENU	var nUnlim = 0	// corresponds to number of unlimited drills, also figured in JUMP-TO MENU	var horizMenu	var level1Line = ""	var level2Line = ""	var level3Line = ""	var bg1bold = "9999CC"		// 9999CC	var bg2bold = "FFFF99"		// FFFF99	var bg3bold = "FFFFFF"		// terminal -- should be white or color of background	var bg1norm = "999966"		// have tried 999966 and BBBBBB -- text is white	var sRoot = "http://www.chempractice.com";//	var drillsMenu = ""	var sURLprefix = (sMenuLevel1 != "chempractice") ? "../" : ""	var sURL	var sJumpToMenu = ""	// start blank//	var sJumpToMenu = "<OPTION VALUE=\"\">(drills ordered by topic)"	// first line	var bContinue = false	var sTableFeatures = " WIDTH=100% BORDER=0 CELLSPACING=0 CELLPADDING=4"	var bIE = (navigator.appName.indexOf('Microsoft') != -1)			// true if Internet Explorer	var bPC = (navigator.platform.indexOf('Mac') == -1)					// true if Windows/Unix/Linux	var bOld = (parseInt(navigator.appVersion) < 4 || navigator.appVersion.indexOf("4.0") != -1)	/////////// TOP ROWfor (i = 0; i < mainMenuSet.length; i++) {//	if (mainMenuSet[i].indexOf("#U#") != -1) continue		// #U# is for undocumented	var elementsArray = mainMenuSet[i].split (" | ")	sURL = elementsArray[1]	if (sMenuLevel1 != "chempractice") bContinue = true	if (!sMenuLevel2 && (elementsArray[1] == "" || elementsArray[1] == sMenuLevel1)) elementsArray[2] += " (you are viewing this page)"	if (bIE) level1Line += ((elementsArray[1] == sMenuLevel1) || (elementsArray[1] == "" && sMenuLevel1 == "chempractice")) ? menuItem("#" + bg1bold, "IE_bold_1") : menuItem("#" + bg1norm, "IE_norm_1")	else level1Line += ((elementsArray[1] == sMenuLevel1) || (elementsArray[1] == "" && sMenuLevel1 == "chempractice")) ? menuItem("#" + bg1bold, "NN_bold_1") : menuItem("#" + bg1norm, "NN_norm_1")}horizMenu = menuLine(level1Line)	// assemble top row/////////// SECOND ROW if neededif (bContinue) {			// decided in above routine	bContinue = false	// reset	for (i = 0; i < eval(sMenuLevel1 + "MenuSet.length"); i++) {//		eval ("if (" + sMenuLevel1 + "MenuSet[i].indexOf(\"#U#\") != -1) continue")		// #U# is for undocumented		eval ("var elementsArray = " + sMenuLevel1 + "MenuSet[i].split (\" | \")")		sURL = sMenuLevel1 + "/" + elementsArray[1] + ".shtml"		if (elementsArray[1] != sMenuLevel2) level2Line += (bIE) ? menuItem("#" + bg1bold, "IE_norm_2") : menuItem("#" + bg1bold, "NN_norm_2")		else if ((elementsArray[3].indexOf("#T#") == -1) && (elementsArray[3].indexOf("#M#") == -1)) {				bContinue = true		// setup for next step				if (!sMenuLevel3) elementsArray[2] += " (you are viewing this page)"				level2Line += (bIE) ? menuItem("#" + bg2bold, "IE_bold_3") : menuItem("#" + bg2bold, "NN_bold_3")			}			else {				elementsArray[2] += " (you are viewing this page)"				level2Line += (bIE) ? menuItem("#" + bg3bold, "IE_bold_3") : menuItem("#" + bg3bold, "NN_bold_3")			}	}	horizMenu += menuLine(level2Line, "#" + bg1bold)}/////////// THIRD ROW if neededif (bContinue) {			// decided in above routine	for (i = 0; i < eval(sMenuLevel2 + "MenuSet.length"); i++) {//		eval ("if (" + sMenuLevel2 + "MenuSet[i].indexOf(\"#U#\") != -1) continue")		// #U# is for undocumented		eval ("var elementsArray = " + sMenuLevel2 + "MenuSet[i].split (\" | \")")		sURL = sMenuLevel2 + "/" + elementsArray[1] + ".shtml"		if (elementsArray[1] == sMenuLevel3) elementsArray[2] += " (you are viewing this page)"		if (bIE) level3Line += (elementsArray[1] == sMenuLevel3) ? menuItem("#" + bg3bold, "IE_bold_3") : menuItem("#" + bg2bold, "IE_norm_3")		else level3Line += (elementsArray[1] == sMenuLevel3) ? menuItem("#" + bg3bold, "NN_bold_3") : menuItem("#" + bg2bold, "NN_norm_3")	}	horizMenu += menuLine(level3Line, "#" + bg2bold)}/////////// JUMP-TO MENU (and subroutine for page-topic drill list?)for (i = 0; i < drillsMenuSet.length; i++) {	var drillsArray = drillsMenuSet[i].split (" | ")/*///// A TOPIC PAGE WILL NEED A LIST MENU:		if (drillsArray[1] == sMenuLevel3) {		listMenuSetUp()	}*/	sJumpToMenu += "<OPTION VALUE=\"\">_______________________________<OPTION VALUE=\"" + drillsArray[1] + "\">" + drillsArray[0].toUpperCase()	for (j = 0; j < eval(drillsArray[1] + "MenuSet.length"); j++) {			nDrills++		//		if (eval(drillsArray[1] + "MenuSet[j].indexOf('unlimited') != -1")) nUnlim++				eval ("var elementsArray = " + drillsArray[1] + "MenuSet[j].split (\" | \")")		if (elementsArray[3].indexOf('unlimited') != -1) nUnlim++		sJumpToMenu += "<OPTION VALUE=\"" + elementsArray[1] + "\">* " + elementsArray[0]	}}sJumpToMenu = "<FORM NAME=direct>Jump to:&nbsp;<SELECT NAME=\"Choices\" VALUE=\"Direct Menu\" onchange=\"jumpTo(this.form)\">" + "<OPTION VALUE=\"\">(" + nDrills + " drills covering " + drillsMenuSet.length + " topics)" + sJumpToMenu + "</SELECT></FORM>"// ********* FUNCTIONS ********* //////////////////// menuItem(background, style) ////////////function menuItem(background, style) {	return "<TD BORDER=0 BGCOLOR=" + background +"><A HREF=\"" + sURLprefix + sURL + "\" onMouseOver=\"window.status='" + elementsArray[2] + "';return true\"><DIV class=" + style + ">" + elementsArray[0] + "</DIV></A></TD>"}//////////////////  menuLine(type, color)  ///////////////////function menuLine(type, color) {	return (color) ? tempBorder(color) + "<TABLE" + sTableFeatures + "><TD BORDER=0 BGCOLOR=" + color + ">&nbsp;</TD>" + type + "<TD BORDER=0 BGCOLOR=" + color + ">&nbsp;</TD></TABLE>": "<TABLE" + sTableFeatures + ">" + type + "</TABLE>"}//////////////////////  tempBorder(color)  /////////////////////function tempBorder(color) {	return "<TABLE width=100% bgcolor= " + color + " border=0 cellspacing=0 cellpadding=0><TR><TD border=0><IMG SRC = \"" + sURLprefix + "graphics/blank_pixel.gif\" HEIGHT=5></TD></TR></TABLE>"}//////////////////////  jumpTo()  /////////////////////function jumpTo(form) {	sTopicIndex = form.Choices.selectedIndex	sTopic = form.Choices.options[sTopicIndex].textsURL = "drills/" + form.Choices.options[sTopicIndex].value + ".shtml"	if (form.Choices.options[sTopicIndex].value == "") {		alert("no item selected")		form.Choices.selectedIndex = 0	}		else location = sURLprefix + sURL}//////////////////////  listMenuSetUp()  /////////////////////function listMenuSetUp() {	listMenu = ""	if (sMenuLevel3) {		sTopic = sMenuLevel3		directory = ""	}	else {		sTopic = sMenuLevel2		directory = "../" + sMenuLevel2 + "/"	}	for (k=0; k<eval(sTopic + "MenuSet.length"); k++) {		listItem = eval(sTopic + "MenuSet[k].split (' | ')")		if (listItem[3].indexOf("unlimited") != -1) listItem[2] += " (this drill has a limitless set of questions)"		listMenu += "<A HREF='" + directory + listItem[1] + ".shtml' onMouseOver=\"window.status='" + sMenuLevel2 + "/" + listItem[1] + "';return true\" class=\"third\">" + listItem[0] + "</A><BR><DIV class='URL'>www.chempractice.com/" + sMenuLevel2 + "/" + listItem[1] + ".shtml</DIV><DIV class='comment'>" + listItem[2] + "</DIV><BR>"	}	if (eval(sTopic + "MenuSet.join().indexOf('*') != -1")) listMenu += "<BR>* indicates a page under construction"return listMenu}