
function rset3wForm(crsovrspecs) {
	crsovrspecs.reset();
	hidePolaritySubTbl();
	return;
}

function hidePolaritySubTbl() {
	threeway.polar[0].checked=true;
	hideObj("subtbl5");
	return;
}

function show18dbPolarity() {
	if((threeway.apccpc[0].checked) && (threeway.midroll3w[2].checked)) {
		showObj("subtbl5");
	}
	else {
		hideObj("subtbl5");
	}
	return;
}

function threewaycalc(crsovrspecs) {
		//DIMENSION POLARPICK RETURN ARRAY AND SPECS24 ARRAY
	var polarspecs=new Array(4);
	var specs24=new Array(5);

		//VALIDATE INPUT AS NUMERIC
	var result = verifyNumericInput(crsovrspecs);
	if(result == "false") {
		rset3wForm(crsovrspecs);
		return;
	}

		//VERIFY THAT BANDSPREAD IS WITHIN TABLE LIMITS FOR 18 AND 24 DB LINKWITZ-RILEY CROSSOVERS
	if(crsovrspecs.apccpc[0].checked) {
		if((crsovrspecs.lowroll3w[2].checked)||(crsovrspecs.midroll3w[2].checked)||(crsovrspecs.hiroll3w[2].checked)) {
			polarspecs=polarPick18(crsovrspecs);
		}
		if((crsovrspecs.lowroll3w[3].checked)||(crsovrspecs.midroll3w[3].checked)||(crsovrspecs.hiroll3w[3].checked)) {
			specs24=specPick24(crsovrspecs);
		}
	}

		//SET CONSTANTS
	var mh=1000;
	var mf=1000000;
	
		//GET WOOFER CUTOFF FREQUENCY AND IMPEDENCE
	var fclow=crsovrspecs.lfreq3.value;
	var rl=crsovrspecs.limped3.value;

		//GET MIDRANGE CUTOFF FREQUENCIES (LOW & HIGH) AND IMPEDENCE
		//CALCULATE MIDRANGE CENTER FREQUENCY (FCMID)
	var midlow=crsovrspecs.mlfreq3.value;
	var midhigh=crsovrspecs.mhfreq3.value;
	var fcmid=Math.sqrt(midlow*midhigh);
	var mr=crsovrspecs.mimped3.value;
	var rm=Math.abs(mr);

		//GET TWEETER CUTOFF FREQUENCY AND IMPEDENCE
	var fchigh=crsovrspecs.hfreq3.value;
	var rh=crsovrspecs.himped3.value;

		//CALCULATE BANDSPREAD AND OTHER OFTEN USED VARIABLES
	var s=fchigh/fclow;
	var r=Math.sqrt(s);
	var w1=2*Math.PI*fclow;
	var w2=2*Math.PI*fcmid;
	var w3=2*Math.PI*fchigh;

	//WHICH SLOPE IS CHECKED LOWPASS
	for(i=0; i<4; i++) {
		if(crsovrspecs.lowroll3w[i].checked) {
			switch(crsovrspecs.lowroll3w[i].value) {
			case "6db":
				var coil1=(rl/w1)*mh;
				var L11=Math.round(coil1*10000)/10000;
				results3W.LowPassCoil1.value=(L11+" mh");
				document.images[7].src="images/lowpass/LP6DB.gif";
				i=4;
				break;
			case "12db":
				if(crsovrspecs.apccpc[0].checked) {
					var a1=2*(s-1)/(Math.sqrt(Math.pow(s,2)-2*s));
				}
				else {
					var a1=Math.SQRT2;
				}
				var cap1=(1/a1/rl/w1)*mf;
				var coil1=(a1*rl/w1)*mh;
				var C11=Math.round(cap1*10000)/10000;
				var L11=Math.round(coil1*10000)/10000;
				results3W.LowPassCap1.value=(C11+" uF");
				results3W.LowPassCoil1.value=(L11+" mH");
				document.images[7].src="images/lowpass/LP12DB.gif";
				i=4;
				break;
			case "18db":
				if(crsovrspecs.apccpc[0].checked) {
					var a1=polarspecs[1];
					var b1=polarspecs[2];
					var h=polarspecs[3];
				}
				else {
					var a1=2;
					var b1=a1;
				}
				var e1=b1-1/a1;
				var coil1=(rl/w1/a1)*mh;
				var cap1=(a1/e1/rl/w1)*mf;
				var coil2=(e1*rl/w1)*mh;
				var L11=Math.round(coil1*10000)/10000;
				var C11=Math.round(cap1*10000)/10000;
				var L12=Math.round(coil2*10000)/10000;
				results3W.LowPassCoil1.value=(L11+" mH");
				results3W.LowPassCap1.value=(C11+" uF");
				results3W.LowPassCoil2.value=(L12+" mH");
				document.images[7].src="images/lowpass/LP18DB.gif";
				i=4;
				break;
			case "24db":
				if(crsovrspecs.apccpc[0].checked) {
					var a1=specs24[1];
					var b1=specs24[2];
					var c1=specs24[3];
					var h=specs24[4];
				}
				else {
					var a1=Math.sqrt((4+2*(Math.pow(2,.5))));
					var b1=2+Math.SQRT2;
					var c1=a1;
				}
				var e1=b1-c1/a1;
				var f1=c1-a1/e1;
				var cap1=(1/a1/rl/w1)*mf;
				var coil1=(a1*rl/w1/e1)*mh;
				var cap2=(e1/f1/rl/w1)*mf;
				var coil2=(f1*rl/w1)*mh;
				var C11=Math.round(cap1*10000)/10000;
				var L11=Math.round(coil1*10000)/10000;
				var C12=Math.round(cap2*10000)/10000;
				var L12=Math.round(coil2*10000)/10000;
				results3W.LowPassCap1.value=(C11+" uF");
				results3W.LowPassCoil1.value=(L11+" mH");
				results3W.LowPassCap2.value=(C12+" uF");
				results3W.LowPassCoil2.value=(L12+" mH");
				document.images[7].src="images/lowpass/LP24DB.gif";
				i=4;
				break;
			}
		}
	}
	//WHICH SLOPE IS CHECKED MIDPASS
	for(i=0; i<4; i++) {
		if(crsovrspecs.midroll3w[i].checked) {
			switch(crsovrspecs.midroll3w[i].value) {
			case "6db":
				var a=r+(1/r);
				if(crsovrspecs.apccpc[0].checked) {
					var h=r-(1/r);
				}
				else {
					var h=Math.sqrt(s-(1/s));
				}
				if(crsovrspecs.gainres.checked) {
					var ra=rm*(a/h-1);
				}
				else {
					var ra=0;
				}
				var ro=rm+ra;
				var coil1=(ro/w2/a)*mh;
				var cap1=(a/ro/w2)*mf;
				
				var L21=Math.round(coil1*10000)/10000;
				var C21=Math.round(cap1*10000)/10000;
				var gr=Math.round(ra*10000)/10000;
				
				results3W.MidPassCap1.value=(C21+" uF");
				results3W.MidPassCoil1.value=(L21+" mh");
				results3W.resistor.value=(gr+" ohms");
				document.images[8].src="images/midpass/MP6DB.gif";
				i=4;
				break;
			case "12db":
				if(crsovrspecs.apccpc[0].checked) {
					var a1=2*(s-1)/(Math.sqrt(Math.pow(s,2)-2*s));
					var h=s+Math.pow(a1,2)-4+3/s;
				}
				else {
					var a1=Math.SQRT2;
					var h=Math.sqrt(Math.pow(s,2)-(1/Math.pow(s,2)));
				}
				var a=a1*(r+1/r);
				var b=s+Math.pow(a1,2)+1/s;
				if(crsovrspecs.bptype[0].checked) {
					var k=b-1;
					var e=a*(1-1/k);
				}
				else {
					var k=b-2;
				}
				if(crsovrspecs.gainres.checked) {
					var ra=rm*(k/h-1);
				}
				else {
					var ra=0;
				}
				var ro=rm+ra;
				if(crsovrspecs.bptype[0].checked) {
					var cap1=(1/a/ro/w2)*mf;
					var coil1=(a*ro/w2/k)*mh;
					var cap2=(k/e/ro/w2)*mf;
					var coil2=(e*ro/w2)*mh;
					document.images[8].src="images/midpass/MP12DBC.gif";
				}
				else {
					var cap1=(1/a/ro/w2)*mf;
					var coil1=(a*ro/w2)*mh;
					var cap2=(k/a/ro/w2)*mf;
					var coil2=(a*ro/k/w2)*mh;
					document.images[5].src="images/midpass/MP12DBT.gif";	
				}
				var C21=Math.round(cap1*10000)/10000;
				var L21=Math.round(coil1*10000)/10000;
				var C22=Math.round(cap2*10000)/10000;
				var L22=Math.round(coil2*10000)/10000;
				var gr=Math.round(ra*10000)/10000;
				results3W.MidPassCap1.value=(C21+" uF");
				results3W.MidPassCoil1.value=(L21+" mH");
				results3W.MidPassCap2.value=(C22+" uF");
				results3W.MidPassCoil2.value=(L22+" mH");
				results3W.resistor.value=(gr+" ohms");
				i=4;
				break;
			case "18db":
				if(crsovrspecs.apccpc[0].checked) {
					var a1=polarspecs[1];
					var b1=polarspecs[2];
					var h=polarspecs[3];
				}
				else {
					var a1=2;
					var b1=a1;
					var h=Math.sqrt((Math.pow(s,3)-(1/(Math.pow(s,3)))));	
				}
				var e1=b1-1/a1;
				var a=b1*r+a1/r;
				var b=a1*s+a1*b1+b1/s;
				var c=(r*s)+(Math.pow(a1,2)*r)+(Math.pow(b1,2)/r)+(1/Math.pow(r,s));
				if(crsovrspecs.bptype[0].checked) {
					var e=b-c/a;
					var f=a*(1-1/e);
					var k=c-a*(b-1)/e;
					var g=b-1-k/f-e*f/k;
				}
				else {
					var e=b-c/a;
					var f=b-1-c/a;
					var k=c-2*a;
				}
				if(crsovrspecs.gainres.checked) {
					ra=rm*(k/h-1);
				}
				else {
					ra=0;
				}
				var ro=rm+ra;
				if(crsovrspecs.gainres.checked) {
					//HIGH CUTOFF SET FOR MIDRANGE (C-BANDPASS)
					var coil1=(e*ro/w2/a)*mh;
					var cap1=(a/ro/w2)*mf;
					var coil2=(ro/w2/f)*mh;
					
					//LOW CUTOFF SET FOR MIDRANGE (C-BANDPASS)
					var cap2=(k/e/ro/w2)*mf;
					var coil3=(g*ro/w2/k)*mh;
					var cap3=(f/g/ro/w2)*mf;	
				}
				else {
					//HIGH CUTOFF SET FOR MIDRANGE (T-BANDPASS)
					var coil1=(ro/a/w2)*mh;
					var cap1=(a/ro/w2)*mf;
					var cap2=(a/f/ro/w2)*mf;
					
					//LOW CUTOFF SET FOR MIDRANGE (T-BANDPASS)
					var coil2=(f*ro/a/w2)*mh;
					var coil3=(f*ro/k/w2)*mh;					
					var cap3=(k/f/ro/w2)*mf;
					
				}
				var C21=Math.round(cap1*10000)/10000;
				var L21=Math.round(coil1*10000)/10000;
				var C22=Math.round(cap2*10000)/10000;
				var L22=Math.round(coil2*10000)/10000;
				var C23=Math.round(cap3*10000)/10000;
				var L23=Math.round(coil3*10000)/10000;
				var gr=Math.round(ra*10000)/10000;
				results3W.MidPassCap1.value=(C21+" uF");
				results3W.MidPassCoil1.value=(L21+" mH");
				results3W.MidPassCap2.value=(C22+" uF");
				results3W.MidPassCoil2.value=(L22+" mH");
				results3W.MidPassCap3.value=(C23+" uF");
				results3W.MidPassCoil3.value=(L23+" mH");
				results3W.resistor.value=(gr+" ohms");
				if(crsovrspecs.apccpc[1].checked) {
					if(crsovrspecs.bptype[1].checked) {
						document.images[8].src="images/midpass/MP18DBPT.gif";
					}
					else {
						document.images[8].src="images/midpass/MP18DBPC.gif";
					}
				}
				else if((crsovrspecs.polar[0].checked)&&(crsovrspecs.bptype[0].checked)) {
					document.images[8].src="images/midpass/MP18DBPC.gif";
				}
				else if((crsovrspecs.polar[0].checked)&&(crsovrspecs.bptype[1].checked)) {
					document.images[8].src="images/midpass/MP18DBPT.gif";
				}
				else if((crsovrspecs.polar[1].checked)&&(crsovrspecs.bptype[0].checked)) {
					document.images[8].src="images/midpass/MP18DBNC.gif";
				}
				else if((crsovrspecs.polar[1].checked)&&(crsovrspecs.bptype[1].checked)) {
					document.images[8].src="images/midpass/MP18DBNT.gif";
				}
				i=4;
				break;
			case "24db":
				if(crsovrspecs.apccpc[0].checked) {
					var a1=specs24[1];
					var b1=specs24[2];
					var c1=specs24[3];
					var h=specs24[4];
				}
				else {
					var a1=Math.sqrt((4+2*(Math.pow(2,.5))));
					var b1=2+Math.SQRT2;
					var c1=a1;
				}
				var e1=b1-c1/a1;
				var f1=c1-a1/e1;
				var a=c1*r+a1/r;
				var b=b1*s+a1*c1+b1/s;
				var c=(a1*r*s)+(a1*b1*r)+((b1*c1)/r)+(c1/(r*s));
				var d=(Math.pow(s,2))+(Math.pow(a1,2)*s)+(Math.pow(b1,2))+(Math.pow(c1,2)/s)+(1/Math.pow(s,2));
				if(crsovrspecs.bptype[0].checked) {
					var e=b-c/a;
					var f=d-c/a;
					var g=c-a*f/e;
					var k=f-c*e/g+a*(b-1)/g;
					var m=b-1-a*e/g+a/g;
					var n=c-a*(b-1)/e-g*m/k;
					var p=a-a/e-g/k;
					var q=m-n/p;
					var t=n-p*k/q;
					document.images[8].src="images/midpass/MP24DBC.gif";
				}
				else {
					var e=b-1-c/a;
					var f=d-2*c/a;
					var g=c-a-a*f/e;
					var k=d-2*b+2;
					document.images[8].src="images/midpass/MP24DBT.gif";
				}
				if(crsovrspecs.gainres.checked) {
					ra=rm*(k/h-1);
				}
				else {
					ra=0;
				}
				var ro=rm+ra;
				if(crsovrspecs.bptype[0].checked) {
					var cap1=(1/a/ro/w2)*mf;
					var coil1=(a*ro/w2/e)*mh;
					var cap2=(e/g/ro/w2)*mf;
					var coil2=(g*ro/w2/k)*mh;

					var coil3=(p*ro/w2)*mh;
					var cap3=(q/p/ro/w2)*mf;
					var coil4=(t*ro/w2/q)*mh;
					var cap4=(k/ro/w2/t)*mf;
				}
				else {
					var cap1=(1/a/ro/w2)*mf;
					var coil1=(a*ro/w2)*mh;
					var cap2=(e/a/ro/w2)*mf;
					var coil2=(a*ro/e/w2)*mh;

					var coil3=(g*ro/e/w2)*mh;
					var cap3=(e/ro/g/w2)*mf;
					var coil4=(g*ro/k/w2)*mh;
					var cap4=(k/ro/g/w2)*mf;	
				}
				var C21=Math.round(cap1*10000)/10000;
				var L21=Math.round(coil1*10000)/10000;
				var C22=Math.round(cap2*10000)/10000;
				var L22=Math.round(coil2*10000)/10000;
				var C23=Math.round(cap3*10000)/10000;
				var L23=Math.round(coil3*10000)/10000;
				var C24=Math.round(cap4*10000)/10000;
				var L24=Math.round(coil4*10000)/10000;
				var gr=Math.round(ra*10000)/10000;
				results3W.MidPassCap1.value=(C21+" uF");
				results3W.MidPassCoil1.value=(L21+" mH");
				results3W.MidPassCap2.value=(C22+" uF");
				results3W.MidPassCoil2.value=(L22+" mH");
				results3W.MidPassCap3.value=(C23+" uF");
				results3W.MidPassCoil3.value=(L23+" mH");
				results3W.MidPassCap4.value=(C24+" uF");
				results3W.MidPassCoil4.value=(L24+" mH");
				results3W.resistor.value=(gr+" ohms");
				i=4;
				break;
			}
		}
	}
	//WHICH SLOPE IS CHECKED HIGHPASS
	for(i=0; i<4; i++) {
		if(crsovrspecs.hiroll3w[i].checked) {
			switch(crsovrspecs.hiroll3w[i].value) {
			case "6db":
				var cap1=(1/rh/w3)*mf;
				var C31=Math.round(cap1*10000)/10000;
				results3W.HighPassCap1.value=(C31+" uF");
				changeImage("pane5");
				showObj("pane5");
				document.images[9].src="images/highpass/HP6DB.gif";
				i=4;
				break;
			case "12db":
				if(crsovrspecs.apccpc[0].checked) {
					var a1=2*(s-1)/(Math.sqrt(Math.pow(s,2)-2*s));
				}
				else {
					var a1=Math.SQRT2;
				}
				var coil1=(a1*rh/w3)*mh;
				var cap1=(1/a1/rh/w3)*mf;
				var L31=Math.round(coil1*10000)/10000;
				var C31=Math.round(cap1*10000)/10000;
				results3W.HighPassCoil1.value=(L31+" mH");
				results3W.HighPassCap1.value=(C31+" uF");
				changeImage("pane5");
				showObj("pane5");
				document.images[9].src="images/highpass/HP12DB.gif";
				i=4;
				break;
			case "18db":
				if(crsovrspecs.apccpc[0].checked) {
					var a1=polarspecs[1];
					var b1=polarspecs[2];
					var h=polarspecs[3];
				}
				else {
					var a1=2;
					var b1=a1;
				}
				var e1=b1-1/a1;
				var cap1=(a1/rh/w3)*mf;
				var coil1=(e1*rh/w3/a1)*mh;
				var cap2=(1/e1/rh/w3)*mf;
				var C31=Math.round(cap1*10000)/10000;
				var L31=Math.round(coil1*10000)/10000;
				var C32=Math.round(cap2*10000)/10000;
				results3W.HighPassCap1.value=(C31+" uF");
				results3W.HighPassCoil1.value=(L31+" mH");
				results3W.HighPassCap2.value=(C32+" uF");
				changeImage("pane5");
				showObj("pane5");
				document.images[9].src="images/highpass/HP18DB.gif";
				i=4;
				break;
			case "24db":
				if(crsovrspecs.apccpc[0].checked) {
					var a1=specs24[1];
					var b1=specs24[2];
					var c1=specs24[3];
					var h=specs24[4];
				}
				else {
					var a1=Math.sqrt((4+2*(Math.pow(2,.5))));
					var b1=2+Math.SQRT2;
					var c1=a1;
				}
				var e1=b1-c1/a1;
				var f1=c1-a1/e1;
				var coil1=(a1*rh/w3)*mh;
				var cap1=(e1/a1/rh/w3)*mf;
				var coil2=(f1*rh/w3/e1)*mh;
				var cap2=(1/f1/rh/w3)*mf;
				var L31=Math.round(coil1*10000)/10000;
				var C31=Math.round(cap1*10000)/10000;
				var L32=Math.round(coil2*10000)/10000;
				var C32=Math.round(cap2*10000)/10000;
				results3W.HighPassCoil1.value=(L31+" mH");
				results3W.HighPassCap1.value=(C31+" uF");
				results3W.HighPassCoil2.value=(L32+" mH");
				results3W.HighPassCap2.value=(C32+" uF");
				changeImage("pane5");
				showObj("pane5");
				document.images[9].src="images/highpass/HP24DB.gif";
				i=4;
				break;
			}
		}
	}
	return;
}
