function calc(){

   var p=RN(6,1/document.getElementById('TPI').value);
   var H=RN(6,p*Math.cos(Math.PI/6));
   var BMAJD=document.getElementById('BMAJD').value;
   var LOE=(1/document.getElementById('TPI').value)*9;

   var C2APDTOL_1 = RN(6, 0.0015*(Math.pow(BMAJD,(1/3))) );
   var C2APDTOL_2 = RN(6, 0.0015*Math.sqrt(LOE) );
   var C2APDTOL_3 = RN(6, 0.015*Math.pow(Math.pow(p,2),(1/3)) );

   var Class2A_PD_Tol   = RN(6, parseFloat(C2APDTOL_1)+parseFloat(C2APDTOL_2)+parseFloat(C2APDTOL_3));
 
   document.getElementById('PDT').innerHTML = 
	C2APDTOL_1 + ", "
	 + C2APDTOL_2 + ", "
	 + C2APDTOL_3 + ": "
	 + Class2A_PD_Tol + ", "
	 + RN(6,(.75*Class2A_PD_Tol));

 
   //Class A External
   // Pitch Diameter Tolerance
   var x1A1 = RN(4,1.5 * Class2A_PD_Tol);
   var x2A1 = RN(4, Class2A_PD_Tol);
   var x3A1 = RN(4,.75 * Class2A_PD_Tol);

   // Allowance
   var x1A2 = RN(4,.3 * Class2A_PD_Tol);
   var x2A2 = RN(4,.3 * Class2A_PD_Tol);
   var x3A2 = RN(4,0);

   // Major Diameter Tolerance
   var x1A3 = RN(4,0.09*Math.pow(Math.pow(p,2),(1/3)));
   var x2A3 = RN(4,0.06*Math.pow(Math.pow(p,2),(1/3)));
   var x3A3 = RN(4,0.06*Math.pow(Math.pow(p,2),(1/3)));

   // Major Diameter Max
   var x1A6 = RN(4,BMAJD-x1A2);
   var x2A6 = RN(4,BMAJD-x2A2);
   var x3A6 = RN(4,BMAJD-x3A2);

   // Major Diameter Min
   var x1A7 = RN(4,x1A6 - x1A3);
   var x2A7 = RN(4,x2A6 - x2A3);
   var x3A7 = RN(4,x3A6 - x3A3);

   // Pitch Diameter Max
   var x1A4 = RN(4,x1A6 - (.75 * H));
   var x2A4 = RN(4,x2A6 - (.75 * H));
   var x3A4 = RN(4,x3A6 - (.75 * H));

   // Pitch Diameter Min
   var x1A5 = RN(4,x1A4 - x1A1);
   var x2A5 = RN(4,x2A4 - x2A1);
   var x3A5 = RN(4,x3A4 - x3A1);

   // Minor Diameter
   var x1A8 = RN(4,x1A6-((17*H/24)*2));
   var x2A8 = RN(4,x2A6-((17*H/24)*2));
   var x3A8 = RN(4,x3A6-((17*H/24)*2));


   // Class B Internal
   // Pitch Diameter Tolerance
   var x1B1 = RN(4,1.95 * Class2A_PD_Tol);
   var x2B1 = RN(4,1.3 *  Class2A_PD_Tol);
   var x3B1 = RN(4,.975 * Class2A_PD_Tol);

   // Minor Diameter Tolerance
   var x1B2 = RN(4,(.25*p)-(.4*(Math.pow(p,2))));
   var x2B2 = RN(4,(.25*p)-(.4*(Math.pow(p,2))));
   var x3B2 = RN(4,(.25*p)-(.4*(Math.pow(p,2))));

   // Minor Diameter Min
   var x1B7 = RN(4,BMAJD-(1.25*H));
   var x2B7 = RN(4,BMAJD-(1.25*H));
   var x3B7 = RN(4,BMAJD-(1.25*H));

   // Minor Diameter Max
   var x1B6 = RN(4,parseFloat(x1B7) + parseFloat(x1B2));
   var x2B6 = RN(4,parseFloat(x2B7) + parseFloat(x2B2));
   var x3B6 = RN(4,parseFloat(x3B7) + parseFloat(x3B2));

   // Pitch Diameter Min
   var x1B5 = RN(4,BMAJD-(.75*H));
   var x2B5 = RN(4,BMAJD-(.75*H));
   var x3B5 = RN(4,BMAJD-(.75*H));

   // Pitch Diameter Max
   var x1B4 = RN(4,parseFloat(x1B5) + parseFloat(x1B1));
   var x2B4 = RN(4,parseFloat(x2B5) + parseFloat(x2B1));
   var x3B4 = RN(4,parseFloat(x3B5) + parseFloat(x3B1));

   // Major Diameter
   var x1B8 = RN(4,parseFloat(x1B7)+((5*H/8)*2));
   var x2B8 = RN(4,parseFloat(x2B7)+((5*H/8)*2));
   var x3B8 = RN(4,parseFloat(x3B7)+((5*H/8)*2));




   document.getElementById('LOE').innerHTML = LOE;
   document.getElementById('PITCH').innerHTML = p;
   document.getElementById('H').innerHTML = H;

   document.getElementById('1A1').innerHTML=x1A1;
   document.getElementById('2A1').innerHTML=x2A1;
   document.getElementById('3A1').innerHTML=x3A1;
   document.getElementById('1A2').innerHTML=x1A2;
   document.getElementById('2A2').innerHTML=x2A2;
   document.getElementById('3A2').innerHTML=x3A2;

   document.getElementById('1A3').innerHTML=x1A3;
   document.getElementById('2A3').innerHTML=x2A3;
   document.getElementById('3A3').innerHTML=x3A3;

   document.getElementById('1A4').innerHTML=x1A4;
   document.getElementById('2A4').innerHTML=x2A4;
   document.getElementById('3A4').innerHTML=x3A4;

   document.getElementById('1A5').innerHTML=x1A5;
   document.getElementById('2A5').innerHTML=x2A5;
   document.getElementById('3A5').innerHTML=x3A5;

   document.getElementById('1A6').innerHTML=x1A6;
   document.getElementById('2A6').innerHTML=x2A6;
   document.getElementById('3A6').innerHTML=x3A6;

   document.getElementById('1A7').innerHTML=x1A7;
   document.getElementById('2A7').innerHTML=x2A7;
   document.getElementById('3A7').innerHTML=x3A7;

   document.getElementById('1A8').innerHTML=x1A8;
   document.getElementById('2A8').innerHTML=x2A8;
   document.getElementById('3A8').innerHTML=x3A8;



   document.getElementById('1B1').innerHTML=x1B1;
   document.getElementById('2B1').innerHTML=x2B1;
   document.getElementById('3B1').innerHTML=x3B1;

   document.getElementById('1B2').innerHTML=x1B2;
   document.getElementById('2B2').innerHTML=x2B2;
   document.getElementById('3B2').innerHTML=x3B2;

   document.getElementById('1B4').innerHTML=x1B4;
   document.getElementById('2B4').innerHTML=x2B4;
   document.getElementById('3B4').innerHTML=x3B4;

   document.getElementById('1B5').innerHTML=x1B5;
   document.getElementById('2B5').innerHTML=x2B5;
   document.getElementById('3B5').innerHTML=x3B5;

   document.getElementById('1B6').innerHTML=RN(3,x1B6);
   document.getElementById('2B6').innerHTML=RN(3,x2B6);
   document.getElementById('3B6').innerHTML=x3B6;

   document.getElementById('1B7').innerHTML=RN(3,x1B7);
   document.getElementById('2B7').innerHTML=RN(3,x2B7);
   document.getElementById('3B7').innerHTML=x3B7;

   document.getElementById('1B8').innerHTML=x1B8;
   document.getElementById('2B8').innerHTML=x2B8;
   document.getElementById('3B8').innerHTML=x3B8;

  }

function RN(N,Num){
  Num= "" + Math.round(Num * Math.pow(10,N));
  while(Num.length <= N){Num="0"+Num}
  var decpoint=Num.length - N;
  Num=Num.substring(0,decpoint)+"."+Num.substring(decpoint,Num.length);
  if(N==0){Num=Num.replace(/\./,"")}
  return Num;
  }

function TRUNC(Num){
	var numStr=Num.toString();
	var decPos = numStr.indexOf(".");	
	if ( decPos == -1 )
		return numStr + ".0000";
	else
	{
		// add two zeros to get at least two digits at the 
		// end of the string in case it ends at the decimal
		numStr += "0000";	
		return numStr.substr(0,decPos+5);
	} 
  }
