PageSourceSearch

https://www.polster-fischer.de/wp-content/plugins/restrict-date-fo…/libs/js/date_restrict.js?ver=1791169207

js polster-fischer.de collected 2026-10-05 03:12:14 UTC 12,701 bytes, 251 lines download raw bytes

1(function ($) {
2    "use strict";
3    $(document).ready(function () {
4        setTimeout(function () {
5            $(".elementor").not(".elementor-location-popup").each(function (e) {
6                $(".elementor-field-restrict_date", $(this)).each(function (index) {
7                    elementor_field_restrict_date($(this));
8                });
9            })
10        }, 200);
11        $(document).on('elementor/popup/show', () => {
12            setTimeout(function () {
13                $(".elementor-field-restrict_date").each(function (index) {
14                    elementor_field_restrict_date($(this));
15                });
16            }, 200);
17        });
18        $("input").on("done_load_repeater", function (e) {
19            $(".elementor-field-restrict_date").each(function (index) {
20                elementor_field_restrict_date($(this));
21            });
22        })
23        function cover_format(date_format = "") {
24            date_format = date_format.replaceAll('/', '-');
25            return date_format.replaceAll('y', 'yy').toUpperCase();
26        }
27        function getDatesBetween(startDate, endDate) {
28            const dates = [];
29            let current = new Date(startDate);
30            const last = new Date(endDate);
31            while (current <= last) {
32                dates.push(current.toISOString().split('T')[0]); // format YYYY-MM-DD
33                current.setDate(current.getDate() + 1);
34            }
35            return dates;
36        }
37        function elementor_field_restrict_date(field) {
38            var form = field.closest("form");
39            var offset = field.offset();
40            var min = field.data("min");
41            var min_plus = field.data("max_plus_min");
42            var type_inline = field.data("type_inline");
43            var min_number = field.data("max_number_min");
44            var min_type = field.data("max_type_min");
45            var min_pick = field.data("min_pick");
46            var max = field.data("max");
47            var max_plus = field.data("max_plus");
48            var max_number = field.data("max_number");
49            var max_type = field.data("max_type");
50            var max_pick = field.data("max_pick");
51            var weekdays_data = field.data("weekdays");
52            var special_data = field.data("special");
53            var format_data = field.data("format");
54            var sync_min = field.data("sync_min");
55            var sync_max = field.data("sync_max");
56            var sync_min_number = field.data("sync_min_number");
57            var sync_max_number = field.data("sync_max_number");
58            var current_date = new Date();
59            var minDate = "";
60            var maxDate = "";
61            var format = "yy-mm-dd";
62            var weekdays = [0, 1, 2, 3, 4, 5, 6];
63            var special = [];
64            if (min !== undefined && min != "") {
65                if (min == "current_date") {
66                    if (min_number > 0) {
67                        switch (min_type) {
68                            case 'd':
69                                if (min_plus == "+") {
70                                    minDate = new Date(current_date.getFullYear(), current_date.getMonth(), current_date.getDate() + parseInt(min_number));
71                                } else {
72                                    minDate = new Date(current_date.getFullYear(), current_date.getMonth(), current_date.getDate() - parseInt(min_number));
73                                }
74                                break;
75                            case 'm':
76                                if (min_plus == "+") {
77                                    minDate = new Date(current_date.getFullYear(), current_date.getMonth() + parseInt(min_number), current_date.getDate());
78                                } else {
79                                    minDate = new Date(current_date.getFullYear(), current_date.getMonth() - parseInt(min_number), current_date.getDate());
80                                }
81                                break;
82                            case 'y':
83                                if (min_plus == "+") {
84                                    minDate = new Date(current_date.getFullYear() + parseInt(min_number), current_date.getMonth(), current_date.getDate());
85                                } else {
86                                    minDate = new Date(current_date.getFullYear() - parseInt(min_number), current_date.getMonth(), current_date.getDate());
87                                }
88                                break;
89                        }
90                    } else {
91                        minDate = 0;
92                    }
93                } else if (min == "special" && min_pick !== undefined && min_pick != "") {
94                    minDate = new Date(min_pick);
95                }
96            }
97            if (max !== undefined && max != "") {
98                if (max == "current_date") {
99                    if (max_number > 0) {
100                        switch (max_type) {
101                            case 'd':
102                                if (max_plus == "+") {
103                                    maxDate = new Date(current_date.getFullYear(), current_date.getMonth(), current_date.getDate() + parseInt(max_number));
104                                } else {
105                                    maxDate = new Date(current_date.getFullYear(), current_date.getMonth(), current_date.getDate() - parseInt(max_number));
106                                }
107                                break;
108                            case 'm':
109                                if (max_plus == "+") {
110                                    maxDate = new Date(current_date.getFullYear(), current_date.getMonth() + parseInt(max_number), current_date.getDate());
111                                } else {
112                                    maxDate = new Date(current_date.getFullYear(), current_date.getMonth() - parseInt(max_number), current_date.getDate());
113                                }
114                                break;
115                            case 'y':
116                                if (max_plus == "+") {
117                                    maxDate = new Date(current_date.getFullYear() + parseInt(max_number), current_date.getMonth(), current_date.getDate());
118                                } else {
119                                    maxDate = new Date(current_date.getFullYear() - parseInt(max_number), current_date.getMonth(), current_date.getDate());
120                                }
121                                break;
122                        }
123                    } else {
124                        maxDate = 0;
125                    }
126                } else if (max == "special" && max_pick !== undefined && max_pick != "") {
127                    maxDate = new Date(max_pick);
128                }
129            }
130            if (weekdays_data !== undefined && weekdays_data != "allday") {
131                weekdays = [];
132                weekdays_data = weekdays_data.toString();
133                weekdays = weekdays_data.split('|');
134                weekdays = weekdays.map(Number);
135            }
136            if (special_data !== undefined && special_data !== "") {
137                special_data = special_data.toString().trim();
138                var parts = special_data
139                    .split('|')
140                    .map(function (s) {
141                        return s.trim();
142                    })
143                    .filter(Boolean);
144                special = [];
145                parts.forEach(function (item) {
146                    // ✅ kiểm tra từng phần tử có "to" hay không
147                    if (item.includes("to")) {
148                        var range_dates = item.split("to");
149                        var start = range_dates[0].trim();
150                        var end = range_dates[1].trim();
151                        var dates = getDatesBetween(start, end);
152                        if (Array.isArray(dates)) {
153                            special = special.concat(dates);
154                        }
155                    } else {
156                        // ngày đơn
157                        special.push(item);
158                    }
159                });
160                // loại trùng + rỗng
161                special = [...new Set(special)].filter(Boolean);
162            }
163            if (format_data !== undefined && format_data != "") {
164                format = format_data;
165            }
166            if (type_inline === "inline") {
167                field = field.closest('div');
168            }
169            field.removeClass('hasDatepicker');
170            field.datepicker({
171                container: '.dialog-widget',
172                minDate: minDate,
173                maxDate: maxDate,
174                dateFormat: format,
175                firstDay: restrict_dates_for_elementor_forms.start_of_week,
176                changeMonth: true,
177                changeYear: true,
178                yearRange: "-100:+100",
179                beforeShow: function (input, inst) {
180                    var $this = $(this);
181                    var cal = inst.dpDiv;
182                    var top = $this.offset().top + $this.outerHeight();
183                    var left = $this.offset().left;
184                    setTimeout(function () {
185                        cal.css({
186                            'top': top,
187                            'left': left
188                        });
189                    }, 10);
190                },
191                onSelect: function (dateStr) {
192                    var data_fm = cover_format(format);
193                    var dateStr_ok = dateStr;
194                    dateStr = moment(dateStr, data_fm).format('YYYY-MM-DD');
195                    dateStr = new Date(dateStr);
196                    var dateStr1 = new Date(dateStr);
197                    var dateStr_max = new Date(dateStr);
198                    var dateStr1_max = new Date(dateStr);
199                    if (sync_min !== undefined && sync_min != "" && dateStr !== undefined) {
200                        $("#form-field-" + sync_min, form).datepicker('option', 'maxDate', dateStr);
201                    }
202                    if (sync_max !== undefined && sync_max != "" && dateStr !== undefined) {
203                        if (sync_min_number != "" && sync_min_number !== undefined) {
204                            dateStr = dateStr.setDate(dateStr.getDate() + parseInt(sync_min_number));
205                            dateStr = new Date(dateStr);
206                        }
207                        if (sync_max_number != "" && sync_max_number !== undefined) {
208                            dateStr1_max.setDate(dateStr1_max.getDate() + parseInt(sync_max_number));
209                            $("#form-field-" + sync_max, form).datepicker('option', 'maxDate', dateStr1_max);
210                        }
211                        $("#form-field-" + sync_max, form).datepicker('option', 'minDate', dateStr);
212                    }
213                    if (type_inline === "inline") {
214                        $(this).find("input").val(dateStr_ok).change();
215                    }else{
216                        $(this).change();
217                    }
218                    
219                },
220                beforeShowDay: function (date) {
221                    var day = date.getDay();
222                    if (jQuery.inArray(day, weekdays) > -1) {
223                        //check special
224                        if (special.length > 0) {
225                            var sdate = moment(date).format('YYYY-MM-DD');
226                            if ($.inArray(sdate, special) !== -1) {
227                                return [false];
228                            } else {
229                                return [true];
230                            }
231                        } else {
232                            return [true];
233                        }
234                    } else {
235                        //check special
236                        if (special.length > 0) {
237                            var sdate = moment(date).format('YYYY-MM-DD');
238                            if ($.inArray(sdate, special) !== -1) {
239                                return [true];
240                            } else {
241                                return [false];
242                            }
243                        } else {
244                            return [false];
245                        }
246                    }
247                }
248            });
249        }
250    })
251})(jQuery);

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.