var error_mess_phone_wrong_format = 'Телефонный номер может содержать только цифры, пробелы и знаки ( ) - /';
var error_mess_user_email_wrong_format = 'Неверный формат адреса электронной почты.';
var error_mess_login_pass = 'Неверно указаны логин или пароль.';
var error_mess_not_active = 'Этот e-mail уже присутствует в базе данных, но не подтвержден.<br><a class="sm_px8_2" id="link_id" href="#">Отправить подтверждение</a> на user_email';
var error_mess_user_email_2 = 'Укажите пожалуйста Ваш адрес электронной почты чтобы войти под логином или зарегистрироваться как новый пользователь.';
var error_mess_pass_user_email = 'Введите пароль для входа в аккаунт';
var error_mess_author = 'Введите пожалуйста Ваше имя';

$(document).ready(function() {

    jQuery.listen('click', '.autoreg_reg_mail_confirm', function() {
        autoreg_reg_mail_confirm($(this));
        return false;
    });

    jQuery.listen('blur', '.autoreg_pass_field', function() {
        autoreg_hide_pass_field(this, $(this).attr('id').replace('pass_', ''));
    });
	
    jQuery.listen('focus', '.autoreg_def_pass', function() {
        autoreg_show_pass_field(this, $(this).attr('id').replace('pre_pass_', ''));
    });

    jQuery.listen('blur', '.autoreg_email', function() {
        var email = $(this).val();
        var suffix = $(this).next().next().val();
        check_user_email(email, suffix);
        return false;

    });
	
    jQuery.listen('focus', '.focus_blur', function() {
        focus_field(this);
    });

    jQuery.listen('blur', '.focus_blur', function() {
        blur_field(this);
    });
	
    jQuery.listen('focus', '.focus_blur_v2', function() {
        focus_field_v2(this);
    });

    jQuery.listen('blur', '.focus_blur_v2', function() {
        blur_field_v2(this);
    });
	
	//jQuery.listen( 'click', '.note_tooltip_open', function(){
	$('.note_tooltip_open').click(function() {

		$('.note_tooltip').hide();

		var align_top = 0;
		var align_left = 0;
		var target_object = $(this);

		var wind = $('#note_tooltip_'+$(this).attr('id'));
		
		if (wind.children().is('.note_tooltip_params'))
		{
			var params_field = wind.children('.note_tooltip_params');
			var params_arr = params_field.val().split('&');
			
			var target_object_arr = params_arr[0].split('=');
			if (target_object_arr[1]) target_object = $('#'+target_object_arr[1]);
			
			var align_top_arr = params_arr[1].split('=');
			if (align_top_arr[1]) align_top = parseInt(align_top_arr[1]);
			
			var align_left_arr = params_arr[2].split('=');
			if (align_left_arr[1]) align_left = parseInt(align_left_arr[1]);
		}
		
		var left = target_object.offset().left + Math.round(target_object.width()/2 + align_left);
		var top = target_object.offset().top - Math.round(target_object.height()/2 + align_top);
		wind.fadeIn(100).css('top', top).css('left', left);
		return false;
	});
	
	$('.note_tooltip_close').click(function(e) {
		$($(this).parent()).hide();
		if(!e) var e = window.event;
		e.cancelBubble = true;
		if(e.stopPropagation) e.stopPropagation();
		return false;
	});
	
	$('.tooltip_element').click(function(e) {
		if(!e) var e = window.event;
		e.cancelBubble = true;
		if(e.stopPropagation) e.stopPropagation();
	});
	
	jQuery.listen( 'click', '.close_alert_mess', function(){
		$($(this).parent()).hide().html('');
		return false;
	});
	
	$('body').click(function() {
		$('.note_tooltip').hide();
	});

});

function check_user_email(email, suffix) {

	var sicret_fields = autoreg_all_sicret_fields_clear(suffix);
	var reg = /^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i;

	if (email.match(reg)) {
		$('#loading_autoreg_block_' + suffix).show();

		$.ajax({
			async: true,
			type: 'post',
			data: {
				email: email,
				server_function: 'check_user_by_email',
				server_class: 'autoreg'
			},
			url: '/ajax_request/',
			success: function(data) {
				$('#loading_autoreg_block_' + suffix).hide();
				if (data == 1) {
					sicret_fields['name_block'].show();
					sicret_fields['name'].show();
					sicret_fields['name'].addClass(suffix);
					sicret_fields['name'].addClass('check_field');
					sicret_fields['name'].next().addClass(suffix);
					sicret_fields['agreement'].addClass('agreement_'+suffix);
					sicret_fields['agreement'].addClass('agreement_'+suffix);
					//sicret_fields['agreement_alert_mess_block'].addClass(suffix);
					//$('#agreement_'+suffix).addClass('agreement_'+suffix);
				} else {
					sicret_fields['pass_block'].show();
					sicret_fields['pre_pass'].show();
					sicret_fields['pre_pass'].addClass(suffix);
					sicret_fields['pre_pass'].addClass('check_field');
				}
			}
		});
	}
}

function check_user_by_email_and_pass (email, pass) {
	var ret;
	$.ajax({
		async: false,
		type: 'post',
		data: {
			email: email,
			pass: pass,
			server_function: 'check_user_by_email_and_pass',
			server_class: 'autoreg'
		},
		url: '/ajax_request/',
		success: function(data) {
			ret = data;
		}
	});
	return ret;
}

function autoreg_check_user_email(email, suffix, group_class) {

		var error = false;
		
		var email_field = $('#'+suffix);
		var email_error_block = $('#error_mess_'+suffix);
		var name_field = $('#name_'+suffix);
		var name_block = $('#name_block_'+suffix);
		var agreement_checkbox = $('#check_agreement_'+suffix);
		var agreement_block = $('#check_agreement_'+suffix+'_block');
		var pass_field = $('#pass_'+suffix);
		var pass_block = $('#pass_block_'+suffix);
		var loading_img = $('#loading_img_'+suffix);
		
		agreement_checkbox.removeClass(group_class).removeClass('agreement');
		agreement_block.hide();
		
		name_block.hide();
		name_field.removeClass(group_class);
		error_red_disable(name_field);
		$('#error_mess_name_'+suffix).hide().html('');

		pass_block.hide();
		pass_field.removeClass(group_class);
		error_red_disable(pass_field);
		$('#error_mess_pass_'+suffix).hide().html('');
		
		if (check_field ($('#'+suffix))) {
			email_error_block.show().html(error_mess_user_email_2);
			error = true;
		}
		else if (check_email ($('#'+suffix))) {
			email_error_block.show().html(error_mess_user_email_wrong_format);
			error = true;
		}
		
		if (error == false) {
		
			loading_img.show();

			email_error_block.hide().html('');
			error_red_disable(email_field);

			email_field.attr("disabled", true);

			$.ajax({
				async: false,
				type: 'post',
				data: {
					email: email,
					server_function: 'check_user_by_email',
					server_class: 'autoreg'
				},
				url: '/ajax_request/',
				success: function(data) {
					
					loading_img.hide();
					if (data == 1) {
						name_block.show();
						name_field.addClass(group_class).focus();
						agreement_block.show();
						agreement_checkbox.addClass(group_class).addClass('agreement');
                    } else {
						pass_block.show();
						pass_field.addClass(group_class).focus();
					}
					email_field.attr("disabled", false);
				}
			});
		}
}

function show_clear_but (id)
{
	document.getElementById(id).style.visibility = 'visible';
	return false;
}

function hide_clear_but (id)
{
	document.getElementById(id).style.visibility = 'hidden';
	return false;
}

function claer_field (id)
{
	var obj = document.getElementById(id);
	obj.value = '';
	obj.focus();
	return false;
}

function autoreg_reg_mail_confirm(obj) {
    var suffix = $(obj).attr('name');
    var email = $('#email_' + suffix).val();

    $.ajax({
        async: true,
        type: 'post',
        data: {
            email: email,
            server_function: 'reg_mail_confirm',
            server_class: 'autoreg'
        },
        url: '/ajax_request/',
        success: function(data) {
            if (data == true) $('#error_mess_' + suffix).html('Подтверждение успешно отправлено на ваш e-mail.');
        }
    });

    return false;
}

function autoreg_mail_confirm (mess_block, email) {
	$.ajax({
		async: true,
		type: 'post',
		data: {
			email: email,
			server_function: 'reg_mail_confirm',
			server_class: 'autoreg'
		},
		url: '/ajax_request/',
		success: function(data) {
			if (data == true) $(mess_block).html('Подтверждение успешно отправлено на ваш e-mail.');
		}
	});
	return false;
}

function rolet(rolet_id, speed, dop_hide_block) {
    $('#' + rolet_id).slideDown(speed);
    $('#' + dop_hide_block).hide();
}

function alert_window() {

    var pad_left = mess.width() / 2 - 16;
    var pad_top = mess.height() / 2 - 16;
    mess.before('<div class="loading" style="padding-left:' + pad_left + 'px; padding-top:' + pad_top + 'px;"><img src="/img/loading.gif"><div>');

}

function focus_field(obj) {
    if ($(obj).val() == $(obj).next().val()) {
        $(obj).removeClass('gr');
        if ($(obj).next().next()) $(obj).val($(obj).next().next('.default_value').val());
        else $(obj).val('');
    }
}

function blur_field(obj) {
    if ($(obj).val().length == 0 || $(obj).val() == $(obj).next().next('.default_value').val()) {
        $(obj).addClass('gr');
        $(obj).val($(obj).next().val());
    }
}

function focus_field_v2(obj) {
    if ($(obj).val() == $('#default_value_blur_'+$(obj).attr('id')).val()) {
        $(obj).removeClass('gr');
        if ($('#default_value_focus_'+$(obj).attr('id'))) $(obj).val($('#default_value_focus_'+$(obj).attr('id')).val());
        else $(obj).val('');
    }
}

function blur_field_v2(obj) {
    if ($(obj).val().length == 0 || $(obj).val() == $('#default_value_focus_'+$(obj).attr('id')).val()) {
        $(obj).addClass('gr');
        $(obj).val($('#default_value_blur_'+$(obj).attr('id')).val());
    }
}

function loading_textarea(mode, mess) {

    if (mode == 'show') {
        var pad_left = mess.width() / 2 - 16;
        var pad_top = mess.height() / 2 - 16;
        mess.before('<div class="loading" style="padding-left:' + pad_left + 'px; padding-top:' + pad_top + 'px;"><img src="/img/loading.gif"><div>');
    } else {
        $('.loading').remove();
    }

}

function loading_nice_form(mode, atype) {

    var obj = $('#loading_block_' + atype);
obj.show();
    if (mode == 'show') {
        var pad_left = obj.width() / 2 - 16;
        var pad_top = obj.height() / 2 - 16;
        obj.show();
        $("> img", obj).css('padding-left', pad_left).css('padding-top', pad_top);
    } else {
        obj.hide();
    }

}

function check_form (serr_class) {

    var fields = $("." + serr_class).serializeArray();

    var vars = new Object();
    var objects = new Object();
    var error = 0;

    jQuery.each(fields, function(i, field) {

        vars[field['name']] = jQuery.trim(field['value']);
        objects[field['name']] = $("#" + field['name']);

        if (vars[field['name']].length == 0 || (objects[field['name']].next().attr('class') == 'default_value' && vars[field['name']] == objects[field['name']].next().val())) {
            error_red(objects[field['name']].parent());
            error = 1;
        } else {
            error_red_disable(objects[field['name']].parent());
        }


        if (field['name'] == 'email' || objects[field['name']].hasClass('email_check')) {
            reg = /^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i;
            if (!vars[field['name']].match(reg)) {
                error_red(objects[field['name']].parent());
                error = 1;
            }
        }
		
    });
	
	if ($('.'+serr_class+'_agree').length){
		if($('.'+serr_class+'_agree').is(':checked') == false){
			if($('#'+serr_class+'_alert_mess_block_agree').length){
				$('#'+serr_class+'_alert_mess_block_agree').show();
			}
			error = 1;
		}
		else
		{
			$('#'+serr_class+'_alert_mess_block_agree').hide();
		}
	}

    return {
        vars: vars,
        objects: objects,
        error: error
    };

}

function check_form_v2(serr_class) {
	
    var fields = $("." + serr_class).serializeArray();

    var vars = new Object();
    var objects = new Object();
    var error = 0;

    jQuery.each(fields, function(i, field) {

        vars[field['name']] = jQuery.trim(field['value']);
        objects[field['name']] = $("#" + field['name']);

        if (objects[field['name']].is('.check_field')) {
            if (vars[field['name']].length == 0 || (objects[field['name']].next().is('.default_value') /*objects[field['name']].next().attr('class') == 'default_value'*/ && vars[field['name']] == objects[field['name']].next().val())) {
                error_red(objects[field['name']].parent());
                error = 1;
            } else {
                error_red_disable(objects[field['name']].parent());
            }
        }

        if (objects[field['name']].hasClass('email_check')) {
            reg = /^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i;
            if (!vars[field['name']].match(reg)) {
                error_red(objects[field['name']].parent());
                error = 1;
            }
        }

        if (objects[field['name']].hasClass('phone_number_check')) {
            reg = /^([\d\s-\[\]()\/]+)$/i
            if (!vars[field['name']].match(reg)) {
                error_red(objects[field['name']].parent());
                error = 1;
            }
        }
    });

	if ($('.agreement_'+serr_class).length){
		if($('.agreement_'+serr_class).is(':checked') == false){
			if($('#alert_mess_block_agreement_'+serr_class).length){
				$('#alert_mess_block_agreement_'+serr_class).show();
				//$('#alert_mess_text_block_'+serr_class).html('');
			}
			error = 1;
		}
	}
	
    return {
        vars: vars,
        objects: objects,
        error: error
    };

}

function check_form_v3(serr_class) {
	
    var error = false;

    var fields = $("." + serr_class).serializeArray();

    var vars = new Object();
    var objects = new Object();
    var error = false;
    var error_objects = new Object();
    var error_type = new Object();

    jQuery.each(fields, function(i, field) {

		vars[field['name']] = jQuery.trim(field['value']);
		objects[field['name']] = $("#" + field['name']);

		error_red_disable(objects[field['name']]);
		$('#error_mess_'+objects[field['name']].attr('id')).hide().html('');

		if (objects[field['name']].hasClass('email_check')) {
			if (check_email( objects[field['name']]))
			{
				error = true;
				error_objects[objects[field['name']].attr('id')] = true;
				error_type[objects[field['name']].attr('id')] = 'email_check';
			}
		}

		if (objects[field['name']].hasClass('phone_number_check_lite')) {
			if (check_phone_number_lite (objects[field['name']]))
			{
				error = true;
				error_objects[objects[field['name']].attr('id')] = true;
				error_type[objects[field['name']].attr('id')] = 'phone_number_check';
			}
		}

		if (objects[field['name']].hasClass('phone_number_check')) {
			if (check_phone_number (objects[field['name']]))
			{
				error = true;
				error_objects[objects[field['name']].attr('id')] = true;
				error_type[objects[field['name']].attr('id')] = 'phone_number_check';
			}
		}

		if (objects[field['name']].hasClass('check_field')) {
			if (check_field(objects[field['name']]))
			{
				error = true;
				error_objects[objects[field['name']].attr('id')] = true;
				error_type[objects[field['name']].attr('id')] = 'check_field';
				
			}
		}

    });
	
	var agreement = $('.agreement')
	if(agreement.hasClass(serr_class))
	{
		if (check_agreement (agreement))
		{
			error = true;
			error_objects[agreement.attr('id')] = true;
			error_type[agreement.attr('id')] = 'check_agreement';
		}
	}
	
	return {
		vars: vars,
		objects: objects,
		error: error,
		error_objects: error_objects,
		error_type: error_type
    };

}

function check_agreement (object)
{
	if(object.is(':checked') == false){
		$('#error_mess_agreement_'+object.attr('id')).show();
		return true;
	}else{
		$('#error_mess_agreement_'+object.attr('id')).hide();
		return false;
	}

}

function check_field (object)
{
	var object_val = $.trim(object.val());
	if (object_val.length == 0 || object_val == $.trim($('#default_value_blur_'+object.attr('id')).val()) || object_val == $.trim($('#default_value_focus_'+object.attr('id')).val())) {
		error_red(object);
		return true;
	}else{
		return false;
	}
}

/*function check_email (object)
{

	reg = /^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i;
	if (!object.val().match(reg)) {
		error_red(object);
		$('#error_mess_'+object.attr('id')).show().html('Неверный формат адреса электронной почты. <br />Работающий электронной почтовый ящик необходим для завершения регистрации. <br />Пример e-mail - email@site.com');
		return true;
	}else{
		return false;
	}
}*/

function check_email (object)
{

	reg = /^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i;
	if (!object.val().match(reg)) {
		error_red(object);
		return true;
	}else{
		return false;
	}
}

function check_phone_number (object)
{
	var reg = /^([\d\s-\[\]()\/]+)$/i;
	
	if ($('#default_value_focus_'+object.attr('id')).length && (jQuery.trim($('#default_value_focus_'+object.attr('id')).val()) == jQuery.trim(object.val()) ||
	jQuery.trim(object.val()).length == 0 ||
	!object.val().match(reg))){
		error_red(object);
		//$('#error_mess_'+object.attr('id')).show().html('Телефонный номер может содержать только цифры, пробелы и знаки ( ) - /');
		return true;
	}else{
		return false;
	}
}

function check_phone_number_lite (object)
{
	var reg = /^([\d\s-\[\]()\/]+)$/i;
	
	if (jQuery.trim($('#default_value_focus_'+object.attr('id')).val()) == jQuery.trim(object.val()) ||
	jQuery.trim(object.val()).length == 0 ||
	!object.val().match(reg)){
		error_red(object);
		//$('#error_mess_'+object.attr('id')).show().html('Телефонный номер может содержать только цифры, пробелы и знаки ( ) - /');
		return true;
	}else{
		return false;
	}
}

function error_red(obj) {
    if (obj.hasClass('error_red') == false) {
        obj.addClass('error_red');
    }
}

function error_red_disable(obj) {
    if (obj.hasClass('error_red') == true) {
        obj.removeClass('error_red');
    }
}

function clear_error_fields(objects) {
    jQuery.each(objects, function(i, field) {
        error_red_disable($('[name=\'' + field + '\']').parent());
    });
}

function set_error_fields(fields) {
    jQuery.each(fields, function(i, field) {
        error_red($('[name=\'' + field + '\']').parent());
    });
}

function set_error_fields_suffix(fields, suffix) {
    jQuery.each(fields, function(i, field) {
        error_red($('[name=\'' + field + '_' + suffix + '\']').parent());
    });
}

function tooltip (obj, text, wind_style) {
	var wind_style = wind_style;
	var text = text;
	if (!wind_style) {
		var left = obj.offset().left + Math.round(obj.width()/2) - 7;
		var top = obj.offset().top;
		var mess_block = '<div class="tooltip_simple" id="tooltip"><div class="tooltip_shadow"><div class="tooltip_simple_text_block">'+text+'</div></div><div class="tooltip_simple_pointer"></div></div>';
			var wind = $(mess_block).prependTo('body');
			wind.css('top', top-wind.height()).css('left', left);
	}
}

function hide_tooltip() {
    $('#tooltip').remove();
	$('.tooltip').remove();
}

function show_pass_field(obj) {
    $(obj).hide();
    $(obj).removeClass('comment_var');
    $(obj).prev().addClass('comment_var').show().focus();
    $(obj).prev().attr("disabled", false);
}

function hide_pass_field(obj) {
    if ($(obj).val().length == 0) {
        $(obj).hide();
        $(obj).removeClass('comment_var');
        $(obj).next().addClass('comment_var').show();
    }
}

function show_error_mess(mess_test) {
    $('#comment_alert_mess_block').show();
    $('#comment_alert_mess_text_block').html(mess_test);

}

function hide_error_mess() {
    $('#comment_alert_mess_block').hide();
    $('#comment_alert_mess_text_block').html('');
}

function show_error_mess_suffix(mess_text, suffix) {

    $('#error_mess_' + suffix).show().html(mess_text);
}

function hide_error_mess_suffix(suffix) {
    $('#error_mess_' + suffix).hide().html('');
}

function autoreg_show_pass_field(obj, fields_group_class) {
    $(obj).hide();
    $(obj).removeClass(fields_group_class);
    $(obj).removeClass('check_field');
    $(obj).prev().addClass(fields_group_class).show().focus();
    $(obj).prev().addClass('check_field').show().focus();
    $(obj).prev().attr("disabled", false);
}

function autoreg_hide_pass_field(obj, fields_group_class) {
    if ($(obj).val().length == 0) {
        $(obj).hide();
        $(obj).removeClass(fields_group_class);
        $(obj).removeClass('check_field');
        $(obj).next().addClass(fields_group_class).show();
        $(obj).next().addClass('check_field').show();
    }
}

function autoreg_all_sicret_fields_clear(suffix) {
    var return_obj = new Object();
    return_obj['pass_block'] = $('#pass_block_' + suffix).hide();
    return_obj['pre_pass'] = $('#pre_pass_' + suffix).hide();
    return_obj['pass'] = $('#pass_' + suffix).hide();
    return_obj['name'] = $('#name_' + suffix).hide();
    return_obj['name_block'] = $('#name_block_' + suffix).hide();
    return_obj['comment_alert_mess_block'] = $('#error_mess' + suffix).hide();
    return_obj['agreement_alert_mess_block'] = $('#alert_mess_block_agreement_' + suffix).hide();
    return_obj['agreement'] = $('#agreement_' + suffix);
	
    //return_obj['comment_alert_mess_block'] = $('#alert_mess_block_'+suffix).hide();
    //return_obj['comment_alert_mess_text_block'] = $('#alert_mess_text_block_'+suffix).html('');
    return_obj['name'].removeClass(suffix).val(return_obj['name'].next().val()).attr("disabled", false).addClass('gr');
    return_obj['name'].removeClass('check_field').val(return_obj['name'].next().val()).attr("disabled", false).addClass('gr');
    return_obj['pass'].removeClass(suffix).val('').attr("disabled", false);
    return_obj['pass'].removeClass('check_field').val('').attr("disabled", false);
    return_obj['pre_pass'].removeClass(suffix).val(return_obj['pre_pass'].next().val());
    return_obj['pre_pass'].removeClass('check_field').val(return_obj['pre_pass'].next().val());
    return_obj['agreement'].removeClass('agreement_' + suffix).attr('checked', '');
	//return_obj['agreement_alert_mess_block'].removeClass(suffix);

    return return_obj;
}

(function($) {

    $.fn.autogrow = function(options) {

        this.filter('.autogrow').each(function() {

            var $this = $(this),
                minHeight = $this.height(),
                lineHeight = $this.css('lineHeight');

            var shadow = $('<div></div>').css({
                position: 'absolute',
                top: -10000,
                left: -10000,
                width: $(this).width() - parseInt($this.css('paddingLeft')) - parseInt($this.css('paddingRight')),
                fontSize: $this.css('fontSize'),
                fontFamily: $this.css('fontFamily'),
                lineHeight: $this.css('lineHeight'),
                resize: 'none'
            }).appendTo(document.body);

            var update = function() {

                    var times = function(string, number) {
                            for (var i = 0, r = ''; i < number; i++) r += string;
                            return r;
                        };

                    var val = this.value.replace(/</g, '<').replace(/>/g, '>').replace(/&/g, '&').replace(/\n$/, '<br/> ').replace(/\n/g, '<br/>').replace(/ {2,}/g, function(space) {
                        return times(' ', space.length - 1) + ' '
                    });

                    shadow.html(val);
                    $(this).css('height', Math.max(shadow.height() + 20, minHeight));

                }

            $(this).change(update).keyup(update).keydown(update);

            update.apply(this);

        });

        return this;

    }

})(jQuery);
