PageSourceSearch

https://airportal.hu/wp-content/themes/Airportal/custom-js/repjegyhu/searchform.js

js airportal.hu collected 2026-10-02 11:45:43 UTC 9,875 bytes, 335 lines download raw bytes

1$(function () {
2	var searchForm = $('#search-form');
3	var searchFormSubmit = $('#search-form-submit');
4
5	var inputJourneyType = $('input[name="journey_type"]');
6
7	var inputFrom = $('#ut-input-from');
8	var inputFromError = $('#ut-input-from-error');
9	var inputFromType = $('#ut-input-from-type');
10	var inputFromIata = $('#ut-input-from-iata');
11
12	var inputTo = $('#ut-input-to');
13	var inputToError = $('#ut-input-to-error');
14	var inputToType = $('#ut-input-to-type');
15	var inputToIata = $('#ut-input-to-iata');
16
17	var inputDateDep = $('#ut-input-date-dep');
18	var inputDateDepError = $('#ut-input-date-dep-error');
19	var inputDateArr = $('#ut-input-date-arr');
20	var inputDateArrError = $('#ut-input-date-arr-error');
21	var inputDateArrContainer = $('#ut-input-date-arr-container');
22
23	var inputAdults = $('#ut-input-adults');
24	var inputChildren = $('#ut-input-children');
25	var inputInfants = $('#ut-input-infants');
26	var inputPassengersError = $('#ut-input-passengers-error');
27
28	var autocompleteOptions = {
29		source: function (request, response) {
30            $.ajax({
31                       url: 'https://www.repjegy.hu/moduls/mainform_checkdest_json',
32					   dataType: 'json',
33					   data: {dest: request.term},
34					   success: function (data) {
35						   response(
36							   $.map(data, function (v, i) {
37								   return {
38									   label: v.value,
39									   value: v.value,
40									   type: v.type,
41									   iata: v.iata
42								   };
43							   })
44						   );
45					   }
46				   });
47		},
48		minLength: 3
49	};
50
51	var datepickerOptions = {
52		numberOfMonths: 2,
53		dateFormat: 'yy-mm-dd',
54		minDate: +2,
55		maxDate: +350,
56		locale: 'hu'
57	};
58
59	var passengerCount = 0;
60
61	var setChildAgesContainer = $('#set-child-ages-container');
62	var btnSetChildAges = $('#set-child-ages');
63	var setChildAgesDialog = $('#set-child-ages-dialog');
64	var infantAgesBlock = $('#ut-infant-ages');
65	var infantAgesFields = $('#ut-infant-ages-fields');
66	var childAgesBlock = $('#ut-child-ages');
67	var childAgesFields = $('#ut-child-ages-fields');
68
69	inputDateDep
70		.datepicker(datepickerOptions)
71		.on('change', function () {
72			inputDateArr.datepicker('option', 'minDate', getDate(this));
73		});
74	inputDateArr
75		.datepicker(datepickerOptions)
76		.on('change', function () {
77			inputDateDep.datepicker('option', 'maxDate', getDate(this));
78		});
79
80	searchForm
81		.find('.ut-input-block')
82		.on('click', 'span', function () {
83			$('#ut-input-' + $(this).data('dir')).val($(this).html() + ' (' + $(this).data('iata') + ')');
84			$('#ut-input-' + $(this).data('dir') + '-type').val($(this).data('type'));
85			$('#ut-input-' + $(this).data('dir') + '-iata').val($(this).data('iata'));
86		});
87
88	inputJourneyType
89		.on('change', function () {
90			if ( $(this).val() === 'return' ) {
91				inputDateArrContainer.removeClass('hidden');
92			} else {
93				inputDateArrContainer.addClass('hidden');
94			}
95		});
96
97	inputInfants
98		.on('change', function () {
99			processChildrenAgesDialog();
100		});
101
102	inputChildren
103		.on('change', function () {
104			processChildrenAgesDialog();
105		});
106
107	function processChildrenAgesDialog() {
108		var infantNumber = parseInt(inputInfants.val());
109		var childNumber = parseInt(inputChildren.val());
110
111		if ( infantNumber > 0 || childNumber > 0 ) {
112			setChildAgesContainer.removeClass('hidden');
113
114			if ( infantNumber > 0 ) {
115				infantAgesBlock.removeClass('hidden');
116				fillInfantAgesFields(infantNumber);
117			} else {
118				infantAgesBlock.addClass('hidden');
119			}
120
121			if ( childNumber > 0 ) {
122				childAgesBlock.removeClass('hidden');
123				fillChildAgesFields(childNumber);
124			} else {
125				childAgesBlock.addClass('hidden');
126			}
127		} else {
128			setChildAgesContainer.addClass('hidden');
129		}
130	}
131
132	function fillInfantAgesFields(number) {
133		var fields = '';
134		for ( var i = 1; i <= number; i++ ) {
135			fields += '<div class="ut-row ut-input-block">';
136			fields += '<label for="infant_age_' + i + '">' + i + '. csecsemő kora</label>';
137			fields += '<select name="child_age[]" id="infant_age_' + i + '">';
138			fields += '<option value="">Kérjük, válasszon!</option>';
139			fields += '<option value="0">0 év</option>';
140			fields += '<option value="1">1 év</option>';
141			fields += '</select>';
142			fields += '</div>';
143		}
144
145		infantAgesFields.html(fields);
146	}
147
148	function fillChildAgesFields(number) {
149		var fields = '';
150		for ( var i = 1; i <= number; i++ ) {
151			fields += '<div class="ut-row ut-input-block">';
152			fields += '<label for="child_age_' + i + '">' + i + '. gyermek kora</label>';
153			fields += '<select name="child_age[]" id="child_age_' + i + '">';
154			fields += '<option value="">Kérjük, válasszon!</option>';
155			for ( var j = 2; j < 13; j++ ) {
156				fields += '<option value="' + j + '">' + j + ' év</option>';
157			}
158			fields += '</select>';
159			fields += '</div>';
160		}
161
162		childAgesFields.html(fields);
163	}
164
165	searchFormSubmit.on('click', function (e) {
166		e.preventDefault();
167		var isValid = true;
168		var journeyTypeField = $('input[name="journey_type"]:checked');
169        var inputFrom = $('#ut-input-from');
170        var inputFromIata = $('#ut-input-from-iata');
171        var inputTo = $('#ut-input-to');
172        var inputToIata = $('#ut-input-to-iata');
173        var inputDateDep = $('#ut-input-date-dep');
174        var inputDateArr = $('#ut-input-date-arr');
175        var inputAdults = $('#ut-input-adults');
176        var inputChildren = $('#ut-input-children');
177        var inputInfants = $('#ut-input-infants');
178        var inputFlexVal = $('input[name="date_flexible"]:checked').val();
179
180
181        if ( journeyTypeField === undefined || journeyTypeField.length === 0 || journeyTypeField.val().length === 0 ) {
182			$('input[name="journey_type"]').parent().addClass('has-error');
183			isValid = false;
184		} else {
185			if ( journeyTypeField.val() === 'return' ) {
186				if ( inputDateArr.val().length === 0 ) {
187					inputDateArr.addClass('has-error');
188					inputDateArrError.html('A mező kitöltése kötelező!');
189					isValid = false;
190				} else {
191					inputDateArr.removeClass('has-error');
192					inputDateArrError.html('');
193				}
194			} else {
195				inputDateArr.removeClass('has-error');
196				inputDateArrError.html('');
197			}
198		}
199
200		if ( inputFromType.val().length === 0 || inputFromIata.val().length !== 3 ) {
201			inputFrom.addClass('has-error');
202			inputFromError.html('A mező kitöltése kötelező!');
203			isValid = false;
204		} else {
205			inputFrom.removeClass('has-error');
206			inputFromError.html('');
207		}
208
209		if ( inputToType.val().length === 0 || inputToIata.val().length !== 3 ) {
210			inputTo.addClass('has-error');
211			inputToError.html('A mező kitöltése kötelező!');
212			isValid = false;
213		} else {
214			inputTo.removeClass('has-error');
215			inputToError.html('');
216		}
217
218		if ( inputDateDep.val().length === 0 ) {
219			inputDateDep.addClass('has-error');
220			inputDateDepError.html('A mező kitöltése kötelező!');
221			isValid = false;
222		} else {
223			inputDateDep.removeClass('has-error');
224			inputDateDepError.html('');
225		}
226
227		if ( parseInt(inputAdults.val()) < parseInt(inputInfants.val()) ) {
228			inputInfants.addClass('has-error');
229			inputPassengersError.html('Csak annyi csecsemő utazhat, ahány felnőtt!');
230			isValid = false;
231		} else {
232			var passengerCount = parseInt(inputAdults.val());
233			passengerCount += parseInt(inputChildren.val());
234			passengerCount += parseInt(inputInfants.val());
235
236			if ( passengerCount > 9 ) {
237				inputAdults.addClass('has-error');
238				inputChildren.addClass('has-error');
239				inputInfants.addClass('has-error');
240				isValid = false;
241				inputPassengersError.html('Maximum 9 utas utazhat egyszerre!');
242			} else {
243				inputAdults.removeClass('has-error');
244				inputChildren.removeClass('has-error');
245				inputInfants.removeClass('has-error');
246				inputPassengersError.html('');
247			}
248		}
249
250		if ( isValid ) {
251            var way_type = $('input[name="way_type"]');
252            var honnan = $('input[name="honnan"]');
253            var fromiata = $('input[name="fromiata"]');
254            var hova = $('input[name="hova"]');
255            var toiata = $('input[name="toiata"]');
256            var dep_date = $('input[name="dep_date"]');
257            var arr_date = $('input[name="arr_date"]');
258            var adult = $('input[name="adult"]');
259            var child = $('input[name="child"]');
260            var infant = $('input[name="infant"]');
261            var flex = $('input[name="flex"]');
262
263            way_type.val('ow');
264            if (journeyTypeField.val() === 'return') {
265                way_type.val('rt');
266            }
267            else {
268            }
269            honnan.val(inputFrom.val());
270            fromiata.val(inputFromIata.val());
271            hova.val(inputTo.val());
272            toiata.val(inputToIata.val());
273            dep_date.val(inputDateDep.val());
274            arr_date.val(inputDateArr.val());
275            adult.val(inputAdults.val());
276            child.val(inputChildren.val());
277            infant.val(inputInfants.val());
278            flex.val(inputFlexVal);
279
280			searchForm[0].submit();
281		}
282	});
283
284	inputFrom.autocomplete($.extend({}, autocompleteOptions, {
285		select: function (event, ui) {
286			inputFromType.val(ui.item.type);
287			inputFromIata.val(ui.item.iata);
288		}
289	}));
290
291	inputTo.autocomplete($.extend({}, autocompleteOptions, {
292		select: function (event, ui) {
293			inputToType.val(ui.item.type);
294			inputToIata.val(ui.item.iata);
295		}
296	}));
297
298	btnSetChildAges
299		.on('click', function (e) {
300			e.preventDefault();
301
302			setChildAgesDialog.dialog('open');
303		});
304
305	setChildAgesDialog.dialog(
306		{
307			appendTo: '#search-form',
308			autoOpen: false,
309			height: 400,
310			width: 300,
311			modal: true,
312			buttons: {
313				'OK': saveAges,
314				Cancel: function () {
315					setChildAgesDialog.dialog('close');
316				}
317			}
318		}
319	);
320
321	function saveAges() {
322		setChildAgesDialog.dialog('close');
323	}
324
325	function getDate(element) {
326		var date;
327		try {
328			date = $.datepicker.parseDate('yy-mm-dd', element.value);
329		} catch ( error ) {
330			date = null;
331		}
332
333		return date;
334	}
335});

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.