

function round(number,X) {
// rounds number to X decimal places, defaults to 3
    X = (!X ? 3 : X);
    return Math.round(number*Math.pow(10,X))/Math.pow(10,X);
}

//sealed rectangular 
function program1()
{
	if(document.calc_enclosure.sel.value == 1)  //inches
	{

		if(document.calc_enclosure.h.value == "" ||
			document.calc_enclosure.w.value == "" ||
			document.calc_enclosure.d.value == "" ||
			document.calc_enclosure.thickness.value == "" ||
			document.calc_enclosure.thicknessm.value == "")
		{
			alert("Please fill in all required fields! cm"); 
			return false;
		}
		// inches
		h = eval(document.calc_enclosure.h.value);
		w = eval(document.calc_enclosure.w.value);
		d = eval(document.calc_enclosure.d.value);

		thickness = eval(document.calc_enclosure.thickness.value);
		sp = eval(document.calc_enclosure.sp.value); 

		// inches to cm
		document.calc_enclosure.hm.value = round((document.calc_enclosure.h.value * 2.54), 3);
		document.calc_enclosure.wm.value = round((document.calc_enclosure.w.value * 2.54), 3);
		document.calc_enclosure.dm.value = round((document.calc_enclosure.d.value * 2.54), 3);
		document.calc_enclosure.thicknessm.value = round((document.calc_enclosure.thickness.value * 2.54), 3);

		// inches
		document.calc_enclosure.thickness.value = eval(document.calc_enclosure.thickness.value);

		if (document.calc_enclosure.thickness.value >= 0)  h = (h-(thickness*2));
		if (document.calc_enclosure.thickness.value >= 0)  w = (w-(thickness*2));
		if (document.calc_enclosure.thickness.value >= 0)  d = (d-(thickness*2));

		document.calc_enclosure.box_volume.value = round(((h*w*d)/1728), 3); // ft3 gross_box_volume
		document.calc_enclosure.sp.value = round(sp,3);
		document.calc_enclosure.net_box_volume.value = round((document.calc_enclosure.box_volume.value - sp), 3);  // net_box_volume

	}
		else if ((document.calc_enclosure.sel.value == 2))
	{
		if(document.calc_enclosure.hm.value == "" ||
			document.calc_enclosure.wm.value == "" ||
			document.calc_enclosure.dm.value == "")
		{
			alert("Please fill in all required fields! inches");
			return false;
		}
		// cm
		hm = eval(document.calc_enclosure.hm.value);
		wm = eval(document.calc_enclosure.wm.value);
		dm = eval(document.calc_enclosure.dm.value);
		thicknessm = eval(document.calc_enclosure.thicknessm.value);
		spm = eval(document.calc_enclosure.spm.value); 

		// cm to inches
		document.calc_enclosure.h.value = round((document.calc_enclosure.hm.value / 2.54),3);
		document.calc_enclosure.w.value = round((document.calc_enclosure.wm.value / 2.54),3);
		document.calc_enclosure.d.value = round((document.calc_enclosure.dm.value / 2.54),3);

		document.calc_enclosure.thickness.value = round((document.calc_enclosure.thicknessm.value / 2.54),3);
		//document.calc_enclosure.sp.value = document.calc_enclosure.spm.value

		// cm
		document.calc_enclosure.thicknessm.value = eval(document.calc_enclosure.thicknessm.value);

		if (document.calc_enclosure.thicknessm.value >= 0)  hm = (hm-(thicknessm*2));
		if (document.calc_enclosure.thicknessm.value >= 0)  wm = (wm-(thicknessm*2));
		if (document.calc_enclosure.thicknessm.value >= 0)  dm = (dm-(thicknessm*2));

		document.calc_enclosure.box_volumem.value = round(((hm*wm*dm)/1000), 3); // Liter
		document.calc_enclosure.spm.value = round(spm,3);
		document.calc_enclosure.net_box_volumem.value = round((document.calc_enclosure.box_volumem.value - spm), 3);
	}
		else
	{
		alert("Please choose inch or cm!");
	}
}



// sealed triangular -->

function program2() {

if(document.calc_enclosure.sel2.value == 1)  //inches
	{
		if(document.calc_enclosure.h2.value == "" ||
			document.calc_enclosure.w2.value == "" ||
			document.calc_enclosure.d2.value == "" ||
			document.calc_enclosure.d3.value == "")
		{
			alert("Please fill in all required fields!"); 
			return false;
		}

		h2 = eval(document.calc_enclosure.h2.value);
		w2 = eval(document.calc_enclosure.w2.value);
		d2 = eval(document.calc_enclosure.d2.value);
		d3 = eval(document.calc_enclosure.d3.value);
		thickness2 = eval(document.calc_enclosure.thickness2.value);
		sp2 = eval(document.calc_enclosure.sp2.value);


	document.calc_enclosure.thickness2.value = eval(document.calc_enclosure.thickness2.value);
		if (document.calc_enclosure.thickness2.value >= 0)  h2 = (h2-(thickness2*2));
		if (document.calc_enclosure.thickness2.value >= 0)  w2 = (w2-(thickness2*2));
		if (document.calc_enclosure.thickness2.value >= 0)  d2 = (d2-(thickness2*2));
		if (document.calc_enclosure.thickness2.value >= 0)  d3 = (d3-(thickness2*2));

		document.calc_enclosure.box_volume2.value = round(((h2*w2*((d2+d3)/2))/1728), 3);
		document.calc_enclosure.net_box_volume2.value = round((document.calc_enclosure.box_volume2.value - sp2), 3);  // net_box_volume


	// calculate angle of enclosure

	box_angle2 = (Math.atan(document.calc_enclosure.h2.value / (document.calc_enclosure.d3.value-document.calc_enclosure.d2.value)));

	document.calc_enclosure.box_angle2.value = round((box_angle2*(180/3.1415927)), 2);
	}
		else if(document.calc_enclosure.sel2.value == 2)  //cm
	{

		if(document.calc_enclosure.h2m.value == "" ||
			document.calc_enclosure.w2m.value == "" ||
			document.calc_enclosure.d2m.value == "" ||
			document.calc_enclosure.d3m.value == "")
		{
			alert("Please fill in all reqiured fields!"); 
			return false;
		}

		h2m = eval(document.calc_enclosure.h2m.value);
		w2m = eval(document.calc_enclosure.w2m.value);
		d2m = eval(document.calc_enclosure.d2m.value);
		d3m = eval(document.calc_enclosure.d3m.value);
		thickness2m = eval(document.calc_enclosure.thickness2m.value);
		spm2 = eval(document.calc_enclosure.spm2.value);


	// cm
	document.calc_enclosure.thickness2m.value = eval(document.calc_enclosure.thickness2m.value);
		if (document.calc_enclosure.thickness2m.value >= 0)  h2m = (h2m-(thickness2m*2));
		if (document.calc_enclosure.thickness2m.value >= 0)  w2m = (w2m-(thickness2m*2));
		if (document.calc_enclosure.thickness2m.value >= 0)  d2m = (d2m-(thickness2m*2));
		if (document.calc_enclosure.thickness2m.value >= 0)  d3m = (d3m-(thickness2m*2));

	document.calc_enclosure.box_volume2m.value = round((((h2m*w2m*((d2m+d3m)/2))/1000)), 3);
	document.calc_enclosure.net_box_volume2m.value = round((document.calc_enclosure.box_volume2m.value - spm2), 3);  // net_box_volume
	

	// calculate angle of enclosure

	box_angle2m = (Math.atan(eval(document.calc_enclosure.h2m.value) / (document.calc_enclosure.d3m.value - document.calc_enclosure.d2m.value)));
		
	document.calc_enclosure.box_angle2m.value = round((box_angle2m * (180/3.1415927)), 2);
	}
		else
	{
		alert("Please choose inch or cm!");
	}
}




function program2b()
{
	if (document.calc_enclosure.h2bm.value == "")
	{
	document.calc_enclosure.h2bm.value = round((eval(document.calc_enclosure.h2b.value) * 2.54),3);
	document.calc_enclosure.w2bm.value = round((eval(document.calc_enclosure.w2b.value) * 2.54),3);
	document.calc_enclosure.d2bm.value = round((eval(document.calc_enclosure.d2b.value) * 2.54),3);
	document.calc_enclosure.d3bm.value = round((eval(document.calc_enclosure.d3b.value) * 2.54),3);
	document.calc_enclosure.thickness2bm.value = round((eval(document.calc_enclosure.thickness2b.value) * 2.54),3);
	}
	else
	{
	document.calc_enclosure.h2b.value = round((eval(document.calc_enclosure.h2bm.value) / 2.54),3);
	document.calc_enclosure.w2b.value = round((eval(document.calc_enclosure.w2bm.value) / 2.54),3);
	document.calc_enclosure.d2b.value = round((eval(document.calc_enclosure.d2bm.value) / 2.54),3);
	document.calc_enclosure.d3b.value = round((eval(document.calc_enclosure.d3bm.value) / 2.54),3);
	document.calc_enclosure.thickness2b.value = round((eval(document.calc_enclosure.thickness2bm.value) / 2.54),3);
	}


	h2b = eval(document.calc_enclosure.h2b.value);
	w2b = eval(document.calc_enclosure.w2b.value);
	d2b = eval(document.calc_enclosure.d2b.value);
	d3b = eval(document.calc_enclosure.d3b.value);
	thickness2b = eval(document.calc_enclosure.thickness2b.value);

	box_volume2b_original = (document.calc_enclosure.box_volume2b_original.value);
	box_volume2b_original_warning = (document.calc_enclosure.box_volume2b_original_warning.value);
	box_volume2b_hold1 = (document.calc_enclosure.box_volume2b_hold1.value);
	box_volume2b_hold2 = (document.calc_enclosure.box_volume2b_hold2.value);
	box_volume2b_hold3 = (document.calc_enclosure.box_volume2b_hold3.value);
	box_volume2b_hold4 = (document.calc_enclosure.box_volume2b_hold4.value);
	box_volume2b_hold5 = (document.calc_enclosure.box_volume2b_hold5.value);
	box_volume2b_final = (document.calc_enclosure.box_volume2b_final.value);

	frequency2b = (document.calc_enclosure.frequency2b.value);

	if(document.calc_enclosure.diameter2bm.value =="")
	{
		document.calc_enclosure.diameter2bm.value = 	round((document.calc_enclosure.diameter2b.value * 2.54), 3);
	}
	else
	{
		document.calc_enclosure.diameter2b.value = 	round((document.calc_enclosure.diameter2bm.value / 2.54), 3);
	}

	diameter2b = (document.calc_enclosure.diameter2b.value);

	length_of_port2b1 = (document.calc_enclosure.length_of_port2b1.value);
	length_of_port2b2 = (document.calc_enclosure.length_of_port2b2.value);
	length_of_port2b3 = (document.calc_enclosure.length_of_port2b3.value);
	length_of_port2b4 = (document.calc_enclosure.length_of_port2b4.value);
	length_of_port2b5 = (document.calc_enclosure.length_of_port2b5.value);
	length_of_port2b6 = (document.calc_enclosure.length_of_port2b6.value);

	port_volume2b = (document.calc_enclosure.port_volume2b.value);
	ports_number_of2b = (document.calc_enclosure.ports_number_of2b.value);
	radius2b =  (document.calc_enclosure.diameter2b.value/2);

	radius2bm =  (document.calc_enclosure.diameter2bm.value/2);

	port_area2b = (document.calc_enclosure.port_area2b.value);
	port_to_final_volume_ratio2b = (document.calc_enclosure.port_to_final_volume_ratio2b.value);

	box_angle = (document.calc_enclosure.box_angle.value);
	length_of_port_length_warning = (document.calc_enclosure.length_of_port_length_warning.value);

	port_ratio_input = (document.calc_enclosure.port_ratio_input.value);
	port_h_w = (document.calc_enclosure.port_h_w.value);
	port_height = (document.calc_enclosure.port_height.value);
	port_width = (document.calc_enclosure.port_width.value);

	//metric
	port_h_wm = (document.calc_enclosure.port_h_wm.value);
	port_heightm = (document.calc_enclosure.port_heightm.value);
	port_widthm = (document.calc_enclosure.port_widthm.value);

	if(document.calc_enclosure.port_h_wm.value == "" && 
	document.calc_enclosure.port_heightm.value =="" && 
	document.calc_enclosure.port_widthm.value == "")
	{
		document.calc_enclosure.port_h_wm.value = document.calc_enclosure.port_h_w.value * 2.54;
		document.calc_enclosure.port_heightm.value = document.calc_enclosure.port_height.value * 2.54;
		document.calc_enclosure.port_widthm.value = document.calc_enclosure.port_width.value * 2.54;
	}
	else
	{
		document.calc_enclosure.port_h_w.value = document.calc_enclosure.port_h_wm.value / 2.54;
		document.calc_enclosure.port_height.value = document.calc_enclosure.port_heightm.value / 2.54;
		document.calc_enclosure.port_width.value = document.calc_enclosure.port_widthm.value / 2.54;
	}

	if (document.calc_enclosure.speaker_displacementm.value =="")
	{
		document.calc_enclosure.speaker_displacementm.value = round((eval(document.calc_enclosure.speaker_displacement.value) * 28.316847), 3);
	}
	else
	{
		document.calc_enclosure.speaker_displacement.value = round((eval(document.calc_enclosure.speaker_displacementm.value) / 28.316847), 3);
	}
	

	speaker_displacement = eval(document.calc_enclosure.speaker_displacement.value);
	// Liter
	speaker_displacementm = eval(document.calc_enclosure.speaker_displacementm.value);

	// calculate angle of enclosure

	box_anglex = (Math.atan(document.calc_enclosure.h2b.value/(document.calc_enclosure.d3b.value-document.calc_enclosure.d2b.value)));

	document.calc_enclosure.box_angle.value = (box_anglex*(180/3.1415927));

	/* degrees = radians(180/3.141593) all of the javascript trig functions use radians - to convert we used this formula */


	//  round port area to 3 decimal places

	document.calc_enclosure.box_angle.value = round(document.calc_enclosure.box_angle.value, 3);



	// set length port warning string to blank

	if (document.calc_enclosure.length_of_port2b5.value >= 0)  
		document.calc_enclosure.length_of_port2b_warning.value = " ";

	// set enclosure - port warning string to blank

	if (document.calc_enclosure.box_volume2b_final.value >= 0)  
		document.calc_enclosure.box_volume2b_final_warning.value = " ";

	// reduce dimensions to allow for wood

	document.calc_enclosure.thickness2b.value = eval(document.calc_enclosure.thickness2b.value);
	if (document.calc_enclosure.thickness2b.value >= 0)  h2b = (h2b-(thickness2b*2));
	if (document.calc_enclosure.thickness2b.value >= 0)  w2b = (w2b-(thickness2b*2));
	if (document.calc_enclosure.thickness2b.value >= 0)  d2b = (d2b-(thickness2b*2));
	if (document.calc_enclosure.thickness2b.value >= 0)  d3b = (d3b-(thickness2b*2));

	// find volume in ft^3
		document.calc_enclosure.box_volume2b_original.value =   (h2b*w2b*(d2b+d3b)/2)/1728 - speaker_displacement;
	// find volume in Liter
		document.calc_enclosure.box_volume2b_originalm.value =  round(((document.calc_enclosure.box_volume2b_original.value * 28.316847) - speaker_displacementm), 3);

	// Error checking - original volume

		if (document.calc_enclosure.box_volume2b_original.value < 0)  
			document.calc_enclosure.box_volume2b_original_warning.value = "**ERROR** Check your dimensions.\nGross enclosure volume is a negative number. This calculation was done before the port volume was removed so you probably entered an improper wood thickness.";
		if (document.calc_enclosure.box_volume2b_originalm.value >= 0)  
			document.calc_enclosure.box_volume2b_original_warning.value = " ";

	// calculate port area

	document.calc_enclosure.port_area2b.value = (3.14159*(radius2b*radius2b) * ports_number_of2b);
	document.calc_enclosure.port_area2bm.value = round((document.calc_enclosure.port_area2b.value * 6.4516), 3);
	// ######   

	// First time through calculations

	// Will have to calculate port and enclosure volume several times...
	// ...to allow port volume to be subtracted from encl volume

	// calculate port LENGTH 1st time

	document.calc_enclosure.length_of_port2b1.value = ((14630000*radius2b*radius2b*ports_number_of2b)/(document.calc_enclosure.frequency2b.value*document.calc_enclosure.frequency2b.value*document.calc_enclosure.box_volume2b_original.value*1728))-(1.5*radius2b);
	// metric
	document.calc_enclosure.length_of_port2b1m.value = round((document.calc_enclosure.length_of_port2b1.value * 2.54), 3);

	// Error checking - port length

		if (document.calc_enclosure.length_of_port2b1.value < 0)  
			document.calc_enclosure.length_of_port2b_warning.value = "**ERROR** Check your dimensions.\nPort length or port volume is or was a negative number in one of the internal calculations. Try using a larger enclosure, a higher frequency, a smaller port or fewer ports. ";

	// calculate port VOLUME 1st time

	document.calc_enclosure.port_volume2b.value = ((3.14159*(radius2b*radius2b)*document.calc_enclosure.length_of_port2b1.value*ports_number_of2b)/1728);

	//document.calc_enclosure.port_volume2bm.value = round(document.calc_enclosure.port_volume2b.value * 28.316847, 2);
	document.calc_enclosure.port_volume2bm.value = ((3.14159*(radius2bm*radius2bm)*document.calc_enclosure.length_of_port2b1m.value*ports_number_of2b)/1000);
	// subtract port volume from enclosure volume

	document.calc_enclosure.box_volume2b_hold1.value = (document.calc_enclosure.box_volume2b_original.value - (document.calc_enclosure.port_volume2b.value));
	document.calc_enclosure.box_volume2b_hold1m.value = document.calc_enclosure.port_volume2bm.value;

	// Error checking - hold1 volume

		if (document.calc_enclosure.box_volume2b_hold1.value < 0)  
			document.calc_enclosure.box_volume2b_final_warning.value = "**ERROR** Check your dimensions.\nThe net enclosure volume is or was a  negative number in one of the internal calculations. The port volume is too large or the enclosure is too small. Try using smaller ports or a fewer number of ports. ";

	// ######   ######   

	// *****second time through calculations*****

	// recalculate port length with reduced enclosure volume

	document.calc_enclosure.length_of_port2b2.value = ((14630000*radius2b*radius2b*ports_number_of2b)/(document.calc_enclosure.frequency2b.value*document.calc_enclosure.frequency2b.value*document.calc_enclosure.box_volume2b_hold1.value*1728))-(1.5*radius2b);
	document.calc_enclosure.length_of_port2b2m.value = document.calc_enclosure.length_of_port2b2.value * 2.54;


	// Error checking - port length

		if (document.calc_enclosure.length_of_port2b2.value < 0)  
			document.calc_enclosure.length_of_port2b_warning.value = "**ERROR** Check your dimensions.\nPort length or port volume is or was a negative number in one of the internal calculations. Try using a larger enclosure, a higher frequency, a smaller port or fewer ports. ";

	// recalculate port volume 

	document.calc_enclosure.port_volume2b.value = ((3.14159*(radius2b*radius2b)*document.calc_enclosure.length_of_port2b2.value*ports_number_of2b)/1728);
	//document.calc_enclosure.port_volume2bm.value = round((document.calc_enclosure.port_volume2b.value * 28.316847), 3);
	document.calc_enclosure.port_volume2bm.value = ((3.14159*(radius2bm*radius2bm)*document.calc_enclosure.length_of_port2b1m.value*ports_number_of2b)/1000);

	// subtract port volume from enclosure volume

	document.calc_enclosure.box_volume2b_hold2.value = (document.calc_enclosure.box_volume2b_original.value - (document.calc_enclosure.port_volume2b.value));

	// Error checking - hold2 volume

		if (document.calc_enclosure.box_volume2b_hold2.value < 0)  
			document.calc_enclosure.box_volume2b_final_warning.value = "**ERROR** Check your dimensions.\nThe net enclosure volume is or was a  negative number in one of the internal calculations. The port volume is too large or the enclosure is too small. Try using smaller ports or a fewer number of ports. ";

	// ######   ######   ######  

	// *****third time through calculations*****

	// recalculate port length with reduced enclosure volume

	document.calc_enclosure.length_of_port2b3.value = ((14630000*radius2b*radius2b*ports_number_of2b)/(document.calc_enclosure.frequency2b.value*document.calc_enclosure.frequency2b.value*document.calc_enclosure.box_volume2b_hold2.value*1728))-(1.5*radius2b);

	// Error checking - port length

		if (document.calc_enclosure.length_of_port2b3.value < 0)  
			document.calc_enclosure.length_of_port2b_warning.value = "**ERROR** Check your dimensions.\nPort length or port volume is or was a negative number in one of the internal calculations. Try using a larger enclosure, a higher frequency, a smaller port or fewer ports. ";

	// recalculate port volume 

	document.calc_enclosure.port_volume2b.value = ((3.14159*(radius2b*radius2b)*document.calc_enclosure.length_of_port2b3.value*ports_number_of2b)/1728);

	document.calc_enclosure.port_volume2bm.value = ((3.14159*(radius2bm*radius2bm)*document.calc_enclosure.length_of_port2b1m.value*ports_number_of2b)/1000);

	// subtract port volume from enclosure volume

	document.calc_enclosure.box_volume2b_hold3.value = (document.calc_enclosure.box_volume2b_original.value - (document.calc_enclosure.port_volume2b.value));

	// Error checking - hold3 volume

		if (document.calc_enclosure.box_volume2b_hold3.value < 0)  
			document.calc_enclosure.box_volume2b_final_warning.value = "**ERROR** Check your dimensions.\nThe net enclosure volume is or was a  negative number in one of the internal calculations. The port volume is too large or the enclosure is too small. Try using smaller ports or a fewer number of ports. ";

	// ######   ######   ######  ######  

	// *****fourth time through calculations*****

	// recalculate port length with reduced enclosure volume

	document.calc_enclosure.length_of_port2b4.value = ((14630000*radius2b*radius2b*ports_number_of2b)/(document.calc_enclosure.frequency2b.value*document.calc_enclosure.frequency2b.value*document.calc_enclosure.box_volume2b_hold3.value*1728))-(1.5*radius2b);

	// Error checking - port length

		if (document.calc_enclosure.length_of_port2b4.value < 0)  
			document.calc_enclosure.length_of_port2b_warning.value = "**ERROR** Check your dimensions.\nPort length or port volume is or was a negative number in one of the internal calculations. Try using a larger enclosure, a higher frequency, a smaller port or fewer ports. ";


	// recalculate port volume 

	document.calc_enclosure.port_volume2b.value = ((3.14159*(radius2b*radius2b)*document.calc_enclosure.length_of_port2b4.value*ports_number_of2b)/1728);

	document.calc_enclosure.port_volume2bm.value = ((3.14159*(radius2bm*radius2bm)*document.calc_enclosure.length_of_port2b1m.value*ports_number_of2b)/1000);


	// subtract port volume from enclosure volume

	document.calc_enclosure.box_volume2b_hold4.value = (document.calc_enclosure.box_volume2b_original.value - (document.calc_enclosure.port_volume2b.value));

	// Error checking - hold4 volume

		if (document.calc_enclosure.box_volume2b_hold4.value < 0)  
			document.calc_enclosure.box_volume2b_final_warning.value = "**ERROR** Check your dimensions.\nThe net enclosure volume is or was a  negative number in one of the internal calculations. The port volume is too large or the enclosure is too small. Try using smaller ports or a fewer number of ports. ";

	// ######   ######   ######  ######  ######  

	// *****fifth time through calculations*****

	// recalculate port length with reduced enclosure volume

	document.calc_enclosure.length_of_port2b5.value = ((14630000*radius2b*radius2b*ports_number_of2b)/(document.calc_enclosure.frequency2b.value*document.calc_enclosure.frequency2b.value*document.calc_enclosure.box_volume2b_hold4.value*1728))-(1.5*radius2b);

	// recalculate port volume 

	document.calc_enclosure.port_volume2b.value = ((3.14159*(radius2b*radius2b)*document.calc_enclosure.length_of_port2b5.value*ports_number_of2b)/1728);

	document.calc_enclosure.port_volume2bm.value = ((3.14159*(radius2bm*radius2bm)*document.calc_enclosure.length_of_port2b1m.value*ports_number_of2b)/1000);

	// subtract port volume from enclosure volume

	document.calc_enclosure.box_volume2b_hold5.value = (document.calc_enclosure.box_volume2b_original.value - (document.calc_enclosure.port_volume2b.value));

	// Error checking - hold5 volume

		if (document.calc_enclosure.box_volume2b_hold5.value < 0)  
			document.calc_enclosure.box_volume2b_final_warning.value = "**ERROR** Check your dimensions.\nThe net enclosure volume is or was a  negative number in one of the internal calculations. The port volume is too large or the enclosure is too small. Try using smaller ports or a fewer number of ports. ";

	// ######   ######   ######  ######  ######  ######

	// *****last time through calculations*****

	// subtract port volume from enclosure volume

	document.calc_enclosure.box_volume2b_final.value = (document.calc_enclosure.box_volume2b_original.value - (document.calc_enclosure.port_volume2b.value));
	document.calc_enclosure.box_volume2b_finalm.value = round((document.calc_enclosure.box_volume2b_original.value - document.calc_enclosure.port_volume2b.value)  * 28.316847, 3);


	// Error checking - final volume


		if (document.calc_enclosure.box_volume2b_final.value < 0)  
			document.calc_enclosure.box_volume2b_final_warning.value = "**ERROR** Check your dimensions.\n The net enclosure volume is or was a  negative number in one of the internal calculations. The port volume is too large or the enclosure is too small. Try using smaller ports or a fewer number of ports. ";

	// recalculate port length with final enclosure volume

	document.calc_enclosure.length_of_port2b6.value = ((14630000*radius2b*radius2b*ports_number_of2b)/(document.calc_enclosure.frequency2b.value*document.calc_enclosure.frequency2b.value*document.calc_enclosure.box_volume2b_final.value*1728))-(1.5*radius2b);

	// metric
	document.calc_enclosure.length_of_port2b6m.value =  round((document.calc_enclosure.length_of_port2b6.value * 2.54), 3);

	// Error checking - port length

		if (document.calc_enclosure.length_of_port2b5.value < 0)  
			document.calc_enclosure.length_of_port2b_warning.value = "**ERROR** Check your dimensions.\nPort length or port volume is or was a negative number in one of the internal calculations. Try using a larger enclosure, a higher frequency, a smaller port or fewer ports. ";


	// rounding port length

		document.calc_enclosure.length_of_port2b6.value = (document.calc_enclosure.length_of_port2b6.value*1000);
		document.calc_enclosure.length_of_port2b6.value = Math.round(document.calc_enclosure.length_of_port2b6.value);
		document.calc_enclosure.length_of_port2b6.value = (document.calc_enclosure.length_of_port2b6.value/1000);

	// recalculate port volume 

	document.calc_enclosure.port_volume2b.value = ((3.14159*(radius2b*radius2b)*document.calc_enclosure.length_of_port2b5.value*ports_number_of2b)/1728);

	document.calc_enclosure.port_volume2bm.value = round(((3.14159*(radius2bm*radius2bm)*document.calc_enclosure.length_of_port2b1m.value*ports_number_of2b)/650.82), 3);

	// rounding port volume

		document.calc_enclosure.port_volume2b.value = (document.calc_enclosure.port_volume2b.value*1000);
		document.calc_enclosure.port_volume2b.value = Math.round(document.calc_enclosure.port_volume2b.value);
		document.calc_enclosure.port_volume2b.value = (document.calc_enclosure.port_volume2b.value/1000);

	// subtract port volume from enclosure volume

	document.calc_enclosure.box_volume2b_final.value = (document.calc_enclosure.box_volume2b_original.value - (document.calc_enclosure.port_volume2b.value));

	document.calc_enclosure.box_volume2b_finalm.value = (document.calc_enclosure.box_volume2b_originalm.value - (document.calc_enclosure.port_volume2bm.value));

	// Error checking - final volume

		if (document.calc_enclosure.box_volume2b_final.value < 0)  
			document.calc_enclosure.box_volume2b_final_warning.value = "**ERROR** Check your dimensions.\nThe net enclosure volume is or was a  negative number in one of the internal calculations. The port volume is too large or the enclosure is too small. Try using smaller ports or a fewer number of ports. ";

	// rounding enclosure volume final

		document.calc_enclosure.box_volume2b_final.value = (document.calc_enclosure.box_volume2b_final.value*1000);
		document.calc_enclosure.box_volume2b_final.value = Math.round(document.calc_enclosure.box_volume2b_final.value);
		document.calc_enclosure.box_volume2b_final.value = (document.calc_enclosure.box_volume2b_final.value/1000);

	// rounding enclosure volume original

		document.calc_enclosure.box_volume2b_original.value = (document.calc_enclosure.box_volume2b_original.value*1000);
		document.calc_enclosure.box_volume2b_original.value = Math.round(document.calc_enclosure.box_volume2b_original.value);
		document.calc_enclosure.box_volume2b_original.value = (document.calc_enclosure.box_volume2b_original.value/1000);

	// port to net volume ratio

	document.calc_enclosure.port_to_final_volume_ratio2b.value = (document.calc_enclosure.box_volume2b_final.value - (document.calc_enclosure.port_volume2b.value));

	// Error checking - port to net volume ratio

		if (document.calc_enclosure.port_to_final_volume_ratio2b.value >= 0)  
			document.calc_enclosure.port_to_final_volume_ratio2b_warning.value = " ";
		if (document.calc_enclosure.port_to_final_volume_ratio2b.value < 0)  
			document.calc_enclosure.port_to_final_volume_ratio2b_warning.value = "**ERROR** Check your dimensions.\nTry a smaller port size or fewer ports so that the port volume is less than net volume. ";


	//  round port area to 3 decimal places

		document.calc_enclosure.port_area2b.value = (document.calc_enclosure.port_area2b.value*1000);
		document.calc_enclosure.port_area2b.value = Math.round(document.calc_enclosure.port_area2b.value);
		document.calc_enclosure.port_area2b.value = (document.calc_enclosure.port_area2b.value/1000);


	// Port length error check

		if ((eval(document.calc_enclosure.length_of_port2b6.value)+eval(document.calc_enclosure.diameter2b.value)) >= (eval(document.calc_enclosure.d3b.value)) &&
	 (eval(document.calc_enclosure.d2b.value)) &&
	 (eval(document.calc_enclosure.h2b.value)) &&
	 (eval(document.calc_enclosure.w2b.value)) )  
			document.calc_enclosure.length_of_port_length_warning.value = "**ERROR**Check your dimensions.\nThe port is too long to fit inside the enclosure. You may need to use a curved port, less port area or a higher tuning frequency.";

	else 	{document.calc_enclosure.length_of_port_length_warning.value = " ";}


	// Square Port Dimensions
	document.calc_enclosure.port_h_w.value = Math.sqrt(document.calc_enclosure.port_area2b.value);
	// metric
	document.calc_enclosure.port_h_wm.value = Math.sqrt(document.calc_enclosure.port_area2bm.value);


	//
	document.calc_enclosure.port_height.value = (document.calc_enclosure.port_h_w.value/Math.sqrt(document.calc_enclosure.port_ratio_input.value));
	document.calc_enclosure.port_height.value = (Math.round(document.calc_enclosure.port_height.value*1000))/1000;
	// metric
	document.calc_enclosure.port_heightm.value = (document.calc_enclosure.port_h_wm.value/Math.sqrt(document.calc_enclosure.port_ratio_input.value));
	document.calc_enclosure.port_heightm.value = (Math.round(document.calc_enclosure.port_heightm.value*1000))/1000;
	//
	document.calc_enclosure.port_width.value = (document.calc_enclosure.port_h_w.value*Math.sqrt(document.calc_enclosure.port_ratio_input.value));
	document.calc_enclosure.port_width.value = (Math.round(document.calc_enclosure.port_width.value*1000))/1000;
	// metric
	document.calc_enclosure.port_widthm.value = (document.calc_enclosure.port_h_wm.value*Math.sqrt(document.calc_enclosure.port_ratio_input.value));
	document.calc_enclosure.port_widthm.value = (Math.round(document.calc_enclosure.port_widthm.value*1000))/1000;
	}

function program3()
{
	alert('prog3');
/*
	var a_pyra, h_pyra, vb_pyra
	a_pyra = eval(document.calc_pyra.a_pyra.value);
	h_pyra = eval(document.calc_pyra.h_pyra.value);
	alert(a_pyra);

	vb_pyra = ((a_pyra * a_pyra) * h_pyra) / 3;

   document.calc_pyra.vb_pyra.value = round(vb_pyra,1);*/

}
