
/**
 * Валидация при регистрации
 * -----------------------------------------------
 * @copyright TimeZero <http://www.timezero.ru/>
 * @autor Dmitriy Shkinev <berkel@timezero.ru>
 * @version 1.0 2008-5-12
 */

var Validate = {
checkReportSmsForm : function()
	{ 
	obj=$("reportsendform");
	if (!obj)
		{
			return false;
		}
		
		
		if (obj.elements['profile_nick'])
		{
		if( obj.elements['profile_nick'].value=='') {
		Messages.showErrorWithDot('Вы не указали имя персонажа');
		return false;}
		}
	
		if (obj.elements['name'])
		{
		if( !obj.elements['name'].value) {
		Messages.showErrorWithDot('Вы не указали свое имя');
		return false;}
		}
		
		if (obj.elements['city'])
		{
		if( !obj.elements['city'].value) {
		Messages.showErrorWithDot('Вы не указали город');
		return false;}
		}
		if (obj.elements['operator'])
		{
	
		if( !obj.elements['operator'].value) {
		Messages.showErrorWithDot('Вы не указали оператора');
		return false;}
		}
		if (obj.elements['tariff'])
		{
		
		if( !obj.elements['tariff'].value) {
		Messages.showErrorWithDot('Вы не указали тариф');
		return false;}
		}
				if (obj.elements['phone'])
		{
	
		if( !obj.elements['phone'].value) {
		Messages.showErrorWithDot('Вы не указали телефон');
		return false;}
		}
				if (obj.elements['resp'])
		{
		
		if( !obj.elements['resp'].value) {
		Messages.showErrorWithDot('Вы не ввели ответ оператора');
		return false;}
		} 
if (obj.elements['email']) {		
		if(!UserInfoValidate.checkLoginOnTheCorrectly(obj.elements['email'])) {
			Messages.showErrorWithDot();
		return false;}
		} 
	if (obj.elements['description']) {		
		if( !obj.elements['description'].value) {
		Messages.showErrorWithDot('Вы не ввели описание проблемы');
		return false;}
		} 
	if (obj.elements['data[day]']) {		
		if( !obj.elements['data[day]'].value && !obj.elements['data[year]'].value && !obj.elements['data[month]'].value && !obj.elements['data[hour]'].value && !obj.elements['data[min]'].value) {
		Messages.showErrorWithDot('Вы не указали дату и время отправки SMS ');
		return false;}
		} 		
		return true;
	
	},
checkReportSendForm : function()
	{ alert("huhjjh");
	objj=$("reportsendform");
	},
checkReportSendForm1 : function()
	{ alert("fgg");
	objj=$("reportsendform");
		/*if (!obj)
		{
			return false;
		}
		
		if (obj.elements['profile_nick'])
		{
		obj.elements['profile_nick'].value;
		if( obj.elements['profile_nick'].value=='') {
		Messages.showErrorWithDot('Вы не указали имя персонажа.');
		return false;}
		}
	
		if (obj.elements['name'])
		{
		obj.elements['name'].value;
		if( !obj.elements['name'].value) 
		Messages.showErrorWithDot('Вы не указали свое имя.');
		return false;
		}
		
		if (obj.elements['city'])
		{
		obj.elements['city'].value;
		if( !obj.elements['city'].value) 
		Messages.showErrorWithDot('Вы не указали город.');
		return false;
		}
		if (obj.elements['operator'])
		{
		obj.elements['operator'].value;
		if( !obj.elements['operator'].value) 
		Messages.showErrorWithDot('Вы не указали оператора.');
		return false;
		}
				if (obj.elements['tariff'])
		{
		obj.elements['tariff'].value;
		if( !obj.elements['tariff'].value) 
		Messages.showErrorWithDot('Вы не указали тариф.');
		return false;
		}
				if (obj.elements['phone'])
		{
		obj.elements['phone'].value;
		if( !obj.elements['phone'].value) 
		Messages.showErrorWithDot('Вы не указали телефон.');
		return false;
		}
				if (obj.elements['resp'])
		{
		obj.elements['resp'].value;
		if( !obj.elements['resp'].value) 
		Messages.showErrorWithDot('Вы не ввели ответ оператора.');
		return false;
		}  */

		return false;
	},
	checkRegistrationForm : function(obj)
	{ 
		if (!obj)
		{
			return false;
		}

		var login = null;
		var re_login = null;
		var password = null;
		var re_password = null;
		var agree = null;
		var kcaptcha = null;

		if (obj.elements['login'])
		{
			login = obj.elements['login'];
		}

		if (obj.elements['password'])
		{
			password = obj.elements['password'];
		}
		
		if (obj.elements['re_password'])
		{
			re_password = obj.elements['re_password'];
		}

		if (obj.elements['agree'])
		{
			agree = obj.elements['agree'];
		}
		
		if (obj.elements['kcaptcha'])
		{
			kcaptcha = obj.elements['kcaptcha'];
		}

		if (!(login || re_login || password || re_password || agree || kcaptcha))
		{
			return false;
		}

		if (!UserInfoValidate.checkLoginOnTheCorrectly(login))
		{
		Messages.showErrorWithDot();
			return false;
		}

		if (!UserInfoValidate.checkLoginOnTheOriginaly(login))
		{
		Messages.showErrorWithDot();
			return false;
		}

		if (!UserInfoValidate.checkPasswordOnTheCorrectly(password))
		{
		Messages.showErrorWithDot();
			return false;
		}
		
		if (!UserInfoValidate.checkRePasswordOnTheCorrectly(re_password, password))
		{
		Messages.showErrorWithDot();
			return false;
		}

		if (!agree.checked)
		{
		Messages.showErrorWithDot('Чтобы приступить к игре, Вы должны принять Лицензионное соглашение.');
			return false;
		}
		
		if (!kcaptcha.value)
		{
		Messages.showErrorWithDot('Введите код с картинки.');
			return false;
		}

		return true;
	},

	checkAuthorizationForm : function(obj)
	{  
		var j=0;
		if (!obj)
		{
			return false;
		}

		var login = null;
		var password = null;

		if (obj.elements['login'])
		{
			login = obj.elements['login'];
		}

		if (obj.elements['password'])
		{
			password = obj.elements['password'];
		}

		if (!(login || password))
		{
			return false;
		}

		if (!UserInfoValidate.checkLoginOnTheCorrectly(login))
		{
			Messages.showErrorWithDot();
			return false;
		}

		if (!UserInfoValidate.checkCurrentPasswordOnTheCorrectly(password))
		{
			Messages.showErrorWithDot();
			return false;
		}

		return true;
	},

	checkForgotPasswordForm : function(obj) 
	{
		if (!obj)
		{
			return false;
		}

		var login = null;

		if (obj.elements['login'])
		{
			login = obj.elements['login'];
		}

		if (!(login))
		{
			return false;
		}

		if (!UserInfoValidate.checkLoginOnTheCorrectly(login))
		{
			Messages.showErrorWithDot();
			return false;
		}

		return true;
	},

	checkChangePasswordForm : function(obj)
	{
		if (!obj)
		{
			return false;
		}

		var password = null;
		var new_password = null;
		var re_new_password = null;

		if (obj.elements['password'])
		{
			password = obj.elements['password'];
		}
		
		if (obj.elements['new_password'])
		{
			new_password = obj.elements['new_password'];
		}
		
		if (obj.elements['re_new_password'])
		{
			re_new_password = obj.elements['re_new_password'];
		}

		if (!(password || new_password || re_new_password))
		{
			return false;
		}

		if (!UserInfoValidate.checkCurrentPasswordOnTheCorrectly(password))
		{
			Messages.showErrorWithDot();
			return false;
		}
		
		if (!UserInfoValidate.checkNewPasswordOnTheCorrectly(new_password))
		{
			Messages.showErrorWithDot();
			return false;
		}
		
		if (!UserInfoValidate.checkRePasswordOnTheCorrectly(re_new_password, new_password))
		{
			Messages.showErrorWithDot();
			return false;
		}

		return true;
	},

	checkChangeEmailForm : function(obj)
	{
		if (!obj)
		{
			return false;
		}

		var new_login = null;
		var password = null;

		if (obj.elements['new_login'])
		{
			new_login = obj.elements['new_login'];
		}
		
		if (obj.elements['password'])
		{
			password = obj.elements['password'];
		}

		if (!(new_login || password))
		{
			return false;
		}
		
		if (!UserInfoValidate.checkCurrentPasswordOnTheCorrectly(password))
		{
			Messages.showErrorWithDot();
			return false;
		}

		if (!UserInfoValidate.checkLoginOnTheCorrectly(new_login))
		{
			Messages.showErrorWithDot();
			return false;
		}

		return true;
	},
	
	checkReportSendForm : function(obj)
	{
		if (!obj)
		{
			return false;
		}
/*
		var new_login = null;
		var password = null;

		if (obj.elements['new_login'])
		{
			new_login = obj.elements['new_login'];
		}
		
		if (obj.elements['password'])
		{
			password = obj.elements['password'];
		}
*/
		return true;
	},
	
	checkLoginOnTheCorrectly : function(obj, checkOriginaly,prefix)
	{
		if (!obj)
		{
			return false;
		}

		var messageContainer = $('login-error-str-'+prefix);
		var bgContainer = $('login-error-bg-'+prefix);

		if (!UserInfoValidate.checkLoginOnTheCorrectly(obj))
		{
			messageContainer.innerHTML = Messages.getError();
			Common.CSSClass.change(messageContainer, 'error-str');
			Common.CSSClass.remove(bgContainer, 'success-bg');
			Common.CSSClass.set(bgContainer, 'error-bg');
			return false;
		}
		else
		{
			if (checkOriginaly && !UserInfoValidate.checkLoginOnTheOriginaly(obj))
			{
				messageContainer.innerHTML = Messages.getError();
				Common.CSSClass.change(messageContainer, 'error-str');
				Common.CSSClass.remove(bgContainer, 'success-bg');
				Common.CSSClass.set(bgContainer, 'error-bg');
				return false;
			}
			else
			{
				messageContainer.innerHTML = 'E-mail корректный';
				Common.CSSClass.change(messageContainer, 'success-str');
				Common.CSSClass.remove(bgContainer, 'error-bg');
				Common.CSSClass.set(bgContainer, 'success-bg');
				return true;
			}
		}
	},

	checkReLoginOnTheCorrectly : function(obj, obj2)
	{
		if (!obj || !obj2)
		{
			return false;
		}

		var messageContainer = $('re-login-error-str');
		var bgContainer = $('re-login-error-bg');


			if (!UserInfoValidate.checkReLoginOnTheCorrectly(obj, obj2))
			{
				messageContainer.innerHTML = Messages.getError();
				Common.CSSClass.change(messageContainer, 'error-str');
				Common.CSSClass.remove(bgContainer, 'success-bg');
				Common.CSSClass.set(bgContainer, 'error-bg');
				return false;
			}
			else
			{
				messageContainer.innerHTML = 'E-mail совпадает';
				Common.CSSClass.change(messageContainer, 'success-str');
				Common.CSSClass.remove(bgContainer, 'error-bg');
				Common.CSSClass.set(bgContainer, 'success-bg');
				return true;
			}

	},

	checkPasswordOnTheCorrectly : function(obj,prefix)
	{
		if (!obj)
		{
			return false;
		}

		var messageContainer = $('password-error-str-'+prefix);
		var bgContainer = $('password-error-bg-'+prefix);

		if (!UserInfoValidate.checkPasswordOnTheCorrectly(obj,prefix))
		{
			messageContainer.innerHTML = Messages.getError();
			Common.CSSClass.change(messageContainer, 'error-str');
			Common.CSSClass.remove(bgContainer, 'success-bg');
			Common.CSSClass.set(bgContainer, 'error-bg');
			return false;
		}
		else
		{
			messageContainer.innerHTML = 'Пароль корректный';
			Common.CSSClass.change(messageContainer, 'success-str');
			Common.CSSClass.remove(bgContainer, 'error-bg');
			Common.CSSClass.set(bgContainer, 'success-bg');
			return true;
		}
	},

	checkRePasswordOnTheCorrectly : function(obj, obj2,prefix)
	{
		if (!obj || !obj2)
		{
			return false;
		}

		var messageContainer = $('re-password-error-str-'+prefix);
		var bgContainer = $('re-password-error-bg-'+prefix);

		if (!UserInfoValidate.checkPasswordOnTheCorrectly(obj,prefix))
		{
			messageContainer.innerHTML = Messages.getError();
			Common.CSSClass.change(messageContainer, 'error-str');
			Common.CSSClass.remove(bgContainer, 'success-bg');
			Common.CSSClass.set(bgContainer, 'error-bg');
			return false;
		}
		else
		{
			var value1 = obj.value;
			var value2 = obj2.value;

			if (value1 != value2)
			{
				if( UserInfoValidate.checkPasswordOnTheCorrectly(obj,prefix) )
					messageContainer.innerHTML = 'Пароли не совпадают';
				else
					messageContainer.innerHTML = 'Некорректный пароль';
				//messageContainer.innerHTML = Messages.getError();
				Common.CSSClass.change(messageContainer, 'error-str');
				Common.CSSClass.remove(bgContainer, 'success-bg');
				Common.CSSClass.set(bgContainer, 'error-bg');
				return false;
			}
			else if (value1 != '' && value2 != '')
			{
				messageContainer.innerHTML = 'Пароли совпадают';
				Common.CSSClass.change(messageContainer, 'success-str');
				Common.CSSClass.remove(bgContainer, 'error-bg');
				Common.CSSClass.set(bgContainer, 'success-bg');
				return true;
			}
		}
	},
	
	checkUsersetForm : function(obj) 
	{
		if (!obj)
		{
			return false;
		}

		var year = null;

		if (obj.elements['birth[year]'])
		{
			year = obj.elements['birth[year]'];
		}

		if (!(year))
		{
			return false;
		}

		if (!UserInfoValidate.checkYearOnTheCorrectly(year))
		{
			Messages.showErrorWithDot();
			return false;
		}

		return true;
	}

};
var Messages = {

	errorStr : '',

	setError : function(str)
	{
		this.errorStr = str;
	},

	getError : function()
	{
		return this.errorStr;
	},

	showError : function(str)
	{
		str = str || this.errorStr;
		errorPopup(str);
		return true;
	},
	
	showErrorWithDot : function(str)
	{
		str = str || this.errorStr;
		errorPopup(str + ".");
		return true;
	},

	hideError : function()
	{
		var oElem = $('error-popup');

		if (!oElem)
		{
			return false;
		}

		oElem.style.display = '';
		oElem.innerHTML = '';

		return true;
	},

	showSuccessMessage : function(str)
	{
		var oElem = $('success_message');

		if (!oElem)
		{
			return false;
		}

		oElem.style.display = 'block';
		oElem.innerHTML = str;

		return true;
	},

	hideSuccessMessage : function()
	{
		var oElem = $('success_message');

		if (!oElem)
		{
			return false;
		}

		oElem.style.display = '';
		oElem.innerHTML = '';

		return true;
	}

};

var UserInfoValidate = {

	checkPasswordOnTheCorrectly : function(obj)
	{
		if (!obj)
		{
			return false;
		}

		var value = obj.value;

		if (value == '')
		{
			Messages.setError('Введите пароль');
			return false;
		}

		if (value.length < 8 || value.length > 16 || /&/.test(value))
		{
			Messages.setError('Некорректный пароль');
			return false;
		}

		return true;
	},
	
	checkNewPasswordOnTheCorrectly : function(obj)
	{
		if (!obj)
		{
			return false;
		}

		var value = obj.value;

		if (value == '')
		{
			Messages.setError('Введите новый пароль');
			return false;
		}

		if (value.length < 8 || value.length > 16 || /&/.test(value))
		{
			Messages.setError('Некорректный новый пароль');
			return false;
		}

		return true;
	},
	
	checkRePasswordOnTheCorrectly : function(obj, rObj)
	{
		if (!obj || !rObj)
		{
			return false;
		}

		var password = obj.value;
		var re_password = rObj.value;

		if (password != re_password)
		{
			Messages.setError('Пароли не совпадают');
			return false;
		}

		return true;
	},
	
	checkCurrentPasswordOnTheCorrectly : function(obj)
	{
		if (!obj)
		{
			return false;
		}

		var value = obj.value;

		if (value == '')
		{
			Messages.setError('Введите пароль');
			return false;
		}

		if (value.length < 8 || value.length > 16 || /&/.test(value))
		{
			Messages.setError('Неверный пароль');
			return false;
		}

		return true;
	},

	checkLoginOnTheOriginaly : function(obj)
	{
		if (!obj)
		{
			return false;
		}

		var value = obj.value;

		if (value == '')
		{
			Messages.setError('Введите e-mail');
			return false;
		}

		var method = 'POST';
		var url = '/ajax.php';
		var args = 'mode=check_login&login=' + value;

		var result = Common.AJAX.getContent(method, url, args);

		if (result == '0')
		{
			Messages.setError('E-mail уже занят');
			return false;
		}

		return true;
	},

	checkLoginOnTheCorrectly : function(obj)
	{
		if (!obj)
		{
			return false;
		}

		var value = obj.value;

		if (value == '')
		{
			Messages.setError('Введите e-mail');
			return false;
		}

		if (!/^([*+!.&#$|\'\\%\/0-9a-z^_`{}=?~:-]+)@(([0-9a-z-]+\.)+[0-9a-z]{2,4})$/i.test(value))
		{
			Messages.setError('Недопустимый e-mail');
			return false;
		}

		return true;
	},

	checkReLoginOnTheCorrectly : function(obj1, obj2)
	{
		if (!(obj1 || obj2))
		{

			return false;
		}

		var value1 = obj1.value;
		var value2 = obj2.value;

		if (value1 == '' || value2 == '')
		{
			Messages.setError('Повторите e-mail');
			return false;
		}

		if (value1 !== value2)
		{
			Messages.setError('Адреса не совпадают');
			return false;
		}

		return true;
	},

	checkYearOnTheCorrectly : function(obj)
	{
		if (!obj)
		{
			return false;
		}

		var value = obj.value;

		/*if (value < 1900 || value > 2005)
		{
			Messages.setError('Введите корректный год рождения');
			return false;
		}*/
		
		return true;
	},

	generatePasswd : function()
	{
		var min = 8;
		var dx = 7;

		var strLetters = "123456789abcdefghijklmnopqrstuvwxyz123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789";
		var intLettersLenght = strLetters.length;

		var str = "";

		for (var i=0; i<Common.getRandom(1, dx) + min; i++)
		{
			str += strLetters.substr(Common.getRandom(0, intLettersLenght - 1), 1);
		}
		
		if (!/[0-9]/.test(str) || !/[a-z]/.test(str)) {
			return UserInfoValidate.generatePasswd();
		}
		return str;
	}
};
