//Brewhouse calculator routines
var old_value;
var from;
var to;
var new_value;

//function initText(control,value) {
  //- Initialize a text field
  //control.value = value;
//}

//<body onload="initAll(document.myform)">

//function initAll(form) {
//- Initialize all form controls
//  with (form) {
//    initText(pname,"<%=pname%>");
//    initText(paddress,"<%=paddress%>");
//    initSelect(age,"<%=age%>");
//    initCheckBox(mail,"<%=mail%>");
//    initTextArea(comments,"<%=comments%>");
//  }
//}

function chgtoRecipe(units) {
  //alert(document.brewbuilder.bsize.value)
  chgtoGBATCH(units);
  chgtoHBATCH(units);
  chgtoFinalGravEst(units);
  //computeH2ONeed()
  
  //document.brewbuilder.FPF.value = computefpt(OE, AE,units);
  if(units=='eng'){
    var OE = convert(document.brewbuilder.TotalOG.value,"sg","degE");
    var AE = convert(document.brewbuilder.estFGval.value,"sg","degE");
    document.brewbuilder.ABW.value = computeABW(OE, AE);
  }
  else if(units=='si'){
    //convert to OG!
    var OG = convert(document.brewbuilder.TotalOG.value,"degE","sg");
    var FG = convert(document.brewbuilder.estFGval.value,"degE","sg");
    document.brewbuilder.ABW.value = computeABV(OG,FG);
  }
  //document.brewbuilder.AppAtt.value = computeAppAtt(OE,AE);
  //document.brewbuilder.RealAtt.value = computeRealAtt(OE,AE);

  if(units=='eng'){
    var OE = convert(document.brewbuilder.TotalOG.value,"sg","degE");
    var AE = convert(document.brewbuilder.estFGval.value,"sg","degE");
    var calories=computecals(OE, AE, document.brewbuilder.estFGval.value,units);
    //document.brewbuilder.bot12.value = Math.round(calories);
    document.brewbuilder.bot12.value = formatnumber(calories,2);
  }
  else if(units=='si'){
    //convert to OG!
    var OE = parseFloat(document.brewbuilder.TotalOG.value);
    var AE = parseFloat(document.brewbuilder.estFGval.value);
    var FG = convert(document.brewbuilder.estFGval.value,"degE","sg");
    var calories=computecals(OE, AE, FG,units);
    //document.brewbuilder.bot12.value = Math.round(calories);
    document.brewbuilder.bot12.value = formatnumber(calories,2);
  }

}

function scaleRecipe(units) {
//alert(document.brewbuilder.bsize.value)
  var scaleSize = document.brewbuilder.scaleSize.value;
  var scaleFactor = scaleSize/document.brewbuilder.bsize.value;
  //alert(scaleFactor)
  //scale yield
  document.brewbuilder.bsize.value = formatnumber(scaleFactor * document.brewbuilder.bsize.value,2);
  //scale preboilvolume
  document.brewbuilder.PreBoilVolume.value = formatnumber(scaleFactor * document.brewbuilder.PreBoilVolume.value,2);
  //scale fermentables
  document.brewbuilder.fermentAmt1.value = formatnumber(scaleFactor * document.brewbuilder.fermentAmt1.value,2);
  document.brewbuilder.fermentAmt2.value = formatnumber(scaleFactor * document.brewbuilder.fermentAmt2.value,2);
  document.brewbuilder.fermentAmt3.value = formatnumber(scaleFactor * document.brewbuilder.fermentAmt3.value,2);
  document.brewbuilder.fermentAmt4.value = formatnumber(scaleFactor * document.brewbuilder.fermentAmt4.value,2);
  document.brewbuilder.fermentAmt5.value = formatnumber(scaleFactor * document.brewbuilder.fermentAmt5.value,2);
  document.brewbuilder.fermentAmt6.value = formatnumber(scaleFactor * document.brewbuilder.fermentAmt6.value,2);
  //scale hops
  document.brewbuilder.hopsAmt1.value = formatnumber(scaleFactor * document.brewbuilder.hopsAmt1.value,2);
  document.brewbuilder.hopsAmt2.value = formatnumber(scaleFactor * document.brewbuilder.hopsAmt2.value,2);
  document.brewbuilder.hopsAmt3.value = formatnumber(scaleFactor * document.brewbuilder.hopsAmt3.value,2);
  document.brewbuilder.hopsAmt4.value = formatnumber(scaleFactor * document.brewbuilder.hopsAmt4.value,2);
  document.brewbuilder.hopsAmt5.value = formatnumber(scaleFactor * document.brewbuilder.hopsAmt5.value,2);
  //scale flavorings
  document.brewbuilder.flavorAmt1.value = formatnumber(scaleFactor * document.brewbuilder.flavorAmt1.value,2);
  document.brewbuilder.flavorAmt2.value = formatnumber(scaleFactor * document.brewbuilder.flavorAmt2.value,2);
  document.brewbuilder.flavorAmt3.value = formatnumber(scaleFactor * document.brewbuilder.flavorAmt3.value,2);
  document.brewbuilder.flavorAmt4.value = formatnumber(scaleFactor * document.brewbuilder.flavorAmt4.value,2);
  document.brewbuilder.flavorAmt5.value = formatnumber(scaleFactor * document.brewbuilder.flavorAmt5.value,2);
  document.brewbuilder.flavorAmt6.value = formatnumber(scaleFactor * document.brewbuilder.flavorAmt6.value,2);
  //scale additives
  document.brewbuilder.addAmt1.value = formatnumber(scaleFactor * document.brewbuilder.addAmt1.value,2);
  document.brewbuilder.addAmt2.value = formatnumber(scaleFactor * document.brewbuilder.addAmt2.value,2);
  document.brewbuilder.addAmt3.value = formatnumber(scaleFactor * document.brewbuilder.addAmt3.value,2);
  document.brewbuilder.addAmt4.value = formatnumber(scaleFactor * document.brewbuilder.addAmt4.value,2);
  //scale additives
  document.brewbuilder.addAmt1.value = formatnumber(scaleFactor * document.brewbuilder.addAmt1.value,2);
  //scale priming
  document.brewbuilder.primeAmt1.value = formatnumber(scaleFactor * document.brewbuilder.primeAmt1.value,2);
}


function computeH2ONeed(units) {
  var yield = document.brewbuilder.bsize.value;
  if (document.brewbuilder.rtype[0].checked){
    var rtype = "extract";
  }
  else if (document.brewbuilder.rtype[1].checked){
    var rtype = "all-grain";
  }
  //alert("yield " + yield)
  //alert("rtype " + rtype)
  if (rtype=='all-grain') {
    //alert("rtype " + rtype)
    var gristKG = convert(parseFloat(document.brewbuilder.FermentTOTAL.value),'lbm','kg');
    var gristLB = parseFloat(document.brewbuilder.FermentTOTAL.value);

    //document.getElementById('inp02').value = formatnumber((gristKG*document.getElementById('inp13').value)/3.7853,2);
    document.getElementById('inp02').value = formatnumber((gristLB*document.getElementById('inp13').value),2);
    document.getElementById('inp03').value = formatnumber((gristLB*document.getElementById('inp14').value),2);
    var totalA = parseFloat(document.getElementById('inp02').value);
    var totalB = parseFloat(document.getElementById('inp03').value);
    //alert(totalA+"&"+totalB)
    document.getElementById('inp04').value = formatnumber(totalA+totalB,2);
    var grainLF = parseFloat(document.getElementById('inp15').value);
    document.getElementById('inp05').value = formatnumber((gristLB * grainLF),2);
    //document.getElementById('inp06').value = formatnumber((document.getElementById('inp04').value - document.getElementById('inp05').value),2);
  }
  else if (rtype != 'all-grain'){
    //document.getElementById('inp06').value = yield;
    var totalA = 0; //mash water
    var totalB = 0; //sparge water
  }
  document.getElementById('inp07').value = formatnumber((document.getElementById('PreBoilVolume').value * (document.getElementById('inp16').value)/100),2);
  document.getElementById('BoilVolume').value = formatnumber((document.getElementById('PreBoilVolume').value - document.getElementById('inp07').value),2);
  var preBoilVolume = parseFloat(document.getElementById('PreBoilVolume').value);
  var preBoilLoss = parseFloat(document.getElementById('inp07').value);
  var postBoilVolume = parseFloat(document.getElementById('BoilVolume').value);
  var percentA = 1 - parseFloat(document.getElementById('inp17').value)/100;
  document.getElementById('inp09').value = formatnumber((yield / percentA - postBoilVolume),2);
  var diluteVol = parseFloat(document.getElementById('inp09').value);
  document.getElementById('inp10').value = formatnumber((diluteVol + postBoilVolume),2);
  document.getElementById('inp11').value = formatnumber((document.getElementById('inp10').value * (document.getElementById('inp17').value/100)),2);
  var tempAll = parseFloat(preBoilVolume) + parseFloat(totalA) + parseFloat(totalB) + parseFloat(diluteVol);
  document.getElementById('inp12').value = formatnumber(tempAll,2);
}

function chgtotemp(old_value,from) {
  if (from == 'F') {
     document.tempcalc.C.value  = formatnumber(convert(document.tempcalc.F.value,'F','C'),1);
  }
  else if (from == 'C') {
     document.tempcalc.F.value  = formatnumber(convert(document.tempcalc.C.value,'C','F'),1);
  }
}

function chgtoCOLOR(old_value,from) {
  if (from == 'srm') {
     document.brewbuilder.ebc.value  = formatnumber(convert(document.brewbuilder.srm.value,'srm','ebc'),1);
  }
  else if (from == 'ebc') {
     document.brewbuilder.srm.value  = formatnumber(convert(document.brewbuilder.ebc.value,'ebc','srm'),1);
  }
  computeColor(document.brewbuilder.srm.value);
    /*
    if (document.brewbuilder.srm.value <1)                                                   {document.brewbuilder.picture.src  = 'http://www.brewerslair.com/global/styFamSmall12.jpg';}
    else if (document.brewbuilder.srm.value >= 1   && document.brewbuilder.srm.value <= 2.5) {document.brewbuilder.picture.src  = 'http://www.brewerslair.com/global/styFamSmall12.jpg';}
    else if (document.brewbuilder.srm.value >= 3.5 && document.brewbuilder.srm.value <= 5.5) {document.brewbuilder.picture.src  = 'http://www.brewerslair.com/global/styFamSmall11.jpg';}
    else if (document.brewbuilder.srm.value >= 5.5 && document.brewbuilder.srm.value <= 10)  {document.brewbuilder.picture.src  = 'http://www.brewerslair.com/global/styFamSmall03.jpg';}
    else if (document.brewbuilder.srm.value >= 10  && document.brewbuilder.srm.value <= 18)  {document.brewbuilder.picture.src  = 'http://www.brewerslair.com/global/styFamSmall06.jpg';}
    else if (document.brewbuilder.srm.value >= 18  && document.brewbuilder.srm.value <= 26)  {document.brewbuilder.picture.src  = 'http://www.brewerslair.com/global/styFamSmall08.jpg';}
    else if (document.brewbuilder.srm.value >= 26  && document.brewbuilder.srm.value <= 40)  {document.brewbuilder.picture.src  = 'http://www.brewerslair.com/global/styFamSmall10.jpg';}
    else if (document.brewbuilder.srm.value > 40)                                            {document.brewbuilder.picture.src  = 'http://www.brewerslair.com/global/styFamSmall13.jpg';}
    */
}

var k = 0;

function chgtovol(old_value,from) {
  if(from != 'tsp') {document.volumecalc.tsp.value = formatnumber(convert(old_value,from,'tsp'),2);}
  if(from != 'tbs') {document.volumecalc.tbs.value = formatnumber(convert(old_value,from,'tbs'),2);}
  if(from != 'oz')  {document.volumecalc.oz.value  = formatnumber(convert(old_value,from,'oz'),2);}
  if(from != 'cup') {document.volumecalc.cup.value = formatnumber(convert(old_value,from,'cup'),2);}
  if(from != 'pt')  {document.volumecalc.pt.value  = formatnumber(convert(old_value,from,'pt'),2);}
  if(from != 'qt')  {document.volumecalc.qt.value  = formatnumber(convert(old_value,from,'qt'),2);}
  if(from != 'gal') {document.volumecalc.gal.value = formatnumber(convert(old_value,from,'gal'),2);}
  if(from != 'imp') {document.volumecalc.imp.value = formatnumber(convert(old_value,from,'imp'),2);}
  if(from != 'bbl') {document.volumecalc.bbl.value = formatnumber(convert(old_value,from,'bbl'),2);}
  if(from != 'ml')  {document.volumecalc.ml.value  = formatnumber(convert(old_value,from,'ml'),2);}
  if(from != 'l')   {document.volumecalc.l.value   = formatnumber(convert(old_value,from,'l'),2);}
  if(from != 'hl')  {document.volumecalc.hl.value  = formatnumber(convert(old_value,from,'hl'),2);}
}

function chgtowgt(old_value,from) {
  if(from != 'ozm') {document.weightcalc.ozm.value = formatnumber(convert(old_value,from,'ozm'),2);}
  if(from != 'lbm') {document.weightcalc.lbm.value = formatnumber(convert(old_value,from,'lbm'),2);}
  if(from != 'g')   {document.weightcalc.g.value   = formatnumber(convert(old_value,from,'g'),2);}
  if(from != 'kg')  {document.weightcalc.kg.value  = formatnumber(convert(old_value,from,'kg'),2);}
}

function chgtogravtemp(value) {
  if (value == 'gravtempF'){
    document.gravcalc.gravtempC.value = convert(document.gravcalc.gravtempF.value,'F','C');
    document.gravcalc.csg.value = convertGravTemp(document.gravcalc.msg.value,document.gravcalc.gravtempF.value);
    document.gravcalc.cpl.value = convert(document.gravcalc.csg.value,'sg','degE');
  }
  else if (value == 'gravtempC'){
    document.gravcalc.gravtempF.value = convert(document.gravcalc.gravtempC.value,'C','F');
    document.gravcalc.csg.value = convertGravTemp(document.gravcalc.msg.value,document.gravcalc.gravtempF.value);
    document.gravcalc.cpl.value = convert(document.gravcalc.csg.value,'sg','degE');
  }
  else if (value=='msg'){
    document.gravcalc.csg.value = convertGravTemp(document.gravcalc.msg.value,document.gravcalc.gravtempF.value);
    document.gravcalc.mpl.value = convert(document.gravcalc.msg.value,'sg','degE');
    document.gravcalc.cpl.value = convert(document.gravcalc.csg.value,'sg','degE');
  }
  else if (value=='mpl'){
    document.gravcalc.msg.value = convert(document.gravcalc.mpl.value,'degE','sg');
    document.gravcalc.csg.value = convertGravTemp(document.gravcalc.msg.value,document.gravcalc.gravtempF.value);
    document.gravcalc.cpl.value = convert(document.gravcalc.csg.value,'sg','degE');
  }
}

function convertGravTemp(msg,gravtempF){
  var csg = parseFloat(msg)-((-0.000013*(gravtempF*gravtempF*gravtempF) + 0.004747*(gravtempF*gravtempF) - 0.347219*gravtempF+ 6.663652)/1000);
  var csg = formatnumber(csg,3);
  return csg;
}

function chgtoFinalGravEst(units){
  if (units == 'eng'){
    var yeastAtt = (document.brewbuilder.yeastAtt.value)/100;
    var Oval = document.brewbuilder.TotalOG.value;
    document.brewbuilder.estFGval.value = computeFinalGravEst(yeastAtt,Oval,units);
  }
  else if (units == 'si'){
    var yeastAtt = (document.brewbuilder.yeastAtt.value)/100;
    var Oval = document.brewbuilder.TotalOG.value;
    document.brewbuilder.estFGval.value = computeFinalGravEst(yeastAtt,Oval,units);
  }
}

function computeFinalGravEst(yeastAtt,Oval,units){
//alert("computeFinalGravEst")
  if (units == 'eng'){
    var FinalGravEst = (1 - yeastAtt)*(Oval-1)+1;
    FinalGravEst = formatnumber(FinalGravEst,3);
    //var a = new ToFmt(FinalGravEst);
    //FinalGravEst = a.fmtF(7,3);
  }
  else if (units == 'si'){
    var OvalN = convert(Oval,'degE','sg');
    var FinalGravEst = (1 - yeastAtt)*(OvalN-1)+1;
    FinalGravEst = convert(FinalGravEst,'sg','degE');
    FinalGravEst = formatnumber(FinalGravEst,2);
  }
  return FinalGravEst;
}  

function chgtoBoilLoss(units) {
  if (units == 'eng'){
    var PreBoilVolume = document.brewbuilder.PreBoilVolumeG.value;
    var PostBoilVolume = document.brewbuilder.PostBoilVolumeG.value;
    var BoilTimeMin = document.brewbuilder.BoilTimeMin.value;
  }
  else if (units == 'si'){
    var PreBoilVolume = document.brewbuilder.PreBoilVolumeL.value;
    var PostBoilVolume = document.brewbuilder.PostBoilVolumeL.value;
    var BoilTimeMin = document.brewbuilder.BoilTimeMin.value;
  }
  document.brewbuilder.BoilPctLoss.value = computeBoilLoss(PreBoilVolume,PostBoilVolume);
  document.brewbuilder.BoilPctLossRate.value = computeBoilLossRate(PreBoilVolume,PostBoilVolume,BoilTimeMin);
}

function computeBoilLoss(PreBoilVolume,PostBoilVolume){
  var BoilLoss = (1-(PostBoilVolume)/(PreBoilVolume))*100;
  BoilLoss = formatnumber(BoilLoss,1);
  return BoilLoss;
}  

function computeBoilLossRate(PreBoilVolume,PostBoilVolume,BoilTimeMin){
  var BoilLoss = (1-(PostBoilVolume)/(PreBoilVolume))*100;
  var BoilLossRate = BoilLoss/(BoilTimeMin/60);
  BoilLossRate = formatnumber(BoilLossRate ,1);
  return BoilLossRate ;
}  

function chgtoBrewEff(units) {
  if (units == 'eng'){
    var maltAmtKg = convert(document.brewbuilder.maltAmtLB.value,'lbm','kg');
    var BoilVolumeL = convert(document.brewbuilder.BoilVolumeG.value,'gal','l');
    var OEval = convert(document.brewbuilder.OGval.value,'sg','degE');
    document.brewbuilder.ExtractAmt.value = formatnumber(convert(computeExtractAmt(OEval,BoilVolumeL),'kg','lbm'),1);
    document.brewbuilder.brewEff.value = computeBrewEff(maltAmtKg,BoilVolumeL,OEval);
  }
  else if (units == 'si'){
    var maltAmtKg = document.brewbuilder.maltAmtKg.value;
    var BoilVolumeL = document.brewbuilder.BoilVolumeL.value;
    var OEval = document.brewbuilder.OGval.value;
    document.brewbuilder.ExtractAmt.value = computeExtractAmt(OEval,BoilVolumeL);
    document.brewbuilder.brewEff.value = computeBrewEff(maltAmtKg,BoilVolumeL,OEval);
  }
}

function computeBrewEff(maltAmtKg,BoilVolumeL,OEval){
  var OGval = convert(OEval,'degE','sg');
  var brewEff = (BoilVolumeL*OGval*OEval)/(maltAmtKg);
  brewEff = formatnumber(brewEff,1);
  return brewEff;
}  

function computeExtractAmt(OEval,BoilVolumeL){
  var OGval = convert(OEval,'degE','sg');
  var ExtractAmt = OGval*(OEval/100)*BoilVolumeL;
  ExtractAmt = formatnumber(ExtractAmt,1);
  return ExtractAmt;
}  

function chgtoStrikeTemp(units) {
  if (units == 'eng'){
    var maltAmtKg = convert(document.brewbuilder.maltAmtLB.value,'lbm','kg');
    var MITC = convert(document.brewbuilder.MITF.value,'F','C');
    var grainTempC = convert(document.brewbuilder.grainTempF.value,'F','C');
    var volMashWaterL = convert(document.brewbuilder.volMashWaterG.value,'gal','l');
    //if (volMashWaterL != '' && volMashWaterL != 0){
      document.brewbuilder.strikeTempF.value = convert(computeStrikeTemp(maltAmtKg,MITC,grainTempC,volMashWaterL),'C','F');
      //document.brewbuilder.strikeTempF.value = formatnumber(temp,1);
    //}
  }
  else if (units == 'si'){
    var maltAmtKg =document.brewbuilder.maltAmtKg.value;
    var MITC = document.brewbuilder.MITC.value;
    var grainTempC=document.brewbuilder.grainTempC.value;
    var volMashWaterL=document.brewbuilder.volMashWaterL.value;
    //if (volMashWaterL != '' && volMashWaterL != 0){
      document.brewbuilder.strikeTempC.value = computeStrikeTemp(maltAmtKg,MITC,grainTempC,volMashWaterL);
    //}
  }
}

function computeStrikeTemp(maltAmtKg,MITC,grainTempC,volMashWaterL){
    //1.6 = Specific heat of malt
    //4.18= Specific heat of water
    //3   = heat lost to outside air and mash tun
    var strikeTempA = (maltAmtKg*1.6*(MITC- grainTempC))/(volMashWaterL*4.18);
    var strikeTempB = strikeTempA + 1*MITC + 3;
    strikeTemp = formatnumber(strikeTempB,1);
    return strikeTemp;
}  

function chgtoAAStorage(units) {
  if (document.brewbuilder.storageType[0].checked){
    var method = "0";
  }
  else if (document.brewbuilder.storageType[1].checked){
    var method = "1";
  }
  else if (document.brewbuilder.storageType[2].checked){
    var method = "2";
  }
  if (units == 'eng'){
    var AAorig = document.brewbuilder.AAorig.value;
    var percentAALost = document.brewbuilder.percentAALost.value;
    var HopStoreTempF = document.brewbuilder.HopStoreTempF.value;
    var HopAgeDays = document.brewbuilder.HopAgeDays.value;
    document.brewbuilder.AAadj.value = computeAAStorage(AAorig,percentAALost,HopStoreTempF,HopAgeDays,method);
  }
  else if (units == 'si'){
    var AAorig = document.brewbuilder.AAorig.value;
    var percentAALost = document.brewbuilder.percentAALost.value;
    var HopStoreTempF = convert(document.brewbuilder.HopStoreTempC.value,'C','F');
    var HopAgeDays = document.brewbuilder.HopAgeDays.value;
    document.brewbuilder.AAadj.value = computeAAStorage(AAorig,percentAALost,HopStoreTempF,HopAgeDays,method);
  }
}

function computeAAStorage(AAorig,percentAALost,HopStoreTempF,HopAgeDays,method){
    var percentAALost=percentAALost/100;
    var Kfactor=0.0071473518*percentAALost*percentAALost*percentAALost - 0.00051989349*percentAALost*percentAALost + 0.006273602*percentAALost - 0.000048481808;
    var TFfactor=0.174495*Math.exp(0.025678*HopStoreTempF);
    if (method=='0'){ var SF = "1.0";}
    else if (method=='1'){var SF = "0.75";}
    else if (method=='2'){var SF = "0.50";}
    var AAadj = AAorig*(1/(Math.exp(Kfactor*SF*TFfactor*HopAgeDays)));
    AAadj= formatnumber(AAadj,2);
    return AAadj;
}  

/*--------------------------------------------------------------------*/
function chgtoEXTRACT(units) {
  if (document.brewbuilder.extractTYPE[0].checked){
    //dry
    var og  = "40";
  }
  else if (document.brewbuilder.extractTYPE[1].checked){
    //liquid
    var og  = "35";
  }

  if (document.brewbuilder.extractCOLOR[0].checked){
    var srm = "2";
  }
  else if (document.brewbuilder.extractCOLOR[1].checked){
    var srm = "2.5";
  }
  else if (document.brewbuilder.extractCOLOR[2].checked){
    var srm = "3.5";
  }
  else if (document.brewbuilder.extractCOLOR[3].checked){
    var srm = "10";
  }
  else if (document.brewbuilder.extractCOLOR[4].checked){
    var srm = "30";
  }
  var batchTemp         = document.brewbuilder.batch.value;
  var tgtOGTemp         = document.brewbuilder.tgtOG.value;

  if(units=='si') {batchTemp=convert(batchTemp,'l','gal');}
  if(units=='si') {tgtOGTemp=convert(tgtOGTemp,'degE','sg');}

  var FermentTOTAL      = (batchTemp*1000*(tgtOGTemp-1))/og;
  if(units=='si') {FermentTOTAL=convert(FermentTOTAL,'lbs','kg');}
  document.brewbuilder.FermentTOTAL.value = formatnumber(FermentTOTAL,2);

  var color             = (FermentTOTAL*srm)/batchTemp;
  color                 = convert(color,'MCU','srm');
  computeColor(color);
  if(units=='si') {color=convert(color,'srm','ebc');}
  document.brewbuilder.color.value = formatnumber(color,2);
}

function computeColor(srm) {
    if (srm < 1)                      {bColor_N = "water";}
    else if (srm >= 1 && srm <= 2.5)  {bColor_N = "light straw";}
    else if (srm > 2.5 && srm <= 3.5) {bColor_N = "pale straw";}
    else if (srm > 3.5 && srm <= 5.5) {bColor_N = "dark straw";}
    else if (srm > 5.5 && srm <= 10)  {bColor_N = "light amber";}
    else if (srm > 10 && srm <= 18)   {bColor_N = "pale amber";}
    else if (srm > 18 && srm <= 26)   {bColor_N = "dark amber";}
    else if (srm > 26 && srm <= 40)   {bColor_N = "very dark amber";}
    else if (srm > 40)                {bColor_N = "black";}
    document.brewbuilder.colorLabel.value = bColor_N;
}

/*--------------------------------------------------------------------*/
function chgtoprimingING(units) {
  if (document.brewbuilder.primingING[0].checked){
    var appatt = "0.55";
    var ozmgal = "1.27";
  }
  else if (document.brewbuilder.primingING[1].checked){
    var appatt = "0.70";
    var ozmgal = "0.96";
  }
  else if (document.brewbuilder.primingING[2].checked){
    var appatt = "0.75";
    var ozmgal = "0.92";
  }
  else if (document.brewbuilder.primingING[3].checked){
    var appatt = "1.00";
    var ozmgal = "0.54";
  }
  else if (document.brewbuilder.primingING[4].checked){
    var appatt = "1.00";
    var ozmgal = "0.50";
  }
  var temp2 = document.brewbuilder.temperature.value;
  computeresvolumes(temp2,units)
  var temp3 = document.brewbuilder.volumes.value;
  var temp4 = document.brewbuilder.resco2.value;
  var temp5 = temp3 - temp4;
  var temp6 = document.brewbuilder.batch.value;
  computesugarneeded(temp5,temp6,appatt,ozmgal,units)
}

function computeresvolumes(beertemp,units) {
  var temp1 = beertemp;
  if(units =='si'){
    temp1=convert(temp1,'C','F');
  }
  var resvol = 0.0002558774*temp1*temp1 - 0.0485883571*temp1 + 2.9946959371;
  document.brewbuilder.resco2.value = resvol;
  document.brewbuilder.resco2.value = formatnumber(resvol,3);
}

function computesugarneeded(deltaco2,batch,appatt,ozmgal,units) {
  var temp1 = deltaco2;
  var temp2 = batch;
  var temp3 = ozmgal;
  if(units =='si'){
    temp2 = convert(temp2,'l','gal');
  }
  /* based on 0.5 oz/gal per 1 vol CO2, varies by priming ingredient */
  var sugar = ozmgal*temp1*temp2; 
  if(units =='si'){
    sugar = convert(sugar,'ozm','g');
    document.brewbuilder.sugaramount.value = formatnumber(sugar,0);
  }
  if(units =='eng'){
    document.brewbuilder.sugaramount.value = formatnumber(sugar,2);
  }
}
/*--------------------------------------------------------------------*/

function chgStyles(units) {
     var temp1 = document.brewbuilder.temperature.value
     var temp2 = document.brewbuilder.volumes.value
     computepressure(temp2,temp1,units)
     //alert(temp1+" "+temp2+" "+units)
}

function chgtovFC(volCO2,units){
  var tunits = units;
  var temp3 = volCO2;
  document.brewbuilder.volumes.value // temp3;
  var temp2 = document.brewbuilder.volumes.value;
  var temp1 = document.brewbuilder.temperature.value;
  computepressure(temp2,temp1,units)
}

function chgtotFC(tempF,units){
  var temp3 = tempF; 
  document.brewbuilder.temperature.value // temp3;
  var temp1 = document.brewbuilder.temperature.value;
  var temp2 = document.brewbuilder.volumes.value;
  //alert("Change to FC "+temp2+" "+temp1+" "+units)
  computepressure(temp2,temp1,units);
}

function computepressure(vol,beertemp,units) {
  var temp1 = vol;
  var temp2 = beertemp;
    if(units =='si'){
      temp2=formatnumber(convert(temp2,'C','F'),1);
    }
  //alert("Change to Pressure "+temp1+" "+temp2+" "+units);
  if (temp2 >= 30 && temp2 <= 60) {
    var four = temp2*temp2*temp2*temp2
    var three= temp2*temp2*temp2
    var two  = temp2*temp2
    var slope     = 0.0000000720*four - 0.0000141048*three + 0.0010346138*two - 0.0348073497*temp2 + 0.5469779924;
    var intercept = 0.0003295805*two - 0.0566225405*temp2 + 3.1083388185;
    var temp3 = ((temp1-intercept)/slope);  
    if(units =='si'){
      temp3=formatnumber(convert(temp3,'psi','kPa'),1);
    }
    document.brewbuilder.pressure.value = formatnumber(temp3,1);
  }
}
function chgtoBottles(old_value,units) {
  //alert(temp1,units);
     if(units=='eng'){
          document.botBatcalc.bot12.value = Math.round(((document.botBatcalc.batchENG.value) * 128)/12);
          document.botBatcalc.bot16.value = Math.round(((document.botBatcalc.batchENG.value) * 128)/16);
          document.botBatcalc.bot22.value = Math.round(((document.botBatcalc.batchENG.value) * 128)/22);
          document.botBatcalc.bot32.value = Math.round(((document.botBatcalc.batchENG.value) * 128)/32);
     }
     if(units=='si'){
          document.botBatcalc.bot12SI.value = Math.round(((document.botBatcalc.batchSI.value) * 1000)/354);
          document.botBatcalc.bot16SI.value = Math.round(((document.botBatcalc.batchSI.value) * 1000)/473);
          document.botBatcalc.bot22SI.value = Math.round(((document.botBatcalc.batchSI.value) * 1000)/651);
          document.botBatcalc.bot32SI.value = Math.round(((document.botBatcalc.batchSI.value) * 1000)/847);
     }
  }
/*--------------------------------------------------------------------*/
function chgtoGBATCH(units) {
  //alert("chgtoGBATCH")
  if(units=='eng'){
    document.brewbuilder.FermentTOTAL.value = formatnumber(computeFermentTOTAL(),2);
    computeGPERCENT();
    var volume=document.brewbuilder.bsize.value;
    var tempTotalColor = computeTotalColor(volume,units);
    var TotalColor=convert(tempTotalColor,'MCU','srm');
    document.brewbuilder.TotalColor.value = formatnumber(TotalColor,2);
    computeColor(document.brewbuilder.TotalColor.value);
    document.brewbuilder.TotalOG.value=formatnumber(computeGRAVITY(volume,units),3);
    //var volume=document.brewbuilder.PreBoilVolume.value;
    //document.brewbuilder.SGwort.value=formatnumber(computeGRAVITY(volume,units),3);
  }
  if(units=='si'){
    var tempFermentTOTAL = convert(computeFermentTOTAL(),'lbm','kg');
    document.brewbuilder.FermentTOTAL.value = formatnumber(tempFermentTOTAL,2);
    computeGPERCENT();
    //var volume=convert(document.brewbuilder.bsize.value,'l','gal');
    var volume=document.brewbuilder.bsize.value;
    var tempTotalColor = computeTotalColor(volume,units);
    var TotalColor=convert(tempTotalColor,'MCU','srm');
    TotalColor=convert(TotalColor,'srm','ebc');
    document.brewbuilder.TotalColor.value = formatnumber(TotalColor,2);
    computeColor(document.brewbuilder.TotalColor.value);
    //document.brewbuilder.TotalColor.value = formatnumber(convert(colorTemp,'srm','ebc'),2);
    document.brewbuilder.TotalOG.value=formatnumber(convert(computeGRAVITY(volume,units),'sg','degE'),2);
    //var volume=document.brewbuilder.PreBoilVolume.value;
    //document.brewbuilder.SGwort.value=formatnumber(convert(computeGRAVITY(volume,units),'sg','degE'),2);
  }
}

function computeLBS(val1,val2){
  if     (val1=='lb') {var fermentLBS=parseFloat(val2);}
  else if(val1=='oz') {var fermentLBS=parseFloat(val2)/16;}
  else if(val1=='cup'){var fermentLBS=parseFloat(val2)/8;}
  else if(val1=='tsp'){var fermentLBS=(parseFloat(val2)/16)*0.1666667;}
  else if(val1=='kg') {var fermentLBS=convert(parseFloat(val2),'kg','lbm');}
  else if(val1=='g')  {var fermentLBS=convert(parseFloat(val2),'g','lbm');}
  else                {var fermentLBS=0;}
  //alert(fermentLBS)
  return fermentLBS;
}

function computeFermentTOTAL() {
  //alert("computeFermentTOTAL")
    var LBS1 = computeLBS((document.brewbuilder.fermentUnits1.value),(document.brewbuilder.fermentAmt1.value));
    var LBS2 = computeLBS((document.brewbuilder.fermentUnits2.value),(document.brewbuilder.fermentAmt2.value));
    var LBS3 = computeLBS((document.brewbuilder.fermentUnits3.value),(document.brewbuilder.fermentAmt3.value));
    var LBS4 = computeLBS((document.brewbuilder.fermentUnits4.value),(document.brewbuilder.fermentAmt4.value));
    var LBS5 = computeLBS((document.brewbuilder.fermentUnits5.value),(document.brewbuilder.fermentAmt5.value));
    //var LBS6 = computeLBS((document.brewbuilder.fermentUnits6.value),(document.brewbuilder.fermentAmt6.value));
/*
  var a1 = parseFloat(document.brewbuilder.fermentAmt1.value);
  var a2 = parseFloat(document.brewbuilder.fermentAmt2.value);
  var a3 = parseFloat(document.brewbuilder.fermentAmt3.value);
  var a4 = parseFloat(document.brewbuilder.fermentAmt4.value);
  var a5 = parseFloat(document.brewbuilder.fermentAmt5.value);
  var a6 = parseFloat(document.brewbuilder.fermentAmt6.value);
  var sum = a1 + a2 + a3 + a4 + a5 + a6;
*/
  var sum = LBS1 + LBS2 + LBS3 + LBS4 + LBS5;
  //alert(LBS1 + LBS2 + LBS3 + LBS4 + LBS5)
  //alert(LBS4)
  var FermentTOTAL = sum;
  //alert(FermentTOTAL)
  return FermentTOTAL;
}

function computeTotalColor(volume,units) {
  //alert("computeTotalColor")
  //alert(units)
  //alert(volume)
  if(units=='eng'){
/*
    var cu1 = parseFloat(document.brewbuilder.fermentColor1.value)*parseFloat(document.brewbuilder.fermentAmt1.value);
    var cu2 = parseFloat(document.brewbuilder.fermentColor2.value)*parseFloat(document.brewbuilder.fermentAmt2.value);
    var cu3 = parseFloat(document.brewbuilder.fermentColor3.value)*parseFloat(document.brewbuilder.fermentAmt3.value);
    var cu4 = parseFloat(document.brewbuilder.fermentColor4.value)*parseFloat(document.brewbuilder.fermentAmt4.value);
    var cu5 = parseFloat(document.brewbuilder.fermentColor5.value)*parseFloat(document.brewbuilder.fermentAmt5.value);
    var cu6 = parseFloat(document.brewbuilder.fermentColor6.value)*parseFloat(document.brewbuilder.fermentAmt6.value);
*/
    var LBS1 = computeLBS((document.brewbuilder.fermentUnits1.value),(document.brewbuilder.fermentAmt1.value));
    var LBS2 = computeLBS((document.brewbuilder.fermentUnits2.value),(document.brewbuilder.fermentAmt2.value));
    var LBS3 = computeLBS((document.brewbuilder.fermentUnits3.value),(document.brewbuilder.fermentAmt3.value));
    var LBS4 = computeLBS((document.brewbuilder.fermentUnits4.value),(document.brewbuilder.fermentAmt4.value));
    var LBS5 = computeLBS((document.brewbuilder.fermentUnits5.value),(document.brewbuilder.fermentAmt5.value));
    //var LBS6 = computeLBS((document.brewbuilder.fermentUnits6.value),(document.brewbuilder.fermentAmt6.value));
    var cu1 = parseFloat(document.brewbuilder.fermentColor1.value)* LBS1;
    var cu2 = parseFloat(document.brewbuilder.fermentColor2.value)* LBS2;
    var cu3 = parseFloat(document.brewbuilder.fermentColor3.value)* LBS3;
    var cu4 = parseFloat(document.brewbuilder.fermentColor4.value)* LBS4;
    var cu5 = parseFloat(document.brewbuilder.fermentColor5.value)* LBS5;
    //var cu6 = parseFloat(document.brewbuilder.fermentColor6.value)* LBS6;
    var cusum = (cu1 + cu2 + cu3 + cu4 + cu5)/volume;
    //alert(LBS4)
    var TotalColor=cusum;
  }
  if(units=='si'){
    var LBS1 = computeLBS((document.brewbuilder.fermentUnits1.value),(document.brewbuilder.fermentAmt1.value));
    var LBS2 = computeLBS((document.brewbuilder.fermentUnits2.value),(document.brewbuilder.fermentAmt2.value));
    var LBS3 = computeLBS((document.brewbuilder.fermentUnits3.value),(document.brewbuilder.fermentAmt3.value));
    var LBS4 = computeLBS((document.brewbuilder.fermentUnits4.value),(document.brewbuilder.fermentAmt4.value));
    var LBS5 = computeLBS((document.brewbuilder.fermentUnits5.value),(document.brewbuilder.fermentAmt5.value));
    //var LBS6 = computeLBS((document.brewbuilder.fermentUnits6.value),(document.brewbuilder.fermentAmt6.value));

    var cu1 = LBS1 *parseFloat(document.brewbuilder.fermentColor1.value);
    var cu2 = LBS2 *parseFloat(document.brewbuilder.fermentColor2.value);
    var cu3 = LBS3 *parseFloat(document.brewbuilder.fermentColor3.value);
    var cu4 = LBS4 *parseFloat(document.brewbuilder.fermentColor4.value);
    var cu5 = LBS5 *parseFloat(document.brewbuilder.fermentColor5.value);
    //var cu6 = LBS6 *parseFloat(document.brewbuilder.fermentColor6.value);
    volume = convert(volume,'l','gal');
    var cusum = (cu1 + cu2 + cu3 + cu4 + cu5)/volume;
    var TotalColor=cusum;
  }
  return TotalColor;
}


function computeGPERCENT() {
  //alert("computeGPERCENT")
  //var total = document.getElementById(FermentTOTAL).value // temp1;
  if (document.brewbuilder.fermentUnitsTOTAL.value=='lb'){
      var total = parseFloat(document.brewbuilder.FermentTOTAL.value);
  }
  else{
      var total = convert(parseFloat(document.brewbuilder.FermentTOTAL.value),'kg','lbm');
  }
  //alert("total = " + total)
  if(isNaN(total)){
  }
  else{
    var LBS1 = computeLBS((document.brewbuilder.fermentUnits1.value),(document.brewbuilder.fermentAmt1.value));
    var LBS2 = computeLBS((document.brewbuilder.fermentUnits2.value),(document.brewbuilder.fermentAmt2.value));
    var LBS3 = computeLBS((document.brewbuilder.fermentUnits3.value),(document.brewbuilder.fermentAmt3.value));
    var LBS4 = computeLBS((document.brewbuilder.fermentUnits4.value),(document.brewbuilder.fermentAmt4.value));
    var LBS5 = computeLBS((document.brewbuilder.fermentUnits5.value),(document.brewbuilder.fermentAmt5.value));
    //var LBS6 = computeLBS((document.brewbuilder.fermentUnits6.value),(document.brewbuilder.fermentAmt6.value));
/*
  document.brewbuilder.fermentPct1.value = formatnumber((parseFloat(document.brewbuilder.fermentAmt1.value)/total)*100,1);
  document.brewbuilder.fermentPct2.value = formatnumber((parseFloat(document.brewbuilder.fermentAmt2.value)/total)*100,1);
  document.brewbuilder.fermentPct3.value = formatnumber((parseFloat(document.brewbuilder.fermentAmt3.value)/total)*100,1);
  document.brewbuilder.fermentPct4.value = formatnumber((parseFloat(document.brewbuilder.fermentAmt4.value)/total)*100,1);
  document.brewbuilder.fermentPct5.value = formatnumber((parseFloat(document.brewbuilder.fermentAmt5.value)/total)*100,1);
  document.brewbuilder.fermentPct6.value = formatnumber((parseFloat(document.brewbuilder.fermentAmt6.value)/total)*100,1);
*/
  document.brewbuilder.fermentPct1.value = formatnumber((LBS1/total)*100,1);
  document.brewbuilder.fermentPct2.value = formatnumber((LBS2/total)*100,1);
  document.brewbuilder.fermentPct3.value = formatnumber((LBS3/total)*100,1);
  document.brewbuilder.fermentPct4.value = formatnumber((LBS4/total)*100,1);
  document.brewbuilder.fermentPct5.value = formatnumber((LBS5/total)*100,1);
  //document.brewbuilder.fermentPct6.value = formatnumber((LBS6/total)*100,1);
  }
}

function computeGRAVITY(volume,units) {
  //alert("computeGRAVITY " + units)
  var brewEfficiency = (document.brewbuilder.brewEfficiency.value/100);
  if(units=='eng'){
    var LBS1 = computeLBS((document.brewbuilder.fermentUnits1.value),(document.brewbuilder.fermentAmt1.value));
    var LBS2 = computeLBS((document.brewbuilder.fermentUnits2.value),(document.brewbuilder.fermentAmt2.value));
    var LBS3 = computeLBS((document.brewbuilder.fermentUnits3.value),(document.brewbuilder.fermentAmt3.value));
    var LBS4 = computeLBS((document.brewbuilder.fermentUnits4.value),(document.brewbuilder.fermentAmt4.value));
    var LBS5 = computeLBS((document.brewbuilder.fermentUnits5.value),(document.brewbuilder.fermentAmt5.value));
    //var LBS6 = computeLBS((document.brewbuilder.fermentUnits6.value),(document.brewbuilder.fermentAmt6.value));

    var og1 = LBS1 * ((parseFloat(document.brewbuilder.fermentSG1.value)*1000)-1000);
    var og2 = LBS2 * ((parseFloat(document.brewbuilder.fermentSG2.value)*1000)-1000);
    var og3 = LBS3 * ((parseFloat(document.brewbuilder.fermentSG3.value)*1000)-1000);
    var og4 = LBS4 * ((parseFloat(document.brewbuilder.fermentSG4.value)*1000)-1000);
    var og5 = LBS5 * ((parseFloat(document.brewbuilder.fermentSG5.value)*1000)-1000);
    //var og6 = LBS6 * ((parseFloat(document.brewbuilder.fermentSG6.value)*1000)-1000);
    var sumog = (og1 + og2 + og3 + og4 + og5);
    //alert ((parseFloat(document.brewbuilder.fermentSG1.value)*1000)-1)
    var GRAVITY = ((sumog/volume) /1000)*brewEfficiency  + 1 ;
  }
  if(units=='si'){
    var LBS1 = computeLBS((document.brewbuilder.fermentUnits1.value),(document.brewbuilder.fermentAmt1.value));
    var LBS2 = computeLBS((document.brewbuilder.fermentUnits2.value),(document.brewbuilder.fermentAmt2.value));
    var LBS3 = computeLBS((document.brewbuilder.fermentUnits3.value),(document.brewbuilder.fermentAmt3.value));
    var LBS4 = computeLBS((document.brewbuilder.fermentUnits4.value),(document.brewbuilder.fermentAmt4.value));
    var LBS5 = computeLBS((document.brewbuilder.fermentUnits5.value),(document.brewbuilder.fermentAmt5.value));
    //var LBS6 = computeLBS((document.brewbuilder.fermentUnits6.value),(document.brewbuilder.fermentAmt6.value));

    var og1 = LBS1  * ((parseFloat(document.brewbuilder.fermentSG1.value)*1000)-1000);
    var og2 = LBS2  * ((parseFloat(document.brewbuilder.fermentSG2.value)*1000)-1000);
    var og3 = LBS3  * ((parseFloat(document.brewbuilder.fermentSG3.value)*1000)-1000);
    var og4 = LBS4  * ((parseFloat(document.brewbuilder.fermentSG4.value)*1000)-1000);
    var og5 = LBS5  * ((parseFloat(document.brewbuilder.fermentSG5.value)*1000)-1000);
    //var og6 = LBS6  * ((parseFloat(document.brewbuilder.fermentSG6.value)*1000)-1000);
    volume = convert(volume,'l','gal');
    var sumog = (og1 + og2 + og3 + og4 + og5);
    var GRAVITY = ((sumog/volume) /1000)*brewEfficiency  + 1 ;
  }
  return GRAVITY;
}
/*--------------------------------------------------------------------*/

function chgtoHBATCH(units) {
  //alert("changetoHBATCH")
  if(units=='eng'){
    document.brewbuilder.hopsTOTAL.value=formatnumber(computeHopAMOUNT(),2);
    computeIBU(units);
    document.brewbuilder.IBUTOTAL.value=formatnumber(computeIBUTOTAL(),2);
  }
  if(units=='si'){
    document.brewbuilder.hopsTOTAL.value=formatnumber(computeHopAMOUNT(),2);
    computeIBU(units);
    document.brewbuilder.IBUTOTAL.value=formatnumber(computeIBUTOTAL(),2);
  }
}

function computeHopAMOUNT() {
  //alert("changetoamount")
  var a1 = parseFloat(document.brewbuilder.hopsAmt1.value);
  var a2 = parseFloat(document.brewbuilder.hopsAmt2.value);
  var a3 = parseFloat(document.brewbuilder.hopsAmt3.value);
  var a4 = parseFloat(document.brewbuilder.hopsAmt4.value);
  //var a5 = parseFloat(document.brewbuilder.hopsAmt5.value); 
  //var a6 = parseFloat(document.brewbuilder.hopsAmt6.value);
  //var HopAmount = a1 + a2 + a3 + a4 + a5 + a6;
  var HopAmount = a1 + a2 + a3 + a4;
  return HopAmount;
}

function computeIBUTOTAL() {
  var a1 = parseFloat(document.brewbuilder.hopsIBU1.value);
  var a2 = parseFloat(document.brewbuilder.hopsIBU2.value);
  var a3 = parseFloat(document.brewbuilder.hopsIBU3.value);
  var a4 = parseFloat(document.brewbuilder.hopsIBU4.value);
  //var a5 = parseFloat(document.brewbuilder.hopsIBU5.value);
  //var a6 = parseFloat(document.brewbuilder.hopsIBU6.value);
  //var IBUTOTAL = a1 + a2 + a3 + a4 + a5 + a6;
  var IBUTOTAL = a1 + a2 + a3 + a4;
  return IBUTOTAL;
}

function computeIBU(units) {
  //alert("computeibu")
  //var method = (document.brewbuilder.utilType.value);
  //var method = document.getElementById('utilType').value;
  if (document.brewbuilder.utilType[0].checked){
    var method = "Garetz";
  }
  else if (document.brewbuilder.utilType[1].checked){
    var method = "Tinseth";
  }
  else if (document.brewbuilder.utilType[2].checked){
    var method = "Rager";
  }
  //alert(method)
  var BoilVolume = parseFloat(document.brewbuilder.PreBoilVolume.value);
  var FinalVolume= parseFloat(document.brewbuilder.bsize.value);
  var SGwort = parseFloat(document.brewbuilder.SGwort.value);

  if(units=='si'){
    BoilVolume = convert(BoilVolume,"l","gal");
    FinalVolume= convert(FinalVolume,"l","gal");
    SGwort = convert(SGwort,"degE","sg");
  }
  /*--------------------------------------------------------------*/
  var amt = parseFloat(document.brewbuilder.hopsAmt1.value);
  if(units=='si'){amt = convert(amt ,"g","ozm");}
  var time = parseFloat(document.brewbuilder.hopsTime1.value);
  var alpha = parseFloat(document.brewbuilder.hopsAA1.value);
  document.brewbuilder.hopsIBU1.value = adjustIBU(amt,alpha,time,BoilVolume,FinalVolume,SGwort,method);
  /*--------------------------------------------------------------*/
  var amt = parseFloat(document.brewbuilder.hopsAmt2.value);
  if(units=='si'){amt = convert(amt ,"g","ozm");}
  var time = parseFloat(document.brewbuilder.hopsTime2.value);
  var alpha = parseFloat(document.brewbuilder.hopsAA2.value);
  document.brewbuilder.hopsIBU2.value = adjustIBU(amt,alpha,time,BoilVolume,FinalVolume,SGwort,method);
  /*--------------------------------------------------------------*/
  var amt = parseFloat(document.brewbuilder.hopsAmt3.value);
  if(units=='si'){amt = convert(amt ,"g","ozm");}
  var time = parseFloat(document.brewbuilder.hopsTime3.value);
  var alpha = parseFloat(document.brewbuilder.hopsAA3.value);
  document.brewbuilder.hopsIBU3.value = adjustIBU(amt,alpha,time,BoilVolume,FinalVolume,SGwort,method);
  /*--------------------------------------------------------------*/
  var amt = parseFloat(document.brewbuilder.hopsAmt4.value);
  if(units=='si'){amt = convert(amt ,"g","ozm");}
  var time = parseFloat(document.brewbuilder.hopsTime4.value);
  var alpha = parseFloat(document.brewbuilder.hopsAA4.value);
  document.brewbuilder.hopsIBU4.value = adjustIBU(amt,alpha,time,BoilVolume,FinalVolume,SGwort,method);
  /*--------------------------------------------------------------*/
  //var amt = parseFloat(document.brewbuilder.hopsAmt5.value);
  //if(units=='si'){amt = convert(amt ,"g","ozm");}
  //var time = parseFloat(document.brewbuilder.hopsTime5.value);
  //var alpha = parseFloat(document.brewbuilder.hopsAA5.value);
  //document.brewbuilder.hopsIBU5.value = adjustIBU(amt,alpha,time,BoilVolume,FinalVolume,SGwort,method);
  /*--------------------------------------------------------------*/
  //var amt = parseFloat(document.brewbuilder.hopsAmt6.value);
  //if(units=='si'){amt = convert(amt ,"g","ozm");}
  //var time = parseFloat(document.brewbuilder.hopsTime6.value);
  //var alpha = parseFloat(document.brewbuilder.hopsAA6.value);
  //document.brewbuilder.hopsIBU6.value = adjustIBU(amt,alpha,time,BoilVolume,FinalVolume,SGwort,method);
  /*--------------------------------------------------------------*/
  document.brewbuilder.IBUTOTAL.value=formatnumber(computeIBUTOTAL(),2);
}

function adjustIBU(amt,alpha,time,BoilVolume,FinalVolume,SGwort,method){
  volume=FinalVolume;
  if(isNaN(amt)){amt = 0;}
  if(isNaN(alpha)){alpha = 0;}
  if(isNaN(time)){time = 0;}
  if(isNaN(BoilVolume)){BoilVolume = 0;}
  if(isNaN(FinalVolume)){FinalVolume = 0;}
  if(isNaN(SGwort)){SGwort= 0;}

  if (method=="Garetz"){
    //Garetz Method
    //GF= Gravity Factor ->RagerGravityCorrection
    //HF=Hopping Rate Facor ->((CF*Desired IBUs)/260)+1
    //TF=Temperature Factor ->((elevation in feet/550)*0.02)+1
    //YF=Yeast Factor -> fast flocculator = (.95 amt), slow = (1.05 amt), hefe (.80 amt), 
    //PF=Pellet Factor -> pellets (10-30 min boil) -> (0.90 amt)
    //BF=Bag Factor -> loose bag (1.10 amt) stuffed bag (1.20 amt)
    //FF=Filter Factor -> filtered (1.0125-1.025 amt)
    //correction=GF * HF * TF * YF * PF * BF * FF
    correction = 1.4;
    utilization = GaretzUtilization(time);
  }
  else if (method=="Rager") {
    correction= RagerGravityCorrection(BoilVolume,FinalVolume,SGwort);
    //alert(correction)
    correction = 1 + correction;
    utilization = RagerUtilization(time);
  }
  else if (method=="Tinseth") {
    correction=1;
    //utilA = TinsethUtilization(time);
    //utilB = TinsethBignessFactor(SGwort);
    utilization = TinsethUtilization(time)*TinsethBignessFactor(SGwort)*100;
  }
  ibuNow  = (amt*utilization*alpha*0.749)/(volume*correction);
  ibuNow  = formatnumber(ibuNow,2);
  return ibuNow;
}

function GaretzUtilization(time) {
  //Garetz Method
  if (time <= 10){utilization="0";}
  else if (time > 10 && time <=15) {utilization="2";}
  else if (time > 15 && time <=20) {utilization="5";}
  else if (time > 20 && time <=25) {utilization="8";}
  else if (time > 25 && time <=30) {utilization="11";}
  else if (time > 30 && time <=35) {utilization="14";}
  else if (time > 35 && time <=40) {utilization="16";}
  else if (time > 40 && time <=45) {utilization="18";}
  else if (time > 45 && time <=50) {utilization="19";}
  else if (time > 50 && time <=60) {utilization="20";}
  else if (time > 60 && time <=70) {utilization="21";}
  else if (time > 70 && time <=80) {utilization="22";}
  else if (time > 80)  {utilization="23";}
  return utilization;
}

function RagerUtilization(time) {
  //Rager Method
  if (time <= 6){utilization="5";}
  else if (time > 6 && time <=10) {utilization="6";}
  else if (time > 10 && time <=15) {utilization="8";}
  else if (time > 15 && time <=20) {utilization="10.1";}
  else if (time > 20 && time <=25) {utilization="12.1";}
  else if (time > 25 && time <=30) {utilization="15.3";}
  else if (time > 30 && time <=35) {utilization="18.8";}
  else if (time > 35 && time <=40) {utilization="22.8";}
  else if (time > 40 && time <=45) {utilization="26.9";}
  else if (time > 45 && time <=50) {utilization="28.1";}
  else if (time > 50 && time <=60) {utilization="30";}
  else if (time > 60)  {utilization="30";}
  return utilization;
}

function RagerGravityCorrection(BoilVolume,FinalVolume,SGwort){
  var BG = ((FinalVolume / BoilVolume ) * (SGwort -1))+1;
  var RagerGravityCorrection = ((BG-1.050)/0.2)+1;
  return RagerGravityCorrection;
}

function TinsethUtilization(time){
  //Tinseth Method
  var utilization = (1 - Math.exp(-0.04 * time))/4.15;
  return utilization;
}

function TinsethBignessFactor(SGwort) {
  //Tinseth Method
  var TinsethBignessFactor = 1.65 * Math.pow(0.000125,(SGwort - 1));
  //alert(TinsethBignessFactor)
  return TinsethBignessFactor;
}

function chgtoHopUtil(units) {
  //alert("chgtoHopUtil")
  var amt = parseFloat(document.brewbuilder.amt.value);
  var time = parseFloat(document.brewbuilder.time.value);
  var alpha = parseFloat(document.brewbuilder.alpha.value);
  var BoilVolume = parseFloat(document.brewbuilder.BoilVolume.value);
  var FinalVolume = parseFloat(document.brewbuilder.FinalVolume.value);
  var SGwort = parseFloat(document.brewbuilder.SGwort.value);

  if(units=='eng'){
     document.brewbuilder.ibuGaretz.value = adjustIBU(amt,alpha,time,BoilVolume,FinalVolume,SGwort,"Garetz");
     document.brewbuilder.ibuTinseth.value = adjustIBU(amt,alpha,time,BoilVolume,FinalVolume,SGwort,"Tinseth");
     document.brewbuilder.ibuRager.value = adjustIBU(amt,alpha,time,BoilVolume,FinalVolume,SGwort,"Rager");
  }
  else if(units=='si'){
     var amt = convert(amt,"g","ozm");
     var BoilVolume =  convert(BoilVolume,"l","gal");
     var FinalVolume =  convert(FinalVolume,"l","gal");
     var SGwort = convert(SGwort,"degE","sg");

     document.brewbuilder.ibuGaretz.value = adjustIBU(amt,alpha,time,BoilVolume,FinalVolume,SGwort,"Garetz");
     document.brewbuilder.ibuTinseth.value = adjustIBU(amt,alpha,time,BoilVolume,FinalVolume,SGwort,"Tinseth");
     document.brewbuilder.ibuRager.value = adjustIBU(amt,alpha,time,BoilVolume,FinalVolume,SGwort,"Rager");
  }

}

function chgtohopsTOTAL(input) {
  document.brewbuilder.hopsTOTAL.value // input
  }

function chgtoIBUTOTAL(input) {
  document.brewbuilder.IBUTOTAL.value // input
  }
/*--------------------------------------------------------------------*/
function chgWater(elemid) {
  var1 = "document.brewbuilder.setWater" + elemid;
  var2 = eval(var1 + ".selectedIndex");
  var3 = eval("document.brewbuilder.CA" + elemid);
  var3.value = water[var2][1];
  var4 = eval("document.brewbuilder.MG" + elemid);
  var4.value = water[var2][2];
  var5 = eval("document.brewbuilder.NA" + elemid);
  var5.value = water[var2][3];
  var6 = eval("document.brewbuilder.SO4" + elemid);
  var6.value = water[var2][4];
  var7 = eval("document.brewbuilder.CL" + elemid);
  var7.value = water[var2][5];
  var8 = eval("document.brewbuilder.HCO3" + elemid);
  var8.value = water[var2][6];
  
  if (elemid == 1) {
    drawbarsA(water[var2][1],water[var2][2],water[var2][3],water[var2][4],water[var2][5],water[var2][6])
  }
  else if (elemid == 2) {
    drawbarsB(0,0,units)
  }
  }
/*--------------------------------------------------------------------*/

function chgtoGYPSUM(temp,units) {
  //document.getElementById(name).value // temp1;
  document.brewbuilder.GYPSUM.value // temp;
  var gyp = parseFloat(document.brewbuilder.GYPSUM.value);
  if(isNaN(gyp)){
    gyp = 0;
  }
  drawbarsB(gyp,1,units)
}

function chgtoEPSOM(temp,units) {
  document.brewbuilder.EPSOM.value // temp;
  var eps = parseFloat(document.brewbuilder.EPSOM.value);
  if(isNaN(eps)){
    eps = 0;
  }
  drawbarsB(eps,2,units)
}

function chgtoCANNING(temp,units) {
  document.brewbuilder.CANNING.value // temp;
  var can = parseFloat(document.brewbuilder.CANNING.value);
  if(isNaN(can)){
    can = 0;
  }
  drawbarsB(can,3,units)
}

function chgtoBAKING(temp,units) {
  document.brewbuilder.BAKING.value // temp;
  var bak = parseFloat(document.brewbuilder.BAKING.value);
  if(isNaN(bak)){
    bak = 0;
  }
  drawbarsB(bak,4,units)
}

function chgtoCALCIUM(temp,units) {
  document.brewbuilder.CALCIUM.value // temp;
  var cal = parseFloat(document.brewbuilder.CALCIUM.value);
  if(isNaN(cal)){
    cal = 0;
  }
  drawbarsB(cal,5,units)
}

function chgtoCHALK(temp,units) {
  document.brewbuilder.CHALK.value // temp;
  var cha = parseFloat(document.brewbuilder.CHALK.value);
  if(isNaN(cha)){
    cha = 0;
  }
  drawbarsB(cha,6,units)
}

function chgtoINP04(temp,units) {
  document.brewbuilder.inp04.value // temp;
  var H20 = parseFloat(document.brewbuilder.inp04.value);
  if(isNaN(H20)){
    H20 = 0;
  }
  drawbarsB(H20,7,units)
}

function chgtoH202(temp,id,units) {
  if(id=='CA2'){
    //alert("hello again")
    document.brewbuilder.CA2.value // temp;
    var CA2 = parseFloat(document.brewbuilder.CA2.value);
    if(isNaN(CA2)){CA2 = 0;}
    drawbarsB(0,1,units)
  }
  if(id=='MG2'){
    document.brewbuilder.MG2.value // temp;
    var MG2 = parseFloat(document.brewbuilder.MG2.value);
    if(isNaN(MG2)){MG2 = 0;}
    drawbarsB(0,2,units)
  }
  if(id=='NA2'){
    document.brewbuilder.NA2.value // temp;
    var NA2 = parseFloat(document.brewbuilder.NA2.value);
    if(isNaN(NA2)){NA2 = 0;}
    drawbarsB(0,3,units)
  }
  if(id=='SO42'){
    document.brewbuilder.SO42.value // temp;
    var SO42 = parseFloat(document.brewbuilder.SO42.value);
    if(isNaN(SO42)){SO42 = 0;}
    drawbarsB(0,4,units)
  }
  if(id=='CL2'){
    document.brewbuilder.CL2.value // temp;
    var CL2 = parseFloat(document.brewbuilder.CL2.value);
    if(isNaN(CL2)){CL2 = 0;}
    drawbarsB(0,5,units)
  }
  if(id=='HCO32'){
    document.brewbuilder.HCO32.value // temp;
    var HCO32 = parseFloat(document.brewbuilder.HCO32.value);
    if(isNaN(HCO32)){HCO32 = 0;}
    drawbarsB(0,6,units)
  }
}

function drawbarsA(t1,t2,t3,t4,t5,t6) {
  document.brewbuilder.BAR1A.setAttribute('height',t1/10);
  document.brewbuilder.BAR2A.setAttribute('height',t2/10);
  document.brewbuilder.BAR3A.setAttribute('height',t3/10);
  document.brewbuilder.BAR4A.setAttribute('height',t4/10);
  document.brewbuilder.BAR5A.setAttribute('height',t5/10);
  document.brewbuilder.BAR6A.setAttribute('height',t6/10);
}

function drawbarsB(change,id,units) {
  var gyp = parseFloat(document.brewbuilder.GYPSUM.value);
  var eps = parseFloat(document.brewbuilder.EPSOM.value);
  var can = parseFloat(document.brewbuilder.CANNING.value);
  var bak = parseFloat(document.brewbuilder.BAKING.value);
  var cal = parseFloat(document.brewbuilder.CALCIUM.value);
  var cha = parseFloat(document.brewbuilder.CHALK.value);
  var H20 = parseFloat(document.brewbuilder.inp04.value);
  //
  if (id==1){var gyp = parseFloat(change)};
  if (id==2){var eps = parseFloat(change)};
  if (id==3){var can = parseFloat(change)};
  if (id==4){var bak = parseFloat(change)};
  if (id==5){var cal = parseFloat(change)};
  if (id==6){var cha = parseFloat(change)};
  if (id==7){var H20 = parseFloat(change)};
  //
  if(units=='eng'){
    //convert from teaspoons to grams
    gyp = gyp*11.33900;
  }
  if(units=='eng'){
    //convert from teaspoons to grams
    eps = eps*13.11380;
  }
  if(units=='eng'){
    //convert from teaspoons to grams
    can = can*10.84600;
  }
  if(units=='eng'){
    //convert from teaspoons to grams
    bak = bak*10.64387;
  }
  if(units=='eng'){
    //convert from teaspoons to grams
    cal = cal*10.59950;
  }
  if(units=='eng'){
    //convert from teaspoons to grams
    cha = cha*8.87400;
  }
  if(units=='si'){
    //convert from liters to gallons
    H20 = convert(H20,"l","gal");
  }
  //
  var t1 = parseFloat(document.brewbuilder.CA2.value)   + (61.5*gyp +  72.0*cal + 105.8*cha)/H20;
  var t2 = parseFloat(document.brewbuilder.MG2.value)   + (26.1*eps)/H20;
  var t3 = parseFloat(document.brewbuilder.NA2.value)   + (103.9*can +  72.0*bak)/H20;
  var t4 = parseFloat(document.brewbuilder.SO42.value)  + (142.4*gyp + 103.0*eps)/H20;
  var t5 = parseFloat(document.brewbuilder.CL2.value)   + (160.3*can + 127.4*cal)/H20;
  var t6 = parseFloat(document.brewbuilder.HCO32.value) + (189.0*bak + 158.4*cha)/H20;
  //    RESET
  if (id==99){
    t1=0;
    t2=0;
    t3=0;
    t4=0;
    t5=0;
    t6=0;
    document.brewbuilder.GYPSUM.value =0;
    document.brewbuilder.EPSOM.value  =0;
    document.brewbuilder.CANNING.value=0;
    document.brewbuilder.BAKING.value =0;
    document.brewbuilder.CALCIUM.value=0;
    document.brewbuilder.CHALK.value  =0;
    //alert("RESET BARS")
  }
  //Draw adjusted bars
  document.brewbuilder.BAR1B.setAttribute('height',t1/10);
  document.brewbuilder.BAR2B.setAttribute('height',t2/10);
  document.brewbuilder.BAR3B.setAttribute('height',t3/10);
  document.brewbuilder.BAR4B.setAttribute('height',t4/10);
  document.brewbuilder.BAR5B.setAttribute('height',t5/10);
  document.brewbuilder.BAR6B.setAttribute('height',t6/10);
  //Display modified values
  document.brewbuilder.CA_3.value= Math.round(t1);
  document.brewbuilder.MG_3.value= Math.round(t2);
  document.brewbuilder.NA_3.value= Math.round(t3);
  document.brewbuilder.SO4_3.value= Math.round(t4);
  document.brewbuilder.CL_3.value= Math.round(t5);
  document.brewbuilder.HCO3_3.value= Math.round(t6);
}
/*--------------------------------------------------------------------*/

function chgtoOSG(units) {
     if(units=='eng'){
       //var temp1 = osgval;
       //document.brewbuilder.OSG.value // temp1;
       var OE = convert(document.brewbuilder.OSG.value,"sg","degE");
       var AE = convert(document.brewbuilder.FSG.value,"sg","degE");
       var calories=computecals(OE, AE, document.brewbuilder.FSG.value,units);
       document.brewbuilder.FPF.value = computefpt(OE, AE,units);
       document.brewbuilder.ABW.value = computeABW(OE, AE);
     }
     else if(units=='si'){
       //var temp1 = osgval;
       //document.brewbuilder.OE.value // temp1;
       var OE = document.brewbuilder.OE.value;
       var AE = document.brewbuilder.AE.value;
       OSG = convert(document.brewbuilder.OE.value,"degE","sg");
       FSG = convert(document.brewbuilder.AE.value,"degE","sg");
       var calories=computecals(document.brewbuilder.OE.value, document.brewbuilder.AE.value, FSG,units);
       document.brewbuilder.FPC.value = computefpt(document.brewbuilder.OE.value, document.brewbuilder.AE.value,units);
       document.brewbuilder.ABV.value = computeABV(OSG,FSG);
     }
     document.brewbuilder.AppAtt.value = computeAppAtt(OE,AE);
     document.brewbuilder.RealAtt.value = computeRealAtt(OE,AE);
     document.brewbuilder.bot12.value = Math.round(calories);
     //document.brewbuilder.bot16.value = Math.round(calories*(16/12));
     //document.brewbuilder.bot22.value = Math.round(calories*(22/12));
     //document.brewbuilder.bot32.value = Math.round(calories*(32/12));
}

function chgtoFSG(units) {
     if(units=='eng'){
       //var temp1 = fsgval;
       //document.brewbuilder.FSG.value // temp1;
       OE = convert(document.brewbuilder.OSG.value,"sg","degE");
       AE = convert(document.brewbuilder.FSG.value,"sg","degE");
       var calories=computecals(OE, AE, document.brewbuilder.FSG.value,units);
       document.brewbuilder.FPF.value = computefpt(OE, AE,units);
       document.brewbuilder.ABW.value = computeABW(OE, AE);
     }
     else if(units=='si'){
       //var temp1 = fsgval;
       //document.brewbuilder.AE.value // temp1;
       var OE = document.brewbuilder.OE.value;
       var AE = document.brewbuilder.AE.value;
       OSG = convert(document.brewbuilder.OE.value,"degE","sg");
       FSG = convert(document.brewbuilder.AE.value,"degE","sg");
       var calories = computecals(document.brewbuilder.OE.value, document.brewbuilder.AE.value, FSG,units);
       document.brewbuilder.FPC.value = computefpt(document.brewbuilder.OE.value, document.brewbuilder.AE.value,units);
       document.brewbuilder.ABV.value = computeABV(OSG,FSG);
     }
     document.brewbuilder.AppAtt.value = computeAppAtt(OE,AE);
     document.brewbuilder.RealAtt.value = computeRealAtt(OE,AE);
     document.brewbuilder.bot12.value = Math.round(calories);
     //document.brewbuilder.bot16.value = Math.round(calories*(16/12));
     //document.brewbuilder.bot22.value = Math.round(calories*(22/12));
     //document.brewbuilder.bot32.value = Math.round(calories*(32/12));
}
//Need apparent terminal gravity
//apparent attenuation
//real attenuation
//Confirm apparent and real extract
//compute strike temperature
//compute gravity temperature correction
//need standard values for specific heat, ratios to use, etc\
/*
		1 kg of mashed grist =	0.8	L							
		1 lb of mashed grist =	0.10	gal							
		relative thermal capacity =	0.32	kg (lbs) water have same thermal capacity as 1kg (lbs) grist, factor given by Kelly Jones							
		!!! relative thermal capacity =	1.10	kg water have same thermal capacity as the mashtun -ADJUST TO YOUR SYSTEM !!!							
		 					=	2.43	lbs water							
		 					=	0.29	gals water							
		Water Density at 20°C =	0.998203	grams / mL							
		1 gal Water =	8.33	lbs																		
		Carbonation of Disaccharides  =	51.4%								
*/

function computefpt(OEval , AEval ,units){
  //Compute freezing temperature
  var RE    = computeRE(OEval,AEval);
  var ABWval = computeABW(OEval, AEval);

  var freezeptF = -(0.42 * ABWval + 0.04 * OEval + 0.2) * 1.8 + 32;
  if(units=='eng'){
    freezept = formatnumber(freezeptF,1);
    return freezept;
  }
  else if(units=='si'){
    var freezeptC =(freezeptF - 32) * (5/9);
    var freezept = formatnumber(freezeptC,1);
    return freezept;
  }
}

function computecals(OEval, AEval, FGval, units) {
  //Compute calories per serving size
  var RE    = computeRE(OEval,AEval);
  var ABWval = computeABW(OEval,AEval);
  var cals = (6.9*ABWval + 4*(RE-0.1))*3.55*FGval;

  if(units=='eng'){
     cals = cals;
  }
  else if(units=='si'){
     cals = convert(cals,"cal","kj");
  }
  return cals;
}

function computeRE(OEval,AEval){
  //Compute Real Extract
  var RE = 0.1808*OEval + (0.8192 * AEval);
  return RE;
}

function computeAppAtt(OEval,AEval){
  //Compute Apparent Attenuation
  var AppAtt = ((OEval-AEval)/OEval)*100;
  AppAtt = formatnumber(AppAtt,1);
  return AppAtt;
}

function computeRealAtt(OEval,AEval){
  //Compute Real Extract
  var RE = computeRE(OEval,AEval);
  var RealAtt = ((OEval - RE)/OEval)*100;
  RealAtt = formatnumber(RealAtt,1);
  return RealAtt;
}

function computeABW(OEval,AEval) {
  //Compute Alcohol by Weight
  var RE    = computeRE(OEval,AEval);
  var ABWval = (OEval - RE) / (2.0665 - 0.010665 * OEval);
  ABWval = formatnumber(ABWval,2);
  return ABWval;
}

function computeABV(OSGval,FSGval) {
  //Compute Alcohol by Volume
  var ABVval = (OSGval- FSGval) * 125 * 1.05;
  ABVval = formatnumber(ABVval ,2);
  return ABVval;
}

function optionfill(arrayname,tgtname,nopts){
   for (j=0;j<nopts;j++){
       var objname = tgtname + (j+1);
       topicfill(arrayname,objname);
   }
}

var names_weight = new Array();
names_weight[1]="ozm";
names_weight[2]="lbm";
names_weight[3]="g";
names_weight[4]="kg";

var names_volume = new Array();
names_volume[1]="tsp";
names_volume[2]="tbs";
names_volume[3]="oz";
names_volume[4]="cup";
names_volume[5]="pt";
names_volume[6]="qt";
names_volume[7]="gal";
names_volume[8]="imp";
names_volume[9]="bbl";
names_volume[10]="ml";
names_volume[11]="l";
names_volume[12]="hl";