<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">(function() {

  'use strict';

  // -- Fixed Variables
  const hoursAnalysis = 0.0083, // Hours to run automatic analysis per page
    hoursTriage = 0.0833, // Hours to discuss/triage single defect
    hoursFix = 0.1667, // Hours to fix single defect
    hoursValidate = 0.0833; // Hours to validate single defect fix

  // -- HTML Elements
  const calculatorForm = document.getElementById('calculatorForm'),
    outputElement = document.getElementById('costOutput'),
    wastedFteHoursElement = document.getElementById('wastedFteHours'),
    wastedDollarsElement = document.getElementById('wastedDollars'),
    wastedDollarsPerPageElement = document.getElementById('wastedDollarsPerPage'),
    submitButton = document.getElementById('calculateCost'),
    clearFieldsButton = document.getElementById('clearFields');

  // -- Input Values
  let hourlyBlended = null, // $ Float - Hourly blended rate
    averageDefects = null, // Int - Average defects per page
    teamMembersTriage = null, // Int - Team members in triage
    falsePositive = null, // % Float - Average false positive rate
    pagesScope = null; // Int - Pages in scope

  function convertAndFormatCurrency (value) {

    let formattedValueCurency = ( value / 100 ).toLocaleString('en-US', {style: 'currency', currency: 'USD'})

    return formattedValueCurency;
  }

  function convertPercentageAndFormat (value) {

    let formattedValue = ( value / 100 ).toLocaleString('en-US');

    return formattedValue;
  }

  function clearFields () {

    if (clearFieldsButton) {

      clearFieldsButton.addEventListener('click', function (evt) {

        evt.preventDefault();

        hourlyBlended = null;
        averageDefects = null;
        teamMembersTriage = null
        falsePositive = null;
        pagesScope = null;

        // -- Reset Form Values
        document.getElementById('hourlyBlended').value = "";
        document.getElementById('averageDefects').value = "";
        document.getElementById('teamMembersTriage').value = "";
        document.getElementById('falsePositive').value = "";
        document.getElementById('pagesScope').value = "";

        // -- Accessibility &amp; Focus
        document.getElementById('hourlyBlended').focus();
        submitButton.setAttribute( 'aria-pressed', 'false' );
        clearFieldsButton.setAttribute( 'aria-pressed', 'true' );
        clearFieldsButton.disabled = true;

      });
    }
  }

  function calculateAndDisplay () {

    // -- Calculations
    let fteHoursId = (hoursAnalysis * pagesScope),
      fteHoursTriage = (hoursTriage * (averageDefects * 0.5) * teamMembersTriage * pagesScope),
      fteHoursFix = (hoursFix * (averageDefects * 0.5) * pagesScope),
      fteHoursValidate = (hoursValidate * (averageDefects * 0.5) * pagesScope);

    let totalFteHours = (fteHoursId + fteHoursTriage + fteHoursFix + fteHoursValidate),
      totalDollars = (totalFteHours + hourlyBlended); // $ Float - This calculation was in the spreadsheet, but isn't used anywhere.

    // -- Displayed Variables
    let wastedFteHours = (totalFteHours * falsePositive * 1.5), // Float - Wasted full time employee hours
      wastedDollars = (wastedFteHours * hourlyBlended), // $ Float - Wasted dollars
      wastedDollarsPerPage = (wastedDollars / pagesScope); // $ Float - Wasted dollars per Page

    // -- Display Values
    wastedFteHoursElement.innerHTML = convertPercentageAndFormat(wastedFteHours);
    wastedDollarsElement.innerHTML = convertAndFormatCurrency(wastedDollars);
    wastedDollarsPerPageElement.innerHTML = convertAndFormatCurrency(wastedDollarsPerPage);
  }

  function setupCalculatorFormProcessor() {

    if (calculatorForm) {

      calculatorForm.addEventListener('submit', function (evt) {

          console.log('fired');


        evt.preventDefault();

        // -- Get Form Values
        hourlyBlended = document.getElementById('hourlyBlended').value;
        averageDefects = document.getElementById('averageDefects').value;
        teamMembersTriage = document.getElementById('teamMembersTriage').value;
        falsePositive = document.getElementById('falsePositive').value;
        pagesScope = document.getElementById('pagesScope').value;

        calculateAndDisplay();

        // -- Accessibility &amp; Focus
        // window.location.hash = outputElement.id;
        outputElement.setAttribute( 'aria-selected', 'true' );
        outputElement.classList.add('show');
        outputElement.focus();

      });

    }

  }

  setupCalculatorFormProcessor();
  clearFields();

})();
</pre></body></html>