/* /js/login/login.js */ /* UTF8 COOKIE: éà */

/*************************************************/
/* GUI */

function	recoverPassword()
{
	vkDom.display('LOGIN_FORM', 'none');
	
	vkDom.el('ACCOUNT_EMAIL').value = '';
	resetMissingFields( ['ACCOUNT_EMAIL'] );

	vkDom.display('PWDRECOVER_FORM', 'block');
	vkDom.focus('ACCOUNT_EMAIL');

	return false;
}

function	backToLogin()
{
	vkDom.display('PWDRECOVER_FORM', 'none');

	vkDom.el('ACCOUNT_USERNAME').value = '';
	vkDom.el('ACCOUNT_PASSWORD').value = '';
	resetMissingFields( ['ACCOUNT_USERNAME', 'ACCOUNT_PASSWORD'] );
	
	vkDom.display('LOGIN_FORM', 'block');
	vkDom.focus('ACCOUNT_USERNAME');

	return false;
}




/*************************************************/
/* Login (username & password) */

var	login = new kigoAjaxRequest(/*kigoDebug*/);

login.login = function()
{
	this.post(
		'ajax/login/login.php',
		{
			'ACCOUNT_USERNAME'	:	vkDom.el('ACCOUNT_USERNAME').value,
			'ACCOUNT_PASSWORD'	:	vkDom.el('ACCOUNT_PASSWORD').value,
			'AUTOLOGIN'			:	vkDom.el('AUTOLOGIN').checked
		}
	);
}


login.onErrorRetry = login.onTimeoutRetry = function(yesno)
{
	if(yesno)
		this.login();
	else
	{
		vkPopup.message(
			'Login temporarily unavailable',
				'The login is temporarily unavailable.\n'+
				'Please try again later.',
			'error'
		);
	}
}


login.onLoad = function(data)
{
	switch(data.result)
	{
		case E_OK:

			if(data.AUTOLOGIN)	// The cookie lifetime is set to a very large value which is greater than the server autologin expiry
				vkDom.setCookie('AUTOLOGIN', data.AUTOLOGIN, 2592000 /* 30 days */);

			switch(data.ACCOUNT_TYPE)
			{
				case 'OWNER':
					goTo('owner/', true);
					break;

				case 'RA':
					goTo('ra/', true);
					break;
			}

			break;

		case E_CRED:

			vkPopup.message(
				'Incorrect username and/or password',
					'The username and/or password you have provided are incorrect.',
					'warn',
					function() { vkDom.focus('ACCOUNT_USERNAME') }
			);
				
			break;

		case E_DEACTIVATED:

			vkPopup.message(
				'Your account was deactivated',
					'We regret to inform you that your account has been deactivated.\n'+
					'\n'+
					'Please contact Kigo customer support for more information.',
				'error',
				null
			);
			break;

		default:
			this.error();
	}
}

login.onLogin = function()
{
	var	missing = null;

	resetMissingFields( ['ACCOUNT_USERNAME', 'ACCOUNT_PASSWORD'] );

	if(!vkDom.el('ACCOUNT_USERNAME').value.length)
		missing = setMissingField('ACCOUNT_USERNAME', null);

	if(!vkDom.el('ACCOUNT_PASSWORD').value.length)
		missing = setMissingField('ACCOUNT_PASSWORD', missing);

	if(missing)
	{
		vkPopup.message(
			'Username and password',
				'Please provide your username and your password.',
			'warn',
			function() { vkDom.focus(missing) }
		);
	}
	else
		this.login();

	return false;
}



/*************************************************/
/* Autologin */

var	autologin = new kigoAjaxRequest(/*kigoDebug*/);

autologin.autologin = function()
{
	this.post(
		'ajax/login/autologin.php',
		{
			'AUTOLOGIN'			:	vkDom.getCookie('AUTOLOGIN')
		}
	);
}




autologin.onErrorRetry = autologin.onTimeoutRetry = function(yesno)
{
	if(yesno)
		this.autologin();
	else
	{
		vkPopup.message(
			'Auto-login failed',
				'Could not auto-log into your account.\n'+
				'Please provide your username and your password.',
			'warn',
			function() { vkDom.focus('ACCOUNT_USERNAME') }
		);
	}
}



autologin.onLoad = function(data)
{
	switch(data.result)
	{
		case E_OK:

			switch(data.ACCOUNT_TYPE)
			{
				case 'OWNER':
					goTo('owner/', true);
					break;

				case 'RA':
					goTo('ra/', true);
					break;
			}

			break;

		case E_CRED:
		case E_DEACTIVATED:
			// Silently fail - let the user provide his username / password
			vkDom.removeCookie('AUTOLOGIN');
			vkDom.focus('ACCOUNT_USERNAME');
			break;

		default:
			this.error();
	}
}


/*************************************************/
/* Password recovery */

var	pwdRecover = new kigoAjaxRequest(kigoDebug);

pwdRecover.recover = function()
{
	this.post(
		'ajax/login/pwdrecover.php',
		{
			'ACCOUNT_EMAIL'		:	vkDom.el('ACCOUNT_EMAIL').value
		}
	);
}



pwdRecover.onErrorRetry = pwdRecover.onTimeoutRetry = function(yesno)
{
	if(yesno)
		this.recover();
	else
	{
		vkPopup.message(
			'Password recovery temporarily unavailable',
				'The password recovery feature is temporarily unavailable.\n'+
				'Please try again later.',
			'error',
			backToLogin
		);
	}
}

pwdRecover.onPwdRecover = function()
{
	resetMissingFields( ['ACCOUNT_EMAIL'] );
	
	if(!vkDom.el('ACCOUNT_EMAIL').value.length)
	{
		setMissingField('ACCOUNT_EMAIL', null);

		vkPopup.message(
			'Email address required',
				'Please enter your email address for receiving the password recovery link',
			'warn',
			function() { vkDom.focus('ACCOUNT_EMAIL') }
		);
	}
	else
		this.recover();

	return false;
}



pwdRecover.onLoad = function(data)
{
	switch(data.result)
	{
		case E_OK:

			vkPopup.message(
				'Email was sent',
					'An email was sent to the following address:\n'+
					'\n'+
					vkDom.el('ACCOUNT_EMAIL').value+'\n'+
					'\n'+
					'with instructions on setting up a new password for your account.',
				'ok',
				backToLogin
			);
			break;

		case E_INPUT:
			
			vkPopup.message(
				'Email address is incorrect',
					'Please enter a valid email address for receiving the password recovery link.',
				'warn',
				function() { vkDom.select('ACCOUNT_EMAIL') }
			);
			break;

		case E_NOSUCH:

			vkPopup.message(
				'Kigo account not found',
					'Sorry, there is no Kigo account associated with the provided email address.\n'+
					'Please specify the address related to your account.',
				'warn',
				function() { vkDom.select('ACCOUNT_EMAIL') }
			);
			break;

		default:
			this.error();
	}
}





/*************************************************/
/* onLoad */

vkDom.onLoad(
	function()
	{
		if(window.location.search == '?password')
			recoverPassword();
		else if(vkDom.getCookie('AUTOLOGIN'))
			autologin.autologin();
		else
			vkDom.focus('ACCOUNT_USERNAME');
	}
);


