﻿			var gNextPage = ""; // global that holds next page [******edit this in local page*******]
			var gPrevPage = "";//null; // global that holds previous page [******edit this in local page*******]
			var gHomePage = "../../index.html"; // global that holds the home page [******edit this in local page*******]
			var gNxtLabls = null; // global that holds the next-labels page, if it exists [*************************edit this*******]
			var gMaxN = 10; // global that holds maximum # labels (ten = absolute max) [******edit this in local page*******]
			var gLoopN = 1; // global that holds pointer to last label displayed by spacebar loop
			var gFlgFirst = true; // global that holds a flag signaling first time into loop
			var gLblToHide = "lbl1"; // global that holds label div to hide (=last shown)
			var gAnsToHide = "ans1"; // global that holds ansDiv to hide (=last shown)
			var gButToChngRef = null; // global that holds a ref to a hilited number-button for a class change
			gRef = null; // global that holds screen number-button to restore class to Norm (=last hilited)
	
			function doNxtLabels() { // called by other labels (^) button
				//alert("In doNxtLabels"); // debug alert	
				if (gNxtLabls == null) { // a file name for next labels does not exist
					alert("Sorry, additional labels are not availablle for this image");}
				else { // a file name for next labels exists
					alert("Click OK to view other labels for this image");
					document.location.href = gNxtLabls;
					}
			}

			function classSwitch(pElemRef, pClass) { // called by mouseover/out of numA div
				//alert("In classSwitch"); // debug alert	
				pElemRef.className = pClass; // change class of element
				if (gButToChngRef != null) {gButToChngRef.className="numNorm"}; // restore a previously hilited screen number-button to class "numNorm"
				gButToChngRef = null; // load no currently hilited number button ref into global var
				//document.getElementById(gLblToHide).style.visibility = "hidden";// hide previous label (ID in global)
				//document.getElementById(gAnsToHide).style.visibility = "hidden";// hide last ansDiv (ID in global)
			}

			function classChange(pElemRef, pClass) { // called by next, prev, home, & ? mouseover/out handlers
				//alert("In classChange"); // debug alert	
				pElemRef.className = pClass; // change class of element
				if (gButToChngRef != null) {gButToChngRef.className="numNorm"}; // restore a previously hilited screen number-button to class "numNorm"
				gButToChngRef = null; // load no currently hilited number button ref into global var
				document.getElementById(gLblToHide).style.visibility = "hidden";// hide previous label (ID in global)
				document.getElementById(gAnsToHide).style.visibility = "hidden";// hide last ansDiv (ID in global)
			}		

			function goWhere(pWhere) { // called by next, prev, & home buttons or keys
				if (pWhere == 'N') mWhere = gNextPage; // load global var (which could be null)
				else 
					{if (pWhere == 'P') mWhere = gPrevPage;
						else 
							if (pWhere == 'H') mWhere = gHomePage;
					}
				//alert("In goWhere " + pWhere + "   " + mWhere); // debug alert	
				if (mWhere) document.location.href = mWhere; // load chosen page unless null
				else { // mWhere= null
					if (pWhere == 'P') alert("This is the first image of this region/plane category!");
					if (pWhere == 'N') alert("This is the last image of this region/plane category!");
					}
					
			}

			function shwHelp() { // called by help (?) button
				//alert("In shwHelp"); // debug alert	
				// open window describing label options
				keyInfoWindowRef= window.open("../../help.html","helpWindow","scrollbars=0,width=650,menubar=0,left=30,top=30");

			}

			function shwLabel(pElemRef, pClass, pLblStr) { // called by a number-button mouseover 
				//alert("In shwLabel " );// debug alert   
				if (pElemRef == gButToChngRef) return; // only perfom mouseover tasks once
				pElemRef.className = pClass; // change class of element
				if (gButToChngRef != null) {gButToChngRef.className="numNorm"}; // restore a previously hilited screen number-button to class "numNorm"
				hideAll(); //  hide all structure labels
				gButToChngRef = pElemRef; // load current hilited number button ref into global var
				//xxxdocument.getElementById(gLblToHide).style.visibility = "hidden";// hide previous label (ID in global)
				gLblToHide = pLblStr; // update label to hide, load into global var
				document.getElementById(pLblStr).style.visibility = "visible";// show corresponding label
				document.getElementById(gAnsToHide).style.visibility = "hidden";// hide last ansDiv (ID in global)
			}		

			function xxxOLDshwLabel(pElemRef, pClass, pLblStr) { // called by a number-button mouseover 
				//alert("In shwLabel " );// debug alert   
				if (pElemRef == gButToChngRef) return; // only perfom mouseover tasks once
				pElemRef.className = pClass; // change class of element
				if (gButToChngRef != null) {gButToChngRef.className="numNorm"}; // restore a previously hilited screen number-button to class "numNorm"
				gButToChngRef = pElemRef; // load current hilited number button ref into global var
				document.getElementById(gLblToHide).style.visibility = "hidden";// hide previous label (ID in global)
				gLblToHide = pLblStr; // update label to hide, load into global var
				document.getElementById(pLblStr).style.visibility = "visible";// show corresponding label
				document.getElementById(gAnsToHide).style.visibility = "hidden";// hide last ansDiv (ID in global)
			}		

			function showAll(pElemRef) { // called by clicking the A button or hitting the keyboard A or a
				//alert("In showAll  ");// debug alert
				var lablN;
				for (var i=0; i<gMaxN; i++) {
					lablN = "lbl" + i;
					document.getElementById(lablN).style.visibility = "visible"; //show labels over structures
				}
				if (gButToChngRef != null) {gButToChngRef.className="numNorm"}; // restore a previously hilited screen number-button to class "numNorm"
				//document.getElementById("numA").className="numOver"; // hi-light the A button -- ineffective due to mouseout 
			}		

			function hideAll() { // called by shwLabel() to hide all structure labels
				//alert("In hideAll  ");// debug alert
				var lablN;
				for (var i=0; i<gMaxN; i++) {
					lablN = "lbl" + i;
					document.getElementById(lablN).style.visibility = "hidden"; //hide labels over structures
				}
			}		

			function hideLabel() { // called by a number-button mouseout ***************************************************** delete this function
				//alert("In hideLabel  " + gLblToHide);// debug alert
				//document.getElementById(gLblToHide).style.visibility = "hidden";//hide label loaded into global var
			}		
 
 			function doLoop() { // called by a space bar press
				//alert("In doLoop  " + gLoopN);// debug alert
				document.getElementById(gLblToHide).style.visibility = "hidden";// hide previous label (ID in global)
				document.getElementById(gAnsToHide).style.visibility = "hidden";// hide last ansDiv (ID in global)
				if (gButToChngRef != null) {gButToChngRef.className="numNorm"}; // restore a previously hilited screen number-button to class "numNorm"
				mLblID = "lbl" + gLoopN; // construct lbl#
				document.getElementById(mLblID).style.visibility = "hidden";// hide previously displayed label (arrrow/dot)
				mAnsID = "ans" + gLoopN;  // construct ans#
				document.getElementById(mAnsID).style.visibility = "hidden";// hide last ansDiv 
				gLoopN++; // increment pointer (for next display)
				if (gFlgFirst) { // if first time into loop, item 1 has not yet been displayed
					//alert("In if gFlgFirst  " + gFlgFirst);// debug alert
					gLoopN--; // decrement pointer for next display (back to item 1)
					gFlgFirst = false; // set first-time-into-loop flag to false
				} 
				if (gLoopN > gMaxN) gLoopN = 1; // resent pointer to items = 1 (applies when gMaxN is < 10)
				if (gLoopN == 10) gLoopN = 0; // zero replaces 10 in IDs
				mLblID = "lbl" + gLoopN; // construct lbl#
				document.getElementById(mLblID).style.visibility = "visible";// displayed label (arrrow/dot)
				mAnsID = "ans" + gLoopN;  // construct ans#
				document.getElementById(mAnsID).style.visibility = "visible";// display ansDiv 
				gLblToHide = mLblID; // update label to hide (ID in global), for non-loop events
				gAnsToHide = mAnsID; // update answer to hide (ID in global), for non-loop events
			}		

			function numClick(pElemRef,pN) { // called by a number-button onclick
				//alert("In numClick " + pN);// debug alert
				//pElemRef.style.visibility = "hidden"; // hide the screen number-button !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!want to hide????????????
				mAns = "ans" + pN; // generate ID for ansDiv 
				document.getElementById(mAns).style.visibility = "visible";// show corresponding answer
				gAnsToHide = mAns; // load ansDiv to hide into global var
			}		

			function navOver(pID){ // called by a navigation button rollover
				//alert("In navOver " + pID);// debug alert
				document.getElementById(pID).style.visibility = "visible";// show navigation button hint text
			}		

			function navOut(pID){ // called by a navigation button rollout
				//alert("In navOut " + pID);// debug alert
				document.getElementById(pID).style.visibility = "hidden";// hide navigation button hint text
			}		

			function hideAns(pElemRef) { // called by a ansDiv onclick to hide pop-up answer *************** feature not being implemented **********
				//  *************** un-comment lines to implement this feature **********
				//alert("In hideAns");// debug alert
				//pElemRef.style.visibility = "hidden"; // hide the ansDiv
				//document.getElementById(gLblToHide).style.visibility = "hidden";// hide associated label (in global)
			}
			
				function procKeyDwn(pEvnt) { // called by body onkeydowm event handler to process key down
			   //alert("In procKeyDwn, pEvnt = " +pEvnt); // debug alert
				evntRef = (pEvnt) ? pEvnt : ((window.event) ? event : null); // get ref to event object
				if (evntRef) { // not null
					switch (evntRef.keyCode) {
						case 97: // keypad = 1
							 //alert("In processKey, 1: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 mRef = document.getElementById("num1"); // get reference to numDiv
							 shwLabel(mRef,'numOver','lbl1');
							 break;					
						case 49: //  keyboard = 1
							 //alert("In processKey, 1: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 mRef = document.getElementById("num1"); // get reference to numDiv
							 shwLabel(mRef,'numOver','lbl1');
							 break;					
						case 98: // keypad  = 2
							 //alert("In processKey, 2: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 mRef = document.getElementById("num2"); // get reference to numDiv
							 shwLabel(mRef,'numOver','lbl2');
							 break;					
						case 50: //  keyboard = 2
							 //alert("In processKey, 1: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 mRef = document.getElementById("num2"); // get reference to numDiv
							 shwLabel(mRef,'numOver','lbl2');
							 break;					
						case 99: // keypad = 3
							 //alert("In processKey, 3: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 mRef = document.getElementById("num3"); // get reference to numDiv
							 shwLabel(mRef,'numOver','lbl3');
							 break;					
						case 51: //  keyboard = 3
							 //alert("In processKey, 3: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 mRef = document.getElementById("num3"); // get reference to numDiv
							 shwLabel(mRef,'numOver','lbl3');
							 break;					
						case 100: // keypad = 4
							 //alert("In processKey, 4: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 mRef = document.getElementById("num4"); // get reference to numDiv
							 shwLabel(mRef,'numOver','lbl4');
							 break;					
						case 52: //  keyboard = 4
							 //alert("In processKey, 4: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 mRef = document.getElementById("num4"); // get reference to numDiv
							 shwLabel(mRef,'numOver','lbl4');
							 break;					
						case 101: // keypad = 5
							 //alert("In processKey, 5: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 mRef = document.getElementById("num5"); // get reference to numDiv
							 shwLabel(mRef,'numOver','lbl5');
							 break;					
						case 53: //  keyboard = 5
							 //alert("In processKey, 5: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 mRef = document.getElementById("num5"); // get reference to numDiv
							 shwLabel(mRef,'numOver','lbl5');
							 break;					
						case 102: // keypad = 6
							 //alert("In processKey, 6: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 mRef = document.getElementById("num6"); // get reference to numDiv
							 shwLabel(mRef,'numOver','lbl6');
							 break;					
						case 54: //  keyboard = 6
							 //alert("In processKey, 6: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 mRef = document.getElementById("num6"); // get reference to numDiv
							 shwLabel(mRef,'numOver','lbl6');
							 break;					
						case 103: // keypad = 7
							 //alert("In processKey, 7: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 mRef = document.getElementById("num7"); // get reference to numDiv
							 shwLabel(mRef,'numOver','lbl7');
							 break;					
						case 55: //  keyboard = 7
							 //alert("In processKey, 7: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 mRef = document.getElementById("num7"); // get reference to numDiv
							 shwLabel(mRef,'numOver','lbl7');
							 break;					
						case 104: // keypad = 8
							 //alert("In processKey, 8: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 mRef = document.getElementById("num8"); // get reference to numDiv
							 shwLabel(mRef,'numOver','lbl8');
							 break;					
						case 56: //  keyboard = 8
							 //alert("In processKey, 8: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 mRef = document.getElementById("num8"); // get reference to numDiv
							 shwLabel(mRef,'numOver','lbl8');
							 break;					
						case 105: // keypad = 9
							 //alert("In processKey, 9: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 mRef = document.getElementById("num9"); // get reference to numDiv
							 shwLabel(mRef,'numOver','lbl9');
							 break;					
						case 57: //  keyboard = 9
							 //alert("In processKey, 9: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 mRef = document.getElementById("num9"); // get reference to numDiv
							 shwLabel(mRef,'numOver','lbl9');
							 break;					
						case 96: // keypad = 0
							 //alert("In processKey, 0: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 mRef = document.getElementById("num0"); // get reference to numDiv
							 shwLabel(mRef,'numOver','lbl0');
							 break;					
						case 48: //  keyboard = 0
							 //alert("In processKey, 0: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 mRef = document.getElementById("num0"); // get reference to numDiv
							 shwLabel(mRef,'numOver','lbl0');
							 break;					
						default:
							 //alert("In procKeyDwn, key???: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 break;
					}
				}
			}
			
			function procKeyUp(pEvnt) { // called by body onkeydowm event handler to process key up
			   //alert("In procKeyUp, pEvnt = " +pEvnt); // debug alert
				evntRef = (pEvnt) ? pEvnt : ((window.event) ? event : null); // get ref to event object
				if (evntRef) { // not null
					switch (evntRef.keyCode) {
						case 65: // keyboard = a or A
							 //alert("In processKey, a or A: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 showAll(); // show all labels
							 break;					
						case 97: // keypad = 1
							 //alert("In processKey, 1: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 mRef = document.getElementById("num1"); // get reference to numDiv
							 numClick(mRef,'1');
							 break;					
						case 49: //  keyboard = 1
							 //alert("In processKey, 1: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 mRef = document.getElementById("num1"); // get reference to numDiv
							 numClick(mRef,'1');
							 break;					
						case 98: // keypad  = 2
							 //alert("In processKey, 2: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 mRef = document.getElementById("num2"); // get reference to numDiv
							 numClick(mRef,'2');
							 break;					
						case 50: //  keyboard = 2
							 //alert("In processKey, 2: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 mRef = document.getElementById("num2"); // get reference to numDiv
							 numClick(mRef,'2');
							 break;					
						case 99: // keypad = 3
							 //alert("In processKey, 3: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 mRef = document.getElementById("num3"); // get reference to numDiv
							 numClick(mRef,'3');
							 break;					
						case 51: //  keyboard = 3
							 //alert("In processKey, 3: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 mRef = document.getElementById("num3"); // get reference to numDiv
							 numClick(mRef,'3');
							 break;					
						case 100: // keypad = 4
							 //alert("In processKey, 4: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 mRef = document.getElementById("num4"); // get reference to numDiv
							 numClick(mRef,'4');
							 break;					
						case 52: //  keyboard = 4
							 //alert("In processKey, 4: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 mRef = document.getElementById("num4"); // get reference to numDiv
							 numClick(mRef,'4');
							 break;					
						case 101: // keypad = 5
							 //alert("In processKey, 5: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 mRef = document.getElementById("num5"); // get reference to numDiv
							 numClick(mRef,'5');
							 break;					
						case 53: //  keyboard = 5
							 //alert("In processKey, 5: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 mRef = document.getElementById("num5"); // get reference to numDiv
							 numClick(mRef,'5');
							 break;					
						case 102: // keypad = 6
							 //alert("In processKey, 6: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 mRef = document.getElementById("num6"); // get reference to numDiv
							 numClick(mRef,'6');
							 break;					
						case 54: //  keyboard = 6
							 //alert("In processKey, 6: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 mRef = document.getElementById("num6"); // get reference to numDiv
							 numClick(mRef,'6');
							 break;					
						case 103: // keypad = 7
							 //alert("In processKey, 7: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 mRef = document.getElementById("num7"); // get reference to numDiv
							 numClick(mRef,'7');
							 break;					
						case 55: //  keyboard = 7
							 //alert("In processKey, 7: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 mRef = document.getElementById("num7"); // get reference to numDiv
							 numClick(mRef,'7');
							 break;					
						case 104: // keypad = 8
							 //alert("In processKey, 8: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 mRef = document.getElementById("num8"); // get reference to numDiv
							 numClick(mRef,'8');
							 break;					
						case 56: //  keyboard = 8
							 //alert("In processKey, 8: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 mRef = document.getElementById("num8"); // get reference to numDiv
							 numClick(mRef,'8');
							 break;					
						case 105: // keypad = 9
							 //alert("In processKey, 9: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 mRef = document.getElementById("num9"); // get reference to numDiv
							 numClick(mRef,'9');
							 break;					
						case 57: //  keyboard = 9
							 //alert("In processKey, 9: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 mRef = document.getElementById("num9"); // get reference to numDiv
							 numClick(mRef,'9');
							 break;					
						case 96: // keypad = 0
							 //alert("In processKey, 0: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 mRef = document.getElementById("num0"); // get reference to numDiv
							 numClick(mRef,'0');
							 break;					
						case 48: //  keyboard = 0
							 //alert("In processKey, 0: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 mRef = document.getElementById("num0"); // get reference to numDiv
							 numClick(mRef,'0');
							 break;					
						case 37: //  keyboard = left arrow
							 // alert("In processKey, left: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 goWhere('P');
							 break;					
						case 188: //  keyboard = less than
							 // alert("In processKey, left: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 goWhere('P');
							 break;					
						case 39: //  keyboard = right arrow
							 // alert("In processKey, right: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 goWhere('N');
							 break;
						case 190: //  keyboard = greater than
							 // alert("In processKey, right: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 goWhere('N');
							 break;
						case 27: //  keyboard = esc
							 // alert("In processKey, esc: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 goWhere('H');
							 break;
						case 191: //  keyboard = ?
							 //alert("In processKey, spacebar: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 shwHelp();
							 break;
						case 32: //  keyboard = spacebar
							 //alert("In processKey, spacebar: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 doLoop();
							 break;
						default:
							 //alert("In procKeyUp, key???: evntRef.keyCode = " + evntRef.keyCode); // debug alert
							 break;
					}
				}
			}
