PageSourceSearch

https://aa-go.ru/wp-content/plugins/chauffeur-shortcodes-post-types/assets/js/scripts.js

js aa-go.ru collected 2026-10-08 02:10:20 UTC 13,930 bytes, 480 lines download raw bytes

1jQuery(document).ready(function($) {
2	
3	"use strict";
4	
5	function chauffeur_email_validation(email) {
6		var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
7		return regex.test(email);
8	}
9	
10	function check_booking_time(booking_h,booking_m,booking_date) {
11		
12		// Get current date and time and format it
13		var d = new Date();
14		var curr_date = d.getDate();
15		var curr_month = d.getMonth() + 1;
16		var curr_year = d.getFullYear();
17		var curr_hour = d.getHours();
18		var curr_min = d.getMinutes();
19		var curr_date_full = curr_year + "/" + curr_month + "/" + curr_date + " " + curr_hour + ":" + curr_min;
20
21		// Detect date format and format current date and time accordingly
22		if ( chauffeur_datepicker_format == 'yy/mm/dd') {
23			var data = booking_date;
24			var arr = data.split('/');
25			var booking_date_full = arr[0] + "/" + arr[1] + "/" + arr[2] + " " + booking_h + ":" + booking_m;
26		}
27
28		if ( chauffeur_datepicker_format == 'dd/mm/yy') {
29			var data = booking_date;
30			var arr = data.split('/');
31			var booking_date_full = arr[2] + "/" + arr[1] + "/" + arr[0] + " " + booking_h + ":" + booking_m;
32		}
33
34		if ( chauffeur_datepicker_format == 'mm/dd/yy') {
35			var data = booking_date;
36			var arr = data.split('/');
37			var booking_date_full = arr[2] + "/" + arr[0] + "/" + arr[1] + " " + booking_h + ":" + booking_m;
38		}
39		
40		// Convert strings to dates
41		var startTime = new Date(curr_date_full); 
42		var endTime = new Date(booking_date_full);
43		
44		// Calculate time difference
45		var difference = endTime.getTime() - startTime.getTime();
46		var resultInMinutes = Math.round(difference / 60000);
47		
48		// Check if enough time notice given
49		if ( resultInMinutes <= hours_before_booking_minimum ) {
50			// Time notice given, can book
51			return true;
52		} else {
53			// Not enough time notice, cannot book
54			return false;
55		}
56		
57	}
58	
59	// Datepicker
60	$(".datepicker").datepicker({
61		minDate: 0,
62		dateFormat: chauffeur_datepicker_format
63	});
64	
65	// Set Datepicker value as todays date
66	var todaysDate = $.datepicker.formatDate(chauffeur_datepicker_format, new Date());
67	$(".datepicker").val(todaysDate);
68	
69	// Hide booking form until JS loads
70	$(".header-booking-form-wrapper, .body-booking-form-wrapper, .widget-booking-form-wrapper").fadeIn().css("display","block");
71	
72	// Disable datepicker user input
73	$('.datepicker').keydown(function(e) {
74	   e.preventDefault();
75	   return false;
76	});
77	
78	// Load tabs
79	$( "#booking-tabs, #booking-tabs-2" ).tabs();
80	
81	// Add selected vehicle data in hidden fields
82	$(".select-vehicle-wrapper").on('click', '.vehicle-section', function () {
83	
84		$('.vehicle-section').removeClass("selected-vehicle");
85		$(this).toggleClass("selected-vehicle");	
86		$('.selected-vehicle-price').val( $(this).attr('data-price') );
87		$('.selected-vehicle-name').val( $(this).attr('data-title') );
88		
89		$('.selected-vehicle-bags').val( $(this).attr('data-bags') );
90		$('.selected-vehicle-passengers').val( $(this).attr('data-passengers') );
91		
92	});
93	
94	// Remove any content on first page load
95	$("#pickup-address1").val("");
96	$("#dropoff-address1").val("");
97	$("#pickup-address2").val("");
98	$("#dropoff-address2").val("");
99	
100	$(document).on('click','#tab1', function(e) {
101		chauffeur_active_tab = 'distance';
102	});
103	
104	$(document).on('click','#tab2', function(e) {
105		chauffeur_active_tab = 'hourly';
106	});
107	
108	$(document).on('click','#tab3', function(e) {
109		chauffeur_active_tab = 'flat_rate';
110	});
111	
112	var pickup_1 = false;
113	var dropoff_1 = false;
114	
115	var pickup_2 = false;
116	var dropoff_2 = false;
117	
118	function initialize_autosuggest(form_tab) {
119		
120		if ( Google_AutoComplete_Country != 'ALL_COUNTRIES' ) {
121			var options = {
122			  componentRestrictions: {country: Google_AutoComplete_Country}
123			 };
124		} else {
125			var options = '';
126		}
127		
128		if(form_tab == 'distance') {
129			
130			// Pick up address
131			var pickup_input1 = document.getElementById('pickup-address1');
132			var pickup_autocomplete1 = new google.maps.places.Autocomplete(pickup_input1,options);
133
134			google.maps.event.addListener(pickup_autocomplete1, 'place_changed', function() {
135				var pickup_place1 = pickup_autocomplete1.getPlace();
136				if (typeof pickup_place1.adr_address==='undefined') {
137					pickup_1 = false;
138			  	} else {
139					pickup_1 = true;
140				}
141			});
142
143			// Drop off address
144			var dropoff_input1 = document.getElementById('dropoff-address1');
145			var dropoff_autocomplete1 = new google.maps.places.Autocomplete(dropoff_input1,options);
146
147			google.maps.event.addListener(dropoff_autocomplete1, 'place_changed', function() {
148				var dropoff_place1 = dropoff_autocomplete1.getPlace();
149				if (typeof dropoff_place1.adr_address==='undefined') {
150					dropoff_1 = false;
151			  	} else {
152					dropoff_1 = true;
153				}
154			});
155			
156		}
157		
158		if(form_tab == 'hourly') {
159			
160			// Pick up address
161			var pickup_input2 = document.getElementById('pickup-address2');
162			var pickup_autocomplete2 = new google.maps.places.Autocomplete(pickup_input2,options);
163
164			google.maps.event.addListener(pickup_autocomplete2, 'place_changed', function() {
165				var pickup_place2 = pickup_autocomplete2.getPlace();
166				if (typeof pickup_place2.adr_address==='undefined') {
167					pickup_2 = false;
168			  	} else {
169					pickup_2 = true;
170				}
171			});
172
173			// Drop off address
174			var dropoff_input2 = document.getElementById('dropoff-address2');
175			var dropoff_autocomplete2 = new google.maps.places.Autocomplete(dropoff_input2,options);
176
177			google.maps.event.addListener(dropoff_autocomplete2, 'place_changed', function() {
178				var dropoff_place2 = dropoff_autocomplete2.getPlace();
179				if (typeof dropoff_place2.adr_address==='undefined') {
180					dropoff_2 = false;
181			  	} else {
182					dropoff_2 = true;
183				}
184			});
185			
186		}
187		
188	}
189	
190	if (typeof google != 'undefined') {
191		google.maps.event.addDomListener(window, 'load', initialize_autosuggest('distance'));
192		google.maps.event.addDomListener(window, 'load', initialize_autosuggest('hourly'));
193	}
194	
195	$(document).on("click",'.bookingbutton2, .bookingbutton1', function(e) {
196		
197		var chauffeur_form_submit = new Array();
198		
199		// Booking step 1 button
200		if( $(".first_booking_step").val() == '1' || $(this).attr("class") == 'bookingbutton2' ) {
201			
202			// Validate distance tab form if selected
203			if (chauffeur_active_tab == 'distance') {
204
205				// Google autocomplete validation
206				if ( pickup_1 == false && dropoff_1 == false ) {
207					// Do not submit
208					alert(chauffeur_autocomplete);
209					chauffeur_form_submit.push(false);
210				} else {
211					if ( pickup_1 == dropoff_1 ) {
212						// Submit
213						chauffeur_form_submit.push(true);
214					} else {
215						// Do not submit
216						alert(chauffeur_autocomplete);
217						chauffeur_form_submit.push(false);
218					}
219				}
220
221				// Pick up and drop off address empty validation
222				if ( $("#pickup-address1").val() == '' || $("#dropoff-address1").val() == '' ) {
223					// Do not submit
224					alert(chauffeur_pickup_dropoff_error);
225					chauffeur_form_submit.push(false);
226				} else {
227					// Submit
228					chauffeur_form_submit.push(true);
229				}
230
231				// Minimum notice time validation
232				if ( check_booking_time($(".time-hour1").val(),$(".time-min1").val(),$(".pickup-date1").val()) == true ) {
233					// Do not submit
234					alert(chauffeur_min_time_before_booking_error);
235					chauffeur_form_submit.push(false);
236				} else {
237					// Submit
238					chauffeur_form_submit.push(true);
239				}
240
241			}
242
243			// Validate hourly tab form if selected
244			if (chauffeur_active_tab == 'hourly') {
245
246				// Google autocomplete validation
247				if ( pickup_2 == false && dropoff_2 == false ) {
248					// Do not submit
249					alert(chauffeur_autocomplete);
250					chauffeur_form_submit.push(false);
251				} else {
252					if ( pickup_2 == dropoff_2 ) {
253						// Submit
254						chauffeur_form_submit.push(true);
255					} else {
256						// Do not submit
257						alert(chauffeur_autocomplete);
258						chauffeur_form_submit.push(false);
259					}
260				}
261
262				// Pick up and drop off address empty validation
263				if ( $("#pickup-address2").val() == '' || $("#dropoff-address2").val() == '' ) {
264					// Do not submit
265					alert(chauffeur_pickup_dropoff_error);
266					chauffeur_form_submit.push(false);
267				} else {
268					// Submit
269					chauffeur_form_submit.push(true);
270				}
271
272				// Minimum notice time validation
273				if ( check_booking_time($(".time-hour2").val(),$(".time-min2").val(),$(".pickup-date2").val()) == true ) {
274					// Do not submit
275					alert(chauffeur_min_time_before_booking_error);
276					chauffeur_form_submit.push(false);
277				} else {
278					// Submit
279					chauffeur_form_submit.push(true);
280				}
281
282				// Validate hourly
283			    if ( parseInt($('.ch-num-hours').val()) < parseInt(hourly_minimum) ) {
284					// Do not submit        
285			        alert(ch_minimum_hourly_alert);
286			        chauffeur_form_submit.push(false);
287			    } else {
288					// Submit
289					chauffeur_form_submit.push(true);
290				}
291
292			}
293
294			// Validate flat rate tab form if selected
295			if (chauffeur_active_tab == 'flat_rate') {
296
297				// Minimum notice time validation
298				if ( check_booking_time($(".time-hour3").val(),$(".time-min3").val(),$(".pickup-date3").val()) == true ) {
299					// Do not submit
300					alert(chauffeur_min_time_before_booking_error);
301					chauffeur_form_submit.push(false);
302				} else {
303					// Submit
304					chauffeur_form_submit.push(true);
305				}
306
307			}
308			
309			// Submit	
310			if ( $.inArray(false, chauffeur_form_submit) == -1 ) {
311
312				if (chauffeur_active_tab == 'distance') {
313					$("#formOneWay").trigger('submit');
314				}
315
316				if (chauffeur_active_tab == 'hourly') {
317					$("#formHourly").trigger('submit');
318				}
319
320				if (chauffeur_active_tab == 'flat_rate') {
321					$("#formFlat").trigger('submit');
322				}
323
324			}
325
326		}
327		
328		// AJAX booking process
329		if( $(this).attr("class") == 'bookingbutton1' ) {
330			
331			if ( $(".booking-step-2-form").val() == '1' ) {
332				
333				// Validate vehicle selection
334				if ( $(".selected-vehicle-name").val() == '') {
335					// Do not submit    
336			        alert(chauffeur_select_vehicle);
337			        return false;
338			    }
339				
340				// Validate form fields
341				var ch_validation_error = false;
342				
343				$('.required-form-field').each(function() {
344					if ($.trim($(this).val()) == '') {
345						ch_validation_error = true;
346					}
347				});
348				
349				if ( ch_validation_error == true ) {
350					// Do not submit   
351			        alert(chauffeur_complete_required);
352			        chauffeur_form_submit.push(false);
353				} else {
354					// Submit
355			        chauffeur_form_submit.push(true);
356				}
357				
358				// Email validation
359				if ( chauffeur_email_validation( $(".form-email-address").val() ) == false ) {
360					// Do not submit   
361			        alert(chauffeur_valid_email);
362			        chauffeur_form_submit.push(false);
363				} else {
364					// Submit
365			        chauffeur_form_submit.push(true);
366				}
367				
368				// Phone number validation
369				if( $.isNumeric($(".form-phone-number").val()) ) {
370				    // Submit
371			        chauffeur_form_submit.push(true);
372				} else {
373					// Do not submit   
374			        alert(chauffeur_valid_phone);
375			        chauffeur_form_submit.push(false);
376				}
377				
378				// Max bags validation
379				if ( Number($(".num-bags").val()) > Number($(".selected-vehicle-bags").val()) ) {
380					// Do not submit   
381			        alert(chauffeur_valid_bags);
382			        chauffeur_form_submit.push(false);
383				} else {
384					// Submit
385			        chauffeur_form_submit.push(true);
386				}
387				
388				// Max passengers validation
389				if ( Number($(".num-passengers").val()) > Number($(".selected-vehicle-passengers").val()) ) {
390					// Do not submit   
391			        alert(chauffeur_valid_passengers);
392			        chauffeur_form_submit.push(false);
393				} else {
394					// Submit
395			        chauffeur_form_submit.push(true);
396				}
397				
398				if( chauffeur_terms_set == 'true' ) {
399				
400					if( $('.terms_and_conditions').is(':checked') == false ) {
401				        alert(chauffeur_terms);
402				        return false;
403			        }
404				
405				}
406				
407			}
408			
409			// Submit
410			if ( $.inArray(false, chauffeur_form_submit) !== -1 ) {
411
412				// Do not submit
413				
414			} else {
415				
416				// Submit
417				
418				// Add form data into array
419				var $form1 = $(this).closest('.booking-form-1');
420				var formData1 = $form1.serializeArray();
421				formData1.push({
422				    name: this.name,
423				    value: this.value
424				});
425
426				// Post form via AJAX
427				$.ajax({
428					type: 'POST',
429					url: AJAX_URL,
430					data: formData1,
431					dataType: 'json',
432					success: function(response) {
433						
434						// Fade divs and add loading image between booking steps
435						$('.widget-booking-form-wrapper, .booking-step-intro, .full-booking-wrapper-3, .select-vehicle-wrapper, .trip-details-wrapper').css('opacity','1');
436						
437						// AJAX success response
438						if (response.status == 'success') {
439							$('.booking-form-1')[0].reset();
440						}
441
442						// Display outside in divs
443						$('.booking-step-wrapper').html(response.booking_step_wrapper);
444						$('.booking-form-content').html(response.booking_form_content);
445
446						// Load prettyPhoto in response
447						$("a[data-gal^='prettyPhoto']").prettyPhoto();  
448
449						// Scroll to top for each booking step
450						$('html,body').animate({
451						   scrollTop: $(".booking-step-wrapper").offset().top
452						});
453
454						// Add selected vehicle data in hidden fields
455						$(".select-vehicle-wrapper").on('click', '.vehicle-section', function () {
456
457							$('.vehicle-section').removeClass("selected-vehicle");
458							$(this).toggleClass("selected-vehicle");	
459							$('.selected-vehicle-price').val( $(this).attr('data-price') );
460							$('.selected-vehicle-name').val( $(this).attr('data-title') );
461							
462							$('.selected-vehicle-bags').val( $(this).attr('data-bags') );
463							$('.selected-vehicle-passengers').val( $(this).attr('data-passengers') );
464							
465						});
466
467					}
468
469				});
470				
471				// Fade divs and add loading image between booking steps
472				$('.widget-booking-form-wrapper, .booking-step-intro, .full-booking-wrapper-3, .select-vehicle-wrapper, .trip-details-wrapper').css('opacity','0.3');
473				
474			}
475			
476		}
477	
478	});
479
480});

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.