var init_registration = function(){
	var pre_register = !$chk($$('.js-login')[0]);
	var block = document.getElement('.reg_block');
	var button = $('reg_button');

//----------------------------------init forms-----------------------------------------------------*/
		var _forms = {}
		if (!pre_register){
			_forms['auth_form'] = new AjaxForm({'form': 'auth_form', 'need_save': 'true', 'url':'/registration.v'});
		}
		_forms['reg_form'] = new AjaxForm({'form': 'reg_form', 'need_save': 'true', 'url':'/registration.v'});
		_forms['reg_form_person'] = new AjaxForm({'form': 'reg_form_person', 'need_save': 'true', 'url':'/registration.v'});
		_forms['reg_form_ip'] = new AjaxForm({'form': 'reg_form_ip', 'need_save': 'true', 'url':'/registration.v'});
		_forms['reg_form_org'] = new AjaxForm({'form': 'reg_form_org', 'need_save': 'true', 'url':'/registration.v'});
		var onFormOk = function(){
			var i = 0;
			if (pre_register){
				i++;
			}
			for (_form in _forms){
				if (_forms[_form].form_ok){
					i++;
				}
			}
			if (i == 3){
				button.getParent().removeClass('sdisabled');
			}
		}
		for (_form in _forms){
			_forms[_form].onFormOk = onFormOk;
		}
//----------------------------------change_client_type---------------------------------------------*/
		var type = '';
		$$('a[name=type]').each(function(a){
			var a_click = function(a){
				a.getParent().getElements('b').each(function(el){
					_parent = el.getParent();
					if (_parent.tagName.toLowerCase() == 'a'){
						_parent.removeClass('hidden');
					}
					else{
						_parent.addClass('hidden');
					}
					a.addClass('hidden');
					a.getNext().removeClass('hidden');
				});
				type = a.get('target');
				$$('.js-type')[0].set('value', type).updateValue().save(this);
				if ($('agree').get('checked')){
					block.removeClass('hidden');
				}
				else{
					block.addClass('hidden');
				}
				$$('.form').each(function(_form){
					if (_form.get('id') == 'reg_form_' + type){
						_form.removeClass('hidden');
					}
					else{
						_form.addClass('hidden');
					}
				});
				$('reg_form_' + type).removeClass('hidden');
			}
			a.addEvent('click', function(e){
				if ($chk(e)){e.stop()};
				var flag = false;
				if (type){
					_forms['reg_form_' + type].inputs.each(function(inp){
						if (inp.get('value')){
							flag = true;
						}
					});
				}
				if (flag){
					Message(
						'Предупреждение',
						'Смена типа пользователя на данном этапе повлечет удаление уже заполненных данных в секции &laquo;Данные клиента&raquo;.<br>Вы уверены, что хотите изменить тип клиента?',
						'Confirm',
						function(){
							_forms['reg_form_' + type].clearFields('all');
							a_click(a);
						},
						400
					)
				}
				else{
					a_click(a);
				}
			}.bind(this));
			if (a.hasClass('hidden')){
				a.fireEvent('click');
			}
		});
		$('agree').addEvent('click', function(){
			var val = '';
			if ($('agree').get('checked')){
				val = 'yes';
				if (type){
					block.removeClass('hidden');
				}
			}
			else{
				val = 'no';
				block.addClass('hidden');
			}
			new Request.JSON({
				url: '/registration.s',
				method: 'post',
				onSuccess: function(response){
				}.bind(this)
			}).send('{"agree":"' + val + '"}');
		});
//----------------------------------buttons && step blocks-----------------------------------------*/
		if (type){
			var is_filled = false;
			var inputs = block.getElements('input[type=text], input[type=password]');
			inputs.each(function(input){
				if (input.get('value')){
					is_filled = true;
				}
			});
			if (is_filled){
				$('agree').setProperty('checked', 'checked').fireEvent('click');
			}
		}
//----------------------------------copy links-----------------------------------------------------*/
		$$('.copy_addr').each(function(_link){
			_link.addEvent('click', function(e){
				if ($chk(e)){e.stop()};
				var section;
				if (_link.hasClass('another')){
					section = 'address_jur';
				}
				else{
					section = 'address_delivery';
				}
				var block = _link.getParent().getParent().getParent();
				block.getElement('input[name=country]').set('value', $$('.js-' + section + '-country').get('value'));
				block.getElement('input[name=country]').setProperty('prefix', $$('.js-' + section + '-country').getProperty('prefix')).updateValue();
				block.getElement('input[name=postalcode]').set('value', $$('.js-' + section + '-postalcode').get('value')).updateValue();
				block.getElement('input[name=region]').set('value', $$('.js-' + section + '-region').get('value')).updateValue();
				block.getElement('input[name=city]').set('value', $$('.js-' + section + '-city').get('value')).updateValue();
				block.getElement('input[name=address]').set('value', $$('.js-' + section + '-address').get('value')).updateValue().check(this);
				block.getElement('input[name=country]').save(this);
				block.getElement('input[name=postalcode]').save(this);
				block.getElement('input[name=region]').save(this);
				block.getElement('input[name=city]').save(this);
				block.getElement('input[name=address]').save(this);
			});
		});
		$$('.copy_fio').each(function(_link){
			_link.addEvent('click', function(e){
				if ($chk(e)){e.stop()};
				var section = 'fio_contact';
				var block = _link.getParent().getParent().getParent();
				block.getElement('input[name=surname]').set('value', $$('.js-' + section + '-surname').get('value')).updateValue();
				block.getElement('input[name=name]').set('value', $$('.js-' + section + '-name').get('value')).updateValue();
				block.getElement('input[name=patronymic]').set('value', $$('.js-' + section + '-patronymic').get('value')).updateValue().check(this);;
				block.getElement('input[name=surname]').save(this);
				block.getElement('input[name=name]').save(this);
				block.getElement('input[name=patronymic]').save(this);
			});
		});
//----------------------------------password fields------------------------------------------------*/
		$$('.js-passwordv').addEvent('keyup', function(){
			this.processing = true;
			if (this.t){
				clearTimeout(this.t);
			}
			this.t = 0;
			setTimeout(
				function(){
					if (this.get('value')){
						if ($$('.js-password')[0].hasClass('ired')){
							_forms['auth_form'].showMessage(this, 'error', 'error.passwordv.wrong.format');
						}
						else if (this.get('value') != $$('.js-password')[0].get('value')){
							_forms['auth_form'].showMessage(this, 'error', 'error.passwordv.wrong.notcompare');
						}
						else{
							_forms['auth_form'].showMessage(this, 'field_ok', 'ok_message');
							_forms['auth_form'].save(this);
						}
					}
					this.t = 0;
					this.processing = false;
				}.bind(this),
				800
			);
		}).addEvent('blur', function(){
			if (this.getParent().hasClass('igray')){
				this.getParent().removeClass('igray');
				_forms['auth_form'].getSpan(this).set('text', '');
			}
		}).addClass('not_checked');
		$$('.js-password').addEvent('keyup', function(){
			var input = $$('.js-passwordv')[0];
			if (input.get('value')){
				input.fireEvent('keyup');
			}
		});
//----------------------------------reg button-----------------------------------------------------*/
		button.addEvent('click', function(e){
			if ($chk(e)){e.stop()};
			if (this.getParent().hasClass('sdisabled')){
				return false;
			}
			var captcha = $$('.captcha')[0];
			if (captcha.hasClass('required') && captcha.get('value') == ''){
				alert(tips['captcha_required']);
				captcha.focus();
				return false;
			}
			var send_obj = {};
			if (pre_register){
				send_obj = {'registration': {}};
			}
			else{
				send_obj = {'auth': {}, 'registration': {}};
				send_obj['auth'] = _forms['auth_form'].hash;
			}
			send_obj['registration'] = _forms['reg_form'].hash;
			var third_step = _forms['reg_form_' + type].hash;
			for (key in third_step){
				send_obj['registration'][key] = third_step[key];
			}
			if (captcha.get('value') != ''){
				send_obj['captcha'] = captcha.get('value');
			}
			var f = function(h){
				$H(h).each(function(v, k){
					if (!v){
						delete h[k];
					}
					else if(typeof v == 'object'){
						f(v);
					}
				});
			}
			f(send_obj);
			new Ajax(JSON.encode(send_obj), {
				url: '/registration.x',
				onSuccess: function(response){
					if (!response['@error']){
						splash.show('reg_success');
						button.getParent().addClass('hidden');
					}
					else{
						alert(tips['error_occured']);
						if (response['captcha']){
							var captcha = $$('.captcha')[0];
							captcha.addClass('required').set('value', '');
							captcha.getParent().getParent().getParent().removeClass('hidden');
							$('captchaJpgId').fireEvent('click');
						}
					}
				}
			});
			$('agree').removeProperty('disabled');
		});
//----------------------------------new button-----------------------------------------------------*/
	var reset_data = function(){
		$$('.submenu')[0].getElements('b').each(function(el){
			_parent = el.getParent();
			if (_parent.tagName.toLowerCase() == 'a'){
				_parent.removeClass('hidden');
			}
			else{
				_parent.addClass('hidden');
			}
			});
		$('agree').removeProperty('disabled').removeProperty('checked').fireEvent('click');
		for (_form in _forms){
			_forms[_form].clearFields('all');
		}
		new Request.JSON({
			url: '/registration.s',
			method: 'post'
		}).send('{"type": "", "agree": "no"}');
		block.addClass('hidden');
		document.getElement('.reg').scrollIntoView();
		type = '';
		button.getParent().addClass('sdisabled');
	}
	$('new_reg').addEvent('click', function(e){
		if ($chk(e)){
			Message(
				'Требуется подтверждение',
				'Вы хотите очистить все поля и начать процесс регистрации с начала?',
				'Confirm',
				function(){
					reset_data();
				},
				435
			)
		}
	});
//-------------------------------------------------------------------------------------------------*/
		if (!type){
			reset_data();
		}
		$('captchaJpgId').addEvent('click', function(){
			this.fade('out');
			this.set('src', '/captcha.jpg?' + Math.random());
		}).addEvent('load', function(){
			this.fade('in');
		});
		$$('.captcha')[0].addEvent('keyup', function(){
			if (this.t){
				clearTimeout(this.t);
			}
			if (this.get('value')){
				this.t = setTimeout(onFormOk, 800);
			}
		}).addEvent('focus', function(){
			this.getParent().addClass('igray');
		}).addEvent('blur', function(){
			this.getParent().removeClass('igray');
		});
//----------------------------------readonly inputs------------------------------------------------*/
		$$('input.txt').filter(function(input, i){return input.get('readonly')}).each(function(input){
			input.addEvent('keypress', function(e){
				if ($chk(e)){e.stop()};
			});
		});
//----------------------------------ownership------------------------------------------------------*/
		var ownership = $$('.ownership');
		ownership.each(function(os){
			os.addEvent('blur', function(e){
				var si = os.getProperty('selectedIndex');
				ownership.each(function(oss){
					oss.setProperty('selectedIndex', si);
					var tmp = oss.getParent().getParent();
					tmp.getElement('.list').getElements('a')[si].fireEvent('mousedown');
					var pref = (oss.get('value') != 'ДРУГОЕ' && oss.get('value') != 'ANOTHER') ? oss.get('value') + ' ' : '';
					tmp.getNext().getFirst().getNext().setProperty('prefix', pref).fireEvent('keyup').fireEvent('blur');
				});
			}).fireEvent('blur');
		});
//-------------------------------------------------------------------------------------------------*/
		$$('.reg')[0].getElements('input').each(function(input){
			if (input.get('id') == 'new_reg' || input.tagName.toLowerCase() == 'textarea'){
				return;
			}
			input.addEvent('keydown', function(){
				button.getParent().addClass('sdisabled');
			});
		});
//-------------------------------------------------------------------------------------------------*/
}