//
// Copyright 2008, squawkfox.com
// All rights reserved
//




/*
 * Initialize
 */
jQuery(function() {
    initGasCalc();
});


/*
 * Bind all callbacks to controls.
 */
function initGasCalc() {
    jQuery("#Calculate").click(calculate);
    jQuery("#oldEfficiencyUnits").change(efficiencyChanged);

    if (validate(false)) {
        calculate();
    }
}


/*
 * Perform calculation and update UI.
 */
function calculate() {

    if (!validate()) {
        clearOutput();
        return;
    }

    var yearlyDistance = new Distance(jQuery("#distance").val() * 12, jQuery("#distanceUnits").val());
    var unitFuelCost = new CostPerVolume(jQuery("#priceOfFuel").val(), jQuery("#fuelPriceUnits").val());

    var oldVehicleEfficiency = new Efficiency(jQuery("#oldEfficiency").val(), jQuery("#oldEfficiencyUnits").val());
    jQuery("#oldFuelPerYear").text(oldVehicleEfficiency.totalFuelUsed(yearlyDistance).getString(jQuery("#fuelPriceUnits").val()));
    jQuery("#oldCostPerYear").text(format.formatCurrency(unitFuelCost.getTotalCost(oldVehicleEfficiency.totalFuelUsed(yearlyDistance))));
    
    var newVehicleEfficiency = new Efficiency(jQuery("#newEfficiency").val(), jQuery("#newEfficiencyUnits").val());

    jQuery("#newFuelPerYear").text( newVehicleEfficiency.totalFuelUsed(yearlyDistance).getString(jQuery("#fuelPriceUnits").val()));


    jQuery("#newCostPerYear").text(
        format.formatCurrency(unitFuelCost.getTotalCost(newVehicleEfficiency.totalFuelUsed(yearlyDistance))));

    var vehicleCostDifference = jQuery("#newVehiclePrice").val() - jQuery("#oldVehiclePrice").val();
    jQuery("#netCostForNew").text(format.formatCurrency(vehicleCostDifference));

    var yearlyCostDifference = 
        (oldVehicleEfficiency.totalFuelUsed(yearlyDistance).getLitres() 
         - newVehicleEfficiency.totalFuelUsed(yearlyDistance).getLitres()) * unitFuelCost.getCostPerLitre();

    var years =vehicleCostDifference / yearlyCostDifference;

    if (yearlyCostDifference == 0 || years <= 0) {
        jQuery("#yearsToBreakEven").text("0");
    }
    else {
        jQuery("#yearsToBreakEven").text(format.round(years, 3));
    }
}


/*
 * Validate all input fields.
 */
function validate(setClasses) {
    var valid = true;
    jQuery(".requiredField").removeClass("invalid").each(
        function() {
            if (jQuery(this).val() == "") {
                if (setClasses == undefined || setClasses) {
                    jQuery(this).addClass("invalid");
                }
                valid = false;
            }
        });

    return valid;
}


/*
 * Clear output fields
 */
function clearOutput() {
    jQuery("#oldFuelPerYear").text("");
    jQuery("#newFuelPerYear").text("");
    jQuery("#oldCostPerYear").text("");
    jQuery("#newCostPerYear").text("");
    jQuery("#netCostForNew").text("");
    jQuery("#yearsToBreakEven").text("");
}


/*
 * Callback for changes to the efficiency input
 */
function efficiencyChanged() {
    if (jQuery("#newEfficiency").val() == "") {
        jQuery("#newEfficiencyUnits").val(jQuery(this).val());
    }
}

 

