PageSourceSearch

https://hotelgrand.ro/wp-content/plugins/gdlr-hostel/gdlr-hotel.js?ver=1.0.0

js hotelgrand.ro collected 2026-10-02 14:11:30 UTC 22,896 bytes, 635 lines download raw bytes

1(function($){
2	"use strict";
3
4	window.gdlr_debounce_function = function(func, threshold, execAsap){
5		
6		var timeout;
7
8		return function debounced(){
9			
10			var obj = this, args = arguments;
11			
12			function delayed(){
13				if( !execAsap ){
14					func.apply(obj, args);
15				}
16				timeout = null;
17			};
18
19			if( timeout ){
20				clearTimeout(timeout);
21			}else if( execAsap ){
22				func.apply(obj, args);
23			}
24			timeout = setTimeout(delayed, threshold);
25		};
26	}	
27
28	window.gdlr_encode_utf8 = function(s){
29  		return unescape(encodeURIComponent(s));
30	}
31	
32	$.fn.gdlr_datepicker_range = function(){
33		var block_date_val = $(this).attr('data-block');
34		var gdlr_dfm = ($(this).attr('data-dfm'))? $(this).attr('data-dfm'): "yy-mm-dd"; 
35		
36		var min_date = 0;
37		if( $(this).attr('data-current-date') ){
38			min_date = new Date($(this).attr('data-current-date') + 'T00:00:00+00:00');
39			min_date = new Date(min_date.getTime() + (min_date.getTimezoneOffset() * 60000));
40		}
41
42		$(this).datepicker({
43			minDate: min_date,
44			dateFormat : gdlr_dfm,
45			numberOfMonths: [1, 2],
46			beforeShowDay: function(date) {
47				if( block_date_val ){
48					var block_date = JSON.parse(block_date_val);
49					var current_date = $.datepicker.formatDate('yy-mm-dd', date);
50
51					if( block_date.indexOf(current_date) > -1 ){
52						return [false];
53					}
54				}
55
56				var date1 = $.datepicker.parseDate('yy-mm-dd', $("#gdlr-check-in").siblings('.gdlr-datepicker-alt').val());
57				var date2 = $.datepicker.parseDate('yy-mm-dd', $("#gdlr-check-out").siblings('.gdlr-datepicker-alt').val());
58				return [true, date1 && ((date.getTime() == date1.getTime()) || (date2 && date >= date1 && date <= date2)) ? "dp-highlight" : ""];
59			},
60			onSelect: function(dateText, inst) {
61				var date1 = $.datepicker.parseDate('yy-mm-dd', $("#gdlr-check-in").siblings('.gdlr-datepicker-alt').val());
62				var date2 = $.datepicker.parseDate('yy-mm-dd', $("#gdlr-check-out").siblings('.gdlr-datepicker-alt').val());
63				if (!date1 || date2) {
64					$("#gdlr-check-in").datepicker('setDate', dateText);
65					$("#gdlr-check-out").val('');
66					$("#gdlr-check-out").siblings('.gdlr-datepicker-alt').val('');
67				} else {
68					$("#gdlr-check-out").datepicker('setDate', dateText).trigger('change');
69				}
70			},
71			closeText: objectL10n.closeText,
72			currentText: objectL10n.currentText,
73			monthNames: objectL10n.monthNames,
74			monthNamesShort: objectL10n.monthNamesShort,
75			dayNames: objectL10n.dayNames,
76			dayNamesShort: objectL10n.dayNamesShort,
77			dayNamesMin: objectL10n.dayNamesMin,
78			firstDay: objectL10n.firstDay
79		});	
80	}
81	
82	$.fn.gdlr_datepicker = function(){
83		$(this).each(function(){
84			if($(this).hasClass('hasDatepicker')){ return; }
85
86			var t = $(this);
87			var block_date_val = JSON.parse($(this).attr('data-block'));
88
89			var min_date = 0;
90			var prev_block = false;
91			if( $(this).attr('data-current-date') ){
92				min_date = new Date($(this).attr('data-current-date') + 'T00:00:00+00:00');
93				min_date = new Date(min_date.getTime() + (min_date.getTimezoneOffset() * 60000));
94			}
95
96			$(this).datepicker({
97				dateFormat : ($(this).attr('data-dfm'))? $(this).attr('data-dfm'): "yy-mm-dd",
98				minDate: min_date,
99				beforeShowDay: function(date){
100					if( block_date_val ){
101						var current_date = $.datepicker.formatDate('yy-mm-dd', date);
102						if( t.is('#gdlr-check-out') ){
103							var tmp_date = new Date();
104							tmp_date.setTime(date.getTime() - 86400000);
105							var prev_date = $.datepicker.formatDate('yy-mm-dd', tmp_date);
106							return [block_date_val.indexOf(prev_date) == -1];
107
108						}else{
109							return [block_date_val.indexOf(current_date) == -1];
110						}
111					}
112					
113					return [true];
114				},
115				altField: $(this).siblings('.gdlr-datepicker-alt'),
116				altFormat: "yy-mm-dd",
117				changeMonth: true,
118				changeYear: true,
119				onSelect: function(dateText, inst){
120					$(this).trigger('change');
121					$('#gdlr-datepicker-range').datepicker('refresh');
122				},
123				closeText: objectL10n.closeText,
124				currentText: objectL10n.currentText,
125				monthNames: objectL10n.monthNames,
126				monthNamesShort: objectL10n.monthNamesShort,
127				dayNames: objectL10n.dayNames,
128				dayNamesShort: objectL10n.dayNamesShort,
129				dayNamesMin: objectL10n.dayNamesMin,
130				firstDay: objectL10n.firstDay
131			});		
132			
133			var current_date = new Date($(this).val() + 'T00:00:00+00:00');
134			current_date = new Date(current_date.getTime() + (current_date.getTimezoneOffset() * 60000));
135			
136			$(this).datepicker('setDate', current_date);
137		});
138		
139		// verify the checkin out date
140		var tmp_chkin = $(this).filter("#gdlr-check-in").siblings('.gdlr-datepicker-alt').val();
141		var tmp_chkout = $(this).filter("#gdlr-check-out").siblings('.gdlr-datepicker-alt').val();
142		
143		if( tmp_chkin == tmp_chkout ){
144			var tmp_chkout_date = new Date(tmp_chkin + 'T00:00:00Z');
145			tmp_chkout_date.setDate(tmp_chkout_date.getDate() + 1);
146			
147			$(this).filter("#gdlr-check-out").datepicker('setDate', tmp_chkout_date);
148		}
149		
150	}
151
152	$.fn.gdlr_single_booking = function(){
153			
154		var resv_bar = $(this);	
155		$(this).find('.gdlr-datepicker').gdlr_datepicker(); 
156		
157		// check in date and night num change
158		$(this).on('change', '#gdlr-night, #gdlr-check-in', function(){
159			var check_in = resv_bar.find('#gdlr-check-in');
160			var check_out = resv_bar.find('#gdlr-check-out');
161			
162			var min_night = check_out.attr('data-min-night');
163			min_night = (min_night)? parseInt(min_night): 1;
164			var night_num = resv_bar.find('#gdlr-night');
165
166			if( check_in.val() ){
167				var check_out_date = check_in.datepicker('getDate', '+1d'); 
168				check_out_date.setDate(check_out_date.getDate() + parseInt(night_num.val()));
169
170				var check_out_min = check_in.datepicker('getDate', '+1d'); 
171				check_out_min.setDate(check_out_min.getDate() + min_night);
172
173				check_out.datepicker('option', 'minDate', check_out_min);
174				check_out.datepicker('setDate', check_out_date);
175			}
176		});
177		
178		// check out date change
179		$(this).on('change', '#gdlr-check-out', function(){
180			var check_in = resv_bar.find('#gdlr-check-in').datepicker('getDate');
181			var check_out = $(this).datepicker('getDate');
182			var date_diff = Math.round((check_out - check_in) / 86400000); // 1000/60/60/24
183			
184			if( check_in && date_diff > 0 ){
185				var night_num = resv_bar.find('#gdlr-night');
186				if( night_num.children('option[value="' + date_diff + '"]').length == 0 ){
187					night_num.append('<option value="' + date_diff + '" >' + date_diff + '</option>')
188				}
189				$('#gdlr-night').val(date_diff);
190			}
191		});
192
193		// amount change
194		$(this).on('change', '#gdlr-room-number', function(){
195			var amount = parseInt($(this).val());
196			var resv_room = resv_bar.find('#gdlr-reservation-people-amount-wrapper');
197			var room_diff = amount - resv_room.children().length;
198			if( room_diff > 0 ){
199				for( var i=0; i<room_diff; i++ ){
200					var new_room = resv_room.children(':first-child').clone().hide();
201					new_room.find('.gdlr-reservation-people-title span').html(resv_room.children().length + 1);
202					new_room.appendTo(resv_room).slideDown(200);
203				}
204			}else if( room_diff < 0 ){
205				resv_room.children().slice(room_diff).slideUp(200, function(){
206					$(this).remove();
207				});
208			}
209		});	
210
211		$(this).submit(function(){
212			if( $(this).find('select[name=gdlr-hotel-branches]').val() == '' ){
213				$(this).find('#please-select-branches').slideDown();
214				return false;
215			}
216		});
217	}
218	
219	$.fn.gdlr_hotel_booking = function(){
220
221		var area = {
222			wrapper: $(this),
223			resv_bar: $(this).find('#gdlr-reservation-bar'),
224			room_form: $(this).find('#gdlr-reservation-bar-room-form'),
225			date_form: $(this).find('#gdlr-reservation-bar-date-form'),
226			summary_form: $(this).find('#gdlr-reservation-bar-summary-form'),
227			service_form: $(this).find('#gdlr-reservation-bar-service-form'),
228			
229			proc_bar: $(this).find('#gdlr-booking-process-bar'),
230			content_area: $(this).find('#gdlr-booking-content-inner'),
231			
232		};
233		
234		var resv_bar = {
235			init: function(){
236				
237				// check in date and night num change
238				area.resv_bar.on('change', '#gdlr-night, #gdlr-check-in', function(){
239					var check_in = area.resv_bar.find('#gdlr-check-in');
240					var check_out = area.resv_bar.find('#gdlr-check-out');
241
242					var min_night = check_out.attr('data-min-night');
243					min_night = (min_night)? parseInt(min_night): 1;
244					var night_num = area.resv_bar.find('#gdlr-night');
245					
246					if( check_in.val() ){
247						var check_out_date = check_in.datepicker('getDate', '+1d'); 
248						check_out_date.setDate(check_out_date.getDate() + parseInt(night_num.val()));
249						
250						var check_out_min = check_in.datepicker('getDate', '+1d'); 
251						check_out_min.setDate(check_out_min.getDate() + min_night);
252						
253						check_out.datepicker('option', 'minDate', check_out_min);
254						check_out.datepicker('setDate', check_out_date);
255
256						$('#gdlr-datepicker-range').datepicker('refresh');
257					}
258				});
259				
260				// check out date change
261				area.resv_bar.on('change', '#gdlr-check-out', function(){
262					var check_in = area.resv_bar.find('#gdlr-check-in').datepicker('getDate');
263					var check_out = $(this).datepicker('getDate');
264					var date_diff =  Math.round((check_out - check_in) / 86400000); // 1000/60/60/24
265					
266					if( check_in && date_diff > 0 ){
267						var night_num = area.resv_bar.find('#gdlr-night');
268						if( night_num.children('option[value="' + date_diff + '"]').length == 0 ){
269							night_num.append('<option value="' + date_diff + '" >' + date_diff + '</option>')
270						}
271						$('#gdlr-night').val(date_diff);
272					}
273				});
274				
275				// amount change
276				area.resv_bar.on('change', '#gdlr-room-number', function(){
277					var amount = parseInt($(this).val());
278					var resv_room = area.resv_bar.find('#gdlr-reservation-people-amount-wrapper');
279					var room_diff = amount - resv_room.children().length;
280					if( room_diff > 0 ){
281						for( var i=0; i<room_diff; i++ ){
282							var new_room = resv_room.children(':first-child').clone().hide();
283							new_room.find('.gdlr-reservation-people-title span').html(resv_room.children().length + 1);
284							new_room.appendTo(resv_room).slideDown(200);
285						}
286					}else if( room_diff < 0 ){
287						resv_room.children().slice(room_diff).slideUp(200, function(){
288							$(this).remove();
289						});
290					}
291					
292				});	
293
294				// check availability button
295				area.resv_bar.on('click', '#gdlr-reservation-bar-button', function(){
296					main.change_state({ state: 2 });
297					return false;
298				});
299				
300				// query again when input change
301				area.resv_bar.on('change', '#gdlr-check-in, #gdlr-night, #gdlr-check-out, #gdlr-room-number, #gdlr-hotel-branches, ' + 
302					'select[name="gdlr-adult-number[]"], select[name="gdlr-children-number[]"]', function(){
303					
304					if( parseInt(area.proc_bar.attr('data-state')) > 1 ){
305						area.room_form.slideUp(function(){
306							$(this).html('').removeClass('gdlr-active');
307							main.change_state({ state: 2 });
308						});
309						
310					}
311				});
312			}	
313		}
314		
315		var proc_bar = {
316			get_state: function(){
317				return area.proc_bar.attr('data-state');
318			},
319			
320			set_state: function( state ){
321				area.proc_bar.attr('data-state', state);
322				area.proc_bar.children('[data-process="' + state + '"]').addClass('gdlr-active').siblings().removeClass('gdlr-active');
323			}
324		}
325		
326		var main = {
327			init: function(){
328
329				// init date picker
330				// area.wrapper.find('.gdlr-datepicker').gdlr_datepicker(); 
331				area.wrapper.find("#gdlr-datepicker-range").gdlr_datepicker_range();
332				
333				// reservation bar event
334				resv_bar.init();
335				
336				// room selection event
337				this.room_select();
338				
339				// contact form event
340				this.contact_submit();
341			},
342			
343			room_select: function(){
344				area.content_area.on('click', '.price-breakdown-close', function(){
345					$(this).closest('.price-breakdown-wrapper').fadeOut(200);
346					return false;
347				});
348				area.content_area.on('click', '.gdlr-price-break-down', function(){
349					$(this).children('.price-breakdown-wrapper').fadeIn(200);
350				});
351				
352				area.content_area.on('click', '.gdlr-room-selection',function(){
353					$('body').animate({scrollTop: area.proc_bar.offset().top}, 300); 
354					area.room_form.find('.gdlr-active input').val($(this).attr('data-roomid'));
355					main.change_state({ state: 2, room_id: $(this).attr('data-roomid') });
356					return false;
357				});
358				
359				area.content_area.on('click', '.gdlr-pagination a', function(){
360					main.change_state({ paged: $(this).attr('data-paged'), state: 2 });
361					return false;
362				});
363				
364				area.room_form.on('click', '.gdlr-reservation-change-room',function(){
365					$(this).closest('.gdlr-reservation-room').find('input').val('');
366					main.change_state({ state: 2 });
367					return false;
368				});
369				
370				// edit booking summary event
371				area.summary_form.on('click', '#gdlr-edit-booking-button', function(){
372					area.room_form.find('.gdlr-reservation-room:first-child input').val('');
373					main.change_state({ state: 2 });
374					return false;
375				});
376				
377				area.summary_form.on('change', 'input[name="pay_deposit"]', function(){
378					if($(this).val() == 'true'){
379						area.summary_form.find('.gdlr-price-deposit-inner-wrapper').slideDown();
380						area.summary_form.find('.gdlr-price-summary-grand-total').removeClass('gdlr-active');
381						area.summary_form.find('input[name="pay_deposit"][value="true"]').closest('span').addClass('gdlr-active');
382						area.summary_form.find('input[name="pay_deposit"][value="false"]').closest('span').removeClass('gdlr-active');
383					}else{
384						area.summary_form.find('.gdlr-price-deposit-inner-wrapper').slideUp();
385						area.summary_form.find('.gdlr-price-summary-grand-total').addClass('gdlr-active');
386						area.summary_form.find('input[name="pay_deposit"][value="true"]').closest('span').removeClass('gdlr-active');
387						area.summary_form.find('input[name="pay_deposit"][value="false"]').closest('span').addClass('gdlr-active');
388					}
389					return false;
390				});
391				
392			},
393			
394			contact_submit: function(){
395				
396				// for submitting service
397				area.content_area.on('change', '.gdlr-room-service-checkbox input', function(){
398					if( $(this).is(":checked") ){
399						$(this).parent('label').addClass('gdlr-active').siblings('input').prop('disabled', false);
400					}else{
401						$(this).parent('label').removeClass('gdlr-active').siblings('input').prop('disabled', true);
402					}
403				});
404				area.content_area.on('click', '.gdlr-room-selection-next',function(){
405					main.change_state({ state: 3, service: $(this).siblings('.gdlr-booking-service-wrapper').children('form') });
406					return false;
407				});
408
409				// for submitting contact form
410				area.content_area.on('click', '.gdlr-booking-contact-submit', function(){
411					var term_and_service = area.content_area.find('input[name="term-and-agreement"]');
412					if( term_and_service.length && !term_and_service.is(':checked') ){
413						area.content_area.find('.gdlr-error-message').html(term_and_service.attr('data-error')).slideDown();
414						return false;
415					}
416
417					if( !$(this).hasClass('gdlr-clicked') ){
418						$(this).addClass('gdlr-clicked');
419						area.content_area.find('.gdlr-error-message').slideUp();
420						main.change_state({ state: 3, contact: $(this).closest('form'), 'contact_type': 'contact' });
421					}
422					return false; 
423				});
424				
425				area.content_area.on('click', '.gdlr-booking-payment-submit', function(){
426					var term_and_service = area.content_area.find('input[name="term-and-agreement"]');
427					if( term_and_service.length && !term_and_service.is(':checked') ){
428						area.content_area.find('.gdlr-error-message').html(term_and_service.attr('data-error')).slideDown();
429						return false;
430					}
431
432					if( !$(this).hasClass('gdlr-clicked') ){
433						$(this).addClass('gdlr-clicked');
434						area.content_area.find('.gdlr-error-message').slideUp();
435						main.change_state({ state: 3, contact: $(this).closest('form'), 'contact_type': 'instant_payment' });
436					}
437					return false; 
438				});
439				
440				// payment method selection
441				area.content_area.on('click', '.gdlr-payment-method input[name="payment-method"]',function(){
442					$(this).parent('label').addClass('gdlr-active').siblings().removeClass('gdlr-active');
443				});
444				
445				// for ajax coupon
446				var coupon_loading = $('<span class="gdlr-coupon-loading" ></span>');
447				var coupon_message = $('<span class="gdlr-coupon-message" ></span>');
448				area.content_area.on('change input', '#gdlr-coupon-id', gdlr_debounce_function(function(){
449					if( $(this).val().length <= 0 ){ return; }
450
451					var coupon_elem = $(this);
452					coupon_elem.parent().prepend(coupon_loading);
453
454					// ajax call
455					$.ajax({
456						type: 'POST',
457						url: area.wrapper.attr('data-ajax'),
458						data: { 
459							'action': coupon_elem.attr('data-action'),
460							'data': area.resv_bar.serialize(),
461							'coupon_code': coupon_elem.val()
462						},
463						dataType: 'json',
464						error: function( a, b, c ){ console.log(a, b, c); },
465						success: function( data ){
466							coupon_loading.remove();
467
468							if( typeof(data.message) != 'undefined' ){
469								coupon_message.hide();
470								coupon_message.html(data.message).insertAfter(coupon_elem);
471								coupon_message.fadeIn();
472							}else{
473								coupon_message.fadeOut();
474							}
475							
476						}
477					});
478				}, 400));
479			},
480			
481			change_state: function( options ){
482				if( area.resv_bar.find('select[name=gdlr-hotel-branches]').val() == '' ){
483					area.resv_bar.find('#please-select-branches').slideDown();
484					return false;
485				}else{
486					area.resv_bar.find('#please-select-branches').slideUp();
487				}
488				
489				area.resv_bar.find('#gdlr-reservation-bar-button').slideUp(200, function(){ $(this).remove(); })
490				
491				area.content_area.animate({'opacity': 0.2});
492				area.content_area.parent().addClass('gdlr-loading');
493				
494				var data_submit = { 
495					'action': area.resv_bar.attr('data-action'),
496					'data': area.resv_bar.serialize(), 
497					'state': options.state 
498				};
499				if( options.room_id ) data_submit.room_id = options.room_id;
500				if( options.service ){
501					data_submit.service = options.service.serialize();
502					if( !data_submit.service ){
503						data_submit.service = 'service=none';
504					}
505				}
506				if( options.contact ) data_submit.contact = options.contact.serialize();
507				if( options.contact_type ) data_submit.contact_type = options.contact_type;
508				if( options.paged ) data_submit.paged = options.paged;
509
510				$.ajax({
511					type: 'POST',
512					url: area.wrapper.attr('data-ajax'),
513					data: data_submit,
514					dataType: 'json',
515					error: function( a, b, c ){ console.log(a, b, c); },
516					success: function( data ){
517						//console.log(data.data);
518						
519						if( data.state ){
520							proc_bar.set_state(data.state);
521							
522							if( data.content ){
523								var tmp_height = area.content_area.height();
524								area.content_area.html(data.content);
525								
526								var new_height = area.content_area.height();
527								
528								area.content_area.parent().removeClass('gdlr-loading');
529								area.content_area.height(tmp_height).animate({'opacity': 1, 'height': new_height}, function(){
530									$(this).css('height', 'auto');
531								});
532							}
533							if( data.summary_form ){
534								if( !area.summary_form.hasClass('gdlr-active') ){
535									area.summary_form.html(data.summary_form).slideDown().addClass('gdlr-active');
536								}else{
537									var tmp_height = area.summary_form.height();
538									area.summary_form.html(data.summary_form);
539									
540									var new_height = area.summary_form.height();
541									area.summary_form.height(tmp_height).animate({'height': new_height}, function(){
542										$(this).css('height', 'auto');
543									});
544									
545									if( data.state == 4 ){
546										$('body').animate({scrollTop: area.proc_bar.offset().top - (tmp_height - new_height)}, 300);
547									}
548								}
549							}
550							if( data.service ){
551								area.service_form.html(data.service);
552							}
553								
554							if( data.state == 2 ){
555								area.summary_form.slideUp(function(){ $(this).removeClass('gdlr-active'); });
556								area.date_form.slideDown();
557								
558								if( data.room_form ){
559									if( !area.room_form.hasClass('gdlr-active') ){
560										area.room_form.html(data.room_form).slideDown().addClass('gdlr-active');
561									}else{
562										var tmp_height = area.room_form.height();
563										area.room_form.html(data.room_form);
564										
565										var new_height = area.room_form.height();
566										area.room_form.height(tmp_height).animate({'height': new_height}, function(){
567											$(this).css('height', 'auto');
568										});
569									}
570								}
571							}else if( data.state == 3 ){
572								area.room_form.slideUp(function(){ $(this).removeClass('gdlr-active'); });
573								area.date_form.slideUp();
574
575								// error message on form submit
576								if( data.error_message ){
577									area.content_area.find('.gdlr-button').removeClass('gdlr-clicked');
578									area.content_area.find('.gdlr-error-message').html(data.error_message).slideDown();
579									
580									area.content_area.parent().removeClass('gdlr-loading');
581									area.content_area.animate({'opacity': 1});
582								}
583								
584								// for payment option
585								if( data.payment && data.payment == 'paypal' ){
586									var form_submit = area.content_area.find('form.gdlr-booking-contact-form');
587									form_submit.attr('method', 'post');
588									form_submit.attr('action', data.payment_url);
589									form_submit.append(data.addition_part);
590
591									form_submit.find('input, textarea').each(function(){
592										if( $(this).is('[name="coupon"], [name="payment-method"], [name="term-and-agreement"]') ){
593											$(this).remove();
594										}else{
595											// $(this).val(gdlr_encode_utf8($(this).val()));
596										}
597
598									});
599									form_submit.submit();
600									
601								}
602							}
603						} // data.state
604					}
605				});	
606			}
607		};
608		
609		main.init();
610		
611		return this;
612	}
613
614	$(document).ready(function(){
615
616		// init the booking page
617		$('#gdlr-single-booking-content').gdlr_hotel_booking();
618		
619		// init single room page
620		$('form.gdlr-reservation-bar, #gdlr-hotel-availability').gdlr_single_booking();
621		
622		// room category hover
623		$('.gdlr-room-category-item').on('mouseover', '.gdlr-room-category-thumbnail', function(){
624			$(this).children('img').transition({ scale: 1.1, duration: 200, queue: false });
625			$(this).children('.gdlr-room-category-thumbnail-overlay').animate({opacity: 0.6}, {duration: 150, queue: false});
626			$(this).children('.gdlr-room-category-thumbnail-overlay-icon').animate({opacity: 1}, {duration: 150, queue: false});
627		});
628		$('.gdlr-room-category-item').on('mouseout', '.gdlr-room-category-thumbnail', function(){
629			$(this).children('img').transition({ scale: 1, duration: 200, queue: false });
630			$(this).children('.gdlr-room-category-thumbnail-overlay').animate({opacity: 0}, {duration: 150, queue: false});
631			$(this).children('.gdlr-room-category-thumbnail-overlay-icon').animate({opacity: 0}, {duration: 150, queue: false});
632		});
633	});
634
635})(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.