Ca_ew=20.039;Mg_ew=12.1525;Na_ew=22.989769;CO3_ew=30.00445;SO4_ew=48.0313;Cl_ew=35.453;
MagicNum = SO4_ew/Cl_ew;gypsum_ew=86.08558;CaCl_di_ew=73.50728;Epsom_ew=123.26;salt_ew=58.44;
glauber_ew=89.04;soda_ew=143.1;MgCO3_ew=42.16;CaCO3_ew = 50.04345;HCO3_ew=61.0168;

function doalk() {
if(isNaN(document.waterform.AlkInput.value) || document.waterform.AlkInput.value < 0) {alert("There is an error in your Alkalinity entry");return;}
if(isNaN(document.waterform.HardInput.value) || document.waterform.HardInput.value < 0) {alert("There is an error in your Hardness entry");return;}
if (document.waterform.Alkunits[0].checked) {Alk_mv = document.waterform.AlkInput.value/CaCO3_ew}
else if (document.waterform.Alkunits[1].checked) {Alk_mv = document.waterform.AlkInput.value/HCO3_ew}
else if (document.waterform.Alkunits[2].checked) {Alk_mv = document.waterform.AlkInput.value/CO3_ew}
if (document.waterform.Hardunits[0].checked) {Hard_mv = document.waterform.HardInput.value/CaCO3_ew}
else if (document.waterform.Hardunits[1].checked) {Hard_mv = document.waterform.HardInput.value/HCO3_ew}
else if (document.waterform.Hardunits[2].checked) {Hard_mv = document.waterform.HardInput.value/CO3_ew}

if (Alk_mv > 0 && Hard_mv == 0 ){
document.waterform.InitCO3.value = Math.round(Alk_mv*CO3_ew*100)/100;
}
else if (Alk_mv == 0 && Hard_mv > 0 ){
document.waterform.InitCa.value = Math.round(Hard_mv*Ca_ew*100)/100;
document.waterform.InitCO3.value = Math.round(Hard_mv*CO3_ew*100)/100;
}
else if (Alk_mv == Hard_mv) {
document.waterform.InitCa.value = Math.round(Alk_mv*Ca_ew*100)/100;
document.waterform.InitCO3.value = Math.round(Alk_mv*CO3_ew*100)/100;
}
else if (Alk_mv > Hard_mv) {
document.waterform.InitCa.value = Hard_mv*Ca_ew;
document.waterform.InitCO3.value = Math.round(Alk_mv*CO3_ew*100)/100;
document.waterform.InitMg.value = Math.round((Alk_mv-Hard_mv)*Mg_ew*100)/100;
}
else if (Alk_mv < Hard_mv) {
document.waterform.InitCa.value = Math.round(Hard_mv*Ca_ew*100)/100;
document.waterform.InitCO3.value = Math.round(Alk_mv*CO3_ew*100)/100;
document.waterform.InitSO4.value = Math.round((Hard_mv-Alk_mv)*SO4_ew*100)/100;
}

MainBit();
}

function redradio() {
if (document.waterform.Carbred[0].checked) {document.waterform.ResidCO3.value = 0}
if (document.waterform.Carbred[1].checked) {document.waterform.ResidCO3.value = 20; document.waterform.ResidAlkunits[2].checked = true}
if (document.waterform.Carbred[2].checked) {document.waterform.ResidCO3.value = 20; document.waterform.ResidAlkunits[0].checked = true}
MainBit();
}

function MainBit() {
if(isNaN(document.waterform.InitCa.value) || document.waterform.InitCa.value < 0) {alert("There is an error in your calcium entry")};
if(isNaN(document.waterform.InitMg.value) || document.waterform.InitMg.value < 0) {alert("There is an error in your magnesium entry")};
if(isNaN(document.waterform.InitNa.value) || document.waterform.InitNa.value < 0) {alert("There is an error in your sodium entry")};
if(isNaN(document.waterform.InitCO3.value) || document.waterform.InitCO3.value < 0) {alert("There is an error in your carbonate entry")};
if(isNaN(document.waterform.InitSO4.value) || document.waterform.InitSO4.value < 0) {alert("There is an error in your sulphate entry")};
if(isNaN(document.waterform.InitCl.value) || document.waterform.InitCl.value < 0) {alert("There is an error in your chloride entry")};
TempCa_mv = document.waterform.InitCa.value/Ca_ew;
TempMg_mv = document.waterform.InitMg.value/Mg_ew;
TempNa_mv = document.waterform.InitNa.value/Na_ew;
TempCO3_mv = document.waterform.InitCO3.value/CO3_ew;
TempSO4_mv = document.waterform.InitSO4.value/SO4_ew;
TempCl_mv = document.waterform.InitCl.value/Cl_ew;
document.waterform.InitCations.value = Math.round((TempCa_mv+TempMg_mv+TempNa_mv)*100)/100;
document.waterform.InitAnions.value = Math.round((TempCO3_mv+TempSO4_mv+TempCl_mv)*100)/100;

Index = document.waterform.stylelist.selectedIndex;
targetstyle = document.waterform.stylelist[Index].text;
if (targetstyle=="Automatic") {auto_target()}
TargCa_mv = document.waterform.TargCa.value/Ca_ew;
TargMg_mv = document.waterform.TargMg.value/Mg_ew;
TargNa_mv = document.waterform.TargNa.value/Na_ew;
TargCO3_mv = document.waterform.TargCO3.value/CO3_ew;
TargSO4_mv = document.waterform.TargSO4.value/SO4_ew;
TargCl_mv = document.waterform.TargCl.value/Cl_ew;
document.waterform.TargCations.value = Math.round((TargCa_mv+TargMg_mv+TargNa_mv)*100)/100;
document.waterform.TargAnions.value = Math.round((TargCO3_mv+TargSO4_mv+TargCl_mv)*100)/100;
// Do not allow empty boxes
if (document.waterform.AlkInput.value == "") {document.waterform.AlkInput.value=0}
if (document.waterform.ResidCO3.value == "") {document.waterform.ResidCO3.value=0}
if (document.waterform.HardInput.value == "") {document.waterform.HardInput.value=0}
if (document.waterform.InitCa.value == "") {document.waterform.InitCa.value=0}
if (document.waterform.InitMg.value == "") {document.waterform.InitMg.value=0}
if (document.waterform.InitNa.value == "") {document.waterform.InitNa.value=0}
if (document.waterform.InitCO3.value == "") {document.waterform.InitCO3.value=0}
if (document.waterform.InitSO4.value == "") {document.waterform.InitSO4.value=0}
if (document.waterform.InitCl.value == "") {document.waterform.InitCl.value=0}
if (document.waterform.TargCa.value == "") {document.waterform.TargCa.value=0}
if (document.waterform.TargMg.value == "") {document.waterform.TargMg.value=0}
if (document.waterform.TargNa.value == "") {document.waterform.TargNa.value=0}
if (document.waterform.TargCO3.value == "") {document.waterform.TargCO3.value=0}
if (document.waterform.TargSO4.value == "") {document.waterform.TargSO4.value=0}
if (document.waterform.TargCl.value == "") {document.waterform.TargCl.value=0}
CaReduct();
}

function CaReduct() {
if(isNaN(document.waterform.ResidCO3.value) || document.waterform.ResidCO3.value < 0) {alert("There is an error in your Residual Alkalinity entry")};
if (document.waterform.ResidAlkunits[0].checked){ConResidCO3_mv=document.waterform.ResidCO3.value/CaCO3_ew}
else if (document.waterform.ResidAlkunits[1].checked){ConResidCO3_mv=document.waterform.ResidCO3.value/HCO3_ew}
else if (document.waterform.ResidAlkunits[2].checked) {ConResidCO3_mv=document.waterform.ResidCO3.value/CO3_ew}

if (document.waterform.Carbred[0].checked) {
document.waterform.Ca_2.value = Math.round(TempCa_mv*Ca_ew*10)/10;
document.waterform.Mg_2.value = Math.round(TempMg_mv*Mg_ew*10)/10;
document.waterform.Na_2.value = Math.round(TempNa_mv*Na_ew*10)/10;
document.waterform.CO3_2.value = Math.round(TempCO3_mv*CO3_ew*10)/10;
document.waterform.SO4_2.value = Math.round(TempSO4_mv*SO4_ew*10)/10;
document.waterform.Cl_2.value = Math.round(TempCl_mv*Cl_ew*10)/10;
document.waterform.CRSreq.value = 0;
}

else if (document.waterform.Carbred[1].checked) {
document.waterform.Mg_2.value = Math.round(TempMg_mv*Mg_ew*10)/10;
document.waterform.Na_2.value = Math.round(TempNa_mv*Na_ew*10)/10;
document.waterform.SO4_2.value = Math.round(TempSO4_mv*SO4_ew*10)/10;
document.waterform.Cl_2.value = Math.round(TempCl_mv*Cl_ew*10)/10;
if (TempCa_mv >= TempCO3_mv-ConResidCO3_mv && TempCO3_mv > ConResidCO3_mv) {
// calcium greater than carbonate
TempCa_mv = TempCa_mv - (TempCO3_mv-ConResidCO3_mv);
TempCO3_mv = ConResidCO3_mv;
		}
else if (TempCO3_mv-ConResidCO3_mv > TempCa_mv && TempCO3_mv > ConResidCO3_mv) {
//calcium less than carbonate
TempCO3_mv = (TempCO3_mv) - TempCa_mv;
TempCa_mv = 0;
		}
document.waterform.CO3_2.value = Math.round(TempCO3_mv*CO3_ew*10)/10;
document.waterform.Ca_2.value = Math.round(TempCa_mv*Ca_ew*10)/10;
document.waterform.CRSreq.value = 0;
}

else if (document.waterform.Carbred[2].checked) {
CRSfactor=3.68318;
document.waterform.Ca_2.value = Math.round(TempCa_mv*Ca_ew*10)/10;
document.waterform.Mg_2.value = Math.round(TempMg_mv*Mg_ew*10)/10;
document.waterform.Na_2.value = Math.round(TempNa_mv*Na_ew*10)/10;
if (TargCO3_mv < ConResidCO3_mv) {temp = ConResidCO3_mv} 
else {temp=TargCO3_mv}
if (TempCO3_mv >= temp) {SubCO3_mv = TempCO3_mv - temp}
else {SubCO3_mv=0};
TempCO3_mv = TempCO3_mv - SubCO3_mv;
document.waterform.CO3_2.value = Math.round(TempCO3_mv*CO3_ew*10)/10;
TempSO4_mv = TempSO4_mv + SubCO3_mv/2;
document.waterform.SO4_2.value = Math.round(TempSO4_mv*SO4_ew*10)/10;
TempCl_mv = TempCl_mv + SubCO3_mv/2;
document.waterform.Cl_2.value = Math.round(TempCl_mv*Cl_ew*10)/10;
document.waterform.CRSreq.value = Math.round(SubCO3_mv/CRSfactor*100)/100;
}


TempCa_mv_2 = TargCa_mv - TempCa_mv ;
TempMg_mv_2 = TargMg_mv - TempMg_mv;
TempNa_mv_2 = TargNa_mv - TempNa_mv;
TempCO3_mv_2 = TargCO3_mv - TempCO3_mv;
TempSO4_mv_2 = TargSO4_mv - TempSO4_mv;
TempCl_mv_2 = TargCl_mv - TempCl_mv;


//************************************
if (TempCa_mv_2 < 0) {TempCa_mv_2 =0}
if (TempMg_mv_2 < 0) {TempMg_mv_2 =0}
if (TempNa_mv_2 < 0) {TempNa_mv_2 =0}
if (TempCO3_mv_2 < 0) {TempCO3_mv_2 =0}
if (TempSO4_mv_2 < 0) {TempSO4_mv_2 =0}
if (TempCl_mv_2 < 0) {TempCl_mv_2 =0}

document.waterform.AddCa.value = Math.round(TempCa_mv_2*Ca_ew*10)/10;
document.waterform.AddMg.value = Math.round(TempMg_mv_2*Mg_ew*10)/10;
document.waterform.AddNa.value = Math.round(TempNa_mv_2*Na_ew*10)/10;
document.waterform.AddCO3.value = Math.round(TempCO3_mv_2*CO3_ew*10)/10;
document.waterform.AddSO4.value = Math.round(TempSO4_mv_2*SO4_ew*10)/10;
document.waterform.AddCl.value = Math.round(TempCl_mv_2*Cl_ew*10)/10;

TempCa_mv_3 = TempCa_mv_2 + TempCa_mv;
TempMg_mv_3 = TempMg_mv_2 + TempMg_mv;
TempNa_mv_3 = TempNa_mv_2 + TempNa_mv;
TempCO3_mv_3 = TempCO3_mv_2 + TempCO3_mv;
TempSO4_mv_3 = TempSO4_mv_2 + TempSO4_mv;
TempCl_mv_3 = TempCl_mv_2 + TempCl_mv;

TempCa_mv_4 = 0;
TempMg_mv_4 = 0;
TempNa_mv_4 = 0;
TempCO3_mv_4 = 0;
TempSO4_mv_4 = 0;
TempCl_mv_4 = 0;


//Magnesium Sulphate
if (TempMg_mv_3 >= TempSO4_mv_3) {TempMg_mv_4 += TempSO4_mv_3;TempSO4_mv_4 += TempSO4_mv_3; TempMg_mv_3 -= TempSO4_mv_3; TempSO4_mv_3 =0;}
else if (TempMg_mv_3 < TempSO4_mv_3) {TempMg_mv_4 += TempMg_mv_3; TempSO4_mv_4 += TempMg_mv_3; TempSO4_mv_3 -= TempMg_mv_3; TempMg_mv_3 = 0}
//Sodium Chloride
if (TempNa_mv_3 >= TempCl_mv_3) {TempNa_mv_4 += TempCl_mv_3;TempCl_mv_4 += TempCl_mv_3; TempNa_mv_3 -= TempCl_mv_3; TempCl_mv_3 =0;}
else if (TempNa_mv_3 < TempCl_mv_3) {TempNa_mv_4 += TempNa_mv_3; TempCl_mv_4 += TempNa_mv_3; TempCl_mv_3 -= TempNa_mv_3; TempNa_mv_3 = 0}
//Calcium Sulphate
if (TempCa_mv_3 >= TempSO4_mv_3) {TempCa_mv_4 += TempSO4_mv_3;TempSO4_mv_4 += TempSO4_mv_3; TempCa_mv_3 -= TempSO4_mv_3; TempSO4_mv_3 =0;}
else if (TempCa_mv_3 < TempSO4_mv_3) {TempCa_mv_4 += TempCa_mv_3; TempSO4_mv_4 += TempCa_mv_3; TempSO4_mv_3 -= TempCa_mv_3; TempCa_mv_3 = 0}
//Calcium Chloride
if (TempCa_mv_3 >= TempCl_mv_3) {TempCa_mv_4 += TempCl_mv_3;TempCl_mv_4 += TempCl_mv_3; TempCa_mv_3 -= TempCl_mv_3; TempCl_mv_3 =0;}
else if (TempCa_mv_3 < TempCl_mv_3) {TempCa_mv_4 += TempCa_mv_3; TempCl_mv_4 += TempCa_mv_3; TempCl_mv_3 -= TempCa_mv_3; TempCa_mv_3 = 0}
//Calcium Carbonate
if (TempCa_mv_3 >= TempCO3_mv_3) {TempCa_mv_4 += TempCO3_mv_3;TempCO3_mv_4 += TempCO3_mv_3; TempCa_mv_3 -= TempCO3_mv_3; TempCO3_mv_3 =0;}
else if (TempCa_mv_3 < TempCO3_mv_3) {TempCa_mv_4 += TempCa_mv_3; TempCO3_mv_4 += TempCa_mv_3; TempCO3_mv_3 -= TempCa_mv_3; TempCa_mv_3 = 0}
//Sodium Carbonate
if (TempNa_mv_3 >= TempCO3_mv_3) {TempNa_mv_4 += TempCO3_mv_3;TempCO3_mv_4 += TempCO3_mv_3; TempNa_mv_3 -= TempCO3_mv_3; TempCO3_mv_3 =0;}
else if (TempNa_mv_3 < TempCO3_mv_3) {TempNa_mv_4 += TempNa_mv_3; TempCO3_mv_4 += TempNa_mv_3; TempCO3_mv_3 -= TempNa_mv_3; TempNa_mv_3 = 0}
//Magnesium Chloride
if (TempMg_mv_3 >= TempCl_mv_3) {TempMg_mv_4 += TempCl_mv_3;TempCl_mv_4 += TempCl_mv_3; TempMg_mv_3 -= TempCl_mv_3; TempCl_mv_3 =0;}
else if (TempMg_mv_3 < TempCl_mv_3) {TempMg_mv_4 += TempMg_mv_3; TempCl_mv_4 += TempMg_mv_3; TempCl_mv_3 -= TempMg_mv_3; TempMg_mv_3 = 0}
//Sodium Sulphate
if (TempNa_mv_3 >= TempSO4_mv_3) {TempNa_mv_4 += TempSO4_mv_3;TempSO4_mv_4 += TempSO4_mv_3; TempNa_mv_3 -= TempSO4_mv_3; TempSO4_mv_3 =0;}
else if (TempNa_mv_3 < TempSO4_mv_3) {TempNa_mv_4 += TempNa_mv_3; TempSO4_mv_4 += TempNa_mv_3; TempSO4_mv_3 -= TempNa_mv_3; TempNa_mv_3 = 0}
//Magnesium Carbonate
if (TempMg_mv_3 >= TempCO3_mv_3) {TempMg_mv_4 += TempCO3_mv_3;TempCO3_mv_4 += TempCO3_mv_3; TempMg_mv_3 -= TempCO3_mv_3; TempCO3_mv_3 =0;}
else if (TempMg_mv_3 < TempCO3_mv_3) {TempMg_mv_4 += TempMg_mv_3; TempCO3_mv_4 += TempMg_mv_3; TempCO3_mv_3 -= TempMg_mv_3; TempMg_mv_3 = 0}

document.waterform.FinalCa.value = Math.round(TempCa_mv_4*Ca_ew*10)/10;
document.waterform.FinalMg.value = Math.round(TempMg_mv_4*Mg_ew*10)/10;
document.waterform.FinalNa.value = Math.round(TempNa_mv_4*Na_ew*10)/10;
document.waterform.FinalCO3.value = Math.round(TempCO3_mv_4*CO3_ew*10)/10;
document.waterform.FinalSO4.value = Math.round(TempSO4_mv_4*SO4_ew*10)/10;
document.waterform.FinalCl.value = Math.round(TempCl_mv_4*Cl_ew*10)/10;

CaCO3Out =""; CaSO4Out =""; CaClOut ="";MgSO4Out ="";NaClOut ="";NaSO4Out ="";MgCO3Out ="";NaCO3Out ="";
//Magnesium Sulphate
if (TempSO4_mv_2 >= TempMg_mv_2) {TempSO4_mv_2 -= TempMg_mv_2;MgSO4Out += TempMg_mv_2;TempMg_mv_2=0}
else if (TempSO4_mv_2 < TempMg_mv_2) {TempMg_mv_2 -= TempSO4_mv_2; MgSO4Out += TempSO4_mv_2;TempSO4_mv_2=0}
//Sodium Chloride
if (TempCl_mv_2 >= TempNa_mv_2) {TempCl_mv_2 -= TempNa_mv_2; NaClOut += TempNa_mv_2;TempNa_mv_2=0}
else if (TempCl_mv_2 < TempNa_mv_2) {TempNa_mv_2 -= TempCl_mv_2; NaClOut += TempCl_mv_2;TempCl_mv_2=0}
//Calcium Sulphate
if (TempSO4_mv_2 >= TempCa_mv_2) {TempSO4_mv_2 -= TempCa_mv_2; CaSO4Out += TempCa_mv_2;TempCa_mv_2=0}
else if (TempSO4_mv_2 < TempCa_mv_2) {TempCa_mv_2 -= TempSO4_mv_2; CaSO4Out += TempSO4_mv_2;TempSO4_mv_2=0}
//Calcium Chloride
if (TempCl_mv_2 >= TempCa_mv_2) {TempCl_mv_2 -= TempCa_mv_2; CaClOut += TempCa_mv_2;TempCa_mv_2=0}
else if (TempCl_mv_2 < TempCa_mv_2) {TempCa_mv_2 -= TempCl_mv_2; CaClOut += TempCl_mv_2;TempCl_mv_2=0}
//Calcium Carbonate
if (TempCO3_mv_2 >= TempCa_mv_2) {TempCO3_mv_2 -= TempCa_mv_2; CaCO3Out += TempCa_mv_2;TempCa_mv_2=0}
else if (TempCO3_mv_2 < TempCa_mv_2) {TempCa_mv_2 -= TempCO3_mv_2; CaCO3Out += TempCO3_mv_2;TempCO3_mv_2=0}
//Sodium Carbonate
if (TempCO3_mv_2 >= TempNa_mv_2) {TempCO3_mv_2 -= TempNa_mv_2; NaCO3Out += TempNa_mv_2;TempNa_mv_2=0}
else if (TempCO3_mv_2 < TempNa_mv_2) {TempNa_mv_2 -= TempCO3_mv_2; NaCO3Out += TempCO3_mv_2;TempCO3_mv_2=0}
// Sodium Sulphate
if (TempSO4_mv_2 >= TempNa_mv_2) {TempSO4_mv_2 -= TempNa_mv_2; NaSO4Out += TempNa_mv_2;TempNa_mv_2=0}
else if (TempSO4_mv_2 < TempNa_mv_2) {TempNa_mv_2 -= TempSO4_mv_2; NaSO4Out += TempSO4_mv_2;TempSO4_mv_2=0}
//Magnesium Carbonate
if (TempCO3_mv_2 >= TempMg_mv_2) {TempCO3_mv_2 -= TempMg_mv_2; MgCO3Out += TempMg_mv_2;TempMg_mv_2=0}
else if (TempCO3_mv_2 < TempMg_mv_2) {TempMg_mv_2 -= TempCO3_mv_2; MgCO3Out += TempCO3_mv_2;TempCO3_mv_2=0}

document.waterform.MgSO4.value = Math.round(MgSO4Out*Epsom_ew*100)/100;
document.waterform.NaCl.value = Math.round(NaClOut*salt_ew*100)/100;
document.waterform.CaSO4.value = Math.round(CaSO4Out*gypsum_ew*100)/100;
document.waterform.CaCl.value = Math.round(CaClOut*CaCl_di_ew*100)/100;
document.waterform.CaCO3.value = Math.round(CaCO3Out*CaCO3_ew*100)/100;
document.waterform.NaCO3.value = Math.round(NaCO3Out*soda_ew*100)/100;
document.waterform.NaSO4.value = Math.round(NaSO4Out*glauber_ew*100)/100;
document.waterform.MgCO3.value = Math.round(MgCO3Out*MgCO3_ew*100)/100;

if (document.waterform.CaCO3.value == "") {document.waterform.CaCO3.value =0};
if (document.waterform.CaSO4.value == "") {document.waterform.CaSO4.value =0};
if (document.waterform.CaCl.value == "") {document.waterform.CaCl.value =0};
if (document.waterform.MgSO4.value == "") {document.waterform.MgSO4.value =0};
if (document.waterform.NaCl.value == "") {document.waterform.NaCl.value =0};
if (document.waterform.NaCO3.value == "") {document.waterform.NaCO3.value =0};
if (document.waterform.NaSO4.value == "") {document.waterform.NaSO4.value =0};
if (document.waterform.MgCO3.value == "") {document.waterform.MgCO3.value =0}
document.waterform.TotalCRS.value = Math.round(document.waterform.CRSreq.value*document.waterform.TotalVolume.value*10)/10;
document.waterform.TotCaCO3.value = Math.round(document.waterform.CaCO3.value*document.waterform.TotalVolume.value/10)/100;
document.waterform.TotCaSO4.value = Math.round(document.waterform.CaSO4.value*document.waterform.TotalVolume.value/10)/100;
document.waterform.TotCaCl.value = Math.round(document.waterform.CaCl.value*document.waterform.TotalVolume.value/10)/100;
document.waterform.TotMgSO4.value = Math.round(document.waterform.MgSO4.value*document.waterform.TotalVolume.value/10)/100;
document.waterform.TotNaCl.value = Math.round(document.waterform.NaCl.value*document.waterform.TotalVolume.value/10)/100;
document.waterform.TotNaCO3.value = Math.round(document.waterform.NaCO3.value*document.waterform.TotalVolume.value/10)/100;
document.waterform.TotNaSO4.value = Math.round(document.waterform.NaSO4.value*document.waterform.TotalVolume.value/10)/100;

DoSomeTests();
}

function style_select() {
Index = document.waterform.stylelist.selectedIndex;
targetstyle = document.waterform.stylelist[Index].text;
if (targetstyle=="General Purpose"){document.waterform.TargCa.value=100;document.waterform.TargMg.value=10;document.waterform.TargNa.value=20;document.waterform.TargCO3.value=15;document.waterform.TargSO4.value=177.1;document.waterform.TargCl.value=88.5}
else if (targetstyle=="Burton Pale Ale"){document.waterform.TargCa.value=130;document.waterform.TargMg.value=20;document.waterform.TargNa.value=30;document.waterform.TargCO3.value=15;document.waterform.TargSO4.value=366.6;document.waterform.TargCl.value=46.3}
else if (targetstyle=="Dry Pale Ale"){document.waterform.TargCa.value=190;document.waterform.TargMg.value=15;document.waterform.TargNa.value=30;document.waterform.TargCO3.value=15;document.waterform.TargSO4.value=329.9;document.waterform.TargCl.value=164.9}
else if (targetstyle=="Sweet Pale Ale"){document.waterform.TargCa.value=130;document.waterform.TargMg.value=15;document.waterform.TargNa.value=30;document.waterform.TargCO3.value=15;document.waterform.TargSO4.value=203.1;document.waterform.TargCl.value=152.4}
else if (targetstyle=="Bitter"){document.waterform.TargCa.value=150;document.waterform.TargMg.value=10;document.waterform.TargNa.value=40;document.waterform.TargCO3.value=15;document.waterform.TargSO4.value=273.4;document.waterform.TargCl.value=136.7}
else if (targetstyle=="Mild"){document.waterform.TargCa.value=150;document.waterform.TargMg.value=10;document.waterform.TargNa.value=50;document.waterform.TargCO3.value=25;document.waterform.TargSO4.value=152.9;document.waterform.TargCl.value=229.3}
else if (targetstyle=="Porter"){document.waterform.TargCa.value=141.1;document.waterform.TargMg.value=10;document.waterform.TargNa.value=100;document.waterform.TargCO3.value=50;document.waterform.TargSO4.value=100;document.waterform.TargCl.value=300}
else if (targetstyle=="Stout"){document.waterform.TargCa.value=180;document.waterform.TargMg.value=10;document.waterform.TargNa.value=75;document.waterform.TargCO3.value=50;document.waterform.TargSO4.value=85.3;document.waterform.TargCl.value=341.2}
else if (targetstyle=="Lager"){document.waterform.TargCa.value=50;document.waterform.TargMg.value=2;document.waterform.TargNa.value=0;document.waterform.TargCO3.value=15;document.waterform.TargSO4.value=44.1;document.waterform.TargCl.value=44.1}
}

function auto_target() {
TargNa_mv=TargCl_mv=TargSO4_mv=TargCO3_mv=TargMg_mv=TargCa_mv=0;
if (parseFloat(document.waterform.TargNa.value) > 0) {TargNa_mv = document.waterform.TargNa.value/Na_ew;TargCl_mv = TargNa_mv}
if (parseFloat(document.waterform.TargMg.value) > 0) {TargMg_mv = document.waterform.TargMg.value/Mg_ew;TargSO4_mv = TargMg_mv }
if (parseFloat(document.waterform.TargCa.value) > 0) {TargCa_mv = document.waterform.TargCa.value/Ca_ew}
if (parseFloat(document.waterform.TargCO3.value) > 0) {TargCa_mv= TargCa_mv - document.waterform.TargCO3.value/CO3_ew}
if (parseFloat(TargCa_mv) <0) {TargCa_mv=0}
Index = document.waterform.ratioleft.selectedIndex;
leftnum = parseFloat(document.waterform.ratioleft[Index].value)
Index = document.waterform.ratioright.selectedIndex;
rightnum = parseFloat(document.waterform.ratioright[Index].value)
if (leftnum == 0 && rightnum == 0) {
	TargSO4_mv = TargSO4_mv +TargCa_mv;
	document.waterform.TargSO4.value=Math.round(TargSO4_mv*SO4_ew*10)/10;
	document.waterform.TargCl.value=Math.round(TargCl_mv*Cl_ew*10)/10;	
	return;	
}
else {SO4_Cl = leftnum/(leftnum+rightnum);Factor=parseFloat(SO4_Cl+(1-SO4_Cl)*MagicNum)};
//Compute pseudo-chloride from sulphate.
if (SO4_Cl == 1) {PseudoCl = 0}
else if (SO4_Cl == 0 && TargSO4_mv >0) {alert("The requested Sulphate:Chloride ratio is not possible while magnesium is present. " + '\n' + "The sulphate will be set to the lowest value feasible" + '\n' + "Increasing the requested sulphate ratio would prevent this pop-up" )}
else if (SO4_Cl == 0) {PseudoCl = TargSO4_mv }
else {PseudoCl = TargSO4_mv*(1-SO4_Cl)/SO4_Cl*MagicNum}
//Compute pseudo-sulphate from chloride.
if (SO4_Cl ==0) {PseudoSO4 =0;}
else if (SO4_Cl==1 && TargCl_mv >0) {alert("The requested Sulphate:Chloride ratio is not possible while Sodium is present. " + '\n' + "The chloride will be set to the lowest value feasible" + '\n' + "Increasing the requested chloride ratio would prevent this pop-up")}
else if (SO4_Cl ==1) {PseudoSO4 =0 ;}
else {PseudoSO4 = TargCl_mv/(1-SO4_Cl)*SO4_Cl/MagicNum;}

if (PseudoSO4  > TargSO4_mv && PseudoSO4 < TargCa_mv) {diff=PseudoSO4 - TargSO4_mv;TargSO4_mv += diff; TargCa_mv -= diff}
else if (PseudoSO4 >TargSO4_mv && PseudoSO4 > TargCa_mv) {TargSO4_mv += TargCa_mv; TargCa_mv = 0 }
if (PseudoCl >TargCl_mv && PseudoCl < TargCa_mv) {diff=PseudoCl - TargCl_mv;TargCl_mv += diff; TargCa_mv -= diff}
else if (PseudoCl >TargCl_mv && PseudoCl > TargCa_mv) {TargCl_mv += TargCa_mv; TargCa_mv = 0 }
TargSO4_mv  += TargCa_mv *SO4_Cl/Factor;
TargCl_mv += TargCa_mv *(1-SO4_Cl)*MagicNum/Factor;
document.waterform.TargSO4.value=Math.round(TargSO4_mv*SO4_ew*10)/10;
document.waterform.TargCl.value=Math.round(TargCl_mv*Cl_ew*10)/10;
}

function MatchMgNa() {
if (parseFloat(document.waterform.Mg_2.value) > parseFloat(document.waterform.TargMg.value)) {
document.waterform.TargSO4.value = Math.round((parseFloat(document.waterform.TargSO4.value) + (parseFloat(document.waterform.Mg_2.value)-parseFloat(document.waterform.TargMg.value))*SO4_ew/Mg_ew)*10)/10;
document.waterform.TargMg.value = document.waterform.Mg_2.value
}

if (parseFloat(document.waterform.Na_2.value) > parseFloat(document.waterform.TargNa.value)) {
document.waterform.TargCl.value = Math.round((parseFloat(document.waterform.TargCl.value) + (parseFloat(document.waterform.Na_2.value)-parseFloat(document.waterform.TargNa.value))*Cl_ew/Na_ew)*10)/10;
document.waterform.TargNa.value = document.waterform.Na_2.value
}

MainBit();
}

function MatchCO3() {
if (parseFloat(document.waterform.CO3_2.value) > parseFloat(document.waterform.TargCO3.value)) {
document.waterform.TargCa.value = Math.round((parseFloat(document.waterform.TargCa.value) + (parseFloat(document.waterform.CO3_2.value)-parseFloat(document.waterform.TargCO3.value))*Ca_ew/CO3_ew)*10)/10;
document.waterform.TargCO3.value = document.waterform.CO3_2.value
}
MainBit();
}

function DoSomeTests() {
if (parseFloat(document.waterform.Cl_2.value) > parseFloat(document.waterform.TargCl.value) ) { document.waterform.Warning.value = "Your target liquor cannot be matched with the current sulphate and chloride values"}
else if (parseFloat(document.waterform.SO4_2.value) > parseFloat(document.waterform.TargSO4.value) ) { document.waterform.Warning.value = "Your target liquor cannot be matched with the current sulphate and chloride values"}
else if (parseFloat(document.waterform.CO3_2.value) > 50) { document.waterform.Warning.value = "Your intial carbonate level seems too high. Check carbonate reduction parameters"}
else if (parseFloat(document.waterform.CO3_2.value) > parseFloat(document.waterform.TargCO3.value) && parseFloat(document.waterform.CO3_2.value) < 50) { document.waterform.Warning.value = "Your target carbonate is too low. Click the CO3 button on the right to correct it"}
else if (parseFloat(document.waterform.Mg_2.value) > parseFloat(document.waterform.TargMg.value) ) { document.waterform.Warning.value = "Your target mg is too low. Click the Mg/ Na button on the right to correct it"}
else if (parseFloat(document.waterform.Na_2.value) > parseFloat(document.waterform.TargNa.value) ) { document.waterform.Warning.value = "Your target Na is too low. Click the Mg/ Na button on the right to correct it"}
else if (Math.abs((parseFloat(document.waterform.TargCa.value) - parseFloat(document.waterform.FinalCa.value))/parseFloat(document.waterform.TargCa.value)) > 0.1 || Math.abs((parseFloat(document.waterform.TargMg.value) - parseFloat(document.waterform.FinalMg.value))/parseFloat(document.waterform.TargMg.value)) > 0.1 || Math.abs((parseFloat(document.waterform.TargNa.value) - parseFloat(document.waterform.FinalNa.value))/parseFloat(document.waterform.TargNa.value)) > 0.1) { document.waterform.Warning.value = "Your final and target liqour differs by greater than 10%"}
else if (Math.abs((parseFloat(document.waterform.TargCO3.value) - parseFloat(document.waterform.FinalCO3.value))/parseFloat(document.waterform.TargCO3.value)) > 0.1 || Math.abs((parseFloat(document.waterform.TargSO4.value) - parseFloat(document.waterform.FinalSO4.value))/parseFloat(document.waterform.TargSO4.value)) > 0.1 || Math.abs((parseFloat(document.waterform.TargCl.value) - parseFloat(document.waterform.FinalCl.value))/parseFloat(document.waterform.TargCl.value)) > 0.1) { document.waterform.Warning.value = "Your final and target liqour differs by greater than 10%"}
else {document.waterform.Warning.value = ""}

if (parseFloat(document.waterform.Mg_2.value) > parseFloat(document.waterform.TargMg.value) || parseFloat(document.waterform.Na_2.value) > parseFloat(document.waterform.TargNa.value) ) { document.waterform.button1.disabled = false }
else {document.waterform.button1.disabled = true }
if (parseFloat(document.waterform.CO3_2.value) > parseFloat(document.waterform.TargCO3.value) && parseFloat(document.waterform.CO3_2.value) < 50) {document.waterform.button2.disabled = false}
else {document.waterform.button2.disabled = true}
}
