PageSourceSearch

https://mra-inc.jp/wp-content/plugins/booking-package/js/Member.js?ver=1.7.28&date=1791197766

js mra-inc.jp collected 2026-10-05 10:57:25 UTC 86,777 bytes, 1,972 lines download raw bytes

1/* globals I18n */
2/* globals Booking_App_Calendar */
3/* globals Booking_App_ObjectsControl */
4/* globals Booking_App_XMLHttp */
5/* globals Booking_manage */
6/* globals Booking_Package_Input */
7/* Booking_Package_Elements */
8    
9    function Booking_Package_Member(prefix, plugin_name, calendarAccount, setting, subscription, url, nonce, action, reservation_info, booking_package_dictionary, debug) {
10        
11        var object = this;
12        this._debug = debug;
13        this._console = {};
14        this._console.log = debug.getConsoleLog();
15        
16        this._i18n = new I18n(null);
17        this._i18n.setDictionary(booking_package_dictionary);
18        this._booking_package_dictionary = booking_package_dictionary;
19        this._prefix = prefix;
20        this._plugin_name = plugin_name;
21        this._calendarAccount = calendarAccount;
22        this._setting = setting;
23        this._reservation_info = reservation_info;
24        this._subscriptions = subscription;
25        //this._subscriptions = null;
26        this._url = url;
27        this._nonce = nonce;
28        this._wp_rest_nonce = null;
29        this._action = action;
30        this._function = {name: "root", post: {}};
31        this._top = 0;
32        this._calendarAccountList = {};
33        this._bookingVerificationCode = false;
34        if (parseInt(this._setting.check_email_for_member) == 1) {
35            
36            this._bookingVerificationCode = true;
37            
38        }
39        this._locale = reservation_info.locale;
40        this._numberFormatter = false;
41        if (parseInt(reservation_info.numberFormatter) === 1) {
42            
43            this._numberFormatter = true;
44            
45        }
46        
47        if (reservation_info.wp_rest_nonce != null) {
48            
49            this._wp_rest_nonce = reservation_info.wp_rest_nonce;
50            
51        }
52        
53        this._currency = reservation_info.currency;
54        this._currencies = reservation_info.currencies;
55        this._currency_info = {locale: this._locale, currency: this._currency, info: this._currencies[this._currency]};
56        this._defaultName = {'user_login': this._i18n.get('Username'), 'user_email': this._i18n.get('Email'), 'user_pass': this._i18n.get('Password')};
57        this._userFormFields = reservation_info.userFormFields;
58        object._console.log('_bookingVerificationCode = ' + this._bookingVerificationCode);
59        object._console.log('this._plugin_name = ' + this._plugin_name);
60        object._console.log(setting);
61        object._console.log(booking_package_dictionary);
62        
63        this._startOfWeek = this._calendarAccount.startOfWeek;
64        this._dateFormat = reservation_info.dateFormat;
65        this._positionOfWeek = reservation_info.positionOfWeek;
66        this._positionTimeDate = reservation_info.positionTimeDate;
67        this._googleReCAPTCHA = reservation_info.googleReCAPTCHA;
68        this._googleReCAPTCHA_token = null;
69        this._hCaptcha = reservation_info.hCaptcha;
70        this._hCaptcha_token = null;
71        this._lockBookingButton = false;
72        object._console.log(this._googleReCAPTCHA);
73        object._console.log(this._hCaptcha);
74        this._weekName = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
75        this._calendar = new Booking_App_Calendar(this._weekName, this._dateFormat, this._positionOfWeek, this._positionTimeDate, this._startOfWeek, this._i18n, this._debug);
76        this._servicesControl = new Booking_App_ObjectsControl(reservation_info, booking_package_dictionary);
77        this._calendar.setClock(reservation_info.clock);
78        //this._hotel = new Hotel(this._currency, this._weekName, this._dateFormat, this._positionOfWeek, this._startOfWeek, booking_package_dictionary, this._debug);
79        this._booking_manage = new Booking_manage(reservation_info, booking_package_dictionary);
80        this._input = new Booking_Package_Input(this._debug);
81        this._element = new Booking_Package_Elements(this._debug);
82        for (var key in reservation_info.calendarAccountList) {
83            
84            var account = reservation_info.calendarAccountList[key];
85            object._calendarAccountList[parseInt(account.key)] = account;
86            
87        }
88        
89        for (var i = 0; i < this._userFormFields.length; i++) {
90            
91            const field = this._userFormFields[i];
92            if (this._defaultName.hasOwnProperty(field.id) === true) {
93                
94                field.name = this._defaultName[field.id];
95                
96            }
97            
98            
99        }
100        
101    }
102    /**
103    Booking_Package_Member.prototype.setBookingVerificationCode = function(bookingVerificationCode) {
104        
105        var object = this;
106        object._console.log("bookingVerificationCode = " + bookingVerificationCode);
107        if (bookingVerificationCode == 0) {
108            
109            object._bookingVerificationCode = false;
110            
111        }
112        
113    }
114    **/
115    Booking_Package_Member.prototype.setFunction = function(name, post){
116        
117        this._function = {name: name, post: post};
118        
119    }
120    
121    Booking_Package_Member.prototype.getFunction = function(){
122        
123        return this._function;
124        
125    }
126    
127    Booking_Package_Member.prototype.setTop = function(top) {
128        
129        this._top = top;
130        
131    }
132    
133    Booking_Package_Member.prototype.setSubscription = function(subscriptions){
134        
135        this._subscriptions = subscriptions;
136        
137    }
138    
139    Booking_Package_Member.prototype.setNewNonce = function(data) {
140        
141        if (data.new_nonce != null) {
142            
143            this._nonce = data.new_nonce;
144            
145        }
146        
147    }
148    
149    Booking_Package_Member.prototype.setGoogleReCAPTCHA = function(id, parentID, postion) {
150        
151        var object = this;
152        var parentPanel = document.getElementById(parentID);
153        var oldPanel = document.getElementById(id);
154        if (oldPanel != null) {
155            
156            parentPanel.removeChild(oldPanel);
157            
158        }
159        
160        var captchaElement = document.createElement('p');
161        captchaElement.id = id;
162        captchaElement.setAttribute('class', 'row row_reCAPTCHA g-recaptcha');
163        captchaElement.setAttribute('data-callback', 'reCAPTCHA_by_google_for_booking_package');
164        captchaElement.setAttribute('data-expired-callback', 'expired_reCAPTCHA_by_google_for_booking_package');
165        captchaElement.setAttribute('data-error-callback', 'error_reCAPTCHA_by_google_for_booking_package');
166        //parentPanel.appendChild(captchaElement);
167        parentPanel.insertAdjacentElement(postion, captchaElement);
168        object._console.log(captchaElement);
169        
170        var timer = setInterval(function(){
171            
172            object._googleReCAPTCHA.reCaptcha = grecaptcha.render(
173                id,
174                {
175                    sitekey: object._googleReCAPTCHA.key,
176                }
177            );
178            clearInterval(timer);
179            
180        }, 500);
181        
182        
183    }
184    
185    Booking_Package_Member.prototype.memberOperation = function(top){
186        
187        var object = this;
188        object._top = top;
189        var calendarAccount = object._calendarAccount;
190        var memberSetting = object._setting;
191        var subscriptions = object._subscriptions;
192        object._console.log(memberSetting);
193        object._console.log(calendarAccount);
194        object._console.log(subscriptions);
195        object.hiddenLoginErrorMessage();
196        
197        if (parseInt(memberSetting.function_for_member) == 1) {
198            
199            /**
200            var user_status_field = document.getElementById("booking-package-user_status_field");
201            user_status_field.textContent = null;
202            user_status_field.classList.add("hidden_panel");
203            **/
204            
205            document.getElementById('booking-package-user-profile').textContent = null;
206            var myBookingDetailsFroVisitor = document.getElementById('booking-package_myBookingDetailsFroVisitor');
207            var login = document.getElementById("booking-package-login");
208            var logout = document.getElementById("booking-package-logout");
209            var register = document.getElementById("booking-package-register");
210            var edit = document.getElementById("booking-package-edit");
211            var bookingHistory = document.getElementById("booking-package-bookedHistory");
212            var delete_button = document.getElementById("booking-package-edit_user_delete_button");
213            var subscribed = document.getElementById("booking-package-subscribed");
214            
215            var edit_form = document.getElementById('booking-package-user-edit-form');
216            var login_form = document.getElementById("booking-package-loginform");
217            var user_form = document.getElementById("booking-package-user-form");
218            var subscription_form = document.getElementById("booking-package-subscription_form");
219            var subscribed_panel = document.getElementById("booking-package-subscribed_panel");
220            var booking_calendar = document.getElementById("booking-package");
221            var myBookingHistory = document.getElementById("booking-package_myBookingHistory");
222            var myBookingDetails = document.getElementById("booking-package_myBookingDetails");
223            var login_submit = login_form.getElementsByClassName("login-submit")[0];
224            var login_input = login_submit.getElementsByTagName("input");
225            //var pElements = login_form.getElementsByClassName("login-submit")[0];
226            
227            const activeChildren = login_form.querySelectorAll('.login-username, .login-password, .login-remember');
228            activeChildren.forEach(child => {
229                
230                const className = child.getAttribute('class');
231                let label = null;
232                let inputElement = null;
233                if (className === 'login-username' || className === 'login-password') {
234                    
235                    label = child.children[0].textContent;
236                    inputElement = child.children[1];
237                    let namePanel = object.create('div', label, null, null, null, className + ' name', null);
238                    let valuePanel = object.create('div', null, [inputElement], null, null, 'value', null);
239                    let rowPanel = object.create('div', null, [namePanel, valuePanel], null, null, 'row', null);
240                    login_form.appendChild(rowPanel);
241                    
242                } else {
243                    
244                    label = child.children[0];
245                    let rowPanel = object.create('div', null, [label], null, null, className + ' row', null);
246                    login_form.appendChild(rowPanel);
247                    
248                }
249                
250                if (child.parentNode === login_form) {
251                    
252                    login_form.removeChild(child);
253                    
254                }
255                
256            });
257            login_form.appendChild(login_submit);
258            
259            var register_user_button = document.getElementById("booking-package-register_user_button");
260            if (document.getElementById("wp-submit") != null) {
261                
262                document.getElementById("wp-submit").classList.add('login_button');
263                
264                
265            }
266            
267            var login_button = null;
268            login_submit.id = object._prefix + 'login_submit';
269            
270            if (object._googleReCAPTCHA.key != null && object._googleReCAPTCHA.key.length > 0) {
271                
272                if (object._googleReCAPTCHA.v == 'v2') {
273                    
274                    object.setGoogleReCAPTCHA(object._prefix + 'reCAPTCHA_for_login', object._prefix + 'login_submit', 'beforebegin');
275                    object.setGoogleReCAPTCHA(object._prefix + 'reCAPTCHA_for_register', 'booking-package-register_user_button', 'beforebegin');
276                    
277                } else {
278                    
279                    var reCAPTCHA = document.createElement('input');
280                    reCAPTCHA.id = object._prefix + 'reCAPTCHA_login';
281                    reCAPTCHA.type = 'hidden';
282                    reCAPTCHA.name = 'action_login';
283                    reCAPTCHA.value = 'reCAPTCHA_login_v3';
284                    login_form.appendChild(reCAPTCHA);
285                    
286                }
287                
288            }
289            
290            if (object._hCaptcha.status === true) {
291                
292                var hCaptcha = document.createElement('div');
293                hCaptcha.id = object._prefix + 'hCaptcha_for_login';
294                hCaptcha.setAttribute('class', 'row row_reCAPTCHA g-recaptcha');
295                hCaptcha.setAttribute('data-sitekey', object._hCaptcha.key);
296                hCaptcha.setAttribute('data-theme', object._hCaptcha.theme);
297                hCaptcha.setAttribute('data-size', object._hCaptcha.size);
298                hCaptcha.setAttribute('data-callback', 'hCaptcha_for_booking_package');
299                hCaptcha.setAttribute('data-expired-callback', 'expired_hCaptcha_for_booking_package');
300                hCaptcha.setAttribute('data-error-callback', 'error_hCaptcha_for_booking_package');
301                login_submit.insertAdjacentElement('beforebegin', hCaptcha);
302                /**
303                hcaptcha.render(
304                    object._prefix + 'hCaptcha_for_login', 
305                    {
306                        sitekey: object._hCaptcha.key, 
307                        size: object._hCaptcha.size, 
308                        theme: object._hCaptcha.theme,
309                    }
310                );
311                **/
312                var hCaptcha_for_register = document.createElement('div');
313                hCaptcha_for_register.id = object._prefix + 'hCaptcha_for_register';
314                hCaptcha_for_register.setAttribute('class', 'row row_reCAPTCHA g-recaptcha');
315                hCaptcha_for_register.setAttribute('data-sitekey', object._hCaptcha.key);
316                hCaptcha_for_register.setAttribute('data-theme', object._hCaptcha.theme);
317                hCaptcha_for_register.setAttribute('data-size', object._hCaptcha.size);
318                hCaptcha_for_register.setAttribute('data-callback', 'hCaptcha_for_booking_package');
319                hCaptcha_for_register.setAttribute('data-expired-callback', 'expired_hCaptcha_for_booking_package');
320                hCaptcha_for_register.setAttribute('data-error-callback', 'error_hCaptcha_for_booking_package');
321                register_user_button.insertAdjacentElement('beforebegin', hCaptcha_for_register);
322                /**
323                hcaptcha.render(
324                    object._prefix + 'hCaptcha_for_register', 
325                    {
326                        sitekey: object._hCaptcha.key, 
327                        size: object._hCaptcha.size, 
328                        theme: object._hCaptcha.theme,
329                    }
330                );
331                **/
332                
333                var timer = setInterval(function(){
334                    
335                    object._hCaptcha.hCaptchaID_login = hcaptcha.render(
336                        object._prefix + 'hCaptcha_for_login', 
337                        {
338                            sitekey: object._hCaptcha.key, 
339                            size: object._hCaptcha.size, 
340                            theme: object._hCaptcha.theme,
341                        }
342                    );
343                    
344                    object._hCaptcha.hCaptchaID_register = hcaptcha.render(
345                        object._prefix + 'hCaptcha_for_register', 
346                        {
347                            sitekey: object._hCaptcha.key, 
348                            size: object._hCaptcha.size, 
349                            theme: object._hCaptcha.theme,
350                        }
351                    );
352                    clearInterval(timer);
353                    
354                }, 500);
355                
356                object.lockBooking(true, null, 'hCaptcha');
357                
358            }
359            
360            
361            object._console.log(login_input);
362            for (var i = 0;
362 i < login_input.length; i++) {
363                
364                var input = login_input[i];
365                if (input.type == "submit") {
366                    
367                    login_button = input;
368                    input.value = object._i18n.get("Sign In");
369                    object._console.log(input);
370                    object._console.log(object._booking_package_dictionary);
371                    break;
372                    
373                }
374                
375            }
376            
377            var inputFields = [...login_form.getElementsByTagName('input'), ...user_form.getElementsByTagName('input'), ...edit_form.getElementsByTagName('input')];
378            for (var i = 0; i < inputFields.length; i++) {
379                
380                var input = inputFields[i];
381                if (input.type == 'text' || input.type == 'password') {
382                    
383                    input.classList.add('form_text');
384                    
385                }
386                
387            }
388            
389            var pluginName = document.getElementById(this._prefix + "pluginName");
390            if(pluginName == null){
391                
392                pluginName = document.createElement("input");
393                pluginName.id = this._prefix + "pluginName";
394                pluginName.type = "hidden";
395                pluginName.name = "pluginName";
396                pluginName.value = "booking-package";
397                login_form.appendChild(pluginName);
398                
399            }
400            
401            if(parseInt(subscriptions.subscribed) == 1){
402                
403                subscription_form = null;
404                //subscribed_panel = null;
405                
406            }
407            
408            if(subscriptions.status == 0){
409                
410                subscribed.classList.add("hidden_panel");
411                subscribed = document.createElement("div");
412                
413            }
414            
415            var login_error_panel = document.createElement('p');
416            login_error_panel.setAttribute('class', 'login_error hidden_panel');
417            login_form.insertAdjacentElement('afterbegin', login_error_panel);
418            
419            var login_close_button = document.createElement('div');
420            
421            if (parseInt(memberSetting.reject_non_membder) == 0) {
422                
423                login_close_button.setAttribute('class', 'material-icons closeButton');
424                login_close_button.textContent = 'close';
425                login_form.insertAdjacentElement('afterbegin', login_close_button);
426                
427            }
428            
429            if (parseInt(memberSetting.lost_password) == 1) {
430                
431                const lost_password = document.createElement('a');
432                lost_password.textContent = object._i18n.get('Lost your password?');
433                lost_password.href = memberSetting.lost_password_url;
434                login_form.appendChild(lost_password);
435                
436            }
437            
438            login_form.onsubmit = function(event) {
439                
440                event.preventDefault();
441                object._console.log(this);
442                var user_login = document.getElementById('user_login').value;
443                var user_password = document.getElementById('user_pass').value;
444                var remember = 0;
445                if (document.getElementById('rememberme').checked == 1) {
446                    
447                    remember = 1;
448                    
449                }
450                
451                
452                if (user_login.length == 0 || user_password.length == 0) {
453                    
454                    return false;
455                    
456                }
457                    
458                var post = {mode: 'user_login_for_frontend', booking_package_nonce: object._nonce, booking_package_wp_rest_nonce: object._wp_rest_nonce, plugin_name: object._plugin_name, action: object._action, user_login: user_login, user_password: user_password, remember: remember, plugin: 'booking-package'};
459                var sendToServer = function() {
460                    
461                    object._console.log(post);
462                    var bookingBlockPanel = document.getElementById("bookingBlockPanel");
463                    bookingBlockPanel.classList.remove("hidden_panel");
464                    new Booking_App_XMLHttp(object._url, post, false, function(response) {
465                        
466                        object.setNewNonce(response);
467                        if (response.status == 'success') {
468                            
469                            window.location.href = object._reservation_info.permalink;
470                            
471                        } else {
472                            
473                            login_error_panel.classList.remove('hidden_panel');
474                            login_error_panel.textContent = null;
475                            login_error_panel.insertAdjacentHTML('afterbegin', response.message);
476                            var links = login_error_panel.getElementsByTagName('a');
477                            if (links.length > 0) {
478                                
479                                for (var i = 0; i < links.length; i++) {
480                                    
481                                    var link = links[i];
482                                    object._console.log(link);
483                                    if (link.search.length == 0) {
484                                        
485                                        link.search += '?plugin=booking-package';
486                                        
487                                    } else {
488                                        
489                                        link.search += '&plugin=booking-package';
490                                        
491                                    }
492                                    
493                                    object._console.log(link.search);
494                                    
495                                }
496                                
497                            }
498                            
499                            if (object._hCaptcha.status === true) {
500                                
501                                object.lockBooking(true, null, 'hCaptcha');
502                                hcaptcha.reset(object._hCaptcha.hCaptchaID_login);
503                                
504                            }
505                            
506                            if (object._googleReCAPTCHA.status === true && object._googleReCAPTCHA.v == 'v2') {
507                                
508                                object.lockBooking(true, null, 'ReCAPTCHA');
509                                document.getElementById('booking-package-loginform').removeChild(document.getElementById(object._prefix + 'reCAPTCHA_for_login'));
510                                object.setGoogleReCAPTCHA(object._prefix + 'reCAPTCHA_for_login', object._prefix + 'login_submit', 'beforebegin');
511                                
512                            }
513                            
514                        }
515                        
516                        bookingBlockPanel.classList.add("hidden_panel");
517                        
518                    });
519                    
520                };
521                
522                if (object._googleReCAPTCHA.key != null && object._googleReCAPTCHA.key.length > 0) {
523                    
524                    if (object._googleReCAPTCHA.v == 'v2') {
525                        
526                        if (object._lockBookingButton === false) {
527                            
528                            post.googleReCaptchaToken = object._googleReCAPTCHA_token;
529                            sendToServer();
530                            
531                        }
532                        
533                    } else if (object._googleReCAPTCHA.v == 'v3') {
534                        
535                        grecaptcha.ready(function() {
536                            grecaptcha.execute(object._googleReCAPTCHA.key, {action:'reCAPTCHA_login_v3'}).then(function(token) {
537                                
538                                //object.lockBooking(false, token);
539                                post.googleReCaptchaToken = token;
540                                sendToServer();
541                                
542                            });
543                        });
544                        
545                    }
546                    
547                } else if (object._hCaptcha.status === true) {
548                    
549                    if (object._lockBookingButton === false) {
550                            
551                            post.hCaptcha = object._hCaptcha_token;
552                            sendToServer();
553                            
554                        }
555                    
556                } else {
557                    
558                    sendToServer();
559                    
560                }
561                
562                
563                
564                
565                
566                return false;
567                
568                
569            };
570            
571            login_close_button.onclick = function() {
572                
573                login_form.classList.add('hidden_panel');
574                login_form.classList.remove("loginform");
575                login.classList.remove('hidden_panel');
576                booking_calendar.classList.remove("hidden_panel");
577                myBookingDetailsFroVisitor.classList.add('hidden_panel');
578                
579            }
580            
581            var register_user_return_button = document.getElementById("booking-package-register_user_return_button");
582            if (parseInt(memberSetting.reject_non_membder) == 0) {
583                
584                register_user_return_button.classList.remove("hidden_panel");
585                
586            } else {
587                
588                register_user_return_button.classList.add("hidden_panel");
589                
590            }
591            
592            register_user_return_button.onclick = function(){
593                
594                user_form.classList.add("hidden_panel");
595                register.classList.remove("hidden_panel");
596                myBookingDetailsFroVisitor.classList.add('hidden_panel');
597                if (parseInt(memberSetting.visitors_registration_for_member) == 1) {
598                    
599                    login.classList.remove("hidden_panel");
600                    login_form.classList.remove("loginform");
601                    booking_calendar.classList.remove("hidden_panel");
602                    if (parseInt(memberSetting.reject_non_membder) == 1) {
603                        
604                        login.classList.add("hidden_panel");
605                        login_form.classList.add("loginform");
606                        
607                    }
608                    
609                } else {
610                    
611                    login.classList.remove("hidden_panel");
612                    booking_calendar.classList.remove("hidden_panel");
613                    
614                }
615                
616            };
617            
618            var edit_user_return_button = document.getElementById("booking-package-edit_user_return_button");
619            edit_user_return_button.classList.remove("hidden_panel");
620            edit_user_return_button.onclick = function(){
621                
622                if (subscription_form != null) {
623                    
624                    
625                    if(parseInt(subscriptions.subscribed) == 1){
626                        
627                        subscription_form.classList.add("hidden_panel");
628                        booking_calendar.classList.remove("hidden_panel");
629                        
630                    }else{
631                        
632                        
633                        subscription_form.classList.remove("hidden_panel");
634                        
635                    }
636                    
637                }
638                
639                var edit_form = document.getElementById("booking-package-user-edit-form");
640                booking_calendar.classList.remove("hidden_panel");
641                bookingHistory.classList.remove("hidden_panel");
642                edit.classList.remove("hidden_panel");
643                subscribed.classList.remove("hidden_panel");
644                edit_form.classList.add("hidden_panel");
645                myBookingDetailsFroVisitor.classList.add('hidden_panel');
646                document.getElementById("booking-package_myBookingDetails_panel").textContent = null;
647                
648            };
649            
650            var bookingHistory_close_button = document.getElementById("booking-package-bookingHistory_close_button")
651            bookingHistory_close_button.classList.remove("hidden_panel");
652            bookingHistory_close_button.onclick = function() {
653                
654                var myBookingHistory = document.getElementById("booking-package_myBookingHistory");
655                myBookingHistory.classList.add("hidden_panel");
656                myBookingDetailsFroVisitor.classList.add('hidden_panel');
657                bookingHistory.classList.remove("hidden_panel");
658                booking_calendar.classList.remove("hidden_panel");
659                document.getElementById("booking-package_myBookingDetails_panel").textContent = null;
660                
661            };
662            
663            if(memberSetting.login == 1){
664                
665                login.classList.add("hidden_panel");
666                logout.classList.remove("hidden_panel");
667                register.classList.add("hidden_panel");
668                edit.classList.remove("hidden_panel");
669                subscribed.classList.remove("hidden_panel");
670                bookingHistory.classList.remove("hidden_panel");
671                /**
672                console.error(object._userFormFields);
673                var user_login = document.getElementById("booking-package-user_login");
674                user_login.textContent = memberSetting.user_login;
675                **/
676                
677                object._userInformation = memberSetting.value;
678                
679            }else{
680                
681                login.classList.remove("hidden_panel");
682                logout.classList.add("hidden_panel");
683                edit.classList.add("hidden_panel");
684                subscribed.classList.add("hidden_panel");
685                bookingHistory.classList.add("hidden_panel");
686                
687                if (parseInt(memberSetting.visitors_registration_for_member) == 1) {
688                    
689                    register.classList.remove("hidden_panel");
690                    
691                } else {
692                    
693                    register.classList.add("hidden_panel");
694                    
695                }
696                
697                if (parseInt(memberSetting.reject_non_membder) == 1) {
698                    
699                    user_form.classList.add("hidden_panel");
700                    booking_calendar.classList.add("hidden_panel");
701                    booking_calendar.textContent = null;
702                    login_form.classList.add("loginform");
703                    login.classList.add("hidden_panel");
704                    
705                }
706                
707            }
708            
709            if(memberSetting.activation != null && memberSetting.activation.status == "success"){
710                
711                login_form.classList.remove("hidden_panel");
712                login_form.classList.add("loginform");
713                booking_calendar.classList.add("hidden_panel");
714                register.classList.add("hidden_panel");
715                login.classList.add("hidden_panel");
716                document.getElementById("user_login").textContent = memberSetting.activation.user_login;
717                
718            }
719            
720            var memberActionPanel = document.getElementById("booking-package-memberActionPanel");
721            memberActionPanel.classList.remove("hidden_panel");
722            
723            login.onclick = function() {
724                
725                object._console.log(this);
726                user_form.classList.add("hidden_panel");
727                booking_calendar.classList.add("hidden_panel");
728                login_form.classList.add("loginform");
729                login.classList.add("hidden_panel");
730                myBookingDetailsFroVisitor.classList.add('hidden_panel');
731                
732                if (parseInt(memberSetting.visitors_registration_for_member) == 1) {
733                    
734                    register.classList.remove("hidden_panel");
735                    
736                } else {
737                    
738                    register.classList.add("hidden_panel");
739                    
740                }
741                
742                object.lockBooking(false, null, 'ReCAPTCHA');
743                if (object._googleReCAPTCHA.key != null && object._googleReCAPTCHA.key.length > 0) {
744                    
745                    object.lockBooking(true, null, 'ReCAPTCHA');
746                    
747                }
748                
749                if (object._hCaptcha.status === true) {
750                    
751                    object.lockBooking(true, null, 'hCaptcha');
752                    
753                }
754                
755            };
756            
757            register.onclick = function(){
758                
759                object._console.log(this);
760                user_form.classList.remove("hidden_panel");
761                booking_calendar.classList.add("hidden_panel");
762                login_form.classList.remove("loginform");
763                login.classList.remove("hidden_panel");
764                register.classList.add("hidden_panel");
765                myBookingDetailsFroVisitor.classList.add('hidden_panel');
766                object.lockBooking(false, null, 'ReCAPTCHA');
767                if (object._googleReCAPTCHA.key != null && object._googleReCAPTCHA.key.length > 0) {
768                    
769                    object.lockBooking(true, null, 'ReCAPTCHA');
770                    
771                }
772                
773                if (object._hCaptcha.status === true) {
774                    
775                    object.lockBooking(true, null, 'hCaptcha');
776                    
777                }
778                
779            };
780            
781            if(memberSetting.login == 1){
782                
783                logout.onclick = function(){
784                    
785                    object.logout(login, logout, register, function(response){
786                        
787                    });
788                    
789                }
790                
791                bookingHistory.onclick = function(){
792                    
793                    edit.classList.remove("hidden_panel");
794                    var edit_form = document.getElementById("booking-package-user-edit-form");
795                    edit_form.classList.add("hidden_panel");
796                    object.bookingHistory_form(0, function(response) {
797                        
798                        
799                        
800                    });
801                    
802                };
803                
804                edit.onclick = function() {
805                    
806                    var edit_form = document.getElementById("booking-package-user-edit-form");
807                    var edit_user_button = document.getElementById("booking-package-edit_user_button");
808                    
809                    if (subscription_form != null) {
810                        
811                        subscription_form.classList.add("hidden_panel");
812                        
813                    }
814                    
815                    object._console.log(subscribed_panel);
816                    if (subscribed_panel != null) {
817                        
818                        subscribed_panel.classList.add("hidden_panel");
819                        
820                    }
821                    
822                    booking_calendar.classList.add("hidden_panel");
823                    subscribed.classList.add("hidden_panel");
824                    edit.classList.add("hidden_panel");
825                    bookingHistory.classList.remove("hidden_panel");
826                    myBookingHistory.classList.add("hidden_panel");
827                    myBookingDetails.classList.add("hidden_panel");
828                    myBookingDetailsFroVisitor.classList.add('hidden_panel');
829                    
830                    
831                    edit_form.classList.remove("hidden_panel");
832                    
833                    object.edit_form(memberActionPanel, edit_user_button, null, function(response) {
834                            
835                        object._console.log(response);
836                            
837                    });
838                    
839                };
840                
841                delete_button.onclick = function() {
842                    
843                    object.delete_member();
844                    
845                };
846                
847                subscribed.onclick = function() {
848                    
849                    
850                    booking_calendar.classList.add("hidden_panel");
851                    object.subscribed_form(booking_calendar, function(response) {
852                        
853                        
854                        
855                    });
856                    
857                };
858                
859            }
860            
861            object.register_form(memberActionPanel, register_user_button, null, function(response){
862                    
863                object._console.log(response);
864                
865                    
866            });
867            
868        }
869        
870    }
871    
872    Booking_Package_Member.prototype.lockBooking = function(locked, token, captcha) {
873        
874        var object = this;
875        object._console.log('locked = ' + locked);
876        object._console.log(token);
877        object._lockBookingButton = locked;
878        //object._googleReCAPTCHA_token = token;
879        if (captcha == 'ReCAPTCHA') {
880            
881            object._googleReCAPTCHA.locked = locked;
882            object._googleReCAPTCHA_token = token;
883            
884            
885        } else if (captcha == 'hCaptcha') {
886            
887            object._hCaptcha.locked = locked;
888            object._hCaptcha_token = token;
889            
890        }
891        
892        var reCAPTCHA = document.getElementById(object._prefix + 'reCAPTCHA_for_login');
893        if (reCAPTCHA != null) {
894            
895            reCAPTCHA.classList.remove('error_empty_value');
896            
897        }
898        
899    }
900    
901    Booking_Package_Member.prototype.bookingHistory_form = function(offset, callback){
902        
903        var object = this;
904        var setting = object._setting;
905        object._console.log(setting);
906        object._console.log(object._top);
907        var booking_calendar = document.getElementById("booking-package");
908        var myBookingHistory = document.getElementById("booking-package_myBookingHistory");
909        var table = document.getElementById("booking-package_myBookingHistoryTable");
910        
911        var beforButton = document.getElementById("booking-package-bookingHistory_returnButton");
912        beforButton.removeEventListener("click", null);
913        
914        var nextButton = document.getElementById("booking-package-bookingHistory_nextButton");
915        nextButton.removeEventListener("click", null);
916        
917        
918        
919        var post = {mode: 'getUsersBookedList', booking_package_nonce: object._nonce, booking_package_wp_rest_nonce: object._wp_rest_nonce, plugin_name: object._plugin_name, action: object._action, offset: offset, user_id: setting.current_member_id, locale: object._locale};
920        var bookingBlockPanel = document.getElementById("bookingBlockPanel");
921        bookingBlockPanel.classList.remove("hidden_panel");
922        new Booking_App_XMLHttp(object._url, post, false, function(response) {
923            
924            object._console.log(response);
925            object.setNewNonce(response);
926            var myBookingDetailsFroVisitor = document.getElementById('booking-package_myBookingDetailsFroVisitor');
927            myBookingDetailsFroVisitor.classList.add('hidden_panel');
928            
929            var responseOffset = 0;
930            var responseLimit = 0;
931            var nextClick = 0;
932            //table.textContent = null;
933            var ths = table.getElementsByTagName("th");
934            for (var i = 0; i < ths.length; i++) {
935                
936                ths[i].setAttribute("style", "top: " + object._top + "px;");
937                
938            }
939            
940            var trs = table.getElementsByTagName("tr");
941            for (var i = trs.length; i > 0; i--) {
942                
943                if (i > 1) {
944                    object._console.log(trs[i - 1]);
945                    table.removeChild(trs[i - 1]);
946                    
947                }
948                
949            }
950            
951            
952            document.getElementById("booking-package-bookedHistory").classList.add("hidden_panel");
953            bookingBlockPanel.classList.add("hidden_panel");
954            booking_calendar.classList.add("hidden_panel");
955            myBookingHistory.classList.remove("hidden_panel");
956            
957            if (response.status == 'success') {
958                
959                var bookedList = response.bookedList;
960                responseOffset = parseInt(response.offset);
961                responseLimit = parseInt(response.limit);
962                nextClick = parseInt(response.next);
963                
964                for (var i = 0; i < bookedList.length; i++) {
965                
966                    var userInfo = bookedList[i];
967                    object._console.log(userInfo);
968                    
969                    var tr = document.createElement("tr");
970                    tr.setAttribute("valign", "top");
971                    tr.setAttribute("data-key", i);
972                    table.appendChild(tr);
973                    
974                    var th = document.createElement("td");
975                    th.setAttribute("scope", "row");
976                    th.textContent = userInfo.key;
977                    tr.appendChild(th);
978                    
979                    var dateTd = document.createElement("td");
980                    dateTd.setAttribute("scope", "row");
981                    dateTd.textContent = object._calendar.formatBookingDate(userInfo.date.month, userInfo.date.day, userInfo.date.year, userInfo.date.hour, userInfo.date.min, userInfo.scheduleTitle, userInfo.date.week, 'text');
982                    tr.appendChild(dateTd);
983                    
984                    var accountTd = document.createElement("td");
985                    accountTd.setAttribute("scope", "row");
986                    accountTd.textContent = userInfo.accountKey;
987                    tr.appendChild(accountTd);
988                    
989                    if (object._calendarAccountList[parseInt(userInfo.accountKey)] != null) {
990                        
991                        if (object._calendarAccountList[parseInt(userInfo.accountKey)].type == 'hotel') {
992                            
993                            dateTd.textContent = object._calendar.formatBookingDate(userInfo.date.month, userInfo.date.day, userInfo.date.year, null, null, null, userInfo.date.week, 'text');
994                            
995                        } else {
996                            
997                            //dateTd.textContent = object._calendar.formatBookingDate(userInfo.date.month, userInfo.date.day, userInfo.date.year, userInfo.date.hour, userInfo.date.min, userInfo.scheduleTitle, userInfo.date.week, 'text');
998                            dateTd.textContent = null;
999                            var date = object._calendar.formatBookingDate(userInfo.date.month, userInfo.date.day, userInfo.date.year, userInfo.date.hour, userInfo.date.min, userInfo.scheduleTitle, userInfo.date.week, 'elements');
1000                            dateTd.appendChild(date.dateAndTime);
1001                            
1002                        }
1003                        
1004                        accountTd.textContent = object._calendarAccountList[parseInt(userInfo.accountKey)].name;
1005                        
1006                    }
1007                    
1008                    var status = document.createElement("div");
1009                    status.id = "booking-status-" + i;
1010                    status.setAttribute("data-status", i);
1011                    status.textContent = object._i18n.get(userInfo.status.toLowerCase());
1012                    var statusClassName = "pendingLabel";
1013                    if (userInfo.status.toLowerCase() == "approved") {
1014                        
1015                        statusClassName = "approvedLabel";
1016                        
1017                    } else if (userInfo.status.toLowerCase() == "canceled") {
1018                        
1019                        statusClassName = "canceledLabel";
1020                        
1021                    }
1022                    status.classList.add(statusClassName);
1023                    
1024                    var td = document.createElement("td");
1025                    td.classList.add("statusTd");
1026                    td.setAttribute("scope", "row");
1027                    td.appendChild(status);
1028                    tr.appendChild(td);
1029                    
1030                    tr.onclick = function(){
1031                        
1032                        var tr = this;
1033                        var key = parseInt(this.getAttribute("data-key"));
1034                        var status = document.getElementById("booking-status-" + key);
1035                        object._console.log(key);
1036                        object._console.log(bookedList[key]);
1037                        object.bookingDetails(key, bookedList[key], function(response) {
1038                            
1039                            object._console.log(response);
1040                            object._console.log(object._top);
1041                            var rect = document.getElementById("booking-package-memberActionPanel").getBoundingClientRect();
1042                            object._console.log(rect);
1043                            document.getElementById("booking-package-memberActionPanel").scrollIntoView();
1044                            if (typeof window.scrollBy == 'function') {
1045                                
1046                                window.scrollBy(0, object._top);
1047                                
1048                            }
1049                            
1050                            bookedList[key].status = 'canceled';
1051                            status.textContent = object._i18n.get('canceled');
1052                            status.classList.add("canceledLabel");
1053                            
1054                            //table.removeChild(tr);
1055                            
1056                        });
1057                        /**
1058                        object.setSelectedKey(key);
1059                        object.showUserInfo(key, bookedList[key], true, bookedList[key].accountKey, function(response){
1060                            
1061                            object._console.log(response);
1062                            if(response.status == "returnButton"){
1063                                
1064                                object.reservation_users(reservation_usersPanel, response.month, response.day, response.
1064year, calendarData, accountKey, callback);
1065                                
1066                            }
1067                            
1068                        });
1069                        **/
1070                        
1071                    };
1072                    
1073                }
1074                
1075            } else {
1076                
1077                window.location.reload(true);
1078                
1079            }
1080            
1081            
1082            
1083            beforButton.onclick = function() {
1084                
1085                offset = responseOffset - responseLimit;
1086                if (offset <= 0) {
1087                    
1088                    offset = 0;
1089                    
1090                }
1091                object._console.log("offset = " + offset);
1092                object.bookingHistory_form(offset, callback);
1093                
1094            };
1095            
1096            nextButton.onclick = function() {
1097                
1098                if (nextClick == 0) {
1099                    
1100                    return null;
1101                    
1102                }
1103                offset = responseOffset + responseLimit;
1104                object._console.log("offset = " + offset);
1105                object.bookingHistory_form(offset, callback);
1106                
1107            };
1108            
1109        });
1110        
1111    }
1112    
1113    Booking_Package_Member.prototype.bookingDetails = function(key, reservationData, callback) {
1114        
1115        var object = this;
1116        var setting = object._setting;
1117        object._console.log(reservationData);
1118        object._console.log(object._calendarAccountList);
1119        
1120        var myBookingHistory = document.getElementById("booking-package_myBookingHistory");
1121        var myBookingDetails = document.getElementById("booking-package_myBookingDetails");
1122        var infoPanel = document.getElementById("booking-package_myBookingDetails_panel");
1123        var closeButton = document.getElementById("booking-package-myBookingDetails_close_button");
1124        var cancelButton = document.getElementById("booking-package-cancelThisBooking");
1125        
1126        cancelButton.removeEventListener("click", null);
1127        var rect = myBookingHistory.getBoundingClientRect();
1128        object._console.log(rect);
1129        myBookingHistory.classList.add("hidden_panel");
1130        myBookingDetails.classList.remove("hidden_panel");
1131        infoPanel.textContent = null;
1132        
1133        var calendarAccount = object._calendarAccountList[parseInt(reservationData.accountKey)];
1134        object._console.log(calendarAccount);
1135        
1136        var bookingTimeChange = document.createElement("div");
1137        bookingTimeChange.setAttribute("data-status", "1");
1138        bookingTimeChange.setAttribute("class", "change hidden_panel");
1139        bookingTimeChange.textContent = object._i18n.get("Change");
1140        
1141        var courseChange = document.createElement("div");
1142        courseChange.setAttribute("data-status", "1");
1143        courseChange.setAttribute("class", "change hidden_panel");
1144        courseChange.textContent = object._i18n.get("Change");
1145        
1146        var response = object._booking_manage.showUserDetails(key, {account: calendarAccount, schedule: {}}, reservationData, calendarAccount.key, false, infoPanel, bookingTimeChange, courseChange, function(callback){
1147            
1148            object._console.log(callback);
1149            
1150        });
1151        
1152        if (parseInt(reservationData.cancel) == 1 && reservationData.status != 'canceled') {
1153            
1154            cancelButton.disabled = false;
1155            cancelButton.classList.remove("hidden_panel");
1156            
1157            cancelButton.onclick = function() {
1158                
1159                object._console.log(reservationData);
1160                var post = {booking_package_nonce: object._nonce, booking_package_wp_rest_nonce: object._wp_rest_nonce, plugin_name: object._plugin_name, action: object._action, mode: 'cancelUserBooking', key: reservationData.key, accountKey: reservationData.accountKey, token: reservationData.cancellationToken, status: 'canceled', user_id: setting.current_member_id, sendEmail: 1};
1161                object._console.log(post);
1162                if (window.confirm(object._i18n.get("Can we really cancel your booking?"))) {
1163                    
1164                    var bookingBlockPanel = document.getElementById("bookingBlockPanel");
1165                    bookingBlockPanel.classList.remove("hidden_panel");
1166                    new Booking_App_XMLHttp(object._url, post, false, function(response){
1167                        
1168                        object._console.log(response);
1169                        object.setNewNonce(response);
1170                        if (response.status != "error") {
1171                            
1172                            myBookingHistory.classList.remove("hidden_panel");
1173                            myBookingDetails.classList.add("hidden_panel");
1174                            
1175                            callback(true);
1176                            
1177                        } else {
1178                            
1179                            document.getElementById("booking-package_myBookingDetails_panel").textContent = null;
1180                            if (response.reload != null && parseInt(response.reload) == 1) {
1181                                
1182                                window.location.reload(true);
1183                                
1184                            } else {
1185                                
1186                                
1187                                
1188                            }
1189                            
1190                        }
1191                        bookingBlockPanel.classList.add("hidden_panel");
1192                        
1193                    });
1194                    
1195                    
1196                }
1197                
1198            };
1199            
1200        } else {
1201            
1202            cancelButton.disabled = true;
1203            cancelButton.classList.add("hidden_panel");
1204            
1205        }
1206        
1207        closeButton.removeEventListener("click", null, false);
1208        closeButton.onclick = function() {
1209            
1210            infoPanel.textContent = null;
1211            myBookingHistory.classList.remove("hidden_panel");
1212            myBookingDetails.classList.add("hidden_panel");
1213            
1214        };
1215        
1216        var returnButton = document.getElementById("booking-package-myBookingDetails_returnButton");
1217        returnButton.classList.add("hidden_panel");
1218        returnButton.removeEventListener("click", null);
1219        returnButton.onclick = function() {
1220            
1221            infoPanel.textContent = null;
1222            myBookingHistory.classList.remove("hidden_panel");
1223            myBookingDetails.classList.add("hidden_panel");
1224            
1225        };
1226        
1227    }
1228    
1229    Booking_Package_Member.prototype.subscribed_form = function(booking_c
1229alendar, callback){
1230        
1231        var object = this;
1232        var memberSetting = object._setting;
1233        var subscriptions = object._subscriptions;
1234        object._console.log(memberSetting);
1235        object._console.log(subscriptions);
1236        var subscription_form = document.getElementById("booking-package-subscription_form");
1237        var subscribed_panel = document.getElementById("booking-package-subscribed_panel");
1238        var return_button = document.getElementById("booking-package-subscribed_return_button");
1239        var edit = document.getElementById("booking-package-edit");
1240        var subscribed = document.getElementById("booking-package-subscribed");
1241        edit.classList.add("hidden_panel");
1242        subscribed.classList.add("hidden_panel");
1243        subscribed_panel.classList.remove("hidden_panel");
1244        subscription_form.classList.add("hidden_panel");
1245        
1246        var cost = new FORMAT_COST(object._i18n, object._debug, object._numberFormatter, this._currency_info);
1247        var tbody = document.getElementById("booking-package-subscribed_items");
1248        tbody.textContent = null;
1249        var subscription_list = memberSetting.subscription_list;
1250        for(var key in subscription_list){
1251            
1252            var product = subscription_list[key];
1253            var items = product.items;
1254            var currency = null;
1255            var amount = 0;
1256            object._console.log(product);
1257            for(var i = 0; i < items.length; i++){
1258                
1259                var item = items[i];
1260                currency = item.currency;
1261                amount += parseInt(item.amount);
1262                object._console.log(item);
1263                
1264            }
1265            
1266            amount = cost.formatCost(amount, currency);
1267            
1268            var amountPanel = document.createElement("div");
1269            amountPanel.textContent = object._i18n.get("%s per month", [amount]);
1270            
1271            var expirationDate = document.createElement("div");
1272            expirationDate.textContent = object._i18n.get("Expiration date: %s", [product.period_end_date]);
1273            
1274            var itemPanel = document.createElement("div");
1275            itemPanel.textContent = product.name;
1276            
1277            var itemTd = document.createElement("td");
1278            itemTd.appendChild(itemPanel);
1279            itemTd.appendChild(amountPanel);
1280            itemTd.appendChild(expirationDate);
1281            
1282            var deleteTd = document.createElement("td");
1283            deleteTd.setAttribute("data-key", key);
1284            deleteTd.setAttribute("style", "font-family: 'Material Icons' !important;");
1285            deleteTd.setAttribute("class", "material-icons delete_icon");
1286            deleteTd.textContent = "delete";
1287            
1288            var tr = document.createElement("tr");
1289            tr.id = object._prefix + key;
1290            tr.appendChild(itemTd);
1291            tr.appendChild(deleteTd);
1292            if(product.canceled != null && parseInt(product.canceled) == 1){
1293                
1294                tr.classList.add("canceled");
1295                deleteTd.setAttribute("style", "cursor: not-allowed; font-family: 'Material Icons' !important;");
1296                
1297            }
1298            
1299            
1300            tbody.appendChild(tr);
1301            
1302            deleteTd.onclick = function(){
1303                
1304                var deleteTd = this;
1305                var key = this.getAttribute("data-key");
1306                var product = subscription_list[key];
1307                object._console.log(product);
1308                if(product.canceled != null && parseInt(product.canceled) == 1){
1309                    
1310                    return null;
1311                    
1312                }
1313                
1314                if(window.confirm(object._i18n.get('If you cancel the "%s" subscription, you can not make a reservation after the deadline of %s. Do you really want to cancel the subscription?', [product.name, product.period_end_date]))){
1315                    
1316                    object.deleteSubscription(product, function(response){
1317                        
1318                        var tr = document.getElementById(object._prefix + key);
1319                        if(response.status == 1){
1320                            
1321                            subscription_list[key]['canceled'] = 1;
1322                            tr.classList.add("canceled");
1323                            deleteTd.setAttribute("style", "cursor: n
1323ot-allowed; font-family: 'Material Icons' !important;");
1324                            
1325                        }else{
1326                            
1327                            tbody.removeChild(tr);
1328                            
1329                        }
1330                        
1331                    });
1332                    
1333                }
1334                
1335            }
1336            
1337        }
1338        
1339        
1340        return_button.onclick = function(){
1341            
1342            edit.classList.remove("hidden_panel");
1343            subscribed.classList.remove("hidden_panel");
1344            subscribed_panel.classList.add("hidden_panel");
1345            
1346            if(parseInt(subscriptions.subscribed) == 1){
1347                
1348                booking_calendar.classList.remove("hidden_panel");
1349                
1350            }else{
1351                
1352                subscription_form.classList.remove("hidden_panel");
1353                
1354                
1355            }
1356            
1357        }
1358        
1359    }
1360    
1361    Booking_Package_Member.prototype.deleteSubscription = function(product, callback){
1362        
1363        var object = this;
1364        var post = {mode: 'deleteSubscription', booking_package_nonce: object._nonce, booking_package_wp_rest_nonce: object._wp_rest_nonce, plugin_name: object._plugin_name, action: object._action, product: product.product};
1365        var bookingBlockPanel = document.getElementById("bookingBlockPanel");
1366        bookingBlockPanel.classList.remove("hidden_panel");
1367        new Booking_App_XMLHttp(object._url, post, false, function(response){
1368            
1369            object._console.log(response);
1370            object.setNewNonce(response);
1371            if(parseInt(response.status) == 1){
1372                
1373                callback({stats: 1, error: null});
1374                
1375            }else{
1376                
1377                if(response.reload != null && parseInt(response.reload) == 1){
1378                    
1379                    window.location.reload();
1380                    
1381                }else{
1382                    
1383                    callback({stats: 0, error: response.error});
1384                    
1385                }
1386                
1387            }
1388            
1389            bookingBlockPanel.classList.add("hidden_panel");
1390            
1391        });
1392        
1393    }
1394    
1395    Booking_Package_Member.prototype.delete_member = function(){
1396        
1397        var object = this;
1398        object._console.log("delete_member");
1399        if(window.confirm(object._i18n.get("Do you really want to delete the license as a member?"))){
1400            
1401            var post = {mode: 'deleteUser', booking_package_nonce: object._nonce, booking_package_wp_rest_nonce: object._wp_rest_nonce, plugin_name: object._plugin_name, action: object._action};
1402            var bookingBlockPanel = document.getElementById("bookingBlockPanel");
1403            bookingBlockPanel.classList.remove("hidden_panel");
1404            new Booking_App_XMLHttp(object._url, post, false, function(response){
1405                
1406                object._console.log(response);
1407                object.setNewNonce(response);
1408                if(response.status == "success"){
1409                    
1410                    window.location.reload();
1411                    
1412                }
1413                
1414                bookingBlockPanel.classList.add("hidden_panel");
1415                
1416            });
1417            
1418        }
1419        
1420    }
1421    
1422    Booking_Package_Member.prototype.edit_form = function(mainPanel, register_user_button, return_button, callback){
1423        
1424        var object = this;
1425        object._console.log(object._setting);
1426        var setting = object._setting;
1427        const userInfo = {user_login: setting.user_login, user_email: setting.user_email};
1428        var edit_panel = document.getElementById("booking-package-user-edit-form");
1429        object._console.log(setting);
1430        var inputData = {};
1431        const formFields = JSON.parse(JSON.stringify(object._userFormFields));
1432        for (var i = 0; i < formFields.length; i++) {
1433            
1434            if (formFields[i].id === 'user_login') {
1435                
1436                formFields[i].disabled = 1;
1437                
1438            }
1439            
1440            if (formFields[i].id === 'user_pass') {
1441                
1442                formFields[i].required = 'false';
1443                
1444            }
1445            
1446        }
1447        object._console.log(formFields);
1448        const input = new Booking_Package_Input(object._debug);
1449        object._input.setPrefix(object._prefix + 'edit_form');
1450        const userProfile = object._input.changeValueForUserFormFields(formFields, JSON.parse(JSON.stringify(setting.profile)));
1451        object._console.log(userProfile);
1452        const table = object._input.createUserProfiledPanel(formFields, userProfile, inputData, 'edit_', 'div', {});
1453        object._console.log(table);
1454        const editCustomFormFieldPanel = document.getElementById('editCustomFormFieldPanel');
1455        editCustomFormFieldPanel.textContent = null;
1456        editCustomFormFieldPanel.appendChild(table);
1457        const change_password_button = object.create('button', object._i18n.get('Change Password'), null, null, null, 'change_user_password_button', null);
1458        const inputPassword = document.getElementById('booking_package_edit_forminput_user_pass');
1459        inputPassword.classList.add('hidden_panel');
1460        inputPassword.insertAdjacentElement('afterend', change_password_button);
1461        
1462        /**
1463        var user_login = document.getElementById("booking-package-user_edit_login");
1464        var user_email = document.getElementById("booking-package-user_edit_email");
1465        var user_pass = document.getElementById("booking-package-user_edit_pass");
1466        user_login.textContent = setting.user_login;
1467        
1468        var change_password_button = document.getElementById("booking-package-user_edit_change_password_button");
1469        **/
1470        
1471        
1472        change_password_button.onclick = function(){
1473            
1474            inputPassword.classList.remove("hidden_panel");
1475            change_password_button.classList.add("hidden_panel");
1476            
1477        }
1478        
1479        register_user_button.onclick = function(){
1480            
1481            
1482            const response = input.validateInputValuesForUser(formFields, inputData, 'edit_');
1483            let updata = response.updata;
1484            let customUserFields = response.customUserFields;
1485            object._console.log(response);
1486            if (updata === false) {
1487                
1488                return null;
1489                
1490            }
1491            
1492            var user_data = {
1493                user_login: document.getElementById("booking_package_edit_forminput_user_login").value,
1494                user_email: document.getElementById("booking_package_edit_forminput_user_email").value,
1495                user_pass: document.getElementById("booking_package_edit_forminput_user_pass").value,
1496            };
1497            object._console.log(user_data);
1498            
1499            if (!user_data.user_email.match(/.+@.+\..+/)) {
1500                
1501                updata = false;
1502                document.getElementById("booking_package_edit_forminput_user_email").classList.add("errorPanel");
1503                
1504            }
1505            
1506            if (user_data.user_pass.length > 0 && user_data.user_pass.length < 8) {
1507                
1508                updata = false;
1509                document.getElementById("booking_package_edit_forminput_user_pass").classList.add("errorPanel");
1510                
1511            }
1512            
1513            var post = {mode: 'updateUser', booking_package_nonce: object._nonce, booking_package_wp_rest_nonce: object._wp_rest_nonce, plugin_name: object._plugin_name, action: object._action, user_login: setting.user_login, accountKey: object._calendarAccount.key, customUserFields: JSON.stringify(customUserFields)};
1514            if (document.getElementById("booking-package-permalink") != null) {
1515                
1516                post.permalink = document.getElementById("booking-package-permalink").value;
1517                
1518            }
1519            object._console.log(post);
1520            object._console.log("updata = " + updata);
1521            if (updata == true) {
1522                
1523                post.user_email = setting.user_email;
1524                user_new_email = user_data.user_email;
1525                if (user_data.user_pass.length != 0) {
1526                    
1527                    post.user_pass = user_data.user_pass;
1528                    
1529                }
1530                
1531                object._console.log(post);
1532                post.mode = object._prefix + 'sendVerificationCode';
1533                post.booking_package_user_action = 1;
1534                object._servicesControl.sendbookingVerificationCode(object._url, object._action, object._nonce, object._wp_rest_nonce, object._plugin_name, object._prefix, post, object._bookingVerificationCode, function(response){
1535                    
1536                    if (response === true) {
1537                        
1538                        delete post.booking_package_user_action;
1539                        post.mode = 'updateUser';
1540                        post.user_email = user_new_email;
1541                        var bookingBlockPanel = document.getElementById("bookingBlockPanel");
1542                        bookingBlockPanel.classList.remove("hidden_panel");
1543                        new Booking_App_XMLHttp(object._url, post, false, function(response){
1544                            
1545                            object._console.log(response);
1546                            object.setNewNonce(response);
1547                            if (response.status == 'success') {
1548                                
1549                                window.location.reload();
1550                                
1551                            } else if (response.status == 'error') {
1552                                
1553                                window.alert(response.error_messages);
1554                                
1555                            }
1556                            bookingBlockPanel.classList.add("hidden_panel");
1557                            
1558                        });
1559                        
1560                    }
1561                    
1562                });
1563                
1564            }
1565            
1566            /**
1567            var updata = true;
1568            var user_new_email = null;
1569            user_email.parentElement.classList.remove("errorPanel");
1570            user_pass.parentElement.classList.remove("errorPanel");
1571            if(!user_email.value.match(/.+@.+\..+/)){
1572                
1573                updata = false;
1574                user_email.parentElement.classList.add("errorPanel");
1575                
1576            }
1577            
1578            if(user_pass.value.length > 0 && user_pass.value.length < 8){
1579                
1580                updata = false;
1581                user_pass.parentElement.classList.add("errorPanel");
1582                
1583            }
1584            
1585            var post = {mode: 'updateUser', booking_package_nonce: object._nonce, plugin_name: object._plugin_name, action: object._action, user_login: setting.user_login, accountKey: object._calendarAccount.key};
1586            if (document.getElementById("booking-package-permalink") != null) {
1587                
1588                post.permalink = document.getElementById("booking-package-permalink").value;
1589                
1590            }
1591            
1592            object._console.log("updata = " + updata);
1593            if (updata == true) {
1594                
1595                post.user_email = setting.user_email;
1596                user_new_email = user_email.value;
1597                if(user_pass.value.length != 0){
1598                    
1599                    post.user_pass = user_pass.value;
1600                    
1601                }
1602                object._console.log(post);
1603                
1604                var sendbookingVerificationCode = function() {
1605                    
1606                    
1607                    
1608                };
1609                
1610                post.mode = object._prefix + 'sendVerificationCode';
1611                post.booking_package_user_action = 1;
1612                object._servicesControl.sendbookingVerificationCode(object._url, object._action, object._nonce, object._plugin_name, object._prefix, post, object._bookingVerificationCode, function(response){
1613                    
1614                    if (response === true) {
1615                        
1616                        delete post.booking_package_user_action;
1617                        post.mode = 'updateUser';
1618                        post.user_email = user_new_email;
1619                        var bookingBlockPanel = document.getElementById("bookingBlockPanel");
1620                        bookingBlockPanel.classList.remove("hidden_panel");
1621                        new Booking_App_XMLHttp(object._url, post, false, function(response){
1622                            
1623                            object._console.log(response);
1624                            object.setNewNonce(response);
1625                            if (response.status == 'success') {
1626                                
1627                                window.location.reload();
1628                                
1629                            } else if (response.status == 'error') {
1630                                
1631                                window.alert(response.error_messages);
1632                                
1633                            }
1634                            bookingBlockPanel.classList.add("hidden_panel");
1635                            
1636                        });
1637                        
1638                    }
1639                    
1640                });
1641                
1642                
1643                
1644            }
1645            **/
1646            
1647        }
1648        
1649    }
1650    
1651    Booking_Package_Member.prototype.register_form = function(mainPanel, register_user_button, return_button, callback){
1652        
1653        var object = this;
1654        object._console.log("register_form");
1655        var user_regist_error_message = document.getElementById("booking-package-user_regist_error_message");
1656        user_regist_error_message.classList.add("hidden_panel");
1657        user_regist_error_message.textContent = null;
1658        
1659        var inputData = {};
1660        const formFields = JSON.parse(JSON.stringify(object._userFormFields));
1661        object._console.log(formFields);
1662        const input = new Booking_Package_Input(object._debug);
1663        object._input.setPrefix(object._prefix + 'sign_up_');
1664        const table = object._input.createUserProfiledPanel(formFields, {}, inputData, 'add_', 'div', {});
1665        object._console.log(table);
1666        const addCustomFormFieldPanel = document.getElementById('addCustomFormFieldPanel');
1667        addCustomFormFieldPanel.textContent = null;
1668        addCustomFormFieldPanel.appendChild(table);
1669        
1670        register_user_button.onclick = function() {
1671            
1672            const response = input.validateInputValuesForUser(formFields, inputData, 'add_');
1673            let updata = response.updata;
1674            let customUserFields = response.customUserFields;
1675            object._console.log(response);
1676            
1677            var registering = response.updata;
1678            
1679            
1680            var user_data = {
1681                user_login: document.getElementById("booking_package_sign_up_input_user_login").value,
1682                user_email: document.getElementById("booking_package_sign_up_input_user_email").value,
1683                user_pass: document.getElementById("booking_package_sign_up_input_user_pass").value,
1684            };
1685            
1686            var registeringErrorMessage = '';
1687            var post = {mode: 'createUser', booking_package_nonce: object._nonce, booking_package_wp_rest_nonce: object._wp_rest_nonce, plugin_name: object._plugin_name, action: object._action, accountKey: object._calendarAccount.key, user_login: user_data.user_login, user_email: user_data.user_email, user_pass: user_data.user_pass, customUserFields: JSON.stringify(customUserFields)};
1688            for (var key in user_data) {
1689                
1690                let errorPanel = null;
1691                var value = user_data[key];
1692                object._console.log(key + " = " + value);
1693                
1694                if (key == 'user_login' && (value.length < 4 || !value.match(/^[A-Za-z0-9]*$/))) {
1695                    
1696                    registering = false;
1697                    errorPanel = document.getElementById('tr_input_field_user_login');
1698                    registeringErrorMessage = object._i18n.get('Usernames can only contain lowercase letters (a-z) and numbers.');
1699                    console.error("error key = " + key + " value = " + value);
1700                    
1701                }
1702                
1703                if (key == 'user_email' && !value.match(/.+@.+\..+/)) {
1704                    
1705                    registering = false;
1706                    //panel.classList.add("errorPanel");
1707                    errorPanel = document.getElementById('tr_input_field_user_email');
1708                    registeringErrorMessage = object._i18n.get('Please enter a valid email address.');
1709                    console.error("error key = " + key + " value = " + value);
1710                    
1711                }
1712                
1713                if (key == 'user_pass' && value.length < 8) {
1714                    
1715                    registering = false;
1716                    //panel.classList.add("errorPanel");
1717                    errorPanel = document.getElementById('tr_input_field_user_pass');
1718                    registeringErrorMessage = object._i18n.get('Please enter a valid password.');
1719                    console.error("error key = " + key + " value = " + value);
1720                    
1721                }
1722                
1723            }
1724            
1725            if (object._googleReCAPTCHA.v == 'v2' && object._lockBookingButton === true) {
1726                
1727                registering = false;
1728                
1729            }
1730            
1731            if (document.getElementById("booking-package-permalink") != null) {
1732                
1733                post.permalink = document.getElementById("booking-package-permalink").value;
1734                
1735            }
1736            
1737            var sendbookingVerificationCode = function() {
1738                
1739                post.mode = object._prefix + 'sendVerificationCode';
1740                post.booking_package_user_action = 1;
1741                object._servicesControl.sendbookingVerificationCode(object._url, object._action, object._nonce, object._wp_rest_nonce, object._plugin_name, object._prefix, post, object._bookingVerificationCode, function(response){
1742                    
1743                    if (response === true) {
1744                        
1745                        post.mode = 'createUser';
1746                        delete post.booking_package_user_action;
1747                        sendToServer();
1748                        
1749                    }
1750                    
1751                });
1752                
1753            };
1754            
1755            var sendToServer = function() {
1756                
1757                var bookingBlockPanel = document.getElementById("bookingBlockPanel");
1758                bookingBlockPanel.classList.remove("hidden_panel");
1759                new Booking_App_XMLHttp(object._url, post, false, function(response){
1760                    
1761                    object._console.log(response);
1762                    bookingBlockPanel.classList.add("hidden_panel");
1763                    if (response.status == 'success') {
1764                        
1765                        window.location.reload();
1766                        
1767                    } else {
1768                        
1769                        user_regist_error_message.classList.remove("hidden_panel");
1770                        user_regist_error_message.textContent = response.error_messages;
1771                        //window.alert(response.error_messages);
1772                        if (object._hCaptcha.status === true) {
1773                            
1774                            object.lockBooking(true, null, 'hCaptcha');
1775                            hcaptcha.reset(object._hCaptcha.hCaptchaID_register);
1776                            
1777                        }
1778                        
1779                        if (object._googleReCAPTCHA.status === true && object._googleReCAPTCHA.v == 'v2') {
1780                            
1781                            object.lockBooking(true, null, 'ReCAPTCHA');
1782                            var userForm = document.getElementById('booking-package-user-form').getElementsByTagName('div')[0];
1783                            object._console.log(userForm);
1784                            userForm.removeChild(document.getElementById(object._prefix + 'reCAPTCHA_for_register'));
1785                            object.setGoogleReCAPTCHA(object._prefix + 'reCAPTCHA_for_register', 'booking-package-register_user_button', 'beforebegin');
1786                            
1787                        }
1788                        
1789                    }
1790                    
1791                });
1792                
1793            };
1794            
1795            
1796            if (registering == true) {
1797                
1798                object._console.log(post);
1799                user_regist_error_message.textContent.textContent = null;
1800                
1801                if (object._googleReCAPTCHA.key != null && object._googleReCAPTCHA.key.length > 0) {
1802                    
1803                    if (object._googleReCAPTCHA.v == 'v2') {
1804                        
1805                        if (object._lockBookingButton === false) {
1806                            
1807                            post.googleReCaptchaToken = object._googleReCAPTCHA_token;
1808                            //sendToServer();
1809                            sendbookingVerificationCode();
1810                            
1811                        }
1812                        
1813                    } else if (object._googleReCAPTCHA.v == 'v3') {
1814                        
1815                        object._console.log(object._googleReCAPTCHA.v);
1816                        grecaptcha.ready(function() {
1817                            grecaptcha.execute(object._googleReCAPTCHA.key, {action:'reCAPTCHA_v3'}).then(function(token) {
1818                                
1819                                object._console.log(token);
1820                                post.googleReCaptchaToken = token;
1821                                //sendToServer();
1822                                sendbookingVerificationCode();
1823                                
1824                            });
1825                        });
1826                        
1827                    }
1828                    
1829                } else if (object._hCaptcha.status === true) {
1830                    
1831                    if (object._lockBookingButton === false) {
1832                        
1833                        post.hCaptcha = object._hCaptcha_token;
1834                        //sendToServer();
1835                        sendbookingVerificationCode();
1836                        
1837                    }
1838                    
1839                } else {
1840                    
1841                    //sendToServer();
1842                    sendbookingVerificationCode();
1843                    
1844                }
1845                
1846            } else {
1847                
1848                user_regist_error_message.classList.remove("hidden_panel");
1849                user_regist_error_message.textContent = registeringErrorMessage;
1850                object._console.log(registeringErrorMessage);
1851                
1852                
1853            }
1854            
1855        }
1856        
1857        if (return_button != null) {
1858            
1859            return_button.onclick = function(){
1860                
1861                
1862                
1863            }
1864            
1865        }
1866        
1867        
1868    }
1869    
1870    Booking_Package_Member.prototype.logout = function(login, logout, register, callback){
1871        
1872        var object = this;
1873        var post = {mode: 'logout', booking_package_nonce: object._nonce, booking_package_wp_rest_nonce: object._wp_rest_nonce, plugin_name: object._plugin_name, action: object._action};
1874        object._console.log(post);
1875        var bookingBlockPanel = document.getElementById("bookingBlockPanel");
1876        bookingBlockPanel.classList.remove("hidden_panel");
1877        new Booking_App_XMLHttp(object._url, post, false, function(response){
1878            
1879            object._console.log(response);
1880            if(response.status == 'success'){
1881                
1882                window.location.reload();
1883                
1884            }
1885            
1886            
1887            
1888        });
1889        
1890    }
1891    
1892    Booking_Package_Member.prototype.hiddenLoginErrorMessage = function(){
1893        
1894        var object = this;
1895        var loginError = document.getElementById(object._prefix + "login_error");
1896        if (loginError != null) {
1897            
1898            var timer = setInterval(function(){
1899                
1900                loginError.classList.add("hiddenLoginErrorPanel");
1901                var timer1 = setInterval(function(){
1902                    
1903                    loginError.classList.add("hidden_panel");
1904                    clearInterval(timer1);
1905                    
1906                }, 1000);
1907                clearInterval(timer);
1908                
1909            }, 10000);
1910            
1911        }
1912        
1913    }
1914    
1915    Booking_Package_Member.prototype.isEmail = function(email){
1916        
1917        var mail_regex1 = new RegExp( '(?:[-!#-\'*+/-9=?A-Z^-~]+\.?(?:\.[-!#-\'*+/-9=?A-Z^-~]+)*|"(?:[!#-\[\]-~]|\\\\[\x09 -~])*")@[-!#-\'*+/-9=?A-Z^-~]+(?:\.[-!#-\'*+/-9=?A-Z^-~]+)*' );
1918        var mail_regex2 = new RegExp( '^[^\@]+\@[^\@]+$' );
1919        
1920        
1921    }
1922    
1923    Booking_Package_Member.prototype.setScrollY = function(element){
1924        
1925        element = document.getElementById("booking-package");
1926        var object = this;
1927        var rect = element.getBoundingClientRect();
1928        object._console.log("this._top = " + this._top);
1929        object._console.log(rect);
1930        if (rect.y < this._top) {
1931            
1932            object._console.log("this._top = " + this._top);
1933            object._console.log("this._topPanelHeight = " + this._topPanelHeight);
1934            var scrollY = rect.y + window.pageYOffset - this._top;
1935            object._console.log("scrollY = " + scrollY);
1936            if (typeof window.scroll == 'function') {
1937                
1938                window.scroll(window.pageXOffset, scrollY);
1939                
1940            }
1941            
1942        }
1943        
1944    };
1945    
1946    Booking_Package_Member.prototype.create = function(elementType, text, childElements, id, style, className, data_x) {
1947        
1948        var panel = this._element.create(elementType, text, childElements, id, style, className, data_x);
1949        return panel;
1950        
1951    };
1952    
1953    Booking_Package_Member.prototype.createButtonPanel = function(id, style, className, buttons) {
1954        
1955        var buttonPanel = this._element.createButtonPanel(id, style, className, buttons);
1956        return buttonPanel;
1957        
1958    };
1959    
1960    Booking_Package_Member.prototype.createButton = function(id, style, className, data_x, text) {
1961        
1962        var button = this._element.createButton(id, style, className, data_x, text);
1963        return button;
1964        
1965    };
1966    
1967    Booking_Package_Member.prototype.createInputElement = function(tagName, type, name, value, text, disabled, id, style, className, data_x) {
1968        
1969        var input = this._element.createInputElement(tagName, type, name, value, text, disabled, id, style, className, data_x);
1970        return input;
1971        
1972    };

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.