PageSourceSearch

https://karlosarguinano.com/public/addons/avirato-calendar/public/js/av-calendar-public.js?ver=5.1.0

js karlosarguinano.com collected 2026-10-09 05:11:28 UTC 7,522 bytes, 210 lines download raw bytes

1/**
2 * All of the code for your public-facing JavaScript source
3 * should reside in this file.
4 */
5var avc = {
6    now: function now() {
7      return new Date();
8    },
9    isValid: function isValid(date) {
10      if (date instanceof Date || typeof date === 'number') return true;
11      var validRegex = /((\d{2})-(\d{2})-(\d{4})|(\d{4})-(\d{2})-(\d{2}))/;
12      return validRegex.test(date.replace(/\/+/gi, '-'));
13    },
14    getDate: function getDate(date) {
15      var dmY = /(\d{2})-(\d{2})-(\d{4})/;
16  
17      try {
18        if (!this.isValid(date)) throw 'Invalid date format';
19        if (date instanceof Date || typeof date === 'number') return new Date(date);
20        if (typeof date !== 'string') throw 'Invalid date format';
21        date = date.replace(/\/+/gi, '-');
22  
23        if (dmY.test(date)) {
24          date = date.replace(dmY, '$3-$2-$1');
25        }
26  
27        date = date.replace(/-/gi, '/')
28        return new Date(date);
29      } catch (err) {
30        console.error(err);
31      }
32    },
33    pad: function pad(s) {
34      return s < 10 ? '0' + s : s;
35    },
36    format: function format(date, _format) {
37      date = this.getDate(date);
38      _format = _format ? _format.toUpperCase() : 'YYYY-MM-DD';
39      var day = this.pad(date.getDate());
40      var month = this.pad(date.getMonth() + 1);
41      var year = date.getFullYear();
42  
43      if (_format === 'YYYY-MM-DD') {
44        return [year, month, day].join('-');
45      }
46  
47      if (_format === 'DD-MM-YYYY') {
48        return [day, month, year].join('-');
49      }
50  
51      console.error('Invalid date or format');
52    },
53    addDays: function addDays(date, days) {
54      date = this.getDate(date);
55      return new Date(date.setDate(date.getDate() + parseInt(days, 10)));
56    },
57    firstDayOfMonth: function firstDayOfMonth(date) {
58      date = this.format(this.getDate(date))
59      var auxDate = date.split('-')
60      auxDate[2] = "01"
61      return auxDate.join("-")
62    },
63    picker: function picker() {
64        var selector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
65        var extraOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
66    
67        var baseOptions = {
68            weekHeader: 'Sm',
69            dateFormat: 'dd-mm-yy',
70            firstDay: 1,
71            beforeShow: function (_, inst) {
72                inst.dpDiv.removeClass(function (_, className) {
73                    return (className.match(/(^|\savc-\S+)/g), []).join();
74                });
75
76                var classes = "avc-datepicker avc-datepicker-" + inst.input.data("id");
77                inst.dpDiv.addClass(classes);
78            }
79        };
80    
81        var options = Object.assign({}, baseOptions, extraOptions);
82        jQuery(selector).datepicker(options);
83    }
84};
85
86var today = new Date();
87var tomorrow = avc.addDays(new Date(), 1);
88
89function go_to_bengine(id) {
90    var avc_slc             = ".avc-calendar.avc-calendar-" + id + " ";
91    var arrivalDate         = jQuery(avc_slc + ".avc-arrival").datepicker("getDate");
92    var departureDate       = jQuery(avc_slc + ".avc-departure").datepicker("getDate");
93
94    var establishmentSelect = jQuery(avc_slc + ".avc-establishment");
95    var code                = establishmentSelect.val();
96    var san                 = jQuery('#avinput_san').val();
97    var link_zones          = jQuery('#avinput_zones').val();
98
99    var domainName = (san === 'false') ? "avirato.com" : window.location.hostname;
100    
101    var codeFormat = (link_zones === 'false') ? "/?code=" : "/zones/";
102
103    if (+establishmentSelect.data('single')) {
104        code = establishmentSelect.data('defaultWebcode');
105    }
106
107    if (!code) {
108        console.error('Select estalishment');
109        return;
110    }
111
112    var calendar_lang = jQuery(avc_slc).data('lang');
113    arrivalDate = avc.format(arrivalDate || today, "DD-MM-YYYY");
114    departureDate = avc.format(departureDate || tomorrow, "DD-MM-YYYY");
115
116    var lang = calendar_lang || avc_public_i18n.lang;
117    var html_lang = document.getElementsByTagName("html")[0].getAttribute("lang");
118    var split_html_lang = html_lang.substring(0, 2);
119    var lang = calendar_lang || avc_public_i18n.lang;
120    
121    
122    var url = "https://booking." + domainName + codeFormat + (link_zones === 'false' ? code : code)
123    + (link_zones === 'false' ? "&" : "?") // Cambiar el inicializador de query según el formato
124    + "startDate=" + arrivalDate
125    + "&endDate=" + departureDate
126    + "&lang=" + split_html_lang;
127    
128
129    var categoryId = jQuery(avc_slc + ".avc-categories").val();
130
131    if (!categoryId || categoryId == -1) {
132        var establishmentId = jQuery(avc_slc + ".avc-establishment").find(':selected').data('id');
133        var categories = jQuery(avc_slc).data('categories');
134        categories = categories.reduce(function (acc, category) {
135            if (category.establishment_id != establishmentId && establishmentId != undefined) {
136                return acc;
137            }
138            
139            var divider = acc.length ? '-' : ''
140            return acc + divider + category.id;
141        }, '');
142    
143        if (categories) {
144            url += "&id_habitacion=" + categories;
145        }
146    } else {
147        url += "&id_habitacion=" + categoryId;
148    }
149
150    var promotion = jQuery(avc_slc + ".avc-promotion").val();
151
152    if (promotion && promotion.trim()) {
153        url += "&cod_promocional=" + promotion;
154    }
155
156    window.open(url);
157}
158
159jQuery(document).ready(function () {
160    avc.picker(".avc-arrival", {
161        minDate: today,
162        defaultDate: today,
163        onSelect: function (date) {
164            date = avc.getDate(date);
165
166            var id = jQuery(this).data("id");
167            var avc_slc = ".avc-calendar.avc-calendar-" + id;
168            var dePicker = jQuery(avc_slc + " .avc-departure");
169            dePicker.datepicker("option", "minDate", avc.addDays(date, 1));
170
171            if (date >= dePicker.datepicker("getDate")) {
172                dePicker.datepicker("setDate", avc.addDays(date, 1));
173            }
174
175            setTimeout(function() {
176                dePicker.datepicker("show");
177            }, 16);
178        }
179    });
180
181    avc.picker(".avc-departure", {
182        minDate: tomorrow,
183        defaultDate: tomorrow
184    });
185
186    jQuery('.avc-calendar').each(function () {
187        var id = jQuery(this).data('id');
188        var avc_slc = ".avc-calendar[data-id='" + id + "'] "
189
190        jQuery(avc_slc + '.avc-establishment').on('change', function () {
191            var establishmentId = jQuery(this).find(':selected').data('id');
192            var categories = jQuery(avc_slc).data('categories');
193            var options = categories.reduce(function (acc, category) {
194                if (category.establishment_id != establishmentId) {
195                    return acc;
196                }
197
198                acc.push(
199                    '<option value="' + category.id + '">' + category.name + '</option>'
200                );
201
202                return acc;
203            }, ['<option value="-1">' + avc_public_i18n.all_categories + '</option>']);
204
205            jQuery(avc_slc + '.avc-button').prop('disabled', !establishmentId);
206            jQuery(avc_slc + '.avc-categories').prop('disabled', !establishmentId);
207            jQuery(avc_slc + '.avc-categories').html(options.join(''));
208        });
209    });
210});

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.