1$(document).ready(function(){'use strict';var loanAmtInput=$('#loan-payment-calc_loan-amt'),loanTermInput=$('#loan-payment-calc_loan-term'),loanAprInput=$('#loan-payment-calc_loan-apr');function calculatePayment(principal,apr,term,numOfPaymentsPerYear){var totalNumberOfPayments=(term/12)*numOfPaymentsPerYear,effectiveInterestRate=(apr/100)/numOfPaymentsPerYear,payment;if(apr===0){payment=principal/totalNumberOfPayments;}else{payment=principal*(effectiveInterestRate/(1-Math.pow((1/(1+effectiveInterestRate)),totalNumberOfPayments)));} 2return payment;} 3function formatUSDWholeDollar(amount){var wholeDollar=Math.ceil(amount);return wholeDollar.toLocaleString();} 4function displayPayments(){var loanPaymentAmounts=$('#loan-payment-calc_loan-payment-amounts'),loanAmt=numeral(loanAmtInput.val()).value(),loanTerm=Number(loanTermInput.val()),loanApr=Number(loanAprInput.val()),monthlyPaymentAmt=formatUSDWholeDollar(calculatePayment(loanAmt,loanApr,loanTerm,12)),biWeeklyPaymentAmt=formatUSDWholeDollar(calculatePayment(loanAmt,loanApr,loanTerm,26)),monthlyPaymentLI=$('<li class="list-inline-item">Monthly: <strong>$'+monthlyPaymentAmt+'</strong></li>'),biWeeklyPaymentLI=$('<li class="list-inline-item">Bi-Weekly: <strong>$'+biWeeklyPaymentAmt+'</strong></li>'),loanPaymentAmountsUL=$('<ul class="list-unstyled list-inline"></ul>');loanPaymentAmounts.empty();removeErrors();validateInputs();if($('.loan-payment-calculator .is-invalid').length===0){loanPaymentAmounts.append('<h3>Your payment would be</h3>');loanPaymentAmounts.append(loanPaymentAmountsUL);loanPaymentAmountsUL.append(monthlyPaymentLI);loanPaymentAmountsUL.append(biWeeklyPaymentLI);}else{loanPaymentAmounts.append('<p class="text-danger">Please fill in the fields with appropriate values.</p>');}} 5function removeErrors(){var errorMessages=$('.loan-payment-calculator .invalid-feedback'),invalidInput=$('.loan-payment-calculator .is-invalid');errorMessages.each(function(){$(this).remove();});invalidInput.removeClass('is-invalid');invalidInput.removeAttr('aria-describedby');} 6function setErrorOnInput(invalidInput,errorMessageText){var errorMessage=$('<div class="invalid-feedback" id="'+invalidInput.attr('id')+'-error">'+errorMessageText+'</div>');invalidInput.parent('.input-group').append(errorMessage);invalidInput.addClass('is-invalid');invalidInput.attr('aria-describedby',errorMessage.attr('id'));} 7function validateInputs(){var requiredFields=$('.loan-payment-calculator [aria-required="true"]');requiredFields.each(function(){var requiredField=$(this);if(requiredField.val()===''){setErrorOnInput(requiredField,requiredField.attr('data-error-message'));}else{document.getElementById(requiredField.attr('id')).checkValidity();}});var invalidInputs=$('.loan-payment-calculator .is-invalid');if(invalidInputs.length){invalidInputs.first().focus();}} 8loanAmtInput.on('blur',function(){var loanAmtNumber=Math.abs(numeral(loanAmtInput.val()).value()),loanAmtFormatted=numeral(loanAmtNumber).format('0,0.00');if(loanAmtInput.val()!==''){loanAmtInput.val(loanAmtFormatted);}});loanTermInput.on('invalid',function(){var invalidInput=$(this);setErrorOnInput(invalidInput,invalidInput.attr('data-error-message'));});loanAprInput.on('invalid',function(){var invalidInput=$(this);setErrorOnInput(invalidInput,invalidInput.attr('data-error-message'));});$('#loan-payment-calc_calculate-button').on('click',displayPayments);function populateFields(amount,term,rate){if(amount!==''){loanAmtInput.val(numeral(amount).format('0,0.00'));} 9loanTermInput.val(term);loanAprInput.val(rate);} 10$('.loan-calc-btn, [data-target="#Loan-Calculator"], [data-bs-target="#Loan-Calculator"]').on('click',function(){var thisBtn=$(this),amount=thisBtn.data('amount')||'',rate=thisBtn.data('rate')||'',term=thisBtn.data('term')||'';populateFields(amount,term,rate);if(amount&&term&&rate){displayPayments();}});if('URLSearchParams'in window){var queryString=window.location.search,urlParams=new URLSearchParams(queryString);var amountParamValue=urlParams.has('amount')?urlParams.get('amount'):'',rateParamValue=urlParams.has('rate')?urlParams.get('rate'):'',termParamValue=urlParams.has('term')?urlParam
10s.get('term'):'';populateFields(amountParamValue,termParamValue,rateParamValue);if(amountParamValue&&termParamValue&&rateParamValue){displayPayments();}}});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.