PageSourceSearch

https://my.autosmartja.com/static/dropdown-datepicker/dropdown-datepicker.js

js autosmartja.com collected 2026-09-26 08:19:03 UTC 5,478 bytes, 170 lines download raw bytes

1(function (scope) {
2
3    var $container = $('.select-date-picker');
4    // var $dateField = $container.find('#date-field');
5    var $month = $container.find('[name*=dp_month]');
6    var $day = $container.find('[name*=dp_day]');
7    var $year = $container.find('[name*=dp_year]');
8
9    function showError($element, msg) {
10        $element.show();
11        $element.text(msg);
12    }
13
14    function removeError($element) {
15        $element.hide();
16        $element.text('');
17    }
18    function isDigit(val) {
19       return val.match(/[0-9]+$/)
20    }
21
22    function validateDay(val, options=null) {
23        var error = null
24        var isValid = true;
25        var value = parseInt(val);
26        var isInt = !isNaN(value);
27
28        if (val) {
29            if (val.length > 2 || !isInt || (isInt && value > 31) || (isInt && value < 1) || !isDigit(val)) {
30                error = 'Invalid Day';
31                isValid = false
32            }
33        }
34        
35        return {
36            valid: isValid,
37            reason: error
38        }
39    }
40
41    function validateMonth(val, options=null) {
42        var error = null
43        var isValid = true;
44        var value = parseInt(val);
45        var isInt = !isNaN(value);
46
47        if (val) {   
48            if (val.length > 2 || !isInt || (isInt && value > 12) || (isInt && value < 1) ) {
49                error = 'Invalid Month';
50                isValid = false;
51            }
52        }
53
54        return {
55            valid: isValid,
56            reason: error
57        }
58    }
59
60    function validateYear(val, options=null) {
61        var error = null
62        var isValid = true;
63        var value = parseInt(val);
64        var isInt = !isNaN(value);
65        var currentYear = new Date().getFullYear();
66        
67        if (val) {   
68            // if the user enters a year that is more or less than 100 years 
69            // into the future then the date is considered invali
69d
70            if (val.length > 4 || !isInt || 
71                (isInt && value > (currentYear + 100)) || 
72                (isInt && value < (currentYear - 120)) || 
73                !isDigit(val)) {
74                error = 'Invalid Year';
75                isValid = false;
76            } 
77        }
78        
79        return {
80            valid: isValid,
81            reason: error
82        }
83    }
84
85    function handleDateChange(event){
86        var $context = $(event.target);
87        var $parentContext = $context.closest('.select-date-picker');
88        var $dateField = $parentContext.find('.date-field');
89        var month = $parentContext.find('[name*=dp_month]').val(); //$month.val();
90        var day = $parentContext.find('[name*=dp_day]').val();
91        var year = $parentContext.find('[name*=dp_year]').val();
92        var formattedDate = day + '/' + month + '/' + year;
93
94        var dayValidator = validateDay(day);
95        var monthValidator = validateMonth(month);
96        var yearValidator = validateYear(year);
97        
98        if (dayValidator.valid && monthValidator.valid && yearValidator.valid) {
99            
100            removeError($parentContext.find('.dp-day.form-error'));
101            removeError($parentContext.find('.dp-month.form-error'));
102            removeError($parentContext.find('.dp-year.form-error'));
103
104            $dateField.val(formattedDate);
105        } else {
106
107            if (!dayValidator.valid) {
108                showError($parentContext.find('.dp-day.form-error'), dayValidator.reason);
109            } else {
110                removeError($parentContext.find('.dp-day.form-error'));
111            }
112
113            if (!monthValidator.valid) {
114                showError($parentContext.find('.dp-month.form-error'), monthValidator.reason);
115            } else {
116                removeError($parentContext.find('.dp-month.form-error'));
117            }
118
119            if (!yearValidator.valid) {
120                showError($parentContext.find('.dp-year.form-error'), yearValidator.reason);
121            } else {
122                removeError($parentContext.find('.dp-year.form-error'));
123            }
124        }
125    }
126
127    function parseDateForPicker() {
128        var $dateFields = $('.dropdown-datepicker-input');
129        $dateFields.each(function () {
130            const $dateInput = $(this);
131            const $parentContext = $dateInput.closest('.select-date-picker');
132            const $monthSelect = $parentContext.find('[name*=dp_month]');
133            const $dayInput = $parentContext.find('[name*=dp_day]');
134            const $yearInput = $parentContext.find('[name*=dp_year]');
135            const dateValue = $dateInput.val();
136
137            if (dateValue) {
138                const dateValueParts = dateValue.split('/');
139                try {
140                    $dayInput.val(dateValueParts[0]);
141                    $monthSelect.val(dateValueParts[1]);
142                    $yearInput.val(dateValueParts[2]);
143                } catch (e) {
144                    console.error("error parsing date");   
145                }
146            }
147        });
148
149        CustomSelect.refresh();
150    }
151
152    function init() {
153        
154        $month.change(handleDateChange);
155        $day.on('input', handleDateChange);
156        $year.on('input', handleDateChange);
157
158        // 
159        $("form").submit(function() {
160            $(this)
161            .find('.select-date-picker')
162            .find('select[name*=dp_month], input[name*=dp_day], input[name*=dp_year]')
163            .attr('disabled', true);
164         });
165        parseDateForPicker();
166    }
167
168    init();
169
170})(window);

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.