<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">/*
	Created by Michael Schuijff &lt;michael@reglobe.nl&gt;
	Copyright Lost Images, The Netherlands
	
	For more information, visit www.michaelschuijff.nl
*/

router.register('/login', (values) =&gt; {
	let url = values.url || '/';
	
	if (config.user) {
		router.redirect(url);
		return;
	}
	
	if (values.email) {
		login.callback('email', values.email);
		return;
	}
	
	let buttons;
	
	if (!config.offline) {
		buttons = ['close'];
	}
	
	let view = createView({
		titleBar: __('Choo Choo!'), className: 'login-view', hideMainTitleBar: true, hideBottomMenu: true, buttons: buttons
	});
	
	let main = createElement('div', 'main', createElement('p', null, __('Please join us. How do you want to login?')));
	
	function createButton (className, label, event) {
		let button = createElement('button', 'button-login button ' + className, label);

		button.onclick = event;
		
		main.append(button);
	}
	
	function formEmail () {
		let form = createElement('form');
		form.autocomplete = 'off';
		
		let label = createElement('label', null, createElement('span', null, __('Your email address')));
		
		let email = createElement('input');
		Object.assign(email, { type: 'text', spellcheck: false, placeholder: __('yourname@domain.com') });
		
		label.append(email);
		
		form.append(label);
		
		{
			let button = createElement('button', 'button button-continue', __('Continue'));
			
			email.onkeypress = (e) =&gt; {
				if (e.which == 13) {
					button.onclick();
				}
			}
			
			button.onclick = () =&gt; {
				email.value = email.value.trim();
				
				if (!email.value) {
					api.alert(__('Your email address is required.'), email.focus);
					return;
				}
				
				if (!isValidEmail(email.value)) {
					api.alert(__('This email address is invalid.'), email.focus);
					return;
				}
				
				acceptTerms(() =&gt; {
					login.callback('email', email.value);
					window.afterLoginURL = url;
					
					form.replaceWith(main);
				}, router.back);
			}
			
			form.append(button);
		}
		
		{
			let button = createElement('button', 'button button-cancel', __('Cancel'));
			
			button.onclick = () =&gt; {
				if (values.email) {
					router.back();
				} else {
					form.replaceWith(main);
				}
			}
			
			form.append(button);
		}
		
		form.append(createElement('p', null, __('%s is aimed at persons 16 years and older. If you are younger than this, please do not use our app or website.', config.name)));
		
		main.replaceWith(form);
		
		setTimeout(() =&gt; email.focus(), 0);
	}
	
	createButton('facebook', __('Continue with Facebook'), () =&gt; login.facebook(url));
	
	createButton('google', __('Continue with Google'), () =&gt; login.google(url));
	
	createButton('apple', __('Continue with Apple'), () =&gt; login.apple(url));
	
	createButton('email', __('Continue with email'), formEmail);
	
	main.append(createElement('p', null, __('Passwords can be hacked or forgotten. That is why we always use passwordless login. It is safe and easy to use.')));
		
	let footer = createElement('div', 'footer');
	
	let privacy = createElement('a', null, __('Privacy policy'));
	privacy.href = '/privacy-policy';
	
	let legal = createElement('a', null, __('Terms of Use'));
	legal.href = '/legal';
	
	let contact = createElement('a', null, __('Contact us'));
	contact.href = '/contact';
	
	footer.append(privacy, legal, contact);

	main.append(footer);	

	view.content.append(main);
	
	if (values.email) {
		formEmail();
	}
	
	view.register('close', () =&gt; {
		if (view.content.firstChild != main) {
			view.content.firstChild.replaceWith(main);
			return false;
		}
	});
	
	router.noIndex();
	
	return view;
});

router.register('logoff', (values) =&gt; {
	api.confirm(__('Are you sure you want to log off?'), () =&gt; login.logoff(true, values.url), router.back);
});
</pre></body></html>