<!--
//	The Part Number Builder (PNB) application uses a DHTML web interface and follows
//	all established rules pertaining to the Radial NSX part numbering scheme.
//	
//	Created by John Bair, johnb@astonics.com
//	Last updated: July 3rd, 2003
//	Copyright 2003, Astonics Inc.	
//	
//	Functions used are grouped by Global functions, or functions directly relating
//	to the step in the PNB (Part Number Builder) process. Step 1 is the connector
//	side; step 2 is the class; step 3 is the shell size; step 4 is the shell style;
//	step 5 is the insert combination code; step 6 is the contact termination code;
//	step 7 is the modification code; and step 8 is the polarization code.

// ****************** GLOBAL FUNCTIONS **************************************************************
function getSide()
{	// This function simply returns "p" if the connector side is the plug
	// or "r" if the connector side is the receptacle.
		var side = (document.getElementById("side_p").checked) ? "P" : "R" ;
		return side;
}

function proceedToStep(n)
{	// n (an integer) is the number designating the next step to be activated.
	// Advances to step n by resetting step n, making it visible, and hiding subsequent steps while clearing their PN values.
	// Values for n are: 1 (Connector Side), 2 (Class), 3 (Size), 4 (Style), 5 (Comb), 6 (Term), 7 (Mod), 8 (Pol)
		if(n == 1) resetSides();
		if(n == 2) resetClass();
		if(n == 3) resetSize();
		if(n == 4) resetStyle();
		if(n == 5) resetComb();
		if(n == 7) resetMod();
		if(n == 8) resetPol();
		
		// hide all the rest of the steps and clear all the rest of the PN values following the step 'n'...
		if(n < 2){ document.getElementById("stepClass").style.display = 'none'; document.getElementById("class").value = "";}
		if(n < 3){ document.getElementById("stepSize").style.display = 'none'; document.getElementById("size").value = "";}
		if(n < 4){ document.getElementById("stepStyle").style.display = 'none'; document.getElementById("style").value = "";}
		if(n < 5){ document.getElementById("stepComb").style.display = 'none'; document.getElementById("comb").value = "";}
		if(n < 6){ document.getElementById("stepTerm").style.display = 'none'; document.getElementById("term").value = "";}
		if(n < 7){ document.getElementById("stepMod").style.display = 'none'; document.getElementById("mod").value = "";}
		if(n < 8){ document.getElementById("stepPol").style.display = 'none'; document.getElementById("pol").value = "";}
		
		document.getElementById("btnContinue").disabled = true;
}


// ****************** STEP 1: CONNECTOR SIDE *******************************************************
function rethinkSides() //called when either plug or receptacle option box is clicked
{
		proceedToStep(2);
}

function resetSides() //called only by function: proceedToStep(1)
{
		document.getElementById("side_p").checked = false;
		document.getElementById("side_r").checked = false;
}


// ****************** STEP 2: CLASS ****************************************************************
function resetClass() // This sets the entire Class section to a neutral state
{					  // It is called by the proceedToStep(n) function when n = 2
		document.getElementById("mnu_class").options[0].selected = true;
		document.getElementById("chk_class_env").checked = false;
		document.getElementById("chk_class_grom").checked = false;
		document.getElementById("chk_class_oring").checked = false;
		document.getElementById("chk_class_oring").disabled = (getSide() == "R") ? true : false;
		document.getElementById("chk_class_bkfl").checked = false;
		document.getElementById("opt1_class").checked = false;
		document.getElementById("opt2_class").checked = false;
		document.getElementById("opt1_class").disabled = (getSide() == "P") ? true : false;
		document.getElementById("opt2_class").disabled = (getSide() == "P") ? true : false;
		document.getElementById("class").value = "";
		document.getElementById("stepClass").style.display = 'block'; 
}

function rethinkClass(whoCalled)
{		// Class values are N, C, E, H, F, or G
		// whoCalled sends the value of the button or menu that was clicked (either a class value, or 
		// 	chkEnv, chkGrom, chkOring, chkBkfl, optRR, optFR for one of the checkboxes or option-boxes)
		// The bottom line is, this function calls the setClass function and advances to the next step
		// All the work done below is to figure out what parameter to send to the setClass function
		//  based on what the current class is, if any, who called this function, and what the selected
		//  shell size is.
		var plug = "P";
		var rec = "R";
		var side = getSide(); //determines 'P' for plug or 'R' for receptacle
		var cur_class = document.getElementById("class").value;
		if(cur_class == "") cur_class = "N"; // if current class hasn't been set yet, set to default: N
		
		if(whoCalled == "")
		{
			setClass(cur_class);
		}
		else if(whoCalled == "N" || whoCalled == "C" || whoCalled == "E" || whoCalled == "H" || whoCalled == "F" || whoCalled == "G")
		{  // if a change in the Menu is what called this function...
			if((side == rec && whoCalled == "H") || (side == plug &&(whoCalled == "F" || whoCalled == "G")))
			{
				alert("You attempted to choose a class inconsistent with the connector side.");
				setClass(cur_class);
			}
			else
			{
				setClass(whoCalled);
			}
		}
		else if(side == plug) // if shell side = Plug...
		{
			if(whoCalled == "chkGrom")
			{
				if(cur_class == "C" || cur_class == "E" || cur_class == "H") setClass("N");
				else if(cur_class = "N") setClass("C");
			}
			else if(whoCalled == "chkOring")
			{
				if(cur_class == "C" || cur_class == "N" || cur_class == "H") setClass("E");
				else if(cur_class = "E") setClass("H");
			}
			else if(whoCalled == "chkEnv" || whoCalled == "chkBkfl")
			{
				if(cur_class == "C" || cur_class == "N") setClass("H");
				else if(cur_class = "E" || cur_class == "H") setClass("C");
			}
		}
		else if(side == rec) // if shell side = Receptacle...
		{
			if(whoCalled == "chkGrom")
			{
				if(cur_class == "N" || cur_class == "F" || cur_class == "G") setClass("C");
				else if(cur_class = "C" || cur_class == "E") setClass("N");
			}
			else if(whoCalled == "chkEnv" || whoCalled == "chkBkfl")
			{
				if(cur_class == "C" || cur_class == "N" || cur_class == "F" || cur_class == "G") setClass("E");
				else if(cur_class = "E") setClass("C");
			}
			else if(whoCalled == "optRR")
			{
				if(cur_class == "C" || cur_class == "N" || cur_class == "E" || cur_class == "G") setClass("F");
				else if(cur_class = "F") setClass("N");
			}
			else if(whoCalled == "optFR")
			{
				if(cur_class == "C" || cur_class == "N" || cur_class == "E" || cur_class == "F") setClass("G");
				else if(cur_class = "G") setClass("N");
			}
		} // End If-Else
		
		proceedToStep(3);
}// End Function

function setClass(toWhat)
{	// toWhat expects a valid class value of N, C, E, H, F, or G
	var plug = "P";
	var rec = "R";
	var side = getSide();
	var symbols = new Array(6); // map class values to its index in the drop-down menu "mnu_class"
	symbols['N'] = 1; symbols['C'] = 2;	symbols['E'] = 3; symbols['H'] = 4;	symbols['F'] = 5; symbols['G'] = 6;
	
	document.getElementById("mnu_class").selectedIndex = symbols[toWhat];
	//document.getElementById("mnu_class").options[symbols[toWhat]].selected = true; //alternate method of changing the menu
	document.getElementById("class").value = toWhat;
	document.getElementById("chk_class_oring").disabled = (side == rec) ? true : false;
	document.getElementById("opt1_class").disabled = (side == plug) ? true : false;
	document.getElementById("opt2_class").disabled = (side == plug) ? true : false;
	
	switch(toWhat)
	{
		case "N" : // This is the same for both connector sides
			document.getElementById("chk_class_env").checked = false;
			document.getElementById("chk_class_grom").checked = false;
			document.getElementById("chk_class_oring").checked = false;
			document.getElementById("chk_class_bkfl").checked = false;
			document.getElementById("opt1_class").checked = false;
			document.getElementById("opt2_class").checked = false;
			break;
		case "C" : // This is the same for both connector sides
			document.getElementById("chk_class_env").checked = false;
			document.getElementById("chk_class_grom").checked = true;
			document.getElementById("chk_class_oring").checked = false;
			document.getElementById("chk_class_bkfl").checked = false;
			document.getElementById("opt1_class").checked = false;
			document.getElementById("opt2_class").checked = false;
			break;
		case "E" :
			document.getElementById("chk_class_env").checked = true;
			document.getElementById("chk_class_grom").checked = true;
			document.getElementById("chk_class_oring").checked = (side == plug) ? true : false;
			document.getElementById("chk_class_bkfl").checked = true;
			document.getElementById("opt1_class").checked = false;
			document.getElementById("opt2_class").checked = false;
			break;
		case "H" : // This is only possible if the connector side is Plug (enforced by the rethinkClass() function)
			document.getElementById("chk_class_env").checked = true;
			document.getElementById("chk_class_grom").checked = true;
			document.getElementById("chk_class_oring").checked = false;
			document.getElementById("chk_class_bkfl").checked = true;
			document.getElementById("opt1_class").checked = false;
			document.getElementById("opt2_class").checked = false;
			break;
		case "F" : // This is only possible if the connector side is Receptacle (enforced by the rethinkClass() function)
			document.getElementById("chk_class_env").checked = false;
			document.getElementById("chk_class_grom").checked = false;
			document.getElementById("chk_class_oring").checked = false;
			document.getElementById("chk_class_bkfl").checked = false;
			document.getElementById("opt1_class").checked = true;
			document.getElementById("opt2_class").checked = false;
			break;
		case "G" : // This is only possible if the connector side is Receptacle (enforced by the rethinkClass() function)
			document.getElementById("chk_class_env").checked = false;
			document.getElementById("chk_class_grom").checked = false;
			document.getElementById("chk_class_oring").checked = false;
			document.getElementById("chk_class_bkfl").checked = false;
			document.getElementById("opt1_class").checked = false;
			document.getElementById("opt2_class").checked = true;
			break;
	} // end Switch
} // end Function


// ****************** STEP 3: SIZE ******************************************************************
function resetSize()
{	// clear the PN value and reset form controls...
		document.getElementById("size_1").checked = false;
		document.getElementById("size_2").checked = false;
		document.getElementById("size_3").checked = false;
		document.getElementById("size").value = "";
		document.getElementById("stepSize").style.display = 'block';
}

function rethinkSize(code)
{	// set PN value, and proceed to step 4...
		document.getElementById("size").value = code;
		proceedToStep(4);
}


// ****************** STEP 4: STYLE *****************************************************************
function resetStyle()
{	// clear the PN value and reset form controls...
		document.getElementById("mnu_style").options[0].selected = true;
		document.getElementById("optAlo").checked = false;
		document.getElementById("optNic").checked = false;
		document.getElementById("chkEMI").checked = false;
		document.getElementById("chkEMI").disabled = (getSide() == "R") ? true : false;
		document.getElementById("style").value = "";
		document.getElementById("stepStyle").style.display = 'block';
}

function rethinkStyle(whoCalled)
{	// whoCalled is a variable containing the possible values of the form controls
	// in this step (R, P, F, B, M, or optAlo, optNic, or chkEMI)
		var plug = "P";
		var rec = "R";
		var side = getSide(); //determines 'P' for plug or 'R' for receptacle
		var cur_style = document.getElementById("style").value;
		if(cur_style == "") cur_style = side; // if current style hasn't been set yet, set to default: R or P
		
		if(whoCalled == "") // if the menu changed back to the "Choose from the following" option...
		{
			setStyle(cur_style); // ignore menu change and set it back to it's current state.
		}
		else if(whoCalled == "R" || whoCalled == "P" || whoCalled == "F" || whoCalled == "B" || whoCalled == "M")
		{	// if the menu being changed to a valid value is what called this function...
			if((side == rec && (whoCalled == "P" || whoCalled == "B" || whoCalled == "M")) || (side == plug && (whoCalled == "R" || whoCalled == "F")))//PN rule
			{	// if the style chosen breaks the above rule...
				alert("You have attempted to choose a style inconsistent with the selected connector side.");
				setStyle(cur_style); // ...then revert the style back to the current style
			}
			else
			{	// else the whoCalled variable is also the style, so set it...
				setStyle(whoCalled);
			}
		}
		else if(side == rec)
		{
			if(whoCalled == "optAlo") setStyle("R");
			else if (whoCalled == "optNic") setStyle("F");
			// chkEMI is not an option here because it should not be possible to select this since it is disabled by setStyle() if the side is receptacle
		}
		else if(side == plug)
		{
			if(whoCalled == "optAlo" || whoCalled == "optNic")
			{
				if(cur_style == "B" || cur_style == "M") setStyle("P");
				else if(cur_style == "P") setStyle("B");
			} 
			else if(whoCalled == "chkEMI")
			{
				if(cur_style == "P" || cur_style == "B") setStyle("M");
				else if(cur_style == "M") setStyle("B");
			}
		}
		proceedToStep(5);
}

function setStyle(toWhat)
{	// valid values for the toWhat parameter: R, P, F, B, and M
	// This function relies on the rethinkStyle() function to correctly ascertain which styles are possible
	// ...given the current style and what form control was clicked. rethinkStyle() then calls this function.
	// sets the PN field, changes the menu, 
		var symbols = new Array(5); // map style values to its index in the drop-down menu "mnu_style"
		symbols['R'] = 1; symbols['P'] = 2;	symbols['F'] = 3; symbols['B'] = 4;	symbols['M'] = 5;
		var side = getSide(); //determines 'P' for plug or 'R' for receptacle
		
		document.getElementById("style").value = toWhat;
		document.getElementById("mnu_style").selectedIndex = symbols[toWhat];
		document.getElementById("chkEMI").disabled = (side == "R") ? true : false ;
		if(toWhat == "R" || toWhat == "P") // synchronize form controls with new style...
		{
				document.getElementById("optAlo").checked = true ;
				document.getElementById("optNic").checked = false;
				document.getElementById("chkEMI").checked = false;
		}
		else if(toWhat == "F" || toWhat == "B")
		{
				document.getElementById("optAlo").checked = false;
				document.getElementById("optNic").checked = true ;
				document.getElementById("chkEMI").checked = false;
		}
		else if(toWhat == "M")
		{
				document.getElementById("optAlo").checked = false ;
				document.getElementById("optNic").checked = true;
				document.getElementById("chkEMI").checked = true;
		} // end If-Else
} // end function


// ****************** STEP 5: COMB CODE ***********************************************************
function rethinkComb()
{
		openCombCodeWin();
}

function resetComb()
{
		var size = parseInt(document.getElementById("size").value);
		// clear all fields...
		document.getElementById("cav1").value = "";
		document.getElementById("cav2").value = "";
		document.getElementById("cav3").value = "";
		document.getElementById("cav4").value = "";
		document.getElementById("cav4").readonly = (size == 3) ? true : false;
		document.getElementById("cav5").value = "";
		document.getElementById("cav5").readonly = (size == 3) ? true : false;
		document.getElementById("cav6").value = "";
		document.getElementById("cav6").readonly = (size == 3) ? true : false;
		document.getElementById("comb").value = "";
		document.getElementById("stepComb").style.display = 'block';
}

function openCombCodeWin()
{	// This JavaScript function opens another window: combcodes.php
	// combcodes.php imports the JavaScript file: comb.js, which has another related
	// function called setCombCode(rowObj). This function processes it's own event
	// procedure and sets variables on the opener document ("/pnbuilder/index.php")
	// such as the PN value, the cavity values, and this function closes itself when done.
	
	// This function does the following...
		// ...get values of cavity fields, if any...
		var size = parseInt(document.getElementById("size").value);
		var cav1 = document.getElementById("cav1").value;
		var cav2 = document.getElementById("cav2").value;
		var cav3 = document.getElementById("cav3").value;
		var cav4 = (size == 3) ? document.getElementById("cav4").value : ""; // only taken into consideration if shell size = 3
		var cav5 = (size == 3) ? document.getElementById("cav5").value : ""; // only taken into consideration if shell size = 3
		var cav6 = (size == 3) ? document.getElementById("cav6").value : ""; // only taken into consideration if shell size = 3
		var notThisClass = document.getElementById("class").value;
		if(notThisClass == "F" || notThisClass == "G")
		{
			notThisClass = (notThisClass == "F") ? "G" : "F" ;
		}
		else
		{
			notThisClass = "";
		}
		// ...create the URL based on cavity field values...
		var windowURL = "combcodes.php?sz="+size+"&c1="+cav1+"&c2="+cav2+"&c3="+cav3+"&c4="+cav4+"&c5="+cav5+"&c6="+cav6+"&ntc="+notThisClass;
		
		// ...calculate features of pop-up window...
		var newleft = (screen.width - 600)/2;
		var newtop = (screen.height - 700)/2;
		var features = 	"toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,"+
						"width=500,height=600,left=" + String(newleft) + ",top=" + String(newtop);
		
		// ...open pop-up window...
		combWindow = window.open(windowURL, "combcodes", features);
}

function openDefs()
{
	var windowURL = "combdefs.php";
	var newleft = (screen.width - 700)/2;
	var newtop = (screen.height - 700)/2;
	var features = "toolbair=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,"+
					"width=650,height=650,left="+String(newleft)+",top="+String(newtop);
	combdefWindow = window.open(windowURL, "combcodeDefs", features);
}

// ****************** STEP 6: TERM CODE ************************************************************
function rethinkTerm()
{				
		if(document.getElementById("opt1_term").checked == true)
		{
				document.getElementById("term").value = 'X';
				document.getElementById("span_mnu1_term").style.display = 'none';
				document.getElementById("span_mnu2_term").style.display = 'none';
				document.getElementById("mnu1_term").selectedIndex = 0;
				document.getElementById("mnu2_term").selectedIndex = 0;
				document.getElementById("mnu3_term").selectedIndex = 0;
				document.getElementById("tinny").checked = false;
		}
		else if(document.getElementById("opt2_term").checked == true)
		{
				document.getElementById("term").value = 'S';
				document.getElementById("span_mnu1_term").style.display = 'none';
				document.getElementById("span_mnu2_term").style.display = 'none';
				document.getElementById("mnu1_term").selectedIndex = 0;
				document.getElementById("mnu2_term").selectedIndex = 0;
				document.getElementById("mnu3_term").selectedIndex = 0;
				document.getElementById("tinny").checked = false;
		}
		else if(document.getElementById("opt3_term").checked == true)
		{
				document.getElementById("span_mnu1_term").style.display = 'block';
				document.getElementById("span_mnu2_term").style.display = 'none';
				document.getElementById("term").value = document.getElementById("mnu1_term").value;
		}
		else if(document.getElementById("opt4_term").checked == true)
		{
				document.getElementById("span_mnu1_term").style.display = 'none';
				document.getElementById("span_mnu2_term").style.display = 'block';
				var tinnyChecked = document.getElementById("tinny").checked;
				var displayMnu;
				var hiddenMnu;
				if(tinnyChecked)
				{
						displayMnu = "mnu3_term";
						hiddenMnu = "mnu2_term";
				}
				else
				{
						displayMnu = "mnu2_term";
						hiddenMnu = "mnu3_term";
				}
				document.getElementById("term").value = document.getElementById(displayMnu).value;
				document.getElementById(displayMnu).style.display = 'inline';
				document.getElementById(hiddenMnu).style.display = 'none';
		}
		
		proceedToStep(7);
}

// Functions resetTerm() and proceedToStepTerm() exist, but are found only in the combcodes.php 
//	document since that is the only place where they will be called from and they must be adapted 
//	to be called from a child window.

// ****************** STEP 7: MOD CODE ************************************************************
function rethinkMod()
{
		var mod_val = new String(document.getElementById("mnuModCode").value);
		var size1 = document.getElementById("size_1").checked;
		if(mod_val == "")
		{
			proceedToStep(7);
		}
		else if (size1 && (mod_val == "08" || mod_val == "09"))
		{
			alert("You have attempted to choose a Modification Code inconsistent with the Shell Size");
			proceedToStep(7);
		}
		else
		{
			var side = getSide();
			document.getElementById("mod").value = mod_val;
			var strImgTag = '<img src="../images/mod' + mod_val + side + '.gif" >';
			document.getElementById("modSelectedGraphic").innerHTML = strImgTag;
			proceedToStep(8);
		}
}

function resetMod()
{
		document.getElementById("mod").value = "";
		document.getElementById("stepMod").style.display = 'block';
		document.getElementById("mnuModCode").selectedIndex = 0;
		document.getElementById("modSelectedGraphic").innerHTML = "";
}


// ****************** STEP 8: POL CODE ***********************************************************
function resetPol()
{
		var side = getSide();
		var polPos = (side == "P") ? "1" : "4" ;
		document.getElementById("stepPol").style.display = 'block';
		document.getElementById("pol").value = "";
		document.getElementById("polcode").value = "";
		document.getElementById("polMsg").innerHTML = "&nbsp;<br>&nbsp;";
		document.getElementById("polKey1").src = "../images/pol_key0" + polPos + ".gif";
		document.getElementById("polKey2").src = "../images/pol_key0" + polPos + ".gif";
		document.getElementById("polKey3").src = "../images/pol_key0" + polPos + ".gif";
		document.getElementById("pol1_display").value = polPos;
		document.getElementById("pol2_display").value = polPos;
		document.getElementById("pol3_display").value = polPos;
		document.getElementById("btnContinue").disabled = true;
		document.getElementById("lyrPolControls").style.display = 'none';
		document.getElementById("polswitch1").checked = false;
		document.getElementById("polswitch2").checked = false;
		document.getElementById("polswitch3").checked = false;
		
}

function rethinkPol(switchCode)
{
	switch (parseInt(switchCode))
	{
		case 0 :
			setPol();
			break;
		case 1 :
			setNotInstalled();
			break;
		case 2 :
			setNone();
			break;
	}
}

function setPol()
{ //called by rethinkPol() when the option button is clicked or by turnPol() when the pol keys are turned
	document.getElementById("lyrPolControls").style.display = 'inline'; // show the polControls layer
	document.getElementById("polMsg").innerHTML = "&nbsp;<br>&nbsp;";
	var side = getSide();
	var new_code = "";
	var pos1 = parseInt(document.getElementById("pol1_display").value) - 1;
	var pos2 = parseInt(document.getElementById("pol2_display").value) - 1;
	var pos3 = parseInt(document.getElementById("pol3_display").value) - 1;
	if(side == "R")
	{
		var rarray = new Array( new Array( 
									new Array(130,129,128,127,132,131),
									new Array(94,93,92,91,96,95),
									new Array(58,57,56,55,60,59),
									new Array(22,21,20,19,24,23),
									new Array(202,201,200,199,204,203),
									new Array(166,165,164,163,168,167)),
								new Array(
									new Array(136,135,134,133,138,137),
									new Array(100,99,98,97,102,101),
									new Array(64,63,62,61,66,65),
									new Array(28,27,26,25,30,29),
									new Array(208,207,206,205,210,209),
									new Array(172,171,170,169,174,173)),
								new Array(
									new Array(142,141,140,139,144,143),
									new Array(106,105,104,103,108,107),
									new Array(70,69,68,67,72,71),
									new Array(34,33,32,31,36,35),
									new Array(214,213,212,211,216,215),
									new Array(178,177,176,175,180,179)),
								new Array(
									new Array(112,111,110,109,114,113),
									new Array(76,75,74,73,78,77),
									new Array(40,39,38,37,42,41),
									new Array(04,03,02,01,06,05),
									new Array(184,183,182,181,186,185),
									new Array(148,147,146,145,150,149)),
								new Array(
									new Array(118,117,116,115,120,119),
									new Array(82,81,80,79,84,83),
									new Array(46,45,44,43,48,47),
									new Array(10,09,08,07,12,11),
									new Array(190,189,188,187,192,191),
									new Array(154,153,152,151,156,155)),
								new Array(
									new Array(124,123,122,121,126,125),
									new Array(88,87,86,85,90,89),
									new Array(52,51,50,49,54,53),
									new Array(16,15,14,13,18,17),
									new Array(196,195,194,193,198,197),
									new Array(160,159,158,157,162,161)));
		new_code = rarray[pos1][pos2][pos3];
	}
	else
	{
		var parray = new Array( new Array(
									new Array(01,31,25,19,13,07),
									new Array(37,67,61,55,49,43),
									new Array(73,103,97,91,85,79),
									new Array(109,139,133,127,121,115),
									new Array(145,175,169,163,157,151),
									new Array(181,211,205,199,193,187)),
								new Array(
									new Array(02,32,26,20,14,08),
									new Array(38,68,62,56,50,44),
									new Array(74,104,98,92,86,80),
									new Array(110,140,134,128,122,116),
									new Array(146,176,170,164,158,152),
									new Array(182,212,206,200,194,188)),
								new Array(
									new Array(03,33,27,21,15,09),
									new Array(39,69,63,57,51,45),
									new Array(75,105,99,93,87,81),
									new Array(111,141,135,129,123,117),
									new Array(147,177,171,165,159,153),
									new Array(183,213,207,201,195,189)),
								new Array(
									new Array(04,34,28,22,16,10),
									new Array(40,70,64,58,52,46),
									new Array(76,106,100,94,88,82),
									new Array(112,142,136,130,124,118),
									new Array(148,178,172,166,160,154),
									new Array(184,214,208,202,196,190)),
								new Array(
									new Array(05,35,29,23,17,11),
									new Array(41,71,65,59,53,47),
									new Array(77,107,101,95,89,83),
									new Array(113,143,137,131,125,119),
									new Array(149,179,173,167,161,155),
									new Array(185,215,209,203,197,191)),
								new Array(
									new Array(06,36,30,24,18,12),
									new Array(42,72,66,60,54,48),
									new Array(78,108,102,96,90,84),
									new Array(114,144,138,132,126,120),
									new Array(150,180,174,168,162,156),
									new Array(186,216,210,204,198,192)));
		new_code = parray[pos1][pos2][pos3];
	}
	
	if((new_code >= 1) && (new_code <= 9)){ new_code = "0" + String(new_code); }
	document.getElementById("polcode").value = new_code; // set the polcode field
	document.getElementById("pol").value = new_code; // set the PN field for polarization
	document.getElementById("btnContinue").disabled = false;
}

function turnPol(which_key, direction)
{	// Called only when a polarization arrow button is clicked to turn the key/post symbol
	// Valid values for 'which_key' is 1, 2, or 3. Valid values for 'direction' is 'right' or 'left'.
		which_key = String(which_key);
		var strKey = "pol"+which_key+"_display";
		//alert("The key container id is: " + strKey);
		var strImg = "polKey"+which_key;
		//alert("The key image id is: " + strImg);
		var txtKey = document.getElementById(strKey);
		var imgKey = document.getElementById(strImg);
		var cur_pos = parseInt(txtKey.value);
		//alert("The current key value is: " + cur_pos);
		var new_pos = (direction == "right") ? cur_pos + 1 : cur_pos - 1;
		if(new_pos == 0) new_pos += 6;
		else if(new_pos == 7) new_pos -= 6;
		//alert("The new key value is: " + new_pos);
		var new_src = "../images/pol_key0" + String(new_pos) + ".gif";
		//alert("The new image source path is: " + new_src);
		imgKey.src = new_src;
		txtKey.value = new_pos+'';
		setPol();
		activateSubmit();
}

function turnPolViaKey(objInput)
{	// goal: if value entered is valid, change the graphic to match, then call setPol();
	var strWhoID = objInput.id; // get the ID of the textfield that was just keyed in
	var strID = strWhoID.substr(3,1); // get the numeric character from the textfield's ID
	var intVal = parseInt(objInput.value); // get the Integer character that was just typed into the textfield
	
	if(!isNaN(intVal) && (intVal >= 1 && intVal <= 6)) // check that its not "not-a-number" and it's between 1 and 6 
	{	// goal: change the graphic to match the new value in the textfield
		var strImgID = "polKey"+strID; // create the ID string of the key graphic associated with this textfield
		var objImgKey = document.getElementById(strImgID);
		var new_src = "../images/pol_key0" + String(intVal) + ".gif";
		objImgKey.src = new_src;
		setPol();
		activateSubmit();
	}
	else // if the character entered is "not a number" or out of the valid range: 1-6
	{
		returnToCurVal(strID);
	}
}

function returnToCurVal(strTxtID)
{	// goal: change the textfield value to match it's associated key graphic.
	var strImgID = "polKey"+strTxtID; // create the associated key graphic's ID string
	var strTxtID = "pol"+which_key+"_display";
	var objKeyImg = document.getElementById(strImgID); // get the key graphic object associated with this textfield
	var strKeySrc = objKeyImg.src; // get the source of the associated key graphic object
	var curVal = strKeySrc.substr(15,1); // get the numeric character from the key graphic's source - this is the current value
	alert("Only Numbers 1 - 6 are allowed!");
	document.getElementById(strTxtID).value = curVal;
}

function setNone()
{
		document.getElementById("polMsg").innerHTML = "You have chosen to not ship polarization hardware.";
		document.getElementById("pol").value = "00";
		document.getElementById("polcode").value = "00";
		document.getElementById("lyrPolControls").style.display = 'none';
		activateSubmit();
}

function setNotInstalled()
{
		document.getElementById("polMsg").innerHTML = "You have chosen to ship polarization hardware loose (not installed).";
		document.getElementById("pol").value = "";
		document.getElementById("polcode").value = "";
		document.getElementById("lyrPolControls").style.display = 'none';
		activateSubmit();	
}

function activateSubmit()
{
		var btnContinue = document.getElementById("btnContinue");
		btnContinue.disabled = false;
		btnContinue.focus();
}

// ****************************************************************************
-->