document.addEvent('domready', function(){
	if ($('regform')){
		$('hide-password').addEvent('change', function(){
			$('password').set('type', $('password').get('type') == 'text' ? 'password' : 'text');
		});
		
		['login', 'email', 'password', 'captcha'].each(function(field){
			$(field).addEvent('focus', function(){
				$(field).removeClass('valid').removeClass('failed');
				$(field + '-validate').removeClass('failed');
			});
			
			$(field).addEvent('blur', function(){
				$(field + '-validate').set('text', '');
			});
		});
		
		$('login').addEvent('focus', function(){
			$('login-validate').set('text', 'Логин может состоять из латинских букв, цифр и символа подчеркивания.');
		});
		
		$('email').addEvent('focus', function(){
			$('email-validate').set('text', 'Будьте внимательны, необходима активация.');
		});
		
		$('password').addEvent('focus', function(){
			$('password-validate').set('text', '');
		});

		var validation = new Validation('regform', [{
			field: 'login',
			check: function(self, value){
				if (value == ''){
					return 'Введите какой-нибудь логин.';
				} else if (!value.match(/^[_A-Za-z0-9]+$/)){
					return 'Ну сказано же, только латинские буквы, цифры и подчеркивание!';
				} else {
					new Request.JSON({
						url: '/register/',
						method: 'get',
						onSuccess: function(response){
							if (response == 'ok'){
								validation.pass(self);
							} else {
								validation.fail(self, 'Этот логин уже занят, придумайте другой.');
							}
						}
					}).send('check_login=' + value);
					return undefined;
				}
			}
		}, {
			field: 'email',
			check: function(self, value){
				if (value == ''){
					return 'Введите какой-нибудь адрес.';
				} else if (!value.match(/^[\.\-_A-Za-z0-9]+?@[\.\-A-Za-z0-9]+?\.[A-Za-z0-9]{2,6}$/)){
					return 'Такого почтового адреса не бывает, исправьте.';
				} else if (value.match(/@some-day\.org$/)){
					// Ну, отсюда флудят просто
					return 'Почта в домене some-day.org запрещена.';
				} else if (value.match(/@mailforspam\.com$/)){
					// Фейковые регистрации не нужны
					return 'Почта в домене mailforspam.com запрещена.';
				} else {
					new Request.JSON({
						url: '/register/',
						method: 'get',
						onSuccess: function(response){
							if (response == 'ok'){
								validation.pass(self);
							} else {
								validation.fail(self, 'По этому адресу уже регистрировались, а повторяться нельзя.');
							}
						}
					}).send('check_email=' + value);
					return undefined;
				}
			}
		}, {
			field: 'password',
			check: function(self, value){
				return (value != '') || 'Придумайте пароль, как вы без него потом войдёте-то?';
			}
		}, {
			field: 'captcha',
			check: function(self, value){
				return (value != '') || 'Обязательно введите эти циферки.';
			}
		}], {
			onPassed: function(self){
				self.addClass('valid');
			},
			
			onFailed: function(self, error){
				self.addClass('failed');
				$(self.get('id') + '-validate').addClass('failed').set('text', error);
			}
		});
	}
});

