FieldCalc

by Eric Miller

HTML

<script src="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.js"></script>
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.css">
<div id="input" data-role="page">
    <div data-role="header">
        	<h1>Field Coverage Calculator</h1>

    </div>
    <!-- /header -->
    <div data-role="content">
        <div class="input">
            <div class="field" data-role="fieldcontain">
                <label for="sel_containerSize">Container Size</label>
                <select id="sel_containerSize">
                    <option value="qrt">Quart</option>
                    <option value="gal">Gallon</option>
                    <option value="gal_25">2 1/2 Gallon</option>
                    <option value="gal_5">5 Gallon</option>
                    <option value="gal_30">30 Gallon</option>
                    <option value="gat_55">55 Gallon</option>
                    <option value="gal_220">220 Gallon</option>
                    <option value="gal_250">250 Gallon</option>
                </select>
            </div>
            <div class="field" data-role="fieldcontain">
                <label for="txt_containerPrice">Cost (per Container)</label>
                <input id="txt_containerPrice" type="number" pattern="[0-9.]*" step="0.01" min="0" />
            </div>
            <div class="field" data-role="fieldcontain">
                <label for="txt_rate">Rate (per Acre)</label>
                <input id="txt_rate" type="number" pattern="[0-9.]*" step="0.01" min="0" />
            </div>
            <div class="field" data-role="fieldcontain">
                <label for="sel_rateMetric" class="">Rate Metric</label>
                <select id="sel_rateMetric">
                    <option value="oz">Ounces</option>
                    <option value="pnt">Pints</option>
                    <option value="qrt">Quarts</option>
                    <option value="gal">Gallons</option>
                </select>
...

JavaScript

$FCC = {
    VolumeTypes: {
        oz: 'oz',
        pt: 'pnt',
        qrt: 'qrt',
        gal: 'gal'
    },
    ContainerSizes: {
        qrt: 'qrt',
        gal: 'gal',
        gal_25: 'gal_25',
        gal_5: 'gal_5',
        gal_30: 'gal_30',
        gat_55: 'gal_55',
        gal_220: 'gal_220',
        gal_250: 'gal_250'
    },
    Conversions: {
        ptToOz: function (vol) {
            return vol * 16;
        },
        qrtToOz: function (vol) {
            return vol * 32;
        },
        galToOz: function (vol) {
            return vol * 128;
        },
        ozToPt: function (vol) {
            return vol / 16;
        },
        ozToQrt: function (vol) {
            return vol / 32;
        },
        ozToGal: function (vol) {
            return vol / 128;
        }
    },
    // TPoz = A * Roz - Total Product (oz) = Acres * Rate Per Acre (oz)
    GetTotalProductInOz: function (acres, roz) {
        return acres * roz;
    },
    GetAmountOfProduct: function (tPoz, volumeType) {
        var amount = 0;
        switch (volumeType) {
            case $FCC.VolumeTypes.oz:
                amount = tPoz;
                break;
            case $FCC.VolumeTypes.pt:
                amount = $FCC.Conversions.ozToPt(tPoz);
                break;
            case $FCC.VolumeTypes.qrt:
                amount = $FCC.Conversions.ozToQrt(tPoz);
                break;
            case $FCC.VolumeTypes.gal:
                amount = $FCC.Conversions.ozToGal(tPoz);
                break;
        }
        return amount;
    },
    OzToContainerSize: function (oz, containerSize) {
        var qty = 0;
        switch (containerSize) {
            case qrt:
                qty = $FCC.Conversions.ozToQrt(oz);
                break;
            case gal:
                qty = $FCC.Conversions.ozToGal(oz);
                break;
            case gal_25:
                qty = oz / (128 * 2.5);
                break;
            case gal_5:
                qty = oz /...