<!--Define JavaScript functions.-->

function solaxbrO(dataForm){			
  // Main program for solving the system Ax = b ONLY.
  // Assumes all entries are real numbers.
  // Gets input from text boxes.

 var dataFormElements = dataForm.elements; 	// Reference to the form elements array.
 var vecDim = dataForm.elements.length;   		// Number of coefficients
 var MATRIXDIM = 0;						// The dimension, N, of the system to be entered.
 
 if (vecDim == 13){
   MATRIXDIM = 3;			// It is a 3 x 3 system: 9 a-coeffs, 3 b-coeffs, and the "Solve" button.
 } // End if (vecDim == 13)
 else {
 
   if (vecDim == 21){
     MATRIXDIM = 4;			// It is a 4 x 4 system: 16 a-coeffs, 4 b-coeffs, and the "Solve" button.
   } // End if (vecDim == 21)
   else {
   
   if (vecDim == 31){
        MATRIXDIM = 5;			// It is a 5 x 5 system: 25 a-coeffs, 5 b-coeffs, and the "Solve" button.
   } // End if (vecDim == 31)
   else {
     alert("The length of the form Object array is " + vecDim + ". ");
     return;
   }
   
   } // End else (vecDim != 21)
 
 } // End else (vecDim != 13)
 
 var dummy;								// Float variable
 var k = 0;								// Integer variable
 var A = new Array(MATRIXDIM);
 var b = new Array(MATRIXDIM);
 var ipvt = new Array(MATRIXDIM);			// Vector for keeping track of permutations
 
 for (var i = 0; i < MATRIXDIM; i++){	// Create the square Matrix
   A[i] = new Array(MATRIXDIM);
   } // End for i loop
   
 // strPar is a dummy variable for passing the output string by reference  
 var strPar = new Object();
 strPar.outmsgstr = "";
 
 // outputPar is a dummy variable for passing output parameters by reference
 var outputPar = new Object();
 outputPar.rcond = 0;			// The condition number
 outputPar.outEr = 0;			// Error code
 
 document.getElementById('output').innerHTML = "";
 
 // Input data from the text boxes

 for (var i = 0; i < MATRIXDIM; i++) {
  for (var j = 0; j < MATRIXDIM; j++) {
    dummy = parseFloat(dataFormElements[k].value);
    if (!isNaN(dummy)){ // Field contains a valid number; otherwise ignore
      A[i][j] = dummy;
    }//End if !isNaN
    else {
      alert("Invalid input for data field k = " + k + ".");
      return;
    }
   k++;
  } // end for j loop
  dummy = parseFloat(dataFormElements[k].value);
  if (!isNaN(dummy)){ // Field contains a valid number; otherwise ignore
    b[i] = dummy;
  }//End if !isNaN
  else {
    alert("Invalid input for data field k = " + k + ".");
    return;
  }
  k++;
 } // End for i loop
 
 //  *******************************************************************
 // At this point, MATRIXDIM should be the matrix dimension 
 // and the A and b matrices should contain their appropriate values.
 //  ********************************************************************

 saxbr(MATRIXDIM, A, b, ipvt, outputPar);

 //  *******************************************************************
 // At this point, the original A matrix has been overwritten by 
 // coefficients of the LU decomposition and b contains the solution vector, x.
 //  ********************************************************************

strPar.outmsgstr = "<br /> &nbsp; &nbsp; The <b>x</b> vector components follow: <br /> &nbsp; &nbsp;";
realVecOut(MATRIXDIM, b, strPar);

strPar.outmsgstr = strPar.outmsgstr + "<br /> &nbsp; &nbsp; Error Code &nbsp; = &nbsp; " + outputPar.outEr + "<br /> &nbsp; &nbsp;";

strPar.outmsgstr = strPar.outmsgstr + " rcond &nbsp; = &nbsp; " + outputPar.rcond + "<br /> &nbsp; &nbsp;";

document.getElementById('output').innerHTML = strPar.outmsgstr;

return;
}  //End of solaxbr

// end of JavaScript-->