PageSourceSearch

https://www.cusocal.org/wp-content/plugins/cusocal_calculators/assets/js/calculate.js

js cusocal.org collected 2026-09-24 10:53:05 UTC 4,887 bytes, 122 lines download raw bytes

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.