1jQuery(document).ready(function() { 2 // jQuery('#cusocal_calc_submit').on('click', function(event) { 3 4 5 // Hide / Show Disclaimer 6 jQuery('#disclaimer_show_hide').click(function(){ 7 jQuery('#cusocal_disclaimer').slideToggle('fast', 'linear', function(){ 8 if(jQuery('#disclaimer_show_hide').html().includes('Read')){ 9 jQuery('#disclaimer_show_hide').html('Hide Disclaimer'); 10 }else{ 11 jQuery('#disclaimer_show_hide').html('Read Disclaimer'); 12 } 13 }); 14 }); 15 16 jQuery('#cusocal_calculator input').on("blur", function(){ 17 new_calc_value = jQuery(this).val().replace(',', '').replace('$', '').replace('%', ''); 18 jQuery(this).val(new_calc_value); 19 }); 20 21 // Calculator Functionality 22 $('#cusocal_calculator').submit(function (event) { 23 event.preventDefault(); 24 25 jQuery('.calc_form_disclaimer').css('display', 'none'); 26 // event.preventDefault(); // Prevent the default form submission 27 28 formula = jQuery('.formula').val(); // Get formula from hidden input field 29 30 // Variables to validate inputs 31 isValid = true; 32 var errors = {}; 33 34 jQuery('#cusocal_calculator input').each(function() { 35 36 var fieldName = jQuery(this).attr('name'); 37 fieldValue = jQuery(this).val(); 38 39 if(fieldName != 'formula_name' && fieldName !='variables' && fieldName != 'result_label' && fieldValue != 'Calculate'){ 40 console.log(formula); 41 console.log(fieldName+':'+fieldValue); 42 43 if(!isFinite(fieldValue) && fieldName != 'formula' && fieldName != 'calculator' && fieldName != 'calc_type') { 44 errors[fieldName] = 'Please enter a valid number'; 45 isValid = false; 46 console.log(fieldName + ' Invalid'); 47 jQuery(this).addClass('invalid-field'); // Add the class to highlight invalid fields 48 } else { 49 jQuery(this).removeClass('invalid-field'); // Remove the class if valid 50 console.log(fieldName + ' Is Valid'); 51 jQuery(this).css('border', 'none'); 52 } 53 54 // Sanitize input 55 fieldValue = sanitizeInput(fieldValue); 56 jQuery(this).val(fieldValue); 57 58 // Use regex to replace all occurrences of fieldName in the formula 59 var regex = new RegExp(fieldName, 'g'); 60 // Check for decimal points or exponents (indicating a float) 61 if (fieldValue.includes(".") || fieldValue.includes("e")) { 62 fieldValue = parseFloat(fieldValue); 63 } else { 64 fieldValue = parseInt(fieldValue); 65 } 66 formula = formula.replace(regex, fieldValue); 67 console.log(formula); 68 } 69 }); 70 71 if(isValid == false){ 72 console.log('isValid: ' + isValid); 73 jQuery('#cusocal_result').html('<div class="error_msg">Please enter a valid number</div>'); 74 return; 75 }else{ 76 // Perform the calculation with the updated formula 77 console.log('isValid: ' + isValid); 78 var result = evaluateFormula(formula); 79 jQuery('#cusocal_result div').css('display', 'none'); 80 jQuery('#calc_result label#calc_result_label').css('display', 'block'); 81 jQuery('#cusocal_result').html(result); 82 jQuery('#cusocal_apply_now').css('display','block'); 83 } 84 }); 85 86 function sanitizeInput(input) { 87 // Sanitize any input that is not a number 88 if (typeof input !== 'number') { 89 return jQuery('<div>').text(input).text(); // Remove potential HTML tags 90 } else { 91 return Number(input); // Ensure numeric value for numbers 92 } 93 } 94 95 function evaluateFormula(formula) { 96 // Implement logic to calculate based on the formula 97 // var evaluate_formula = formula; 98 99 100 let evaluate_formula = Function("return " + formula)(); 101 102 // evaluate_formula = getCalc(formula); 103 104 console.log('Evaluate Formula: ' + evaluate_formula); 105 evaluate_results = Math.ceil(evaluate_formula).toFixed(0); 106 107 const numberFormatter = new Intl.NumberFormat('en-US', { 108 style: 'decimal', 109 minimumFractionDigits: 2, 110 maximumFractionDigits: 2 111 }); 112 113 evaluate_results = numberFormatter.format(evaluate_results); 114 115 var calc_type = jQuery('#calc_type').val(); 116 if(calc_type == 'fees'){ 117 return '$' + evaluate_results; 118 }else{ 119 return evaluate_results + '%'; 120 } 121 } 122});
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.