var rname = "";
var validatetimeout = "";
var validatehold = 0;

// показываем/скрываем 
function ShowHideError(errid, text)
{
	if (errid != "")
	{
		var err = gid('error_' + errid);
		if (text != "")
		{
			err.innerHTML = errimg + text;
			err.style.display = "block";
		}
		else
		{
			err.innerHTML = "";
			err.style.display = "none";
		}
	}
}

function TestProtect(protect)
{

		ShowHideError('protect', "");
		if (protect == "")
		{
			ShowHideError('protect', "Введите&nbsp;код&nbsp;защиты&nbsp;от&nbsp;роботов&nbsp;8)");
		}
}

// проверяем возрастной допуск
function TestAge(dayid, monid, yearid)
{
	ShowHideError('birthday', "");
	var obj1 = document.getElementById(dayid).value;
	var obj2 = document.getElementById(monid).value;
	var obj3 = document.getElementById(yearid).value;
	if(obj1 && obj2 && obj3)
	{
		var now = new Date();
		var current_date = now.getTime();
		var limit = ((agelimit * 365) * 24 + (6 * agelimit)) * 60 * 60 * 1000;
		limit = current_date - (current_date - limit);
		now.setFullYear(obj3, (obj2 - 1), obj1);
		var user_date = now.getTime();
		user_date = current_date - user_date;
		if (limit > user_date)
		{
			ShowHideError('birthday', "Ваш&nbsp;возраст&nbsp;ниже&nbsp;возрастных&nbsp;ограничений&nbsp;сайта");
			return false;
		}
		return true;
	}
}


// проверяем пароли
// passid - идентификатор поля с паролем
// repassid - идентификатор поля с повторением пароля
function TestPasswords(passid, repassid)
{
	ShowHideError('password', "");
	if (passid != "" && repassid != "")
	{
		pass1 = gid(passid).value;
		pass2 = gid(repassid).value;
		if (pass1 == "" || pass2 == "")
		{
			ShowHideError('password', ((pass1 == "" && pass2 != "") ? "Введите&nbsp;пароль" : ((pass1 != "" && pass2 == "") ? "Введите&nbsp;подтверждение&nbsp;пароля" : "")));
			return false;
		}
		if (pass1 != "" && pass2 != "" && pass1 !== pass2)
		{
			ShowHideError('password', "Пароль&nbsp;и&nbsp;подтверждение&nbsp;пароля&nbsp;не&nbsp;совпадают");
			return false;
		}
		return true;
	}
}


// сохраняем реалнейм если он не изменялся пользователем
// loginid - идентификатор поля с логином
// rnameid - идентификатор поля с реалнеймом
function SetRealname(loginid, rnameid)
{
	if (loginid != "" && rnameid != "")
	{
		loginobj = gid(loginid);
		rnameobj = gid(rnameid);
		if (loginobj.value != rnameobj.value && rnameobj.value === rname)
		{
			rnameobj.value = rname = loginobj.value;
		}
	}
}


// получаем аяксом результат
requests['doCheckUserData'] = "";

function doCheckUserData(type)
{
	if (type != "")
	{
		if (type === 'login'){err_login = 0;}
		ShowHideError(type, "");
		var value = gid(type).value
		if (value != "" && ( (type === "login" && CheckLogin(value)) || (type === "email" && CheckMail(value)) ) )
		{
			gid('wait_check').value = 1;
			ShowHideWait(type, 1);
			var val = Array();
			val['type'] = type;
			val['value'] = gid(type).value;
			requests['doCheckUserData'] = new JsHttpRequest();
			requests['doCheckUserData'].onreadystatechange = function()
			{
				if (requests['doCheckUserData'].readyState == 4)
				{
					ShowHideWait(type, 0);
					if (requests['doCheckUserData'].responseText)
					{
						CachObjects['pageerror'].innerHTML = requests['doCheckUserData'].responseText;
						CachObjects['pageerror'].style.display = "block";
						setTimeout("CachObjects['pageerror'].style.display = 'none'", 15000);
					}
					if (requests['doCheckUserData'].responseJS.answer.type === type)
					{
						ShowHideError(requests['doCheckUserData'].responseJS.answer.type, requests['doCheckUserData'].responseJS.answer.trouble);
						if (type === 'login'){err_login = 1;}
						//rname = (requests['doCheckUserData'].responseJS.answer.trouble != "") ? "" : rname;
						if (type === 'login' && requests['doCheckUserData'].responseJS.answer.trouble == "")
						{
							SetRealname(type, 'realname');
						}
					}
					if (dev_show == 1)
					{
//						CachObjects['ajax_stat'].innerHTML += "<br>doCheckUserData\n" + requests['doCheckUserData'].responseJS.statistic;
					}
					gid('wait_check').value = 0;
				}
			}
			requests['doCheckUserData'].open(null, '/data/templates/serverside/ajax.checkuserdata.php', true);
			requests['doCheckUserData'].send( { q : val } );
		}
		else
		{
			if (value != "" && type === "login" && !CheckLogin(value))
			{
				ShowHideError(type, "В&nbsp;логине&nbsp;присутствуют&nbsp;запрещенные&nbsp;символы");
				err_login = 1;

			}
			if (value != "" && type === "email" && !CheckMail(value))
			{
				ShowHideError(type, "Введите&nbsp;корректный&nbsp;e-mail");
			}
			gid('wait_check').value = 0;
		}
	}
}


function doCheckUserLogin()
{

	var type="login";
	//var type="user_login";
	err_login = 0;
	if (type != "")
	{
		ShowHideError(type, "");
		var value = gid(type).value
		if (value != "" && CheckLogin(value)  )
		{
			gid('wait_check').value = 1;
			ShowHideWait(type, 1);
			var val = Array();
			val['type'] = type;
			val['value'] = gid(type).value;
			requests['doCheckUserLogin'] = new JsHttpRequest();
			requests['doCheckUserLogin'].onreadystatechange = function()
			{
				if (requests['doCheckUserLogin'].readyState == 4)
				{
					ShowHideWait(type, 0);
					if (requests['doCheckUserLogin'].responseText)
					{
						CachObjects['pageerror'].innerHTML = requests['doCheckUserLogin'].responseText;
						CachObjects['pageerror'].style.display = "block";
						setTimeout("CachObjects['pageerror'].style.display = 'none'", 15000);
					}
					if (requests['doCheckUserLogin'].responseJS.answer.type === type)
					{
						ShowHideError(requests['doCheckUserLogin'].responseJS.answer.type, requests['doCheckUserLogin'].responseJS.answer.trouble);
						if (requests['doCheckUserLogin'].responseJS.answer.trouble){err_login = 1;}
						//rname = (requests['doCheckUserLogin'].responseJS.answer.trouble != "") ? "" : rname;
					}
					if (dev_show == 1)
					{
//						CachObjects['ajax_stat'].innerHTML += "<br>doCheckUserLogin\n" + requests['doCheckUserLogin'].responseJS.statistic;
					}
					gid('wait_check').value = 0;
				}
			}
			requests['doCheckUserLogin'].open(null, '/data/templates/serverside/ajax.checkuserdata.php', true);
			requests['doCheckUserLogin'].send( { q : val } );
		}
		else
		{
			if (value != "" && type === "login" && !CheckLogin(value))
			{
				ShowHideError(type, "В&nbsp;логине&nbsp;присутствуют&nbsp;запрещенные&nbsp;символы");
				err_login = 1;
			}
			gid('wait_check').value = 0;
		}
	}
}


function doCheckUserEmail()
{

	var type="email";
	err_email = 0;
	if (type != "")
	{
		ShowHideError(type, "");
		var value = gid(type).value
		if (value != "" && CheckMail(value)  )
		{
			gid('wait_check').value = 1;
			ShowHideWait(type, 1);
			var val = Array();
			val['type'] = type;
			val['value'] = gid(type).value;
			requests['doCheckUserEmail'] = new JsHttpRequest();
			requests['doCheckUserEmail'].onreadystatechange = function()
			{
				if (requests['doCheckUserEmail'].readyState == 4)
				{
					ShowHideWait(type, 0);
					if (requests['doCheckUserEmail'].responseText)
					{
						CachObjects['pageerror'].innerHTML = requests['doCheckUserEmail'].responseText;
						CachObjects['pageerror'].style.display = "block";
						setTimeout("CachObjects['pageerror'].style.display = 'none'", 15000);
					}
					if (requests['doCheckUserEmail'].responseJS.answer.type === type)
					{
						ShowHideError(requests['doCheckUserEmail'].responseJS.answer.type, requests['doCheckUserEmail'].responseJS.answer.trouble);
						if (requests['doCheckUserEmail'].responseJS.answer.trouble){err_email = 1;}
						//rname = (requests['doCheckUserEmail'].responseJS.answer.trouble != "") ? "" : rname;
					}
					if (dev_show == 1)
					{
//						CachObjects['ajax_stat'].innerHTML += "<br>doCheckUserEmail\n" + requests['doCheckUserEmail'].responseJS.statistic;
					}
					gid('wait_check').value = 0;
				}
			}
			requests['doCheckUserEmail'].open(null, '/data/templates/serverside/ajax.checkuserdata.php', true);
			requests['doCheckUserEmail'].send( { q : val } );
		}
		else
		{
			if (value != "" && type === "email" && !CheckMail(value))
			{
				ShowHideError(type, "Введите&nbsp;корректный&nbsp;e-mail");
				err_email = 1;
			}
			gid('wait_check').value = 0;
		}
	}
}

// проверяем форму перед отправкой
function ValidateForm1()
{
	if (gid('wait_check').value == 1)
	{
		clearTimeout(validatetimeout);
		validatetimeout = setTimeout("ValidateForm1()", 100);
		validatehold = 1;
		return false;
	}
	else
	{
		var formerror = 0;
		
		if (err_login == 1)
		{
			formerror = 1;
		}
		else
		{
			// проверка логина
			var login = gid('login').value;
			ShowHideError('login', "");
			if (login == "")
			{
				ShowHideError('login', "Введите&nbsp;логин");
				formerror = 1;
			}
		}
		// проверка пароля
		var passwd = gid('password').value;
		var repasswd = gid('repassword').value;
		ShowHideError('password', "");
		if (passwd == "" && repasswd == "")
		{
			ShowHideError('password', "Введите&nbsp;пароль&nbsp;и&nbsp;подтверждение&nbsp;пароля");
			formerror = 1;
		}
		else if (!TestPasswords('password', 'repassword'))
		{
			formerror = 1;
		}
		// проверка е-мейла
		
		if (err_email == 1)
		{
			formerror = 1;
		}
		else
		{
			var email = gid('email').value;
			ShowHideError('email', "");
			if (email == "")
			{
				ShowHideError('email', "Введите e-mail");
				formerror = 1;
			}
			else if (!CheckMail(email))
			{
				ShowHideError('email', "Введите&nbsp;корректный&nbsp;e-mail");
				formerror = 1;
			}
		}
		// прроверка даты рождения
		var date = gid('b_day').value;
		var month = gid('b_mon').value;
		var year = gid('b_year').value;
		ShowHideError('birthday', "");
		if (date == 0 || month == 0 || year == 0)
		{
			ShowHideError('birthday', "Укажите&nbsp;дату&nbsp;своего&nbsp;рождения");
			formerror = 1;
		}
		else if (!ValidDate(date, month, year))
		{
			ShowHideError('birthday', "Укажите&nbsp;корректную&nbsp;дату&nbsp;своего&nbsp;рождения");
			formerror = 1;
		}
		else if (!TestAge('b_day', 'b_mon', 'b_year'))
		{
			formerror = 1;
		}
		// проверка принятий правил
		var agree = gid('agree');
		ShowHideError('agree', "");
		if (agree.checked == false)
		{
			ShowHideError('agree', "Вы&nbsp;должны&nbsp;принять&nbsp;пользовательское&nbsp;соглашение");
			formerror = 1;
		}
		// проверка введения кода
		var protect = gid('protect').value;
		ShowHideError('protect', "");
		if (protect == "")
		{
			ShowHideError('protect', "Введите&nbsp;код&nbsp;защиты&nbsp;от&nbsp;роботов");
			formerror = 1;
		}

		if (formerror == 0)
		{
			gid('step').value = 1;
			return true;
			if (validatehold == 1)
			{
				gid('mform1').submit();
			}
		}
		else
		{
			return false;
		}	
	}
	return true;
}


// получаем аяксом результат
requests['doGetGeo'] = new Array();
function doGetGeo(what, geoid, sid)
{
	if (requests['doGetGeo'][what])
	{
		requests['doGetGeo'][what].abort;
	}
	if (what != "")
	{
		var val = Array();
		val['what'] = what;
		val['value'] = geoid;
		val['sid'] = (sid > 0) ? sid : 0;
		if (what === 'region' && geoid == 0)
		{
			gid("region_block").innerHTML = "";
			gid("region").style.display = "none";
			gid("city_block").innerHTML = "";
			gid("city").style.display = "none";
			gid('user_city').value = "";
			gid("new_city").style.display = "none";
		}
		if (what === 'region' && geoid > 0 && !sid)
		{
			gid("city_block").innerHTML = "";
			gid("city").style.display = "none";
			gid('user_city').value = "";
			gid("new_city").style.display = "none";
		}
		if (what === 'city' && geoid == 0)
		{
			gid("city_block").innerHTML = "";
			gid("city").style.display = "none";
		}
		if ((what === 'country' && geoid >= 0) || (what != 'country' && geoid > 0))
		{
			requests['doGetGeo'][what] = new JsHttpRequest();
			requests['doGetGeo'][what].onreadystatechange = function()
			{
				if (requests['doGetGeo'][what].readyState == 4)
				{
					if (requests['doGetGeo'][what].responseText)
					{
						CachObjects['pageerror'].innerHTML = requests['doGetGeo'][what].responseText;
						CachObjects['pageerror'].style.display = "block";
						setTimeout("CachObjects['pageerror'].style.display = 'none'", 15000);
					}
					if (requests['doGetGeo'][what].responseJS.answer)
					{
						gid(what).style.display = "block";
						gid(what + "_block").innerHTML = requests['doGetGeo'][what].responseJS.answer;
						if (what === 'city')
						{
							gid("new_city").style.display = "block";
							gid('user_city').value = "";
						}
					}
					if (dev_show == 1)
					{
//						CachObjects['ajax_stat'].innerHTML += "<br>doGetGeo[" + what + "]\n" + requests['doGetGeo'][what].responseJS.statistic;
					}
				}
			}
			requests['doGetGeo'][what].open(null, '/data/templates/serverside/ajax.geography_userreg.php', true);
			requests['doGetGeo'][what].send( { q : val } );
		}
	}
}


// проверяем форму перед отправкой
function ValidateForm2()
{
	var formerror = 0;
	// проверка имени
	var name = gid('name').value;
	ShowHideError('name', "");
	if (name == "")
	{
		ShowHideError('name', "Введите имя");
		formerror = 1;
	}
	// проверка телефона
	var phone_code1 = gid('phone_code1').value;
	var phone_code2 = gid('phone_code2').value;
	var phone = gid('phone').value;
	var phone_comment = gid('phone_comment').value;
	ShowHideError('phone', "");
	if (phone_code1 == "" && phone_code2 == "" && phone != "")
	{
		ShowHideError('phone', "Укажите&nbsp;корректный&nbsp;телефон");
		formerror = 1;
	}
	// проверка Я.Он-лайн
	icq = gid('icq').value;
	ShowHideError('icq', "");
	if (icq != "" && !CheckNumeric(icq))
	{
		ShowHideError('icq', "Проверьте");
		formerror = 1;
	}
	// проверка Я.Он-лайн
	y_online = gid('y_online').value;
	ShowHideError('y_online', "");
	if (y_online != "" && !CheckMail(y_online))
	{
		ShowHideError('y_online', "Проверьте");
		formerror = 1;
	}
	// проверка джаббера
	jabber = gid('jabber').value;
	ShowHideError('jabber', "");
	if (jabber != "" && !CheckMail(jabber))
	{
		ShowHideError('jabber', "Проверьте");
		formerror = 1;
	}
	// проверка ГуглТолка
	google_talk = gid('google_talk').value;
	ShowHideError('google_talk', "");
	if (google_talk != "" && !CheckMail(google_talk))
	{
		ShowHideError('google_talk', "Проверьте");
		formerror = 1;
	}
	// проверка Мейл.Агента
	m_agent = gid('m_agent').value;
	ShowHideError('m_agent', "");
	if (m_agent != "" && !CheckMail(m_agent))
	{
		ShowHideError('m_agent', "Проверьте");
		formerror = 1;
	}
	// проверка Скайпа
	skype = gid('skype').value;
	ShowHideError('skype', "");
	if (skype != "" && !CheckMessengers(skype))
	{
		ShowHideError('skype', "Проверьте");
		formerror = 1;
	}
	// проверка МСН
	msn = gid('msn').value;
	ShowHideError('msn', "");
	if (msn != "" && !CheckMessengers(msn))
	{
		ShowHideError('msn', "Проверьте");
		formerror = 1;
	}
	// проверка АОЛ
	aol = gid('aol').value;
	ShowHideError('aol', "");
	if (aol != "" && !CheckMessengers(aol))
	{
		ShowHideError('aol', "Проверьте");
		formerror = 1;
	}
	// проверка Яху
	yahoo = gid('yahoo').value;
	ShowHideError('yahoo', "");
	if (yahoo != "" && !CheckMessengers(yahoo))
	{
		ShowHideError('yahoo', "Проверьте");
		formerror = 1;
	}
	if (formerror == 0)
	{
		gid('step').value = 2;
		return true;
	}
	return false;
}
