https://karlosarguinano.com/public/addons/avirato-calendar/public/js/av-calendar-public.js?ver=5.1.0
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.