window.addEvent('domready', function () {
	var login = $('auth-login');
	if (!login) {
		return;
	}

	login.addEvent('click', openAuthPopup);
	$('auth-login-submit').addEvent('click', processAuthForm)
	$('auth-login-reset-password').addEvent('click', resetPassword);
});

function openAuthPopup(event, onlyOpen) {
	if (undefined === onlyOpen) {
		onlyOpen = false;
	}
	var login = $('auth-login');
	var pos = login.getCoordinates();
	var popup = $('auth-login-popup');
	if ('none' == popup.getStyle('display') || onlyOpen) {
		$('auth-login-popup').setStyles({
			'left'    : pos.left,
			'top'     : pos.top + 20,
			'display' : 'block'
		});
		$('auth-login-username').focus();
	} else {
		popup.setStyle('display', 'none');
	}
	if (event) {
		event.preventDefault();
	}
}

function processAuthForm(event) {
	var login    = $('auth-login-username');
	var loginFocused = false;
	var password = $('auth-login-password');
	var hasError = false;
	if (0 == login.get('value').length) {
		messages.alert('', 'Вы забыли ввести логин');
		login.focus();
		loginFocused = true;
		hasError = true;
	}
	if (0 == password.get('value').length) {
		messages.alert('', 'Вы забыли ввести пароль');
		if (!loginFocused) {
			password.focus();
		}
		hasError = true;
	}
	if (true == hasError) {
		event.preventDefault();
		return;
	}

	var button = this;
	var data = $('auth-login-form').toQueryString();
	var request = new Request({
		method: 'post',
		url: baseUrl + '/common/auth/login',
		onCancel: function () {
			button.erase('disabled');
		},
		onFailure: function () {
			button.erase('disabled');
		},
		onSuccess: function (text) {
			if ('ok' == text) {
				window.location.reload();
			} else {
				messages.alert('Извините', 'Введенные вам логин и пароль не верны. Попробуйте ещё раз');
				login.set('value', '');
				password.set('value', '');
				login.focus();
			}
			button.erase('disabled');
		}
	});
	this.set('disabled', 'disabled');
	request.send(data);

	event.stop();
}

function resetPassword(event) {
	var title = 'Восстановление пароля';
	var login = $('auth-login-username');
	if (0 == login.get('value').length) {
		messages.alert(title, 'Введите ваш логин в поле "Логин" чтобы восстановить ваш пароль');
		login.focus();
		return;
	}

	var request = new Request({
		method: 'post',
		url: baseUrl + '/common/auth/reset-password',
		onCancel: function () {
		},
		onFailure: function () {
		},
		onSuccess: function (text) {
			messages.alert(title, text);
		}
	});
	request.send($('auth-login-form').toQueryString());
	event.stop();
}
