﻿var Valid = function(el, err, txt) {
	var errorinfo = el;
	if (err == false && txt.length > 0)
		$(errorinfo).setStyles({ display: 'block' });
	else
		$(errorinfo).setStyles({ display: 'none' });
	$(errorinfo).setHTML(txt);
}

var Site = {
	start: function() {
		if ($('addcommentform')) ValidatorAddCommentForm.start();
		if ($('registerform')) ValidatorEdit.start();
		if ($('registereditform')) ValidatorEditProfile.start();
		if ($('confirm_form')) ValidatorEditConfirm.start();
		if ($('sendInnovationForm')) ValidatorSendInnovation.start();
		if ($('RecoverPwdForm')) ValidatorRecoverPwd.start();
		if ($('loginForm')) LoginFormFiller.start();
		if ($('addNewsForm')) ValidatorAddNewsForm.start();
		//if($('list_news')) SendVoteForm.start();

		if ($$('.remooz-img a')) {
			ReMooz.assign('.remooz-img a', {
				origin: 'img'
			});
		}
	}
};


var ValidatorAddCommentForm = {
	start: function() {
		ValidatorAddCommentForm.sender = $('sendercomment');
		ValidatorAddCommentForm.parse();
	},

	validateClientFields: function() {
		var commenttext = $('commenttext');

		if (!($('postid'))) {
			Valid('errorinfocomment', false, 'Добавлять комментарии могут только зарегистрированные пользователи!');
			return false;
		}

		if (commenttext.value.replace(/(^\s+)|(\s+$)/g, "").length == 0) {
			Valid('errorinfocomment', false, 'Введите текст');
		}
		else if (commenttext.value.length > 5000) {
			Valid('errorinfocomment', false, 'Максимальная длинна текста не может превышать 5000 символов');
		}
		else {
			Valid('errorinfocomment', true, '');
			$('addcommentform').submit();
		}
	},

	parse: function() {

		ValidatorAddCommentForm.sender.addEvent('click', function(e) {
			new Event(e).stop();
			ValidatorAddCommentForm.validateClientFields();
		});
	}
}

var SendVoteForm = {
	start: function() {
		SendVoteForm.senders = $$('#list_news a.votesenderlink');
		SendVoteForm.parse();
	},

	validate: function(li, newsid, login) {

		var url = "/tools/VoteCounter.ashx";
		var respContainer = $(li);
		respContainer.empty().addClass('ajax-loading');

		var options = {};
		options['newsid'] = newsid;
		options['userid'] = login;

		var myAjax = new Ajax(url, {
			method: 'get',
			update: respContainer,
			data: options,
			onComplete: function() {
				respContainer.removeClass('ajax-loading');
			}
		}).request();

	},

	parse: function() {
		SendVoteForm.senders.each(function(li) {
			li.addEvent('click', function(e) {
				new Event(e).stop();
				var formname = 'form' + li.rel;
				var login = $('uid');
				var newsid = 'newsid' + li.rel;
				SendVoteForm.validate(formname, $(newsid).value, login.rel);
			});
		});
	}
}

var ValidatorEditProfile = {
	start: function() {
		ValidatorEditProfile.sender = $('sender');
		ValidatorEditProfile.parse();
	},
	parse: function() {
		var error_text = "";

		var validateClientFields = function() {
			var login = $('login'); var logingo = false;
			//            var pass  = $('pass');  var passgo = false;
			var email = $('email'); var emailgo = false;

			if (login.value == "")
			{ error_text = error_text + " Введите ник (login)!<BR>"; }
			else
			{ logingo = true; }
			/*      
			if(pass.value == "")
			{error_text = error_text+" Введите Пароль!<BR>";}
			else
			{passgo = true;}*/

			if (email.value.search(/^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/) == -1)
			{ error_text = error_text + " Введите e-mail!<BR>"; }
			else
			{ emailgo = true; }

			return logingo /*&& passgo*/ && emailgo;
		}

		ValidatorEditProfile.sender.addEvent('click', function() {
			var login = $('login');
			var email = $('email');

			error_text = "Ошибка!";

			if (validateClientFields()) {
				Valid('errorinfo', true, '');
				$('registereditform').submit();
			}
			else {
				Valid('errorinfo', false, error_text);
			}
		});
	}
}

var ValidatorEdit = {
	start: function() {
		ValidatorEdit.sender = $('sender');
		ValidatorEdit.parse();
	},
	parse: function() {
		var error_text = "";

		var validateClientFields = function() {
			if ($('errocode')) { $('errocode').setStyles({ display: 'none' }); }

			var login = $('login'); var logingo = false;
			var pass = $('pass'); var passgo = false;
			var email = $('email'); var emailgo = false;
			var agree = $('agree'); var agreego = false;

			if (login.value == "")
			{ error_text = error_text + " Введите ник (login)!<BR>"; }
			else
			{ logingo = true; }

			if (pass.value == "")
			{ error_text = error_text + " Введите Пароль!<BR>"; }
			else
			{ passgo = true; }

			if (email.value.search(/^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/) == -1)
			{ error_text = error_text + " Введите e-mail!<BR>"; }
			else
			{ emailgo = true; }

			if (agree.checked == false)
			{ error_text = error_text + " Извините, но мы не можем зарегистрировать человека несогласного с правилами регистрации!<BR>"; }
			else
			{ agreego = true; }

			return logingo && passgo && emailgo && agreego;
		}

		var checkUser = function(email, login) {
			var url = "/tools/checknewuser.ashx";
			var respContainer = $('ajaxResponse').empty();
			var options = {};
			options['useremail'] = email;
			options['loginuser'] = login;

			var myAjax = new Ajax(url, {
				method: 'get',
				update: respContainer,
				data: options,
				onComplete: function() {
					var retMail = false;
					var retLogin = false;
					var response = respContainer.getText();

					retMail = (response[1] == "1");
					retLogin = (response[2] == "1");

					if (retMail == false && retLogin == false) {
						Valid('errorinfo', true, '');
						$('registerform').submit();
					}
					else {
						if (retMail)
							error_text += " Пользователь с таким E-mail существует.<BR>";
						if (retLogin)
							error_text += " Пользователь с таким логином существует.";
						Valid('errorinfo', false, error_text);
					}
				}
			}).request();
		}

		ValidatorEdit.sender.addEvent('click', function() {
			ValidatorEdit.sender.setProperty('disabled', true);
			var login = $('login');
			var email = $('email');

			error_text = "Ошибка!";

			if (validateClientFields()) {
				checkUser(email.value, login.value);
			}
			else {
				Valid('errorinfo', false, error_text);
			}
			ValidatorEdit.sender.setProperty('disabled', false);
		});
	}
}

var ValidatorEditConfirm = {
	start: function() {
		ValidatorEditConfirm.senderconfirm = $('senderconfirm');
		ValidatorEditConfirm.parse();
	},
	parse: function() {
		ValidatorEditConfirm.senderconfirm.addEvent('click', function() {
			var code = $('code'); var codego = false;
			var error_text = "Ошибка!";

			if (code.value == "")
			{ error_text = error_text + " Введите Код подтверждения!<BR>"; }
			else
			{ codego = true; }

			if (codego == true) {
				Valid('errorinfo', true, '');
				$('confirm_form').submit();
			}
			else {
				Valid('errorinfo', false, error_text);
			}
		});
	}
}

var ValidatorSendInnovation = {
	start: function() {
		ValidatorSendInnovation.senderInnovation = $('senderInnovation');
		ValidatorSendInnovation.parse();
	},
	parse: function() {
		ValidatorSendInnovation.senderInnovation.addEvent('click', function() {
			var username = $('username'); var logingo = false;
			var pass = $('friendname'); var passgo = false;
			var email = $('friendmail'); var emailgo = false;

			var error_text = "Ошибка!";

			if (username.value == "")
			{ error_text = error_text + " Вы не указали свое имя!<BR>"; }
			else
			{ logingo = true; }

			if (pass.value == "")
			{ error_text = error_text + " Вы не указали имя того, кого приглашаете!<BR>"; }
			else
			{ passgo = true; }

			if (email.value.search(/^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/) == -1)
			{ error_text = error_text + " Вы не указали (или указали некорректно) e-mail адрес Вашего друга!<BR>"; }
			else
			{ emailgo = true; }

			if (logingo == true && passgo == true && emailgo == true) {
				Valid('errorinfo', true, '');
				$('sendInnovationForm').submit();
			}
			else {
				Valid('errorinfo', false, error_text);
			}
		});
	}
}

var ValidatorRecoverPwd = {
	start: function() {
		ValidatorRecoverPwd.senderPwd = $('recoverPwdSubmit');
		ValidatorRecoverPwd.parse();
	},
	parse: function() {
		ValidatorRecoverPwd.senderPwd.addEvent('click', function() {
			var nickname = $('nickname'); var logingo = false;
			var email = $('email'); var emailgo = false;

			var error_text = "Ошибка!";

			if (nickname.value == "")
			{ error_text = error_text + " Вы не указали свое имя.<BR>"; }
			else
			{ logingo = true; }

			if (email.value.search(/^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/) == -1)
			{ error_text = error_text + " Вы не указали свой e-mail.<BR>"; }
			else
			{ emailgo = true; }

			if (logingo == true && emailgo == true) {
				Valid('errorinfo', true, '');
				$('RecoverPwdForm').submit();
			}
			else {
				Valid('errorinfo', false, error_text);
			}
		});
	}
}

var LoginFormFiller = {
	start: function() {
		LoginFormFiller.form = $('loginForm');
		LoginFormFiller.sender = $('loginFormSubmit');
		LoginFormFiller.loginField = $('loginuser');
		LoginFormFiller.pwdField = $('pwduser');
		LoginFormFiller.parse();
	},
	OnFormSubmit: function() {
		if (LoginFormFiller.loginField.value.trim() != "" && LoginFormFiller.pwdField.value.trim() != "") {
			$('logininputerror').addClass("invisible");
			if ($('passsended'))
				$('passsended').addClass("invisible");
			LoginFormFiller.CheckUser(LoginFormFiller.loginField.value, LoginFormFiller.pwdField.value);
			return false;
		}
		else {
			if ($('passsended'))
				$('passsended').addClass("invisible");

			$('logininputerror').removeClass("invisible");
			$('loginerror').addClass("invisible");
			return false;
		}
	},
	CheckUser: function(login, pwd) {
		var url = "/tools/checklogin.ashx";
		var respContainer = $('ajaxResponse').empty();
		var options = {};
		options['userpwd'] = pwd;
		options['userlogin'] = login;

		var myAjax = new Ajax(url, {
			method: 'post',
			update: respContainer,
			data: options,
			onComplete: function() {
				var response = respContainer.getText();
				if (response == "1") {
					LoginFormFiller.form.submit();
				}
				else {
					LoginFormFiller.pwdField.value = '';
					$('loginerror').removeClass("invisible");
				}
			}
		}).request();
	},
	parse: function() {
		LoginFormFiller.loginField.addEvent('focus', function() {
			if (LoginFormFiller.loginField.value == "логин")
				LoginFormFiller.loginField.value = "";
		});
	}
}

var ValidatorAddNewsForm = {
	start: function() {
		ValidatorAddNewsForm.form = $('addNewsForm');
		ValidatorAddNewsForm.sender = $('addNewsButton');
		//        ValidatorAddNewsForm.checkUrlButton = $('testAddressButton');
		ValidatorAddNewsForm.parse();
	},
	parse: function() {
		var checkPageUrl = function() {
			var urlnews = "/tools/checkAddNewsUrls.ashx";
			var respContainer = $('ajaxResponse').empty();
			var options = {};
			options['pageAddress'] = $('pageAddress').value;
			options['imageAddress'] = $('imageAddress').value;


			var myAjax = new Ajax(urlnews, {
				method: 'post',
				update: respContainer,
				data: options,
				onComplete: function() {
					var retPageAddress = false;
					var response = respContainer.getText();

					retPageAddress = (response.substr(0, 1) == "1");

					if (retPageAddress == true)
						alert("Страница существует.");
					else
						alert("Страница не существует.");

					$('spinner').className = "invisible";
				}
			}).request();
		};


		var checkPageAndImageUrl = function() {
			var url = "/tools/checkAddNewsUrls.ashx";
			var respContainer = $('ajaxResponse').empty();
			var options = {};
			options['pageAddress'] = $('pageAddress').value;
			options['imageAddress'] = $('imageAddress').value;

			var myAjax = new Ajax(url, {
				method: 'post',
				update: respContainer,
				data: options,
				onComplete: function() {
					var isEdit = ($('isEdit').value == "true");
					var retPageAddress = false;
					var retImageAddress = false;
					var response = respContainer.getText();

					var error_text = "Ошибка!";
					var error_flag = false;

					retPageAddress = (response.substr(0, 1) == "1");
					retImageAddress = (response.substr(1, 1) == "1");

					if ($('newsname').value == "") {
						error_text += " Не введено название новости.";
						error_flag = true;
					}

					if ($('newsname').value.length > 500) {
						error_text += " Длина названия новости не может превышать 500 символов.";
						error_flag = true;
					}

					//		            if(!isEdit && retPageAddress && $('adrType').checked && $('pageAddress').value != "http://" && $('pageAddress').value != "")
					//		            {
					//		                error_text += "Уже есть новость с данным адресом.";
					//		                error_flag = true;
					//		            }
					//		            
					if (!retImageAddress && $('pic').checked && $('imageAddress').value != "http://" && $('imageAddress').value != "") {
						error_text += " Изображение по указанному адресу отсутствует.";
						error_flag = true;
					}
					
					var dateParse = function(str) {
						if (str && str.length == 10) {
							var d = new Date();
							var year = str.substr(6, 4);
							var month = str.substr(3, 2);
							var day = str.substr(0, 2);
							d.setFullYear(year, month, day);
							return d;
						}
						return null;
					}

					if ($('shortDescr').value == "") {
						error_text += " Не введено описание новости.";
						error_flag = true;
					};

					var dateBegin = dateParse($('date').getProperty('value'));
					var dateEnd = dateParse($('dateEnd').getProperty('value'));
					if ($('isAfisha').getProperty('checked') && 
					$('isLongEvent').getProperty('checked') && dateBegin > dateEnd) {
						error_text += " Дата начала мероприятия позже даты окончания";
						error_flag = true;
					}

					if (error_flag == false) {
						Valid('errorinfo', true, '');
						ValidatorAddNewsForm.form.submit();
					}
					else {
						Valid('errorinfo', false, error_text);
					}

					$('spinner').className = "invisible";
				}
			}).request();
		};

		//        ValidatorAddNewsForm.checkUrlButton.addEvent('click',function()
		//        {
		//            checkPageUrl();
		//            $('spinner').className = "smartspinner";
		//	    });

		ValidatorAddNewsForm.sender.addEvent('click', function() {
			$('spinner').className = "smartspinner";
			checkPageAndImageUrl();
		});
	}
}

window.addEvent('load', Site.start);