var init_auth = function(){
//--------------------- ---------------------------------------------------------------------------*/
	var login = $('auth').getElement('input[name=login]');
	var password = $('auth').getElement('input[name=password]');
	var remember = $('auth').getElement('input[name=remember]');
	var captcha = $('auth').getElement('input[name=captcha]');
	var is_captched = captcha ? (captcha.getParent('tr').hasClass('hidden') ? false : true) : false;
	var btn = $('auth_button');
	var inputs = {'0': login, '1': password};

	var check_login_button = function(){
		var logic = false;
		logic = login.get('value').length > 0 && password.get('value').length > 0;
		if ($chk(is_captched)){
			logic = logic && captcha.get('value').length > 3;
		}
		if (logic){
			btn.getParent().removeClass('sdisabled').addClass('sorange');
		}
		else{
			btn.getParent().addClass('sdisabled').removeClass('sorange');
		}
	};
//--------------------- ---------------------------------------------------------------------------*/
	if ($chk(captcha)){
		captcha.addEvent('keyup', function(){
			check_login_button();
			captcha.getParent().removeClass('ired').removeClass('ilightgreen');
		})		
	}

	$H(inputs).each(function(input){
		input.addEvent('keyup', function(){
			check_login_button();
			input.getParent().removeClass('ired').removeClass('ilightgreen');
		}).addEvent('focus', function(){
			input.getParent().addClass('igray');
		}).addEvent('blur', function(){
			input.getParent().removeClass('igray');
		}).fireEvent('keyup');
	});
//--------------------- ---------------------------------------------------------------------------*/
	$('auth_button').addEvent('click', function(e){
		if ($chk(e)){ e.stop() }
		if (this.getParent().hasClass('sdisabled')){
			return false;
		}
		var send_obj = {'auth': {}};
		if (remember.get('checked')){
			send_obj['remember'] = "true";
		}
		if ($chk(is_captched)){
			send_obj['captcha'] = captcha.get('value');
		}
		send_obj['auth']['login'] = login.get('value');
		send_obj['auth']['password'] = password.get('value');
		new Ajax(JSON.encode(send_obj), {
			url: '/auth.x',
			onSuccess: function(response){
				if (!response['@error']){
					if (need_to_stand){
						shadow.fireEvent('click');
						$$('.login_top').each(function(span){
							span.toggleClass('hidden');
						});
						if (force_fire_events){
							if ($chk($('add_to_cart'))){
								$('add_to_cart').fireEvent('click');
							}
						}
						force_fire_events = false;
						need_to_stand = false;
					}
					else{
						page.refresh();
					}
				}
				else{
					if ($chk(is_captched)){$('captchaJpgId').fireEvent('click')};
					if (response['captcha']){
						if (response['captcha']['@error'] == 'error.form.captcha.wrong'){
							captcha.getParent().addClass('ired').removeClass('ilightgreen');
							login.getParent().removeClass('ilightgreen').removeClass('ired');
							password.getParent().removeClass('ilightgreen').removeClass('ired');
							captcha.focus();
							return;
						}
						else if (response['captcha']['@error'] == 'error.form.captcha.required' && $chk(captcha)){
							captcha.getParent('tr').removeClass('hidden');
							login.getParent().removeClass('ilightgreen').removeClass('ired');
							password.getParent().removeClass('ilightgreen').removeClass('ired');
							btn.getParent().addClass('sdisabled');
							is_captched = true;
							captcha.focus();
							return;
						}
						else{
							if (!$chk(captcha)){
								page.goto('/auth/?captcha=1');
								return;
							}
						}
					}
					if (response['auth']['login']['@error']){
						login.getParent().addClass('ired').removeClass('ilightgreen');
						password.getParent().removeClass('ired').removeClass('ilightgreen');
						login.focus();
					}
					else{
						login.getParent().removeClass('ired');
						if (response['auth']['password']['@error']){
							login.getParent().addClass('ilightgreen');
							password.getParent().addClass('ired');
							password.focus();
						}
						else{
							password.getParent().removeClass('ired').addClass('ilightgreen');
						}
					}
				}
			},
			onFailure: function(){
				page.goto('/auth/');
			}
		});
	});
//--------------------- ---------------------------------------------------------------------------*/
	if ($chk(captcha)){
		$('captchaJpgId').addEvent('click', function(){
			this.fade('out');
			this.setProperty('src', '/captcha.jpg?' + Math.random());
		}).addEvent('load', function(){
			this.fade('in');
		})
	}
//--------------------- ---------------------------------------------------------------------------*/
	[
		$('auth').getElement('input[name=login]'),
		$('auth').getElement('input[name=password]'),
		$('auth').getElement('input[name=remember]'),
		$('auth').getElement('input[name=captcha]')
	].each(function(input){
		if (!$chk(input)){
			return;
		}
		input.addEvent('keypress', function(e){
			if (e.code == 13){
				$('auth_button').fireEvent('click');
			}
		});
	});
//--------------------- ---------------------------------------------------------------------------*/
	var reg_btn = $('quick_reg_button');
	if (reg_btn){
		var q_login = $('quick_reg').getElement('input[name=login]');
		var email = $('quick_reg').getElement('input[name=email]');
		var inputs = {'0': q_login, '1': email};
		var check_reg_button = function(){
			var logic = false;
			logic = q_login.get('value').length > 2 && email.get('value').length > 5;
			if (logic){
				reg_btn.getParent().removeClass('sdisabled').addClass('sorange');
			}
			else{
				reg_btn.getParent().addClass('sdisabled').removeClass('sorange');
			}
		};
		$H(inputs).each(function(input){
			input.addEvent('keyup', function(){
				check_reg_button();
				input.getParent().removeClass('ired').removeClass('ilightgreen');
			}).addEvent('focus', function(){
				input.getParent().addClass('igray');
			}).addEvent('blur', function(){
				input.getParent().removeClass('igray');
			}).fireEvent('keyup');
		});
		reg_btn.addEvent('click', function(e){
			if ($chk(e)){e.stop()}
			if (this.getParent().hasClass('sdisabled')){
				return false;
			}
			var send_obj = {'fore': {}};
			send_obj['fore']['login'] = q_login.get('value');
			send_obj['fore']['email'] = email.get('value');
			var error_tip = $('quick_reg').getElement('.auth_tip');
			new Ajax('{"login":"' + q_login.get('value') + '"}', {
				url: '/registration.x',
				onSuccess: function(r){
					if (r['login']['@error']){
						q_login.getParent().addClass('ired').removeClass('ilightgreen');
						email.getParent().removeClass('ired').removeClass('ilightgreen');
						q_login.focus();
						error_tip.set('html', q_reg_errors[r['login']['@error']]);
						error_tip.addClass('hot');
					}
					else{
						new Ajax('{"email":"' + email.get('value') + '"}', {
							url: '/registration.x',
							onSuccess: function(r){
								q_login.getParent().removeClass('ired');
								if (r['email']['@error']){
									q_login.getParent().addClass('ilightgreen');
									email.getParent().addClass('ired');
									email.focus();
									error_tip.set('html', q_reg_errors[r['email']['@error']]);
									error_tip.addClass('hot');
								}
								else{
									new Ajax(JSON.encode(send_obj), {
										url: '/registration.x',
										onSuccess: function(r){
											q_login.getParent().addClass('ilightgreen');
											email.getParent().addClass('ilightgreen');
											error_tip.set('html', '');
											shadow.fireEvent('click');
											$$('.login_top').each(function(span){
												span.toggleClass('hidden');
											});
											if ($chk($('add_to_cart'))){
												$('add_to_cart').fireEvent('click');
											}
										}
									});
								}
							}
						});
					}
				},
				onFailure: function(){
					shadow.fireEvent('click');
				}
			});
		});
		$H(inputs).each(function(input){
			if (!$chk(input)){
				return;
			}
			input.addEvent('keypress', function(e){
				if (e.code == 13){
					reg_btn.fireEvent('click');
				}
			});
		});
	}
}