function compute(f) 
{
   Name   = new Array("AS15", "AS30", "AS60", "AS120", "AS180", "AS240", "AS120, AS180 & (1)Equalizer", "(2)AS180s & (1)Equalizer", "AS180, AS240 & (1)Equalizer", "(2)AS240s & (1)Equalizer", " ");
   MaxGph = new Array(2.07, 4.15, 8.30, 16.61, 24.91, 33.22, 41.52, 49.83, 58.13, 66.44);

   Name2  = new Array("PZD-G-05", "PZD-G-15", "PZD-01-15", "PZD-01-30", "PZD-01-55", "(2)PZD-01-55 & (1)Equalizer", "(3)PZD-01-55 & (1)Equalizer", "(4)PZD-01-55 & (1)Equalizer");
   MaxCfm = new Array(60, 125, 250, 560, 1125, 2250, 3375, 4500);
   
   DrainName   = new Array("", "ACD3", "ACD5", "EDS-2BV","EZ12", "RD11", "RD13", "RD26", "RD600");
   DrainGphMin = new Array(    0.0,    1.6,   6.00,      6.00,       0,   3.21,  29.32,   80.4,     0.0);
   DrainGphMax = new Array(   3.21,   6.00,  15.01,        28,       9, 29.315,   80.4, 160.88,  29.315);
   DrainPsiMin = new Array(      0,      0,      0,         0,       0,      0,      0,      0,     250);
   DrainPsiMax = new Array(    250,    200,    200,       200,     250,    250,    250,    250,     600);
   DrainRusty  = new Array(      1,      0,      0,         1,       1,      1,      1,      1,       1);

   Comp   = new Array(1.00, 0.50, 0.50, 0.50, 0.50);	//a_type coefficients
   Lubr   = new Array(1.00, 1.00, 0.84, 0.84, 0.84, 1, 0.73, 0.36, 0.36, 0.36, 1); 	//b_type coefficients
   Temp   = new Array(0.035423, 0.027135, 0.020532, 0.015380, 0.011372, 0.008291, 0.005967, 0.004223, 0.002943);	//c_type coefficients
   Humid  = new Array(1.0, 0.9, 0.8, 0.7, 0.6, 0.5, 0.4, 0.3, 0.2, 0.1);	//d_type coefficients
   Dryer  = new Array(1.00, 0.25, 0.75, 0.00, 0.75);	//e_type coefficients
   Drain  = new Array(1.00, 0.90, 0.80);	//f_type coefficient

   var a_type   = f.a_type.selectedIndex;	//compressor
   var b_type   = f.b_type.selectedIndex;	//lubricant
   var c_type   = f.c_type.selectedIndex;	//max temp
   var d_type   = f.d_type.selectedIndex;	//rel.humidity @max temp.
   var e_type   = f.e_type.selectedIndex;	//dryer type
   var f_type   = f.f_type.selectedIndex;	//drain type
   var p;
   var cf;
	var asfilter = 0;
	var pzfilter = 0;

   // Clear Outputs
   f.load.value = "";
   f.recommend1.value = "";
   f.recommend2.value = "";
   f.recommend3.value = "";
   p = "";
   p2 = "";
   cf = "";
   m = "";


	if (a_type == 9)
		pzfilter = 1;
	if ((a_type == 3) || (a_type == 4) || (b_type == 5) || (b_type == 8) || (b_type == 10) || ((f.eml.value >= 2) && (f.eml.value <= 3)))
		asfilter = 1;
	if (pzfilter != 1)
	{
		for (var j=0; j<10; j++)
		{
		var cf = f.cfm.value;
		if (a_type == 3)
			{
			cf = cf * 2;
			}
		if (cf <= MaxCfm[j])
	   		{
			var p2 = 100 * cf / MaxCfm[j];
			p2 = parseInt(p2*100.0) / 100; // round to two decimal places
			f.recommend2.value = "POSI-ZORB " + Name2[j] + " at " + p2 + "% Capacity";
			if (b_type == 9)
				f.recommend2.value = "";
			break;
			}
		}
	}
	if (Dryer[e_type] <= 0)				//if deliquescent dryer
		f.recommend1.value = "Consult Factory regarding Dryer Type";
	else
	{
		var gph = f.cfm.value * Temp[c_type] * Humid[d_type] * Dryer[e_type];
		gph = parseInt(gph*100.0) / 100; // round to two decimal places
		f.load.value = gph + " Gallons Per Hour ";

		if (f.lml.value > 40)												//lml=lubricant ml
			f.recommend3.value = "Oil Container may contain some water";
		if (f.eml.value >= 2)												//eml=emulsion ml
		{
			f.recommend3.value = "";		//recommend3
			m = 0;
		}
		if (f.eml.value > 3)
		{
			f.recommend3.value = "Consult Factory";
			m = 0;
		}
		else if (f.min.value > 0)
		{
			if (f.eml.value > 0)
			{
				f.recommend3.value = "Emulsion may accelerate Accu-Sep Filter consumption";
				m = 0.36;
			}
			else if (a_type == 0)			//if rotary screw type
			{
				if (f.min.value < 5)		//min=ASTM time in minutes
					m = 1.00;
				else if (f.min.value <= 10)
					m = 0.84;
				else if (f.min.value <= 15)
					m = 0.73;
				else if (f.min.value <= 30)
					m = 0.36;
				else
					m = 0;
			}
			else
			{
				if (f.min.value <= 20)
					m = 1.00;
				else if (f.min.value <= 25)
					m = 0.84;
				else if (f.min.value <= 30)
					m = 0.73;
				else if (f.min.value <= 60)
					m = 0.36;
				else
					m = 0;
			}
			if (Lubr[b_type] < m)
				m = Lubr[b_type];
		}
		else
			m = Lubr[b_type];
		var eff = Comp[a_type] * m * Drain[f_type];
		if (f.psi.value > 250)
			f.recommend1.value = "Consult Factory regarding PSI > 250";
		else if (m <= 0 )
			{
			f.recommend1.value = "Consult Factory regarding Lubricant";
			f.recommend2.value = ""
			}
		else if (gph > MaxGph[9] * eff)
			f.recommend1.value = "Consult Factory regarding GPH > " + MaxGph[9] * eff;
		else if (asfilter != 1)
		{
			for (var i=0; i<10; i++)
			{
				if (gph <= MaxGph[i]*eff)
				{
				p = 100 * gph / (MaxGph[i]*eff);
				p = parseInt(p*100.0) / 100; // round to two decimal places
				f.recommend1.value = "ACCU-SEP " + Name[i]+" at "+p+"% Capacity ";
				break;
				}
			}
		}
	}

	

if (f.recommend1.value == "")
	{
	f.recommend3.value = "";
	f.recommend1.value = f.recommend2.value;
	f.recommend2.value = "";
	}
if (f.recommend1.value == "")
	f.recommend1.value = "consult factory";




// **** DRAIN CHOICES CODE FOLLOWS *****  //
   var psi = f.psi.value;
   var gph = f.cfm.value * Temp[c_type] * Humid[d_type];

   var lgph = gph * .65;
   f.intercooler.value = "";
   
   for (var i=0; i<9; i++)
      if (psi > DrainPsiMin[i] & psi <= DrainPsiMax[i])
         if (lgph > DrainGphMin[i] & lgph <= DrainGphMax[i])
            f.intercooler.value = f.intercooler.value + DrainName[i] + " ";
   if (f.intercooler.value == "")
      f.intercooler.value = "Consult Factory";

   var lgph = gph * .65;
   f.aircooled.value = "";
   
   for (var i=0; i<9; i++)
      if (psi > DrainPsiMin[i] & psi <= DrainPsiMax[i])
         if (lgph > DrainGphMin[i] & lgph <= DrainGphMax[i])
             f.aircooled.value = f.aircooled.value + DrainName[i] + " ";
   if (f.aircooled.value == "")
      f.aircooled.value = "Consult Factory";

   f.citywater.value = f.aircooled.value;

   var lgph = gph;
   f.chilledwater.value = "";
   
   for (var i=0; i<9; i++)
      if (psi > DrainPsiMin[i] & psi <= DrainPsiMax[i])
         if (lgph > DrainGphMin[i] & lgph <= DrainGphMax[i])
             f.chilledwater.value = f.chilledwater.value + DrainName[i] + " ";
   if (f.chilledwater.value == "")
      f.chilledwater.value = "Consult Factory";


   var lgph = gph * .35;
   f.refrigerator.value = "";
   
   for (var i=0; i<9; i++)
      if (psi > DrainPsiMin[i] & psi <= DrainPsiMax[i])
         if (lgph > DrainGphMin[i] & lgph <= DrainGphMax[i])
            f.refrigerator.value = f.refrigerator.value + DrainName[i] + " ";
   if (f.refrigerator.value == "")
      f.refrigerator.value = "Consult Factory";

   f.particulate.value = f.refrigerator.value;
   f.coalescing.value  = f.refrigerator.value;


   if (f.psi.value > DrainPsiMax[0])
      f.tank.value = "Consult Factory regarding PSI > " + DrainPsiMax[0];
   else
      f.tank.value = DrainName[0];


   var lgph = gph * .80;
   f.wetnew.value = "";
   
   for (var i=0; i<9; i++)
      if (psi > DrainPsiMin[i] & psi <= DrainPsiMax[i])
         if (lgph > DrainGphMin[i] & lgph <= DrainGphMax[i])
            f.wetnew.value = f.wetnew.value + DrainName[i] + " ";
   if (f.wetnew.value == "")
      f.wetnew.value = "Consult Factory";

   var lgph = gph * .80;
   f.wetold.value = "";
   
   for (var i=0; i<9; i++)
      if (psi > DrainPsiMin[i] & psi <= DrainPsiMax[i])
         if (lgph > DrainGphMin[i] & lgph <= DrainGphMax[i])
            if (DrainRusty[i])
               f.wetold.value = f.wetold.value + DrainName[i] + " ";
   if (f.wetold.value == "")
      f.wetold.value = "Consult Factory";


   var lgph = gph * .35;
   f.drynew.value = "";
   
   for (var i=0; i<9; i++)
      if (psi > DrainPsiMin[i] & psi <= DrainPsiMax[i])
         if (lgph > DrainGphMin[i] & lgph <= DrainGphMax[i])
             f.drynew.value = f.drynew.value + DrainName[i] + " ";
   if (f.drynew.value == "")
      f.drynew.value = "Consult Factory";

   var lgph = gph * .35;
   f.dryold.value = "";
   
   for (var i=0; i<9; i++)
      if (psi > DrainPsiMin[i] & psi <= DrainPsiMax[i])
         if (lgph > DrainGphMin[i] & lgph <= DrainGphMax[i])
            if (DrainRusty[i])
               f.dryold.value = f.dryold.value + DrainName[i] + " ";
   if (f.dryold.value == "")
      f.dryold.value = "Consult Factory";


  if (psi > DrainPsiMax[0])
      f.drip1.value = "Consult Factory regarding PSI > " + DrainPsiMax[0];
   else
      f.drip1.value = DrainName[0];


   if (psi > DrainPsiMax[1])
      f.drip2.value = "Consult Factory regarding PSI > " + DrainPsiMax[1];
   else
      f.drip2.value = DrainName[1];


   if (psi > DrainPsiMax[2])
      f.drip3.value = "Consult Factory regarding PSI > " + DrainPsiMax[2];
   else
      f.drip3.value = DrainName[2];
}

