PageSourceSearch

https://www.seabrookwa.com/assets/js/46.js

js seabrookwa.com collected 2026-09-24 18:30:41 UTC 16,283 bytes, 467 lines download raw bytes

1(function($, global, undefined){
2    /* Handles */
3
4    $(function(){
5			// document.addEventListener('contextmenu', event => event.preventDefault());
6	//	console.log('ssssss');
7
8        $('.vrpshowing').change(function() {
9
10            var that = $(this);
11
12            if(that.val() == '') {
13                return;
14            }
15
16            location.search = VRP.queryString.formatQueryString(that.val());
17
18        });
19
20        $('.vrpsorter').change(function() {
21
22            var that = $(this);
23
24            if(that.val() == '') {
25                return;
26            }
27
28            location.search = VRP.queryString.formatQueryString(that.val());
29        });
30
31
32        $('.vrpsorter').change(function() {
33
34            var that = $(this);
35
36            if(that.val() == '') {
37                return;
38            }
39
40            location.search = VRP.queryString.formatQueryString(that.val());
41        });
42
43        $('.vrp-cd-pagination a').click(function(e){
44
45            e.preventDefault();
46
47            var that = $(this),
48                parameters = that.attr('href');
49
50            if(that.hasClass('current') || that.hasClass('disabled')) {
51                return;
52            }
53
54            location.search = VRP.queryString.formatQueryString(parameters);
55
56        });
57
58        $('.vrp-thumbnail').hover(function(e){
59
60            var that = $(this).parent(),
61                index = $('.vrp-item').index(that);
62
63            VRP.ui.overlay(that, index, e);
64
65        }, function(e) {
66
67            var that = $(this).parent(),
68                index = $('.vrp-item').index(that);
69
70            VRP.ui.overlay(that, index, e);
71
72        });
73
74        $('#vrp-list').click(function(e) {
75            e.preventDefault();
76            $('.list-grid-layout').attr('class', 'col-xs-12 list-grid-layout vpr-list-style');
77        });
78
79        $('#vrp-grid').click(function(e){
80            e.preventDefault();
81            $('.list-grid-layout').attr('class', 'col-md-4 col-xs-6 col-sm-12 vpr-list-grid-layout vpr-grid-style');
82        });
83
84        $('#listing-sort a').click(function (e) {
85            e.preventDefault();
86
87            var el = $(this);
88            var sort = el.data('sort');
89            var order = el.data('order');
90
91            $('#listing-sort a').removeClass('active');
92            el.addClass('active');
93
94            sortListings(sort, order);
95        });
96
97        function sortListings(sort, order)
98        {
99            var listings = $('.abe-results .listings');
100            listings.find('.abe-item').sort(function(a, b) {
101                if (order == 'asc') {
102                    return a.getAttribute('data-' + sort) - b.getAttribute('data-' + sort);
103                } else {
104                    return b.getAttribute('data-' + sort) - a.getAttribute('data-' + sort);
105                }
106            }).appendTo(listings);
107        }
108
109        let filters = [];
110
111        $('#listing-filter select').change(function (e) {
112            e.preventDefault();
113
114            var el = $(this);
115            var filter = el.data('filter');
116            var value = el.val();
117
118            var urlArr = window.location.href.split('?');
119
120            if( urlArr.length > 1) {
121
122                var queryArr = urlArr[1].split('&');
123               
124                var filterInQuery = queryArr.filter(function(q) {
125                    var params = q.split('=');
126                    if( params[0] == filter )
127                        return true;
128                })
129
130                if( filterInQuery.length == 0  )
131                    queryArr.push(`${filter}=${value}`);
132                else {
133                    queryArr = queryArr.map(function(q) {
134                        var params = q.split('=');
135                        if( params[0] != filter )
136                            return q;
137                        else
138                            return `${filter}=${value}`;
139                    });
140                }
141                var urlFilter = urlArr[0] + '?' + queryArr.join('&');
142
143            }else
144                var urlFilter = urlArr[0] + '?' + filter + '=' + value;
145            
146            window.history.replaceState({}, '', urlFilter );
147            
148            updateFilters();
149        });
150
151        function updateFilters()
152        {
153            filters = [];
154
155            var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
156           
157           if( hashes[0] != window.location.href ){
158
159                $.each(hashes, function(i, h) {
160                    var q = h.split('=');
161                    if(q[1] != '' )
162                        filters[q[0]] = decodeURI(q[1]);
163                })            
164           }
165          
166            filterListings();
167        }
168
169        function filterListings()
170        {
171            var listings = $('.abe-results .listings');
172            
173            listings.find('.abe-item').each(function(i, item) {
174                var el = $(item);
175                var hide = false;
176                
177                for (filter in filters) {
178                    var value = el.data(filter);
179                    
180                    if (filter == 'price') {
181                        var price = filters[filter].split('-');
182                        if (price[0] == '*') {
183                            if (value > price[1]) {
184                                hide = true;
185                            }
186                        } else if (price[1] == '*') {
187                            if (value < price[0]) {
188                                hide = true;
189                            }
190                        } else {
191                            if (value < price[0] || value > price[1]) {
192                                hide = true;
193                            }
194                        }
195                    } else {
196                       
197                        if (Array.isArray(value)) {
198                            if (!value.includes(filters[filter])) {
199                                hide = true;
200                            }
201                        } else if (value != filters[filter]) {
202                            hide = true;
203                        }
204                    }
205                }
206
207                if (hide) {
208                    el.hide();
209                } else {
210                    el.show();
211                }
212            });
213        }
214        
215        //Update listing
216        updateFilters();
217    });
218
219
220}(jQuery, window));
221 var fav_count='';
222jQuery(document).ready(function(){
223
224  
225
226    // VrpUnitLinks
227    if (jQuery('.abe-unit-links').length > 0) {
228        if (jQuery('.abe-unit-links').length) {
229            jQuery('.abe-unit-links').select2();
230            jQuery('.abe-unit-links').change(function(){
231                var data = jQuery(this).select2('data');
232                gtag('event', 'click', {
233                  'event_category': 'Search - Unit Name',
234                  'event_label': data[0].text.trim()
235                });
236                window.location.href = jQuery(this).val();
237            });
238        }
239    }
240
241    // Price Range event trigger
242    if (jQuery('#abeFromRange').length > 0) {
243        jQuery('#abeFromRange').on('change', function(e){
244            jQuery('#abe-results-search').submit();
245        });
246
247        jQuery('#abeToRange').on('change', function(e){
248            jQuery('#abe-results-search').submit();
249        });
250    }
251
252if(jQuery( 'input[name="search[arrival]"]' ).length>0) {
253    var dates = jQuery('input[name="search[arrival]"]' ).datepicker({
254        beforeShow: customRange,
255        minDate: 2,
256        onSelect: function (selectedDate) {
257
258            var option = this.id == "arrival" ? "minDate" : "30",
259                instance = jQuery(this).data("datepicker"),
260                date = jQuery.datepicker.parseDate(
261                    instance.settings.dateFormat ||
262                    jQuery.datepicker._defaults.dateFormat,
263                    selectedDate, instance.settings);
264            dates.not(this).datepicker("option", option, date);
265        },
266        onClose: function () {
267            var departField = jQuery('input[name="search[departure]"]');
268            var nextDayDate = jQuery('input[name="search[arrival]"]').datepicker('getDate');
269            if (nextDayDate !== null) {
270                nextDayDate.setDate(nextDayDate.getDate() + 7);
271                departField.datepicker('setDate', nextDayDate);
272                setTimeout(function () {
273                    departField.datepicker("show");
274                }, 10);
275            }
276        }
277
278
279    });
280
281
282    jQuery('input[name="search[departure]"]').datepicker({
283         beforeShow: customRange,
284        onSelect: function () {
285            var arrivalDate=jQuery('input[name="search[arrival]"]').datepicker("getDate");
286            var departureDate=jQuery('input[name="search[departure]"]').datepicker("getDate");
287            var oneDay = 1000*60*60*24;
288            var difference = Math.ceil((arrivalDate.getTime() - departureDate.getTime()) / oneDay);
289            difference=-difference;
290
291            jQuery("#nights").val(difference);
292            jQuery("#tn").val(difference);
293        }
294    });
295
296    jQuery('[name="search[bedrooms]"]').on('change', function() {
297        jQuery('input[name="search[sort]"]').val('Bedrooms');
298        jQuery('input[name="search[order]"]').val('ASC');
299
300        // let specific =  jQuery(this).find('option:selected').attr("data-specific");
301        // let objShowMax = jQuery('input[name="search[showmax]"]');
302        // if (specific == "true") {
303        //     objShowMax.remove();
304        // } else {
305        //     jQuery('input[name="search[sort]"]').append(objShowMax);
306        // }
307    });
308}
309    function customRange(a) {
310        var b = new Date();
311        var c = new Date(b.getFullYear(), b.getMonth(), b.getDate());
312        if (a.id == 'depart') {
313            if (jQuery('input[name="search[arrival]"]').datepicker('getDate') != null) {
314                c = jQuery('input[name="search[arrival]"]').datepicker('getDate');
315            }
316        }
317        return {
318            minDate: c
319        }
320    }
321
322    jQuery('.hasDatepicker').attr("autocomplete", "off").attr("readonly", "readonly");
323
324    jQuery("#bookmsg").hide();
325
326    if (jQuery("#unitsincomplex").length > 0){
327        if (jQuery("#hassession").length > 0){
328            jQuery.get(url_paths.site_url + "/?vrpjax=1&act=searchjax",jQuery("#jaxform").serialize(),function(data){
329                jQuery("#unitsincomplex").hide().html(data).fadeIn();
330            });
331        }else{
332            jQuery.get(url_paths.site_url + "/?vrpjax=1&act=searchjax",jQuery("#jaxform2").serialize(),function(data){
333                jQuery("#unitsincomplex").hide().html(data).fadeIn();
334            });
335        }
336        jQuery("#jaxform").submit(function(){
337            jQuery.get(url_paths.site_url + "/?vrpjax=1&act=searchjax",jQuery("#jaxform").serialize(),function(data){
338                jQuery("#unitsincomplex").hide().html(data).slideDown(1000);
339            });
340            return false;
341        });
342
343        jQuery("#showallofthem").click(function(){
344            jQuery.get(url_paths.site_url + "/?vrpjax=1&act=searchjax",jQuery("#jaxform2").serialize(),function(data){
345                jQuery("#unitsincomplex").hide().html(data).slideDown(1000);
346            });
347            return false;
348        });
349    }
350
351
352    /** Step3.php **/
353    jQuery("#country").on('change', function(){
354
355        var country =jQuery(this).find(":selected").val();
356        console.log(country);
357
358        if (country == 'CA' || country == 'US' || country == 'other'){
359            if (country == 'CA'){
360                jQuery("#abe-state-wrapper select").val('');
361                jQuery("#abe-province-wrapper").show();
362                jQuery("#abe-othercountry-wrapper,#abe-region-wrapper,#abe-state-wrapper").hide();
363                jQuery("#abe-province-wrapper").effect("highlight", {}, 2000);
364            }
365
366            if (country == 'US'){
367                jQuery("#abe-province-wrapper select,#abe-region-wrapper select").val('');
368                jQuery("#abe-state-wrapper").show();
369                jQuery("#abe-othercountry-wrapper,#abe-region-wrapper,#abe-province-wrapper").hide();
370                jQuery("#abe-state-wrapper").effect("highlight", {}, 2000);
371            }
372
373            if (country == 'other'){
374                jQuery("#abe-province-wrapper select,#abe-state-wrapper select").val('');
375                jQuery("#abe-province-wrapper,#abe-state-wrapper").hide();
376                jQuery("#abe-othercountry-wrapper,#abe-region-wrapper").show();
377                jQuery("#abe-othercountry-wrapper,#abe-region-wrapper").effect("highlight", {}, 2000);
378            }
379        }else{
380            jQuery("#abe-province-wrapper select,#abe-state-wrapper select, #abe-othercountry-wrapper select").val('');
381            jQuery("#abe-province-wrapper,#abe-state-wrapper,#abe-othercountry-wrapper").hide();
382            jQuery("#abe-region-wrapper").show();
383            jQuery("#abe-region-wrapper").effect("highlight", {}, 2000);
384        }
385
386    });
387
388    jQuery("#vrpbookform").submit(function(){
389        jQuery("#bookingbuttonvrp").hide();
390        jQuery("#vrploadinggif").show();
391        jQuery("span.vrpmsg").remove();
392        jQuery(".badfields").removeClass("badfields");
393        jQuery("#comments").val(jQuery("#comments").val());
394        jQuery.post(url_paths.site_url + "/?vrpjax=1&act=processbooking",jQuery(this).serialize(),function(data){
395
396            console.log(data);
397
398            var obj=jQuery.parseJSON(data);
399            if (obj.Bad.length != 0){
400                jQuery("#bookingbuttonvrp").show();
401                jQuery("#vrploadinggif").hide();
402                jQuery.each(obj.Bad,function(k,v){
403                    jQuery("#" + k + "tr td:last").append('<span class="vrpmsg alert alert-error">' + v + '</span>');
404                    var oldcolor=jQuery("#" + k + "tr").css("color");
405                    jQuery("#" + k + "tr").addClass("badfields");
406                    jQuery("#" + k).change(function(){
407                        jQuery("#" + k + "tr").removeClass("badfields");
408                        jQuery("#" + k + "tr td span.vrpmsg").remove();
409                    });
410                });
411                jQuery("html, body").animate({
412                    scrollTop: 0
413                }, "slow",function(){});
414                alert("Please correct the errors with your reservation and try again.");
415
416            }else{
417                if (obj.Error.length != 0){
418                    jQuery("#bookingbuttonvrp").show();
419                    jQuery("#vrploadinggif").hide();
420                    alert(obj.Error);
421                }else{
422                    window.location=jQuery("#vrpbookform").attr("action");
423                }
424            }
425
426        });
427
428        return false;
429    });
430
431    jQuery("#showContract").on('click', function(event) {
432        event.preventDefault();
433        jQuery('#theContract').show();
434    });
435
436    jQuery('#closeContract').on('click', function(event) {
437        event.preventDefault();
438        jQuery('#theContract').hide();
439    });
440
441
442    /** OTHER **/
443    jQuery(".dpinquiry").datepicker();
444
445    jQuery(".vrp-pagination li a,.dobutton").button();
446
447});
448
449const checkOffset = jQuery.datepicker._checkOffset;
450jQuery.extend(jQuery.datepicker, {
451    _checkOffset: function (inst, offset, isFixed) {
452        if (!isFixed) {
453            return checkOffset.apply(this, arguments);
454        }        let isRTL = this._get(inst, "isRTL");
455        let obj = inst.input[0];        // copied from Datepicker._findPos (node_modules/jquery-ui/datepicker.js)
456        while (obj && (obj.type === "hidden" || obj.nodeType !== 1 || jQuery.expr.filters.hidden(obj))) {
457            obj = obj[isRTL ? "previousSibling" : "nextSibling"];
458        }        let rect = obj.getBoundingClientRect();        // copied from Datepicker._checkOffset
459        var viewHeight = document.documentElement.clientHeight + (isFixed ? 0 : jQuery(document).scrollTop()),
460            dpHeight = inst.dpDiv.outerHeight();        return {
461            // added validation for when the date picker is displayed at the bottom
462            top: viewHeight < rect.top + rect.height + dpHeight ? rect.top - dpHeight : rect.top + rect.height,
463            left: rect.left
464        };
465    }
466});
467

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.