// autorize registration profile
$(document).ready(function(){
	$('#checkmail_form').length || $('#show_reg_link').click(function(){show_reg_form();return false;});
//	$('#forgot_form').length || $('#show_forgot_link').click(function(){show_forgot_form();return false;});
	if ($('#checkmail_form').length) {
		$('#top_reg_block').remove();
		$('#checkmail_form').submit(function(){
			if (!check_email($('#reg_email').val())) {
				alert('Введен некорректный e-mail: '+$('#reg_email').val());
				return false;
			}
			return true;
		});
	}
	if ($('#profile_form').length) {
		$('#reg_login').change(function(){check_login($('#reg_login'),1)});
		$('#reg_pass_1').change(function(){if ($('#reg_pass_2') && $('#reg_pass_2').val()) check_pass()});
		$('#reg_pass_2').change(function(){check_pass()});
		$('#profile_form').submit(function(){
			_ok=true&check_login($('#reg_login'),0)&check_pass();
			_ok=_ok&check_fi($('#reg_f'))&check_fi($('#reg_i'))&check_index($('#reg_index'))&check_region($('#reg_region'))&check_city($('#reg_city'))&check_address($('#reg_address'))&
				(check_phone($('#reg_phone_1'))?true:false)&
				(check_phone($('#reg_phone_2'))?true:false)&
				(check_phone($('#reg_phone_3'))?true:false)&
				(check_phone($('#reg_phone_4'))?true:false)&
				(check_phone($('#reg_phone_5'))?true:false)&
				check_phone_group()&check_icq($('#reg_icq'));
			_ok = _ok ? true : false;
			if (!_ok) {
				alert('Форма заполнена некорректно. Поля с ошибками выделены красным цветом.');
				return false;
			}
			
			if (obj('apply_rules_chk').checked) {
				return _ok;
			} else {
				alert('Подтвердите, что Вы ознакомились с правилами');
				if (obj('rules_link')) obj('rules_link').focus();
				return false;
			}
		});
	if ($('#reg_f').length) $('#reg_f').change(function(){check_fi($('#reg_f'))});
	if ($('#reg_i').length) $('#reg_i').change(function(){check_fi($('#reg_i'))});
	if ($('#reg_index').length) $('#reg_index').change(function(){check_index($('#reg_index'),1)});
	if ($('#reg_region').length) $('#reg_region').change(function(){check_region($('#reg_region'))});
	if ($('#reg_city').length) $('#reg_city').change(function(){check_city($('#reg_city'))});
	if ($('#reg_address').length) $('#reg_address').change(function(){check_address($('#reg_address'))});
	if ($('#reg_icq').length) $('#reg_icq').change(function(){check_icq($('#reg_icq'))});
	if ($('#reg_phone_1').length) $('#reg_phone_1').keypress(function() {add_phone_more(this);});
	if ($('#reg_phone_1').length) $('#reg_phone_1').blur(function() {check_phone($('#reg_phone_1'));});
	}
});

function show_reg_form() {
	checkmail_=function(){check_email($('#reg_email').val()) ? abAjax('checkEmail', 'reg_submit_but', 1, {'email': $('#reg_email').val()}) : alert('Введен некорректный e-mail: '+$('#reg_email').val())}
	$('#autorize_form').css('display','none');
	$('#top_forgot_form').css('display','none');
	$('#show_forgot_link').css('display','block');
	var reg_div = _createElement('div', 'id|top_checkemial_');
	reg_div.appendChild(_createElement('form', 'id|top_checkemail_form|method|post', 'Введите e-mail:&nbsp;<input name="email" class="registration_email" id="reg_email" />&nbsp;<input type="button" class="autorize_b" value="" id="reg_submit_but" />'));
	$('#autorize_form').after(reg_div);
	var aut_link = _createElement('a', 'id|show_autorize_link|class|local|href|javascript:void(0)', 'Вход');
	aut_link.onclick=function(){show_autorize_form()}
	$('#reg_submit_but').click(function(){checkmail_();return false});
	$('#top_checkemail_form').submit(function(){checkmail_();return false});
	$('#reg_link').text('Регистрация');
	$('#aut_link').empty().append(aut_link);
}

function show_autorize_form(){
	$('#top_checkemial_').remove();
	$('#top_forgot_form').css('display','none');
	$('#autorize_form').css('display','block');
	$('#show_forgot_link').css('display','block');
	var reg_link = _createElement('a', 'id|show_reg_link|class|local|href|javascript:void(0)', 'Регистрация');
	reg_link.onclick=function(){show_reg_form();return false;};
	$('#reg_link').empty().append(reg_link);
	$('#aut_link').text('Вход');
}
function show_forgot_form(){
	$('#top_checkemial_').remove();
	$('#autorize_form').css('display','none');
	$('#show_forgot_link').css('display','none');
	if (!$('#top_forgot_form').length) {
		var forgot_div = _createElement('div', 'id|top_forgot_');
		forgot_div.appendChild(_createElement('form', 'id|top_forgot_form|method|post', 'Введите e-mail или логин:&nbsp;<input name="email" class="registration_email" id="forgot_email" />&nbsp;<input type="button" class="autorize_b" value="" id="forgot_submit_but" />'));
		$('#autorize_form').after(forgot_div);
	} else {
		$('#top_forgot_form').css('display','block');
	}
}
function check_email(email) {
	$('#message_info').remove();$('#message_error').remove();
	return isValidEmail(jQuery.trim(email));
}
function isValidEmail (email) {
	return (/^([a-z0-9_\-]+\.)*[a-z0-9_\-]+@([a-z0-9][a-z0-9\-]*[a-z0-9]\.)+[a-z]{2,4}$/i).test(email);
}
function show_message(mes,err) {
	var mess = '';
	for (var i in mes) {
		mess += mess ? '<br />' : '';
		mess += mes[i].text;
	}
	inner=mess?'<table id="message_'+(err==4?'info':'error')+'"><th id="message_'+(err==4?'info':'error')+'_text">'+mess+'</th></table>':'';
	$('#content').html(inner+$('#content').html());
}
function show_checked(id, a) {
	$('#'+id+'_checked').css('display', a?'':'none');
}
function show_error(id, text) {
	if (!text) text = '';
	$('#'+id+'_err').html(text);
}


function check_login(a,nf) {
	show_error('reg_login');
	if (nf) $('#reg_login_checked').attr('src','/_des2/imgs/preloader.gif');
	show_checked('reg_login', 1);
	if (a.val() && (/^[\wа-яА-ЯёЁ\d_\-\s]{2,16}$/i).test(a.val())) {
		if (nf) {
			abAjax('checkLogin', undefined, undefined, {'code': $('#check_code').val(), 'login': a.val()}, reg__checked);
		} else {
			a.removeClass();
			show_error('reg_login');
			return true;
		}
	} else {
		a.addClass("error_input");
		show_checked('reg_login');
		show_error('reg_login', a.val()?'Неверный формат':'Обязательное поле');
		return false;
	}
}
function check_pass() {
	if ($('#reg_pass_1').val() || $('#reg_pass_2').val()) {
		if ($('#reg_pass_1').val() == $('#reg_pass_2').val()) {
			show_checked('reg_pass_1', 1);
			show_checked('reg_pass_2', 1);
			show_error('reg_pass_2');
			$('#reg_pass_1').removeClass();
			$('#reg_pass_2').removeClass();
		} else {
			show_checked('reg_pass_1');
			show_checked('reg_pass_2');
			show_error('reg_pass_2', 'Пароли не совпадают');
			$('#reg_pass_1').addClass("error_input");
			$('#reg_pass_2').addClass("error_input");
			return false;
		}
	}
	return true;
}


function reg__checked (res, data, mes) {
	if (data && data.check_id) {
		show_checked(data.check_id, res==4?1:0);
		$('#'+data.check_id+'_checked').attr('src','/_des2/imgs/23.png');
		show_error(data.check_id, res!=4?mes:'');
		$('#'+data.check_id).attr('class',res!=4?"error_input":"");
	}
}

/* crutch */

function reg__index (res, data, mes) { // (js, text) {
	show_checked(data.check_id);
	if (res==4) {
		if (data.region_id && obj('reg_region')) {
			for (var i=0; i < obj('reg_region').options.length; i++) {
				if (obj('reg_region').options[i].value == data.region_id) obj('reg_region').options[i].selected=true;
			}
		}
		if (data.city && obj('reg_city')) obj('reg_city').value = data.city;
		check_index($('#reg_index'));
		check_region($('#reg_region'));
		check_city($('#reg_city'));
		if (obj('reg_address')) obj('reg_address').focus();
	} else {
		
	}
}


function check_fi(a) {
	if (obj('reg_auc_chk') && obj('reg_auc_chk').checked) {
		if (a.val() && (/^[а-яА-ЯёЁ\-]{2,}$/i).test(a.val())) {
			a.attr('class','');
			show_error(a.attr('id'));
		} else {
			a.addClass("error_input");
			show_error(a.attr('id'), a.val() ? 'Неверный формат' : 'Обязательное поле');
			return false;
		}
	}
	return true;
}
function check_index(a,nf) {
	if (obj('reg_auc_chk') && obj('reg_auc_chk').checked) {
		if (nf) show_checked('reg_index', 1);
		show_error('reg_index');
		if (a.val() && (/^\d{6}$/i).test(a.val())) {
			if (nf) {
				abAjax('checkIndex', undefined, undefined, {'index': a.val(), 'code': $('#check_code').val()}, reg__index);
			} else {
				a.attr('class','');
				show_error('reg_index');
			}
		} else {
			a.addClass("error_input");
			show_checked('reg_index');
			show_error('reg_index', a.val()?'Неверный формат':'Обязательное поле');
			return false;
		}
	}
	return true;
}
function check_region(a) {
	if (obj('reg_auc_chk') && obj('reg_auc_chk').checked && a.length) {
		if (a.val() > 0) {
			a.attr('class','');
			show_error('reg_region');
		} else {
			a.addClass("error_input");
			show_error('reg_region', 'Обязательное поле');
			return false;
		}
	}
	return true;
}
function check_city(a) {
	if (obj('reg_auc_chk') && obj('reg_auc_chk').checked && a.length) {
		if (a.val() && (/^[а-яА-ЯёЁ\-\s]{2,}$/i).test(a.val())) {
			a.attr('class','');
			show_error('reg_city');
		} else {
			a.addClass("error_input");
			show_error('reg_city', a.val()?'Неверный формат':'Обязательное поле');
			return false;
		}
	}
	return true;
}
function check_address(a) {
	if (obj('reg_auc_chk') && obj('reg_auc_chk').checked && a.length) {
		if (a.val() && (/^[а-яА-ЯёЁ№\d\-\s\,\.\/\\]{2,}$/i).test(a.val())) {
			a.attr('class','');
			show_error('reg_address');
		} else {
			a.addClass("error_input");
			show_error('reg_address', a.val()?'Неверный формат':'Обязательное поле');
			return false;
		}
	}
	return true;
}
function check_icq(a) {
	if (obj('reg_auc_chk') && obj('reg_auc_chk').checked && a.length) {
		if (a.val() && (!(/^[\d\s\-]{5,15}$/i).test(a.val()) || (a.val().replace(/[\s\-]/g,'').length < 5))) {
			a.addClass("error_input");
			show_error('reg_icq', 'Неверный формат');
			return false;
		} else {
			a.attr('class','');
			show_error('reg_icq');
			return true;
		}
	}
	return true;
}


function check_phone(a) {
	if (!a || !a.length) return 1;
	id_ = a.attr('id');
	tmp = id_.split('_');
	if (tmp && tmp[2]) id = tmp[2] - 0;

	t = a.val().replace(/\s/, '');
	if (t) {
		t = t.replace(/[\s\+\-\(\)]/g, '');
		if ((/^\d{10,}$/i).test(t)) {
			a.attr('class','');
			show_error('reg_phone_'+id);
			return 2;
		} else {
			a.attr('class','error_input');
			RemoveMe('add_phone_'+id);
			show_error('reg_phone_'+id, 'Неверный формат1');
			return false;
		}
	} else {
		a.attr('class','');
		show_error('reg_phone_'+id);
		RemoveMe('add_phone_'+id);
		return 1;
	}
}

function check_phone_group() {
	if (obj('reg_auc_chk') && obj('reg_auc_chk').checked) {
		phones = check_phone($('#reg_phone_1')) + check_phone($('#reg_phone_2')) + check_phone($('#reg_phone_3')) + check_phone($('#reg_phone_4')) + check_phone($('#reg_phone_5'));
		if (phones == 5) {
			obj('reg_phone_1').className="error_input";
			show_error('reg_phone_1', 'Обязательное поле');
			RemoveMe('add_phone_1');
			return false;
		} else if (phones > 5) {
			show_error('reg_phone_1', '');
		}
	}
	return true;
}

function add_phone(a) {
	id_=a.getAttribute('id');
	tmp=id_.split('_');
	if (tmp[2]) {
		id_cur = tmp[2] - 0;
		id_next = id_cur + 1;
	}
	tr = _createElement('tr','id|tr_phone_'+id_next);
	tr.appendChild(_createElement('td','class|p','<!-- -->'));
	tr.appendChild(_createElement('td','id|td_phone_'+id_next,'<select name="phone_type_'+id_next+'" style="width:104px;" id="phone_type_'+id_next+'" tabindex="'+(140+id_next*10)+'"><option value="cell">мобильный</option><option value="home">домашний</option><option value="work">рабочий</option><option value="fax">факс</option></select>&nbsp;<input name="phone_'+id_next+'" id="reg_phone_'+id_next+'" style="width:140px;" tabindex="'+(145+id_next*10)+'" /><span class="reg_err" id="reg_phone_'+id_next+'_err"></span>'));
	$('#tr_phone_'+id_cur).after(tr);
	if (obj('reg_phone_'+id_next)) {
		obj('reg_phone_'+id_next).onkeypress=function(){add_phone_more(this)}
		$('#reg_phone_'+id_next).blur(function(){check_phone($('#reg_phone_'+id_next))});
	}
	$('#phone_type_'+id_next).focus();
	RemoveMe(a);
	return false;
}

function add_phone_more(b) {
	id_ = b.getAttribute('id');
	ti = b.getAttribute('tabindex') - 0;
	tmp = id_.split('_');
	if (tmp[2]) {
		id_cur = tmp[2] - 0;
		id_next = id_cur + 1;
	}
	if (b.value && (/^\+{0,1}[\d\s\(\)\-]*$/i).test(b.value)) {
		b.className="";
		show_error('reg_phone_'+id_cur);
		if ((b.value.length > 8) && !obj('tr_phone_'+id_next) && id_cur < 5) {
			if (obj('td_phone_'+id_cur) && !obj('add_phone_'+id_cur)) {
				obj('td_phone_'+id_cur).appendChild(_createElement('span','id|add_phone_'+id_cur+'|class|reg_err',' &nbsp; <a href="javascript:void(0)" class="local" tabindex="'+(ti+1)+'" id="add_phone_'+id_cur+'_more">Еще</a>'));
				if (obj('add_phone_'+id_cur)) obj('add_phone_'+id_cur).onclick=function(){add_phone(this)};
			}
		} else {
			RemoveMe('add_phone_'+id_cur);
		}
	} else if (b.value) {
		b.className="error_input";
		RemoveMe('add_phone_'+id_cur);
		show_error('reg_phone_'+id_cur, 'Неверный формат');
	}
}

/* crutch - end */



/*


// -- registration



*/
/*
"success":integer,	//	1 : fatal error; 2 : access denied; 3 : incorrect params; 4 - ok
"dom":[
	"id1": {
		"_tag":TAG_NAME,
		"_delete":1|0		//	удалить объект
		"_clear":1|0		//	очистка (нужны/нет) innerHTML перед добавлением дочерних объектов
		"_after":DOM_id		//	после какого объекта вставлять
		"_attr":{
			'_delete':[],
			'_set':{
				"name":value,
				...
			}
		},
		"_text":string,
		"_events":{		//	события для объекта
			'_delete':[],
			'_set':{
				"event":function,
				...
			}
		}
		"_childs":{		//	дочерние объекты
			"id11":...,
			...
		}
	}
],
"vars":[
	'var_name':{
		'renew':1|0,		//	обновить/пропустить переменную если она уже имеет значение
		'value':somth
		},
	...
]
"funcs":[
	'func_name':function,
	...
]
"result":somt,		//	произвольные данные, которые передаются в функцию которая будет вызвана после отработки запроса
"html":{
	"clear":1|0,	//	очистка нужна/нет
	"text":string 	// 	вставляется в виде somth.innerHTML="html"
	},
"precode":string, // выполняется до обработки результата
"postcode":string, // выполняется после обработки результата
"message":string, // сообщение об ошибке или уведомление
*/