Tank mix calculator

Select your Zone products, set your rate and unit, then enter your total to treat. Get instant totals for your entire application.

Step 1 — Select products, rate & unit
Product Rate Unit
Loading products...
Step 2 — What are you treating?

Select Acres for field applications. Select Gallons to calculate per tank size.

Calculadora de mezcla de tanque

Seleccione sus productos Zone, establezca su dosis y unidad por producto, luego ingrese el total a tratar. La calculadora muestra exactamente cuánto de cada producto necesita.

Paso 1 — Seleccione productos, dosis y unidad
Producto Dosis Unidad
Cargando productos...
Paso 2 — ¿Qué va a tratar?

Seleccione Acres para aplicaciones en campo. Seleccione Galones para calcular por tamaño de tanque.

 const PROD_ORDER=['aqua10','kelp','soil','nfix','ms','humic','vr5','tr3','nplus','liquacal','71b']; const PROD_NAMES={aqua10:'Zone Aqua 10',kelp:'Zone Kelp-Gro',soil:'Zone Soil',nfix:'Zone N Fix',ms:'Zone MS Crystals',humic:'Zone Humic Acid',vr5:'Zone VR-5',tr3:'Zone TR-3',nplus:'Zone N Plus',liquacal:'Zone Liquia-Cal','71b':'Zone 71B'}; const PROD_DRY={nfix:true,ms:true,nplus:true}; const FLUID=['fl oz','qts','mL']; const DRY=['oz','lbs','g']; const FALLBACK={ aqua10:{rateMin:8,rateMax:32,rateUnit:'fl oz'}, kelp:{rateMin:8,rateMax:32,rateUnit:'fl oz'}, soil:{rateMin:4,rateMax:32,rateUnit:'fl oz'}, nfix:{rateMin:2,rateMax:8,rateUnit:'oz'}, ms:{rateMin:8,rateMax:24,rateUnit:'oz'}, humic:{rateMin:16,rateMax:64,rateUnit:'fl oz'}, vr5:{rateMin:4,rateMax:16,rateUnit:'fl oz'}, tr3:{rateMin:4,rateMax:16,rateUnit:'fl oz'}, nplus:{rateMin:8,rateMax:32,rateUnit:'oz'}, liquacal:{rateMin:4,rateMax:32,rateUnit:'fl oz'}, '71b':{rateMin:4,rateMax:16,rateUnit:'fl oz'}, }; let cmsData={}; let mix=[]; function loadFromDOM(){ const items=document.querySelectorAll('#cms-rates [data-product-id]'); if(items.length>0){ items.forEach(el=>{ const pid=el.getAttribute('data-product-id'); if(!pid)return; cmsData[pid]={ rateMin:parseFloat(el.getAttribute('data-rate-min'))||FALLBACK[pid]?.rateMin||4, rateMax:parseFloat(el.getAttribute('data-rate-max'))||FALLBACK[pid]?.rateMax||8, rateUnit:el.getAttribute('data-rate-unit')||FALLBACK[pid]?.rateUnit||'fl oz', }; }); } else { PROD_ORDER.forEach(pid=>{cmsData[pid]=FALLBACK[pid]||{rateMin:4,rateMax:8,rateUnit:'fl oz'};}); } renderSel(); renderRows(); } function renderSel(){ document.getElementById('prod-sel').innerHTML=PROD_ORDER.map(pid=>{ const dry=PROD_DRY[pid]||false; return``; }).join(''); } function addProd(){ const id=document.getElementById('prod-sel').value; if(mix.find(m=>m.id===id))return; const dry=PROD_DRY[id]||false; const cms=cmsData[id]||FALLBACK[id]; mix.push({id,rate:cms.rateMin,unit:dry?'oz':'fl oz'}); renderRows();recalc(); } function removeProd(id){mix=mix.filter(m=>m.id!==id);renderRows();recalc();} function updateRate(id,val){const m=mix.find(x=>x.id===id);if(m){m.rate=parseFloat(val)||0;recalc();}} function updateUnit(id,val){const m=mix.find(x=>x.id===id);if(m){m.unit=val;recalc();}} function renderRows(){ const el=document.getElementById('prod-rows'); if(!mix.length){el.innerHTML='
No se han agregado productos — seleccione uno abajo y haga clic en Agregar.
';return;} el.innerHTML=mix.map(m=>{ const dry=PROD_DRY[m.id]||false; const cms=cmsData[m.id]||FALLBACK[m.id]; const units=dry?DRY:FLUID; const opts=units.map(u=>``).join(''); return`
${PROD_NAMES[m.id]}${dry?'seco':''}
Sugerido: ${cms.rateMin}–${cms.rateMax} ${cms.rateUnit}/acre
`; }).join(''); } function toFloz(v,u){if(u==='fl oz')return v;if(u==='qts')return v*32;if(u==='mL')return v/29.5735;return v;} function toOz(v,u){if(u==='oz')return v;if(u==='lbs')return v*16;if(u==='g')return v/28.3495;return v;} function fmt(v,d){d=d===undefined?2:d;if(v===0)return'0';return parseFloat(v.toFixed(d)).toString();} function fmtFluid(f,u){ if(u==='fl oz'){if(f>=128){const g=Math.floor(f/128);const r=f-g*128;return r>0.01?`${g}gal+${fmt(r)}fl oz`:`${g}gal`;}return`${fmt(f)}fl oz`;} if(u==='qts'){const q=f/32;if(q>=4){const g=Math.floor(q/4);const r=q-g*4;return r>0.01?`${g}gal+${fmt(r)}qts`:`${g}gal`;}return`${fmt(q)}qts`;} if(u==='mL'){const ml=f*29.5735;if(ml>=1000){const L=Math.floor(ml/1000);const r=ml-L*1000;return r>0.5?`${L}L+${Math.round(r)}mL`:`${L}L`;}return`${fmt(ml,1)}mL`;} return''; } function fmtDry(o,u){ if(u==='oz'){if(o>=16){const lb=Math.floor(o/16);const r=o-lb*16;return r>0.01?`${lb}lbs+${fmt(r)}oz`:`${lb}lbs`;}return`${fmt(o)}oz`;} if(u==='lbs'){const lb=o/16;if(lb>=1){const w=Math.floor(lb);const r=(lb-w)*16;return r>0.01?`${w}lbs+${fmt(r)}oz`:`${w}lbs`;}return`${fmt(lb)}lbs`;} if(u==='g'){const g=o*28.3495;if(g>=1000){const kg=Math.floor(g/1000);const r=g-kg*1000;return r>0.5?`${kg}kg+${Math.round(r)}g`:`${kg}kg`;}return`${fmt(g,1)}g`;} return''; } function recalc(){ const total=parseFloat(document.getElementById('total-val').value)||0; const totalUnit=document.getElementById('total-unit').value; const rc=document.getElementById('results-card'); const rr=document.getElementById('res-rows'); if(!mix.length||total<=0){rc.style.display='none';return;} rc.style.display='block'; const label=totalUnit==='gallons'?'gal':'acre'; rr.innerHTML=mix.map(m=>{ const dry=PROD_DRY[m.id]||false; const html=dry?fmtDry(toOz(m.rate,m.unit)*total,m.unit):fmtFluid(toFloz(m.rate,m.unit)*total,m.unit); return`
${PROD_NAMES[m.id]}${dry?'seco':''}
${m.rate} ${m.unit} / ${label}
${html}
`; }).join(''); } document.addEventListener('DOMContentLoaded',loadFromDOM); window.addEventListener('beforeprint',function(){ var el=document.querySelector('.tmx'); if(!el)return; var scale=Math.min(1, (window.innerHeight*0.95)/el.scrollHeight); el.style.transform='scale('+scale+')'; el.style.transformOrigin='top left'; el.style.width=(100/scale)+'%'; }); window.addEventListener('afterprint',function(){ var el=document.querySelector('.tmx'); if(!el)return; el.style.transform=''; el.style.width=''; }); if(document.readyState==='complete'||document.readyState==='interactive') loadFromDOM();