var headStyle; var studPart; var studSize     ; var studFinish; var studFin;
var receStyle; var recePart; var receType     ; var receFinish; var receFin;
var retaStyle; var retaPart; var retaThick = 0; var retaSpring; var retaFinish; var retaFin;
var panel    ; var gap     ; var support      ; var pileup    ; var gMin;
var valid    ;

// This function is to clear the part numbers when an error is encountered during the build.
// This will prevent partial part numbers from being presented to the user.
//
function resetPartNumbers() { studPart   = ""; recePart = "";
                              retaPart   = ""; valid = false; }

// This function is to determine and set the part numbers
//
function calculatePartNumbers() {

resetPartNumbers();
valid = true;

    // Start by determing the head style which was selected.
     if (document.inParms.Head[0].checked) { headStyle="Wing";     studPart="3"; }
else if (document.inParms.Head[1].checked) { headStyle="Slotted";  studPart="1"; }
else if (document.inParms.Head[2].checked) { headStyle="Ring";     studPart="4"; }
else if (document.inParms.Head[3].checked) { headStyle="Hex";      studPart="2"; }
else if (document.inParms.Head[4].checked) { headStyle="Phillips"; studPart="7"; }

    // Next, determine the size which was selected.
if      (document.inParms.Size[0].checked) studSize  = 4;
else if (document.inParms.Size[1].checked) studSize  = 6;

    // Add the size to the stud head prefix.
studPart = "1631-"+studSize+studPart;

    // Determine the retainer which was selected
retaPart = "1632-"+studSize;

    // Determine the retainer finish suffix
for (i = 0 ; i < document.inParms.rtFinish.length ; ++i ) {
  if (document.inParms.rtFinish[i].checked) {
    retaFin = '-' + document.inParms.rtFinish[i].value;
    retaFinish = '';
  }
}

if      (document.inParms.Retainer[0].checked) { retaStyle="Plastic"; retaPart+="100"; }
else if (document.inParms.Retainer[1].checked) { retaStyle="Steel";   retaPart+="101"; 
                                                 retaStyle+=" " + retaFinish; retaPart+=retaFin;
}

    // Determine the stud finish suffix
for (i = 0 ; i < document.inParms.stFinish.length ; ++i ) {
  if (document.inParms.stFinish[i].checked) {
    studFin = '-' + document.inParms.stFinish[i].value;
    studFinish = '';
  }
}

    // Determine the receptacle finish suffix
for (i = 0 ; i < document.inParms.reFinish.length ; ++i ) {
  if (document.inParms.reFinish[i].checked) {
    receFin = '-' + document.inParms.reFinish[i].value;
    receFinish = '';
  }
}

    // Determine the spring which was specified
if      (!document.inParms.Spring[3].checked) { retaPart += " & 1632-" + studSize; }
if      ( document.inParms.Spring[0].checked) { retaSpring = "20"; retaPart += "200-SS"; }
else if ( document.inParms.Spring[1].checked) { retaSpring = "25"; retaPart += "201-SS"; }
else if ( document.inParms.Spring[2].checked) { retaSpring = "48"; retaPart += "201-SS"; }
else if ( document.inParms.Spring[3].checked) { retaSpring = "";   }

    // Determine the type of receptacle which was selected.
recePart = "1633-"+studSize;
receType = 0;
if      (document.inParms.Receptacle[0].checked) { receStyle="Front Load";  recePart+="200-"; receType = 200; }
else if (document.inParms.Receptacle[1].checked) { receStyle="Slip-On";     recePart+="300-"; receType = 300; }
else if (document.inParms.Receptacle[2].checked) { receStyle="Bracket";     recePart+="310-"; receType = 310; }
else if (document.inParms.Receptacle[3].checked) { receStyle="Rivet Plate"; recePart+="400-"; receType = 400; }
else if (document.inParms.Receptacle[4].checked) { receStyle="Weld Plate";  recePart+="500-"; receType = 500; }
else if (document.inParms.Receptacle[5].checked) { receStyle="Front Mount"; recePart+="100-"; receType = 100; }
else if (document.inParms.Receptacle[6].checked) { receStyle="Rear Mount";  recePart+="110-"; receType = 110; }
receStyle += " " + receFinish;
recePart  += receFin;

    // read in the panel, gap, and support values.
panel   = document.inParms.Panel.value;
gap     = document.inParms.Gap.value;
support = document.inParms.Support.value;

     // Check the input unit of measure selection.
inch = false;
if      (document.inParms.UOM[0].checked) { inch = true;  }
else if (document.inParms.UOM[1].checked) { inch = false; }


    // do some validation on the input information.
    // 1. A panel thickness is required.
if (panel   == "") { displayErrorMessage(34); }
else               { panel = eval(panel);     }
if (gap     == "") { gap = 0;                 }
else               { gap = eval(gap);         }
if (support == "") { support = 0;             }
else               { support = eval(support); }

    // If the input unit of measure is inches, convert the input to mm.
if (inch) {
  panel   /= .03937;
  gap     /= .03937;
  support /= .03937;
}

    // set the information which was entered in the display.
document.inParms.studSpec.value = studSize + " mm / " + headStyle + " / " + studFinish;
document.inParms.retaSpec.value = retaStyle + ((retaSpring == "") ? "" : (" / " + retaSpring + " mm Spring"));
document.inParms.receSpec.value = receStyle;
document.inParms.Notes.value    = "";
setPileText(0,0);

    // 2. Verify the gap is sufficient
if (valid) {
  setRetainerPart();
  setPileUp();  // this routine will display the error message.
}

    // 3. Verify the receptacle
if (valid) setReceptaclePartNumber();

    // 4. Check the spring configuration
if (valid && retaSpring != "") verifySpring();

    // 5. Check to see if the total pileup for the part is in the valid range.
if (valid) {
  switch (studSize) {
    case 4 : { checkSize4(); break; }
    case 6 : { checkSize6(); break; }
    case 9 : { checkSize9(); break; }
  }
}

    // 6. set the stud part number.
if (valid) {
  switch (studSize) {
    case 4 : { setSize4(); break; }
    case 6 : { setSize6(); break; }
    case 9 : { setSize9(); break; }
  }
}

    // Set the part numbers in the display
    // if there is an error, the fields will be blank
document.inParms.studPart.value   = studPart;
document.inParms.retaPart.value   = retaPart;
document.inParms.recePart.value   = recePart;
}


    // This function is to set the receptacle part number.
function setReceptaclePartNumber() {
  switch (eval(recePart.substring(6,9))) {
    case 200 : { checkFrontLoad();  break; } // Front Load
    case 300 : { checkSlipOn();     break; } // Slip-On
    case 310 : { checkBracket();    break; } // Bracket
    case 400 : { checkRivetPlate(); break; } // Rivet Plate
    case 500 : { checkWeldPlate();  break; } // Weld Plate
    case 100 : { checkFrontMount(); break; } // Front Mount
    case 110 : { checkRearMount();  break; } // Rear Mount
  }
}

    // This function is to check the validity of the Front Load Receptacle
function checkFrontLoad() {
  switch (studSize) {
    case 4 : { if (support < 0.7 || support > 2.5) displayErrorMessage(1); break; }
    case 6 : { if (support < 0.7 || support > 3.2) displayErrorMessage(2); break; }
    case 9 : { if (support < 0.7 || support > 3.2) displayErrorMessage(2); break; }
  }
}
    // This function is to check the validity of the Slip-On Receptacle
function checkSlipOn() {
  switch (studSize) {
    case 4 : { if (support < 0.7 || support > 2.5) displayErrorMessage(3); break; }
    case 6 : { if (support < 0.7 || support > 3.2) displayErrorMessage(4); break; }
    case 9 : { if (support < 0.7 || support > 3.2) displayErrorMessage(4); break; }
  }
}
    // This function is to check the validity of the Bracket Receptacle
function checkBracket() {
}
    // This function is to check the validity of the Rivet Plate Receptacle
function checkRivetPlate() {
}
    // This function is to check the validity of the Weld Plate Receptacle
function checkWeldPlate() {
}
    // This function is to check the validity of the Front Mount Receptacle
function checkFrontMount() {
  switch (studSize) {
    case 4 : { if (support < 4.5) displayErrorMessage(6); break; }
    case 6 : { if (support < 5.0) displayErrorMessage(7); break; }
    case 9 : {                    displayErrorMessage(5); break; }
  }
}
    // This function is to check the validity of the Rear Mount Receptacle
function checkRearMount() {
  switch (studSize) {
    case 4 : { if (support < 1.3) displayErrorMessage(9); break; }
    case 6 : { if (support < 1.3) displayErrorMessage(9); break; }
    case 9 : {                    displayErrorMessage(8); break; }
  }
}

    // This function is to verify the spring selection 
function verifySpring() {
  switch (studSize) {
    case 4 : { if (retaSpring == 25) displayErrorMessage(11); break; }
    case 6 : { if (retaSpring == 20) displayErrorMessage(10); break; }
    case 9 : { if (retaSpring == 25) displayErrorMessage(11);
               if (retaSpring == 20) displayErrorMessage(10); break; }
  }
}

    // This function is to set the retainer part number
function setRetainerPart() {
  var add   = "";
  retaThick = 0;
    // Determine the minimum requirements for the retainer
  var spr = 0;
  if (retaSpring != "") { spr = eval(retaSpring); }
  switch (spr) {
    case 0  : { switch (studSize) {
                  case 4 : { retaThick = 0.5; break; }
                  case 6 : { retaThick = 0.5; break; }
                  case 9 : { retaThick = 1.0; break; }
                }
                break; }
    case 20 : { switch (studSize) {
                  case 4 : { retaThick = 14.0; break; }
                  case 6 : { retaThick = 19.0; break; }
                  case 9 : { retaThick =  7.0; break; }
                }
                break; }
    case 25 : { retaThick = 0.5; break; }
    case 48 : { retaThick = 0.5; break; }
  }
    // Adjust the minimum gap based on the receptacle
  switch (receType) {
    case 200 : { // Front Load 
                 switch (studSize) {
                   case 4 : { retaThick += .5; break; }
                   case 6 : { retaThick += .5; break; }
                   case 9 : { retaThick += .8; break; }
                 }
                 break; }
    case 300 : { // Slip-On
                 switch (studSize) {
                   case 4 : { retaThick += .2; break; }
                   case 6 : { retaThick += .3; break; }
                   case 9 : { retaThick += .5; break; }
                 }
                 break; }
    case 310 : { // Bracket
                 switch (studSize) {
                   case 4 : { retaThick += .2; break; }
                   case 6 : { retaThick += .3; break; }
                   case 9 : { retaThick += .5; break; }
                 }
                 break; }
    case 400 : { // Rivet Plate
                 break; }
    case 500 : { // Weld Plate
                 break; }
    case 100 : { // Front Mount 
                 break; }
    case 110 : { // Rear Mount
                 break; }
  }
}
    // This function is to calculate the pileup allowing for the min gap required
function setPileUp() {
  gMin = (gap > retaThick) ? gap : retaThick;
  switch (receType) {
    case 200 : { setPileFrontLoad();  break; }
    case 300 : { setPileSlipOn();     break; }
    case 310 : { setPileBracket();    break; }
    case 400 : { setPileRivetPlate(); break; }
    case 500 : { setPileWeldPlate();  break; }
    case 100 : { setPileFrontMount(); break; }
    case 110 : { setPileRearMount();  break; }
  }
  if (gMin > gap) displayErrorMessage(31);
//  pileup *= 10;
//  pileup = parseInt(pileup);
//  pileup /= 10;
  setPileText(pileup,gMin);
}

function setPileFrontLoad() { pileup = panel + gMin; displayErrorMessage(32); }
function setPileSlipOn()    { pileup = panel + gap + support;                 }
function setPileBracket()   {
                 switch (studSize) {
                   case 4 : { pileup = panel + 1.2 + gMin; displayErrorMessage(35); break;             }
                   case 6 : { pileup = panel + 1.2 + gMin; displayErrorMessage(36); break;             }
                   case 9 : { pileup = panel + 1.6 + gMin; displayErrorMessage(37); break;             }
                 }
                 if (support > 0) displayErrorMessage(33);
}
function setPileRivetPlate(){ pileup = panel + gMin + support;                }
function setPileWeldPlate() { pileup = panel + gMin + support;                }
function setPileFrontMount(){ pileup = panel + gMin; displayErrorMessage(32); }
function setPileRearMount() { pileup = panel + gMin + support;                }

function convertFix(number,precision) {
  var i, base = 1;
  if ( precision > 0 ) {
    for ( i = 0 ; i < precision ; i++ ) { base *= 10; }
  }
  var work = parseInt(number * base + .5 ) / base;
  return work;
}
    // This function is to set the "panel / gap / support = pileup" display
function setPileText(pileup,gmin) {
  var work;
  if (inch) {
    work = convertFix(panel * .03937,3) + " / ";
    if (gmin > gap) work += "max("+convertFix(gap*.03937,3)+","+convertFix(gmin*.03937,3)+")";
    else            work += convertFix(gap*.03937,3);
    work += " / " + convertFix(support*.03937,3);
    if (pileup > 0) work += " = " + convertFix(pileup*.03937,3);
  }
  else {
    work = convertFix(panel,1) + " / "; 
    if (gmin > gap) work += "max("+convertFix(gap,1)+","+convertFix(gmin,1)+")";
    else            work += convertFix(gap,1);
    work += " / " + convertFix(support,1);
    if (pileup > 0) work += " = " + convertFix(pileup,1);
  }
  document.inParms.pgsSpec.value = work;
}

    // This function is to set the part number for the size 4 stud.
function checkSize4 () {
  var lDim;
  switch (receType) {
    case 200 : { if (pileup < 1.5 || pileup > 28.4) displayErrorMessage(12); break; } // Front Load
    case 300 : { if (pileup < 1.5 || pileup > 28.4) displayErrorMessage(13); break; } // Slip-On
    case 310 : { if (pileup < 1.5 || pileup > 28.4) displayErrorMessage(14); break; } // Bracket
    case 400 : { if (pileup < 1.0 || pileup > 27.9) displayErrorMessage(15); break; } // Rivet Plate
    case 500 : { if (pileup < 1.0 || pileup > 27.9) displayErrorMessage(16); break; } // Weld Plate
    case 100 : { if (pileup < 0.7 || pileup > 27.6) displayErrorMessage(17); break; } // Front Mount
    case 110 : { if (pileup < 1.7 || pileup > 28.6) displayErrorMessage(18); break; } // Rear Mount
  }
}

    // This function is to set the part number for the size 4 stud.
function checkSize6 () {
  var lDim;
  switch (receType) {
    case 200 : { if (pileup < 0.8 || pileup > 27.7) displayErrorMessage(19); break; } // Front Load
    case 300 : { if (pileup < 1.5 || pileup > 28.4) displayErrorMessage(20); break; } // Slip-On
    case 310 : { if (pileup < 1.5 || pileup > 28.4) displayErrorMessage(21); break; } // Bracket
    case 400 : { if (pileup < 1.5 || pileup > 28.4) displayErrorMessage(22); break; } // Rivet Plate
    case 500 : { if (pileup < 1.5 || pileup > 28.4) displayErrorMessage(23); break; } // Weld Plate
    case 100 : { if (pileup < 0.7 || pileup > 27.6) displayErrorMessage(24); break; } // Front Mount
    case 110 : { if (pileup < 1.7 || pileup > 28.6) displayErrorMessage(25); break; } // Rear Mount
  }
}

    // This function is to set the part number for the size 4 stud.
function checkSize9 () {
  var lDim;
  switch (receType) {
    case 200 : { if (pileup < 2.5 || pileup > 27.4) displayErrorMessage(26); break; } // Front Load
    case 300 : { if (pileup < 2.0 || pileup > 28.9) displayErrorMessage(27); break; } // Slip-On
    case 310 : { if (pileup < 2.0 || pileup > 28.9) displayErrorMessage(28); break; } // Bracket
    case 400 : { if (pileup < 2.0 || pileup > 28.9) displayErrorMessage(29); break; } // Rivet Plate
    case 500 : { if (pileup < 2.0 || pileup > 28.9) displayErrorMessage(30); break; } // Weld Plate
    case 100 : { break; } // Front Mount (invalid)
    case 110 : { break; } // Rear Mount  (invalid)
  }
}

    // This function is to set the part number for the size 4 stud.
function setSize4 () {
  var lDim;
  switch (receType) {
    case 200 : { lDim = pileup + 10.5; break; } // Front Load
    case 300 : { lDim = pileup +  6.5; break; } // Slip-On
    case 310 : { lDim = pileup +  6.5; break; } // Bracket
    case 400 : { lDim = pileup +  7.0; break; } // Rivet Plate
    case 500 : { lDim = pileup +  7.0; break; } // Weld Plate
    case 100 : { lDim = pileup +  8.3; break; } // Front Mount
    case 110 : { lDim = pileup +  9.3; break; } // Rear Mount
  }
  lDim = parseInt(lDim);
  lDim = "00"+lDim;
  studPart += lDim.substring(lDim.length-2,lDim.length);
  studPart += studFin;
}

    // This function is to set the part number for the size 6 stud.
function setSize6 () {
  var lDim;
  switch (receType) {
    case 200 : { lDim = pileup + 15.2; break; } // Front Load
    case 300 : { lDim = pileup +  7.5; break; } // Slip-On
    case 310 : { lDim = pileup +  7.5; break; } // Bracket
    case 400 : { lDim = pileup +  7.5; break; } // Rivet Plate
    case 500 : { lDim = pileup +  7.5; break; } // Weld Plate
    case 100 : { lDim = pileup + 11.3; break; } // Front Mount 
    case 110 : { lDim = pileup + 10.3; break; } // Rear Mount
  }
  lDim = parseInt(lDim);
  lDim = "00"+lDim;
  studPart += lDim.substring(lDim.length-2,lDim.length);
  studPart += studFin;
}

    // This function is to set the part number for the size 9 stud.
function setSize9 () {
  var lDim;
  switch (receType) {
    case 200 : { lDim = pileup + 19.5; break; } // Front Load
    case 300 : { lDim = pileup +  8.0; break; } // Slip-On
    case 310 : { lDim = pileup +  8.0; break; } // Bracket
    case 400 : { lDim = pileup +  8.0; break; } // Rivet Plate
    case 500 : { lDim = pileup +  8.0; break; } // Weld Plate
    case 100 : {                       break; } // Front Mount (invalid)
    case 110 : {                       break; } // Rear Mount  (invalid)
  }
  lDim = parseInt(lDim);
  lDim = "00"+lDim;
  studPart += lDim.substring(lDim.length-2,lDim.length);
  studPart += studFin;
}

    // This function is to display error messages as alerts.
function displayErrorMessage(msgno) { displayErrorMessage(msgno,0); }
function displayErrorMessage(msgno,parm) {
var messages = new Array();
var severity = new Array();
var numberOfMessages = 37;
severity[ 0] = 2; messages[ 0] = "Undefined message number [" + msgno + "] was requested";
severity[ 1] = 2; messages[ 1] = "The Support must be between 0.7 mm (.028 in) and 2.5 mm (.098 in) for the 4 mm Front Load Receptacle!";
severity[ 2] = 2; messages[ 2] = "The Support must be between 0.7 mm (.028 in) and 3.2 mm (.126 in) for the 6 mm or 9 mm Front Load Receptacle!";
severity[ 3] = 2; messages[ 3] = "The Support must be between 0.7 mm (.028 in) and 2.5 mm (.098 in) for the 4 mm Slip On Receptacle!";
severity[ 4] = 2; messages[ 4] = "The Support must be between 0.7 mm (.028 in) and 3.2 mm (.126 in) for the 6 mm or 9 mm Slip On Receptacle!";
severity[ 5] = 2; messages[ 5] = "The Front Mount Insert is not Supported with the 9 mm Stud!";
severity[ 6] = 2; messages[ 6] = "The Support must be a minimum of 4.5 mm (.177 in) for the 4 mm Front Mount Insert!";
severity[ 7] = 2; messages[ 7] = "The Support must be a minimum of 5.0 mm (.197 in) for the 6 mm Front Mount Insert!";
severity[ 8] = 2; messages[ 8] = "The Rear Mount Insert is not Supported with the 9 mm Stud!";
severity[ 9] = 2; messages[ 9] = "The Support must be a minimum of 1.3 mm (.051 in) for the Rear Mount Insert!";
severity[10] = 2; messages[10] = "The 20 mm Spring Retainer is available only for the 4 mm Stud!";
severity[11] = 2; messages[11] = "The 25 mm Spring Retainer is available only for the 6 mm Stud!";
severity[12] = 2; messages[12] = "The total pileup for the 4 mm Stud with a Front Load Receptacle must be between 1.5 mm (.059 in) and 28.4 mm (1.118 in)!";
severity[13] = 2; messages[13] = "The total pileup for the 4 mm Stud with a Slip On Receptacle must be between 1.5 mm (.059 in) and 28.4 mm (1.118 in)!";
severity[14] = 2; messages[14] = "The total pileup for the 4 mm Stud with a Bracket Receptacle must be between 1.5 mm (.059 in) and 28.4 mm (1.118 in)!";
severity[15] = 2; messages[15] = "The total pileup for the 4 mm Stud with a Rivet Plate Receptacle must be between 1.0 mm (.039 in) and 27.9 mm (1.098 in)!";
severity[16] = 2; messages[16] = "The total pileup for the 4 mm Stud with a Weld Plate Receptacle must be between 1.0 mm (.039 in) and 27.9 mm (1.098 in)!";
severity[17] = 2; messages[17] = "The total pileup for the 4 mm Stud with a Front Mount Insert must be between 0.7 mm (.028 in) and 27.6 mm (1.087 in)!";
severity[18] = 2; messages[18] = "The total pileup for the 4 mm Stud with a Rear Mount Insert must be between 1.7 mm (.067 in) and 28.6 mm (1.126 in)!";
severity[19] = 2; messages[19] = "The total pileup for the 6 mm Stud with a Front Load Receptacle must be between 0.8 mm (.031 in) and 27.7 mm (1.091 in)!";
severity[20] = 2; messages[20] = "The total pileup for the 6 mm Stud with a Slip On Receptacle must be between 1.5 mm (.059 in) and 28.4 mm (1.118 in)!";
severity[21] = 2; messages[21] = "The total pileup for the 6 mm Stud with a Bracket Receptacle must be between 1.5 mm (.059 in) and 28.4 mm (1.118 in)!";
severity[22] = 2; messages[22] = "The total pileup for the 6 mm Stud with a Rivet Plate Receptacle must be between 1.5 mm (.059 in) and 28.4 mm (1.118 in)!";
severity[23] = 2; messages[23] = "The total pileup for the 6 mm Stud with a Weld Plate Receptacle must be between 1.5 mm (.059 in) and 28.4 mm (1.118 in)!";
severity[24] = 2; messages[24] = "The total pileup for the 6 mm Stud with a Front Mount Insert Receptacle must be between 0.7 (.028 in) mm and 27.6 mm (1.087 in)!";
severity[25] = 2; messages[25] = "The total pileup for the 6 mm Stud with a Rear Mount Insert Receptacle must be between 1.7 mm (.067 in) and 28.6 mm (1.126 in)!";
severity[26] = 2; messages[26] = "The total pileup for the 9 mm Stud with a Front Load Receptacle must be between 2.5 (.098 in) mm and 27.4 mm (1.079 in)!";
severity[27] = 2; messages[27] = "The total pileup for the 9 mm Stud with a Slip On Receptacle must be between 2.0 mm (.079 in) and 28.9 mm (1.138 in)!";
severity[28] = 2; messages[28] = "The total pileup for the 9 mm Stud with a Bracket Receptacle must be between 2.0 mm (.079 in) and 28.9 mm (1.138 in)!";
severity[29] = 2; messages[29] = "The total pileup for the 9 mm Stud with a Rivet Plate Receptacle must be between 2.0 mm (.079 in) and 28.9 mm (1.138 in)!";
severity[30] = 2; messages[30] = "The total pileup for the 9 mm Stud with a Weld Plate Receptacle must be between 2.0 mm (.079 in) and 28.9 mm (1.138 in)!";
severity[31] = 1; messages[31] = "Your Gap has been recalculated for a minimum requirement.  This space is for the retainer, spring, and/or receptacle material.  If you have already added this to your panel or support, please remove it from there!";
severity[32] = 0; messages[32] = "For the Front Mount and Front Load Receptacles, the support dimension is not used in pileup calculations!";
severity[33] = 0; messages[33] = "For the Bracket Receptacle, the support dimension is not used!";
severity[34] = 2; messages[34] = "A panel thickness is required!";
severity[35] = 0; messages[35] = "For the Size 4 Bracket Receptacle, the pileup is the panel plus the minimum gap plus 1.2 mm (.047 in)!";
severity[36] = 0; messages[36] = "For the Size 6 Bracket Receptacle, the pileup is the panel plus the minimum gap plus 1.2 mm (.047 in)!";
severity[37] = 0; messages[37] = "For the Size 9 Bracket Receptacle, the pileup is the panel plus the minimum gap plus 1.6 mm (.063 in)!";

if (msgno > numberOfMessages)   alert(messages[0]);
else { switch (severity[msgno]) {
         case 0: { document.inParms.Notes.value = messages[msgno];       break; }
         case 1: { alert("Warning: "+messages[msgno]);                   break; } 
         case 2: { alert("Error: "+messages[msgno]); resetPartNumbers(); break; }
       }
     }
}