var cGPM;
var cSP;
var cCPS;
var cIN;
var micron;
var bSize;
var bagarea;
var bagtype;
var bagcount;

var a;
var b;
var c;
var e;
var f;
var m;
var n;

var z6;

function bagsRequired(){
	var frm= document.sizeApp;
	cGPM   = frm.cGPM.value;
	cSP    = frm.cSP.value;
	cCPS   = frm.cCPS.value;
	cIN    = frm.cIN.value;
	micron = frm.micron.value;
	resetFlds();

	a = cGPM;
	e = cSP;
	b = cCPS;
	c = cIN;

	if(chkFlds()){
		for (var x = 0;x < frm.bType.length; x++)
			if (frm.bType[x].checked)
				bType = frm.bType[x].value;	
		if(bType == "felt")
			sizefelt();
		else if(bType == "mesh")
			sizemesh();
		else if(bType == "microfiber")
			sizemicrofiber();
	
		getBagInfo(frm);
	
		p = m * f / 4.4;
		if (p > 20)
			p = 20;

		f = p / m * 4.4;	
		n = a / f * 4.4 / bagarea;	
	
		bgs = Math.ceil(n);
		
		if(bgs==1)
			bagcount = " bag";
		else	
			bagcount = " bags";
	
		nf = n * 100;
		nf = Math.round(nf);
		nf = nf/100;
		if(nf/1 == nf){
			frm.bBags.value = bgs;
			frm.bRslt.value = " = "+ nf + " bags";
			frm.bDesc.value = " - #"+bagtype+" "+bagcount+" required.";
			frm.bPSI.disabled = false;
			chkXtr();
		}
	}else
		resetFlds();
}

function chkXtr(){
	var frm= document.sizeApp;
	var bgs = frm.bBags.value;
	xtrFlds("bXtr2",0);
	xtrFlds("bXtr1",0);

	if(bgs==0 || bgs != Math.ceil(bgs)){
		alert("# of bags used must be a positive integer");	
		frm.bBags.value='';
		frm.bBags.focus();
	}else if((bSize == 2) && (bgs == 2)) 
		xtrFlds("bXtr2",1);
	else if((bSize ==2) && (bgs >2))
		xtrFlds("bXtr1",1);
}

function getBagInfo(frm){
	for (var x = 0;x < frm.bSize.length; x++)
		if (frm.bSize[x].checked)
			bSize = frm.bSize[x].value;	
	switch(bSize){
		case "1":
			bagarea = 2;
			bagtype = 1;
		break;
		case "2":
			bagarea = 4.4;
			bagtype = 2;
		break;
		case "3":
			bagarea = 0.5;
			bagtype = 3;
		break;
		case "4":
			bagarea = 1;
			bagtype = 4;
		break;
	}
}
function getVtype(){
	var frm   = document.sizeApp;
	for (var x = 0;x < frm.bVtype.length; x++)
		if (frm.bVtype[x].checked)
			bvType = frm.bVtype[x].value;	
	return bvType;
}
function getOutlet(){
	var frm   = document.sizeApp;
	for (var x = 0;x < frm.bOut.length; x++)
		if (frm.bOut[x].checked)
			bOut = frm.bOut[x].value;	
	return bOut;
}
function getDomed(){
	var frm   = document.sizeApp;
	for (var x = 0;x < frm.bDmd.length; x++)
		if (frm.bDmd[x].checked)
			bDmd = frm.bDmd[x].value;	
	return bDmd;
}
function psiDrop(){
	var frm   = document.sizeApp;
	var n1    = frm.bBags.value;
	if(n1 < (0.667 * n)){ 
		alert("FSI recommends more bags be used");	
		frm.bBags.focus();
	}else if(n1==0 || n1 != Math.ceil(n1)){
		alert("# of bags used must be a positive integer");	
		frm.bBags.focus();
	}else{
		p1 = m * a / n1 / bagarea;
		p1f = p1 * 1000;
		p1f = Math.round(p1f);
		p1f = p1f/1000;
		
		frm.bBgDrp.value = "Bag="+p1f+" PSI";
	}
	if((bSize == 3) || (bSize == 4)){
		c = 1.75;
		a1 = a / n1; //a1 = flow through each unit
		z();
		k = 0.000119 * (120 * z6 + 1.5) * a1 * a1 * e;

		getVslTtl(k);
	}else if(bSize == 1){
		c = 4;
		a1 = a / n1;
		z();
		k = 0.00000439 * (120 * z6 + 1.5) * a1 * a1 * e;

		getVslTtl(k);
	}else if(bSize == 2){
		if(n1 == 1){
			c = 4;
			a1 = a / n1;
			z();
			k = 0.00000439 * (120 * z6 + 1.5) * a1 * a1 * e;

			getVslTtl(k);
		}else if((n1==2) && (getVtype() == "FSP250")){
			c = 4.25;
			z();
			k = 0.00000343 * (170 * z6 + 1.5) * a * a * e;

			getVslTtl(k);
		}else if(n1 > 2){
			c = frm.cIN.value;
			z();
			L = 0.0018 * z6 * a * a * e / Math.pow(c,6);	
			u = 0.00112 * 1.5 * a * a * e / Math.pow(c,4);	
			o = 0.00112 * 14 * z6 * a * a * e / Math.pow(c,4);	
			c = 6;
			z();
			j = 0.00112 * 50 * z6 * a * a * e / Math.pow(c,4);
			c = 10;
			z();
			x = 0.00112 * 50 * z6 * a * a * e / Math.pow(c,4);
			if(getOutlet() == "btm")
				o = 2 * o;
			if(getDomed() == "full")
				j = 0;
			else if(getDomed() == "part")
				x = 0;
			k = x + j + o + 4 * L + u;
	
			getVslTtl(k);
		}
	}
}
function getVslTtl(k){
	var frm   = document.sizeApp;
	t = p1 + k;

	kf = k * 1000;
	kf = Math.round(kf);
	kf = kf/1000;

	tf = t * 1000;
	tf = Math.round(tf);
	tf = tf/1000;

	frm.bVsl.value = "Vessel= "+kf+" PSI";
	frm.bTtl.value = "Total= "+tf+" PSI";	
}

function z(){
	z0 = 3155 * a * e / c / b;

	z1 = 0.000009 * Math.pow((20 - c), 2.2) +
	     (Math.pow(10,-26) * 4.8) * Math.pow((20 - c), 18) + 0.012;

	tmp = (Math.log(z1)/Math.log(10) + 0.246) / (-0.212);
	z2 = Math.pow(10,tmp);
	z6 = z1;
	if (z2 <= z0)
		return;
	else{
		z3 =          (Math.log(0.07) / Math.log(10) - 
			       Math.log(z1) / Math.log(10)) / 
		     Math.pow((Math.log(600) / Math.log(10) - 
			       Math.log(z2) / Math.log(10)), 
			      2);
		z4 = (-2) * z3 * (Math.log(z2) / Math.log(10));
		z5 = Math.log(z1) / Math.log(10) + z3 * Math.pow((Math.log(z2) / Math.log(10)), 2);
		z6 = Math.pow(10, (z3 * Math.pow((Math.log(z0) / Math.log(10)),2) + z4 * (Math.log(z0) / Math.log(10)) + z5));

		if(z0 < 2000)
			z6 = 64 /z0;
	}
}
function sizefelt(){
	var x = Math.log(b) / Math.log(10);
	var h = 65;

	if(x < 1.48)
		Y = 0.736 * x - 1.79;	
	else if(x < 1.76)
		Y = 1.571 * x - 3.026;
	else if(x < 2.7)
		Y = 0.724 * x - 1.535;
	else
		Y = 0.78 * x - 1.68;

	m = Math.pow(10, Y);
	u = m;
	viscositycorrection(h);
	v = f;
	
	if(micron == 1)
		return;
	//Else Continue

	h = 95;
	if(x < 1.48)
		Y = 0.587 * x - 2.42;
	else if(x < 1.76)
		Y = 0.929 * x - 2.924;
	else if(x < 2.7)
		Y = 0.921 * x - 2.911;
	else
		Y = 0.695 * x - 2.301;

	m = Math.pow(10, Y);
	viscositycorrection(h);

	if(micron == 10)
		return;
	//Else Continue

	if(micron == 5){
		m = (m + u) / 2;
		f = (f + v) / 2;
		return;
	}
	//Else Continue

	u = m;
	v = f;
	h = 125;

	if(x < 1.48)
		Y = (0.04 * x * x + 0.143 * x - 2.55) * 1.4;
	else if(x < 1.76)
		Y = (1.178 * x - 3.994) * 1.3;
	else if(x < 2.7)
		Y = (0.489 * x - 2.781) * 1.1;
	else
		Y = 0.742 * x - 3.464;

	m = 4.1111 * Math.pow(10, Y);	
	viscositycorrection(h);

	if(micron == 50)
		return;
	//Else Continue

	if(micron == 25){
		m = (m + u) / 2;
		f = (f + v) / 2;
		return;
	}
	//Else Continue

	u = m;
	v = f;
	h = 135;

	if(x < 1.48)
		Y = (0.0658 * x * x + 0.194 * x - 2.89 - 0.0306 * x) * 1.4;
	else if(x < 1.76)
		Y = (0.0658 * x * x + 0.194 * x - 2.89 - 0.0306 * x + 0.877 * x - 1.28) * 1.3;
	else if(x < 2.7)
		Y = (0.0658 * x * x + 0.194 * x - 2.89 + 0.318 + 0.136 * x - 0.312) * 1.1;
	else
		Y = 0.0658 * x * x + 0.194 * x - 2.89 + 0.318;

	m = 4.07777 * Math.pow(10, Y);	
	viscositycorrection(h);

	if(micron == 100)
		return;
	//Else Continue

	m = (m + u) / 2;
	f = (f + v) / 2;
	return;
}

function sizemesh(){
	var x = Math.log(b) / Math.log(10);

	if(micron == 25){
		var h = 65;

		if(x < 1.76)
			Y = 0.006 * x + 0.024;
		else if(x < 2.7)
			Y = 0.0277 * x - 0.0357;
		else
			Y = 0.149 * x - 0.364;

		m = Y;
		viscositycorrection(h);
	}else if(micron == 100){
		var h = 140;

		if(x < 1.76)
			Y = 0.0004 * x + 0.002;
		else if(x < 2.7)
			Y = 0.0036 * x - 0.00367;
		else
			Y = 0.0111 * x - 0.024;

		m = Y;
		viscositycorrection(h);
	}else if(micron == 150){
		var h = 150;

		if(x < 1.76)
			Y = 0.00034 * x + 0.0015;
		else if(x < 2.7)
			Y = 0.00075 * x - 0.00078;
		else
			Y = 0.0031 * x - 0.0056;

		m = Y;
		viscositycorrection(h);
	}else if(micron == 400){
		var h = 180;

		if(x < 1.76)
			Y = 0.000057 * x + 0.0012;
		else if(x < 2.7)
			Y = 0.00053 * x - 0.00037;
		else
				Y = 0.0018 * x - 0.0031;

		m = Y;
		viscositycorrection(h);
	}else if(micron == 800){
		var h = 200;

		if(x < 1.76)
			Y = 0.000057 * x + 0.0008;
		else if(x < 2.7)
			Y = 0.00021 * x - 0.00053;
		else
			Y = 0.00098 * x - 0.0015;

		m = Y;
		viscositycorrection(h);
	}

}

function sizemicrofiber(){
	var x = Math.log(b) / Math.log(10);

	if(micron == "2A"){
		var h = 50;

		if(x < 1.48)
			Y = 0.857 * x - 1.84;
		else if(x < 1.76)
			Y = 2.3 * x - 3.98;
		else if(x < 2.7)
			Y = 0.864 * x - 1.45;
		else
			Y = 0.737 * x - 1.11;

		m = Math.pow(10, Y);
		viscositycorrection(h);
	}else if(micron == "10A"){
		var h = 70;

		if(x < 1.48)
			Y = 0.799 * x - 2.04;
		else if(x < 1.76)
			Y = 1.875 * x - 3.632;
		else if(x < 2.7)
			Y = 0.878 * x - 1.88;
		else
			Y = 0.859 * x - 1.83;

		m = Math.pow(10, Y);
		viscositycorrection(h);
	}else if(micron == "25A"){
		var h = 90;

		if(x < 1.48)
			Y = 0.799 * x - 2.04;
		else if(x < 1.76)
			Y = 1.875 * x - 3.632;
		else if(x < 2.7)
			Y = 0.878 * x - 1.88;
		else
			Y = 0.859 * x - 1.83;

		m = Math.pow(10, Y) / 1.48;
		viscositycorrection(h);
	}else if(micron == "OA"){
		var h = 80;

		if(x < 1.48)
			Y = 0.799 * x - 2.04;
		else if(x < 1.76)
			Y = 1.875 * x - 3.632;
		else if(x < 2.7)
			Y = 0.878 * x - 1.88;
		else
			Y = 0.859 * x - 1.83;

		m = Math.pow(10, Y) / 1.48;

		if(x < 1.48)
			Y = 0.04 * x * x + 0.143 * x - 2.55;
		else if(x < 1.76)
			Y = 1.178 * x - 3.994;
		else if(x < 2.7)
			Y = 0.489 * x - 2.781;
		else
				Y = 0.742 * x - 3.464;

		m += Math.pow(10, Y);

		viscositycorrection(h);
	}
}

function viscositycorrection(h){
	if(b > 50000)
		q = 0.08 - 0.0000006 * b;	
	else if(b > 10000)
		q = 0.125 - 0.00000015 * b;	
	else if(b > 5000)
		q = 0.25 - 0.000014 * b;	
	else if(b > 1000)
		q = 0.405 - 0.000045 * b;	
	else if(b > 500)
		q = 0.82 - 0.00046 * b;	
	else if(b > 50)
		q = 0.845 - 0.00051 * b;	
	else
		q = 1.0037 - 0.0037 * b;	

	f = h * q;
}
function adjustMicron(){
	resetFlds();
	var frm = document.sizeApp;
	var mic = frm.micron;
	var fiber = new Array(
		new Array("1",1),
		new Array("5",5),
		new Array("10",10),
		new Array("25",25),
		new Array("50",50),
		new Array("75",75),
		new Array("100",100));

	var mesh  = new Array(
		new Array("25",25),
		new Array("100",100),
		new Array("150",150),
		new Array("400",400),
		new Array("800",800));

	var micro = new Array(
		new Array("OA","OA"),
		new Array("2A","2A"),
		new Array("10A","10A"),
		new Array("25A","25A"));

	for (var x = 0;x < frm.bType.length; x++){
		valid = frm.bType[x].checked
		if (valid){
			bType = frm.bType[x].value;
			break;
		}
	}

	// empty existing items
	for (i = mic.options.length; i >= 0; i--) 
		mic.options[i] = null; 

	switch(bType){
		case "mesh":
			for (i = 0; i < mesh.length; i++) {
				mic.options[i] = new Option(mesh[i][0]);
				if (mesh[i][1] != null) 
					mic.options[i].value = mesh[i][1]; 
			}
		break;
		case "microfiber":
			for (i = 0; i < micro.length; i++) {
				mic.options[i] = new Option(micro[i][0]);
				if (micro[i][1] != null) 
					mic.options[i].value = micro[i][1]; 
			}
		break;
		default:
			for (i = 0; i < fiber.length; i++) {
				mic.options[i] = new Option(fiber[i][0]);
				if (fiber[i][1] != null) 
					mic.options[i].value = fiber[i][1]; 
			}
		break;
	}
	mic.options[0].selected = true;
}

function bagsNumbersOnly(tst){
  var isNS4 = (navigator.appName=="Netscape")?1:0;
  if(!isNS4)
  {
	if((tst.keyCode < 48 || tst.keyCode > 57) && tst.keyCode != 46){ 
	  tst.returnValue = false;
  	}
  }
  else
  {
	if((tst.which < 48 || tst.which > 57) && tst.which != 46){ 
	  return false;
  	}
  }
}
function numbersOnly(tst){
  var isNS4 = (navigator.appName=="Netscape")?1:0;
  resetFlds();
  if(!isNS4)
  {
	if((tst.keyCode < 48 || tst.keyCode > 57) && tst.keyCode != 46){ 
	  tst.returnValue = false;
  	}
  }
  else
  {
	if((tst.which < 48 || tst.which > 57) && tst.which != 46){ 
	  return false;
  	}
  }
}
function chkFlds(){
	var frm   = document.sizeApp;

	if((cGPM == 0) || (cSP == 0) || (cCPS == 0) || (cIN == 0))
		alert("Process Condition values must not be zero");
	else if(cCPS > 10000)
		alert("Limit for viscosity is 10,000 centipoise");
	else
		return true
}
function resetFlds(){
	var frm   = document.sizeApp;
	frm.bRslt.value = "";
	frm.bBags.value = "";
	frm.bDesc.value = " - bags required";
	frm.bBgDrp.value = "";
	frm.bVsl.value = "";	
	frm.bTtl.value = "";	
	frm.bPSI.disabled = true;
	xtrFlds("bXtr1",0);	
	xtrFlds("bXtr2",0);	
}

function xtrFlds(szDivID, iState) // 1 visible, 0 hidden
{
    if(document.layers)	   //NN4+
    {
       document.layers[szDivID].visibility = iState ? "show" : "hide";
    }
    else if(document.getElementById)	  //gecko(NN6) + IE 5+
    {
        var obj = document.getElementById(szDivID);
        obj.style.visibility = iState ? "visible" : "hidden";
    }
    else if(document.all)	// IE 4
    {
        document.all[szDivID].style.visibility = iState ? "visible" : "hidden";
    }
}

