PageSourceSearch

https://57hours.com/wp-content/themes/57hours/woocommerce/myaccoun…/myaccount-script.js?ver=20260930114435

js 57hours.com collected 2026-10-02 06:17:45 UTC 10,549 bytes, 329 lines download raw bytes

1(function( $ ) {
2	'use strict';
3
4	$(function(){
5		$('.js-user-photo-update-trigger').click(function(e){
6			e.preventDefault();
7			$('#f7h-wc-myaccount-personal-info-user-photo-upload').click();
8		});
9
10		$('#f7h-wc-myaccount-personal-info-user-photo-upload').on('change', function() {
11		  var file = $(this)[0].files[0];
12		  var reader = new FileReader();
13		  reader.onload = function(e) {
14		  	if ($('.myaccount-user-info-photo-placeholder') !== 'undefined') {
15		  		$('.myaccount-user-info-photo-placeholder').hide();
16		  	}
17			$('#myaccount-user-info-photo-update').css('background', 'url(' + e.target.result + ') center/cover no-repeat');
18		  }
19		  reader.readAsDataURL(file);
20		});
21
22		// Update user personal info
23		$('#fifty7hours_update_firebase_client').validate({
24			errorClass: "error",
25			errorElement: "div",
26			rules: {
27				first_name: {
28					required: true
29				},
30				last_name: {
31					required: true
32				},
33				phone: {
34					required: true,
35					phoneIntl: true
36				}
37			},
38			messages: {
39				first_name: {
40					required: "Required"
41				},
42				last_name: {
43					required: "Required"
44				},
45				phone: {
46					required: "Required",
47				}
48			},
49			submitHandler: function(form) {
50				$(form).addClass('is-loading');
51				form.submit();
52			}
53		});
54
55		// Info box close button
56		$(".js-myaccount-hide-message").click(function(){
57			$(this).closest('.woocommerce-message').fadeOut(350);
58		});
59
60		// Get user bookings (active & past) for 1st page
61		if ($('.f-myaccount-user-bookings').length !== 0) {
62			$.post(f7h_register_user_ajax_obj.ajax_url, {
63				action: "fifty7hours_get_user_bookings",
64			}, function(response) {
65				if (true === response.success) {
66					$('.f-myaccount-user-bookings').removeClass('is-first-load').removeClass('is-loading');
67
68					if (response.data.all != null) {
69						$('.f-myaccount-user-bookings-header .has-results').show();
70						$('.f-myaccount-user-bookings-header .no-results').hide();
71						$('.js-f-myaccount-user-bookings-result').append(response.data.all);
72
73						//if has next page - show navigation
74						if ($('.f7h-wc-myaccount-bookings-page-content').data('next') != '') {
75							$('.f-myaccount-user-bookings-nav').show();
76						}
77					} else {
78						$('.f-myaccount-user-bookings-header .has-results').hide();
79						$('.f-myaccount-user-bookings-header .no-results').show();
80						$('.f-myaccount-user-bookings').addClass('no-results');
81					}
82				} else {
83					console.log("Error: " + response.data);
84				}
85			});
86		}
87
88
89		// Back to all bookings - button
90		$('.f7h_back_to_all_booking').click(function(e){
91			e.stopPropagation();
92			e.preventDefault();
93
94			var bookingsContainer = $('.f-myaccount-user-bookings');
95			var singleBookingContainer = $('.f-myaccount-user-single-booking');
96
97			singleBookingContainer.fadeOut(350, function() {
98
99				bookingsContainer.fadeIn(350);
100
101				// Clear on Booking_info content (specific booking page)
102				$('#f7h_myaccount_one_booking_info_container').html('');
103				// remove ?booking= from URL
104				appendQueryVarsStringToUrl('', 'My account | Bookings');
105			});
106		});
107
108		// if there is a booking_id in URL - show specific booking info
109		if ( getQueryParam( 'booking' ) !== false ) {
110			const bookingId = getQueryParam( 'booking' );
111			getSingleBooking(bookingId);
112		}
113
114
115		// Get booking info (one specific booking)
116		$(document).on('click', '.js-view-single-booking', function(e){
117			e.stopPropagation();
118
119			$('.f-myaccount-user-bookings').addClass('is-loading');
120			const bookingId = $(this).data('id');
121
122			getSingleBooking(bookingId);
123		});
124
125		function getSingleBooking(bookingId) {
126			$.post(f7h_register_user_ajax_obj.ajax_url, {
127				action: "fifty7hours_get_booking_info_form",
128				wp_nonce: $('input[name="f7h_booking_info_nonce"]').val(),
129				booking_id: bookingId
130			}, function(response) {
131				window.scrollTo({ top: 0, behavior: 'smooth' });
132				if (true === response.success) {
133					$('.f-myaccount-user-bookings').removeClass('is-loading').hide();
134					$('.f-myaccount-user-single-booking').show();
135					$('#f7h_myaccount_one_booking_info_container').show();
136					$('#f7h_myaccount_one_booking_info_container').append(response.data);
137
138					// add ?booking_id= to URL
139					appendQueryVarsStringToUrl('?booking=' + bookingId, 'My account | Booking info');
140                    // trigger event that booking info is loaded
141                    $(document).trigger('f7hBookingInfoLoaded', [bookingId]);
142				} else {
143					// Hide loading spinner
144					$('.f7h-wc-myaccount-bookings-content-container').css({'opacity': '1', 'pointer-events': 'auto'});
145					$('.f7h-wc-myaccount-bookings-btn-container').css({'opacity': '1', 'pointer-events': 'auto'});
146					$('.f7h-myaccount-loading-spinner-container').hide();
147				}
148			});
149		}
150
151
152		// My bookings - previous / next links
153		// Next link
154		$('.js-fetch-bookings-next').click(function(){
155			var btnClicked = $(this);
156			var bookingsContainer = $('.f-myaccount-user-bookings');
157			var navContainer = $('.f-myaccount-user-bookings-nav');
158			var pageType = navContainer.data('type');
159			var pageNum = navContainer.data('page');
160			var maxPages = navContainer.data('max');
161
162			bookingsContainer.addClass('is-loading');
163
164			var pageNumNext = pageNum + 1;
165			var nextLink = $('.f7h-wc-myaccount-bookings-page-content[data-page="'+pageNum+'"][data-type="'+pageType+'"]').data('next');
166			var pageBookings = $('.f7h-wc-myaccount-bookings-page-content[data-page="'+pageNumNext+'"][data-type="'+pageType+'"]').children('.js-view-single-booking');
167
168			if (nextLink != '' && pageBookings.length == 0) {
169				$.post(f7h_register_user_ajax_obj.ajax_url, {
170					action: "fifty7hours_get_next_link_bookings",
171					nextLink: nextLink,
172					bookingType: pageType,
173					pageNum: pageNum
174				}, function(response) {
175					if (true === response.success) {
176
177						$('.f7h-wc-myaccount-bookings-page-content[data-page="'+pageNum+'"][data-type="'+pageType+'"]').after(response.data);
178
179						$('.f7h-wc-myaccount-bookings-page-content[data-page="'+pageNum+'"][data-type="'+pageType+'"]').hide();
180						$('.f7h-wc-myaccount-bookings-page-content[data-page="'+pageNumNext+'"][data-type="'+pageType+'"]').show();
181						window.scrollTo({ top: 0, behavior: 'smooth' });
182
183						var nextPageNextLink = $('.f7h-wc-myaccount-bookings-page-content[data-page="'+pageNumNext+'"][data-type="'+pageType+'"]').data('next');
184
185						if (nextPageNextLink == '') {
186							btnClicked.addClass('disabled');
187						}
188
189						bookingsContainer.removeClass('is-loading');
190					} else {
191						console.log("Error: " + response.data);
192					}
193				});
194			} else {
195				$('.f7h-wc-myaccount-bookings-page-content[data-page="'+pageNum+'"][data-type="'+pageType+'"]').fadeOut(350, function() {
196					$('.f7h-wc-myaccount-bookings-page-content[data-page="'+pageNumNext+'"][data-type="'+pageType+'"]').fadeIn(350);
197				});
198
199				var nextPageNextLink = $('.f7h-wc-myaccount-bookings-page-content[data-page="'+pageNumNext+'"][data-type="'+pageType+'"]').data('next');
200
201				if (nextPageNextLink == '') {
202					$(this).addClass('disabled');
203				}
204
205				bookingsContainer.removeClass('is-loading');
206			}
207
208			navContainer.data('page', pageNumNext);
209			$('.js-fetch-bookings-prev').removeClass('disabled');
210		});
211
212		// Previous link
213		$('.js-fetch-bookings-prev').click(function(){
214			var navContainer = $('.f-myaccount-user-bookings-nav');
215			var pageType = navContainer.data('type');
216			var pageNum = navContainer.data('page');
217			var maxPages = navContainer.data('max');
218
219			var previousPage = pageNum - 1;
220
221			if (previousPage > 0) {
222
223				$('.f7h-wc-myaccount-bookings-page-content[data-page="'+pageNum+'"][data-type="'+pageType+'"]').fadeOut(350, function() {
224					$('.f7h-wc-myaccount-bookings-page-content[data-page="'+previousPage+'"][data-type="'+pageType+'"]').fadeIn(350);
225				});
226
227				navContainer.data('page', previousPage);
228
229				if (previousPage == 1) {
230					$(this).addClass('disabled');
231				}
232			}
233
234			$(this).next('.js-fetch-bookings-next').removeClass('disabled');
235		});
236
237
238		// Update user newsletter subscription buttons
239		// Subscribe
240		$('.js-newsletter-subscribe, .js-newsletter-unsubscribe').click(function(){
241			$(this).addClass('is-loading');
242			$('#fifty7hours_update_client_newsletter_subscription').submit();
243		});
244
245
246		$('.js-f7h-myaccount-navigation__trigger').on( 'click', function( element ) {
247			$(this).toggleClass('is-active');
248			$('.f7h-myaccount-navigation-list').slideToggle('fast');
249		});
250
251
252		$('.js-f7h-myaccount-navigation__trigger__text').html($('.woocommerce-MyAccount-navigation-link.is-active a').text());
253
254		var bar = document.getElementById('f7h-myaccount-navigation');
255
256		if (bar) {
257			var startProductBarPos=-1;
258			window.onscroll=function(){
259				if( startProductBarPos < 0) {
260					startProductBarPos=findPosY(bar);
261				}
262
263				if(pageYOffset > startProductBarPos){
264					bar.classList.add('is-sticky');
265				} else {
266					bar.classList.remove('is-sticky');
267				}
268			};
269		}
270
271		function findPosY(obj) {
272			var curtop = 0;
273			if (typeof (obj.offsetParent) != 'undefined' && obj.offsetParent) {
274				while (obj.offsetParent) {
275				  curtop += obj.offsetTop;
276				  obj = obj.offsetParent;
277				}
278				curtop += obj.offsetTop;
279			} else if (obj.y) {
280				curtop += obj.y;
281			}
282
283			return curtop;
284		}
285
286            $(document).on('f7hBookingInfoLoaded', function(){
287                const accordions = document.querySelectorAll('.accordion-container');
288
289                if (accordions.length > 0) {
290                    accordions.forEach((accordion) => {
291                        const accordionSettings = {
292                            duration: 400,
293                            showMultiple: true
294                        };
295
296                        const maybeOpenOnInit = $(accordion).data('open-on-init');
297                        if (typeof(maybeOpenOnInit) !== 'undefined') {
298                            accordionSettings.openOnInit = maybeOpenOnInit;
299                        }
300
301                        new Accordion(accordion, accordionSettings);
302                    });
303                }
304            });
305	});
306
307})( jQuery );
308
309
310function appendQueryVarsStringToUrl( queryVarsStr, title ) {
311	let url = window.location.protocol + "//" + window.location.host + window.location.pathname;
312
313	let fullUrl = url + queryVarsStr;
314
315	let stateObj = {
316		location: fullUrl
317	}
318
319	history.replaceState( stateObj, title, fullUrl );
320}
321
322function getQueryParam( queryParam ) {
323	let urlSearchParams = new URLSearchParams( window.location.search );
324	let param = urlSearchParams.get( queryParam );
325
326	if ( param !== null && param !== '' ) return param;
327
328	return false
vendor: 4 bytes, lines 328-329
328;
329}

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.