/*
 * EIS Cost Calculator
 */
 
var EISCalculator = function(context) {
  var pressData = {
    '29' : {
      weightPerBlanket: 4,
      costPerBlanket: 90
    },
    '40' : {
      weightPerBlanket: 5,
      costPerBlanket: 135
    },
    '56' : {
      weightPerBlanket: 6,
      costPerBlanket: 175
    },
    '66' : {
      weightPerBlanket: 7,
      costPerBlanket: 205
    },
    '77' : {
      weightPerBlanket: 8,
      costPerBlanket: 250
    },
    '81' : {
      weightPerBlanket: 9,
      costPerBlanket: 275
    }
  };
  
  var pressCountSelector = '#press-count';
  var pressSizeSelector = '#press-size';
  var formSelector = '#eis-calculator-form';
  var costSavingsSelector = '.savings';
  var landfillSavingsSelector = '.landfill';
  
  var assumedBlanketsPerMonth = 45;
  var currencyDisplaySettings = {roundToDecimalPlace: 0};
  var weightDisplaySettings = {roundToDecimalPlace: 0, symbol: '', positiveFormat: '%s%n lbs'};
  
  var refreshOnInputChange = true;
  
  var context = $(context);
  
  var refresh = function() {
    var data = fetchData();
    if(!data) {
      displaySavings(false);
      return false;
    }
    
    var savings = calculateSavings(data);
    
    displaySavings(savings);
  };
  
  var calculateSavings = function(data) {
    var monthlyCostSavings = assumedBlanketsPerMonth * data['costPerBlanket'] * (2/3);
    var monthlyLandfillSavings = assumedBlanketsPerMonth * data['weightPerBlanket'];
    return {
      monthlyCostSavings:     monthlyCostSavings * data.count,
      yearlyCostSavings:      monthlyCostSavings * data.count * 12,
      monthlyLandfillSavings: monthlyLandfillSavings * data.count,
      yearlyLandfillSavings:  monthlyLandfillSavings * data.count * 12
    }
  };
  
  var displaySavings = function(savings) {
    if(!savings) {
      var savings = {
        monthlyCostSavings: '–',
        yearlyCostSavings: '–',
        monthlyLandfillSavings: '–',
        yearlyLandfillSavings: '–'
      };
    }
    context.find(costSavingsSelector).find('.monthlySavings').html(savings['monthlyCostSavings']).formatCurrency(currencyDisplaySettings);
    context.find(costSavingsSelector).find('.yearlySavings').html(savings['yearlyCostSavings']).formatCurrency(currencyDisplaySettings);
    context.find(landfillSavingsSelector).find('.monthlySavings').html(savings['monthlyLandfillSavings']).formatCurrency(weightDisplaySettings);
    context.find(landfillSavingsSelector).find('.yearlySavings').html(savings['yearlyLandfillSavings']).formatCurrency(weightDisplaySettings);
  
  };
  
  var fetchData = function() {
    var pressCount = context.find(pressCountSelector).val();
    var pressSize = context.find(pressSizeSelector).val();
    
    // Require both values
    if(!pressCount || !pressSize) return false;
    
    // Require valid values
    if(!pressData[pressSize]) return false;
    
    var data = jQuery.extend({}, pressData[pressSize]);
    data.count = pressCount;
    
    return data;
  };
  
  /* 
   * Initialize
   */
  
  // Attach listeners to the form controls
  context.find('form').submit(function() {
    refresh();
    return false;
  });
  
  if(refreshOnInputChange) {
    context.find(pressCountSelector).change(refresh);
    context.find(pressSizeSelector).change(refresh);
  }
  
  // Do an initial calculation based on the current form values
  refresh();
};

jQuery(document).ready(function() {
  EISCalculator($('#calculator'));
});
