//-------------------------------------------------------------------//
/* Input validator */
//-------------------------------------------------------------------//

var inputValidator = Class.create();
inputValidator.prototype = {

	//-------------------------------------------------------------------//

	initialize: function() {
		this.form = '';
		this.error = false;
		this.passwd_length = 6;
	},

	//-------------------------------------------------------------------//

	validateRegistrationInputs: function() {
		var error = false;

		$('reg-name').value = $F('reg-name').strip().stripTags().stripScripts();
		$('reg-mail').value = $F('reg-mail').strip().stripTags().stripScripts();
		$('reg-passwd1').value = $F('reg-passwd1').strip().stripTags().stripScripts();
		$('reg-passwd2').value = $F('reg-passwd2').strip().stripTags().stripScripts();

		/* NAME */
		if($F('reg-name').length == 0) {
			error = true;
			$('error-reg-name-1').removeClassName('hidden');
		}
		else if(!this.isTextSpecChars($('reg-name'))) {
			error = true;
			$('error-reg-name-1').addClassName('hidden');
			$('error-reg-name-2').removeClassName('hidden');
		}
		else {
			$('error-reg-name-1').addClassName('hidden');
			$('error-reg-name-2').addClassName('hidden');
		}
		/* EMAIL */
		if($F('reg-mail').length == 0) {
			error = true;
			$('error-reg-mail').removeClassName('hidden');
		}
		else if(!this.validateEmail($F('reg-mail'))){
			error = true;
			$('error-reg-mail').removeClassName('hidden');
		}
		else {
			$('error-reg-mail').addClassName('hidden');		
		}
		/* PASSWORD */
		if($F('reg-passwd1').length == 0
		|| $F('reg-passwd2').length == 0) {
			error = true;
			$('error-reg-passwd-1').removeClassName('hidden');
		}
		else if($F('reg-passwd1').length < this.passwd_length 
		|| $F('reg-passwd2').length < this.passwd_length) {
			$('error-reg-passwd-1').addClassName('hidden');
			$('error-reg-passwd-3').removeClassName('hidden');
		}
		else if($F('reg-passwd1') != $F('reg-passwd2') 
		&& $F('reg-passwd1').length > 0 
		&& $F('reg-passwd1').length > 0) {
			$('error-reg-passwd-1').addClassName('hidden');
			$('error-reg-passwd-3').addClassName('hidden');
			$('error-reg-passwd-2').removeClassName('hidden');
		}
		else {
			$('error-reg-passwd-1').addClassName('hidden');
			$('error-reg-passwd-2').addClassName('hidden');
			$('error-reg-passwd-3').addClassName('hidden');
		}
		/* DATA */
		if(!$('reg-data').checked) {
			error = true;
			$('error-reg-data').style.display = 'block';
		}
		else {
			$('error-reg-data').style.display = 'none';
		}
		/* CAPTCHA */
		if($F('reg-captcha').length == 0) {
			error = true;
			$('error-reg-captcha').removeClassName('hidden');
		}
		else {
			$('error-reg-captcha').addClassName('hidden');
		}

		if(!error) {
			this.ajaxCheckReg($F('reg-name'),$F('reg-mail'),$F('reg-captcha'));
		}
		else {
			this.error = false;
		}
	},

	//-------------------------------------------------------------------//

	ajaxCheckReg: function(name,email,captcha) {
		var ajax = new Ajax.Request(
											'/regisztracio',
											{
												method: 'post',
												parameters: 'name='+name+'&email='+email+'&captcha='+captcha+'&chk_reg=1',
												onComplete: this.ajaxCheckRegComplete.bindAsEventListener(this)
											}
											);
	},

	//-------------------------------------------------------------------//

	ajaxCheckRegComplete: function(o) {
		var error = false;
		var result = new Array();

		eval('result = ('+o.responseText+')');

		if(result.NAME == 0) {
			$('error-reg-name-3').addClassName('hidden');
		}
		else {
			error = true;
			$('error-reg-name-3').removeClassName('hidden');
		}

		if(result.EMAIL == 0) {
			$('error-reg-mail-2').addClassName('hidden');
		}
		else {
			error = true;
			$('error-reg-mail-2').removeClassName('hidden');
		}

		if(result.CAPTCHA == 0) {
			$('error-reg-captcha').addClassName('hidden');
		}
		else {
			error = true;
			$('error-reg-captcha').removeClassName('hidden');
		}

		if(!error) regHND.doReg();
	},

	//-------------------------------------------------------------------//

	validateLoginInputs: function() {
		var error = false;

		$('login-name').value = $F('login-name').strip().stripTags().stripScripts();
		$('login-passwd').value = $F('login-passwd').strip().stripTags().stripScripts();

		/* NAME */
		if($F('login-name').length == 0) {
			error = true;
			$('error-reg-name-1').removeClassName('hidden');
		}
		else {
			$('error-reg-name-1').addClassName('hidden');
		}
		/* PASSWORD */
		if($F('login-passwd').length == 0) {
			error = true;
			$('error-reg-passwd-1').removeClassName('hidden');
		}
		else {
			$('error-reg-passwd-1').addClassName('hidden');
		}

		return error;
	},

	//-------------------------------------------------------------------//

	validateProfileInputs: function() {
		var error = false;

		$('profile-name').value = $F('profile-name').strip().stripTags().stripScripts();
		$('profile-email').value = $F('profile-email').strip().stripTags().stripScripts();
		$('profile-realname').value = $F('profile-realname').strip().stripTags().stripScripts();
		$('profile-contry').value = $F('profile-contry').strip().stripTags().stripScripts();
		$('profile-phone').value = $F('profile-phone').strip().stripTags().stripScripts();
		$('profile-passwd1').value = $F('profile-passwd1').strip().stripTags().stripScripts();
		$('profile-passwd2').value = $F('profile-passwd2').strip().stripTags().stripScripts();

		/* NAME */
		if($F('profile-name').length == 0) {
			error = true;
			$('error-profile-name-1').removeClassName('hidden');
		}
		else {
			$('error-profile-name-1').addClassName('hidden');
		}
		/* EMAIL */
		if($F('profile-email').length == 0) {
			error = true;
			$('error-profile-email-1').removeClassName('hidden');
		}
		else if(!this.validateEmail($F('profile-email'))){
			error = true;
			$('error-profile-email-1').addClassName('hidden');
			$('error-profile-email-2').removeClassName('hidden');
		}
		else {
			$('error-profile-email-1').addClassName('hidden');
			$('error-profile-email-2').addClassName('hidden');
		}

		/* PASSWORD */
		if($F('profile-passwd1').length != 0
		|| $F('profile-passwd2').length != 0) {
			if($F('profile-passwd1') != $F('profile-passwd2')) {
				error = true;
				$('error-profile-passwd-1').removeClassName('hidden');
			}
			else {
				$('error-profile-passwd-1').addClassName('hidden');

				if($F('profile-passwd1').length < 7 || $F('profile-passwd2').length < 7) {
					error = true;
					$('error-profile-passwd-2').removeClassName('hidden');	
				}
				else {
					$('error-profile-passwd-2').addClassName('hidden');					
				}
			}
		}

		if(!error) {
			this.ajaxCheckProfile($F('profile-name'),$F('profile-email'));
		}
	},

	//-------------------------------------------------------------------//

	ajaxCheckProfile: function(name,email) {
		var ajax = new Ajax.Request(
											'/index.php?action=profile',
											{
												method: 'post',
												parameters: 'name='+name+'&email='+email+'&chk_profile=1',
												onComplete: this.ajaxCheckProfileComplete.bindAsEventListener(this)
											}
											);
	},

	//-------------------------------------------------------------------//

	ajaxCheckProfileComplete: function(o) {
		var error = false;
		var result = new Array();

		eval('result = ('+o.responseText+')');

		if(result.NAME == 0) {
			$('error-profile-name-2').addClassName('hidden');
		}
		else {
			error = true;
			$('error-profile-name-2').removeClassName('hidden');
		}

		if(result.EMAIL == 0) {
			$('error-profile-email-3').addClassName('hidden');
		}
		else {
			error = true;
			$('error-profile-email-3').removeClassName('hidden');
		}

		if(!error) profileHND.doEdit();
	},

	//-------------------------------------------------------------------//

	validateUploadInputs: function() {
		var error = false;

		$('upload-title').value = $F('upload-title').strip().stripTags().stripScripts();
		$('upload-tags').value = $F('upload-tags').strip().stripTags().stripScripts();
		$('upload-lead').value = $F('upload-lead').strip().stripTags().stripScripts();
		$('upload-content').value = $F('upload-content').strip().stripTags().stripScripts();

		/* NAME */
		if($F('upload-title').length == 0) {
			error = true;
			$('error-upload-title').removeClassName('hidden');
		}
		else {
			$('error-upload-title').addClassName('hidden');
		}
		/* CATEGORY */
		if($('upload-category').options[$('upload-category').selectedIndex].value == 0) {
			error = true;
			$('error-upload-category').removeClassName('hidden');
		}
		else {
			$('error-upload-category').addClassName('hidden');
		}
		/* LEAD */
		if($F('upload-lead').length == 0) {
			error = true;
			$('error-upload-lead').removeClassName('hidden');
		}
		else {
			$('error-upload-lead').addClassName('hidden');
		}	
		/* CONTENT */
		if($F('upload-content').length == 0) {
			error = true;
			$('error-upload-content').removeClassName('hidden');
		}
		else {
			$('error-upload-content').addClassName('hidden');
		}	

		return error;
	},

	//-------------------------------------------------------------------//

	validateNewsLetterInput: function() {
		var error = false;
		this.error = -1;

		$('newsletter-email').value = $F('newsletter-email').strip().stripTags().stripScripts();

		/* EMAIL */
		if($F('newsletter-email').length == 0) {
			error = true;
			this.error = 0;
		}
		else if(!this.validateEmail($F('newsletter-email'))){
			error = true;
			this.error = 1;
		}

		if(!error) {
			this.ajaxCheckNewsletter($F('newsletter-email'));
		}
		else {
			newsletterHND.showError(this.error);	
		}
	},

	//-------------------------------------------------------------------//

	validateSendInput: function() {
		var error = false;

		$('send-sname').value = $F('send-sname').strip().stripTags().stripScripts();
		$('send-semail').value = $F('send-semail').strip().stripTags().stripScripts();
		$('send-rname').value = $F('send-rname').strip().stripTags().stripScripts();
		$('send-remail').value = $F('send-remail').strip().stripTags().stripScripts();

		/* SENDER NAME */
		if($F('send-sname').length == 0) {
			error = true;
			$('send-error-sname').removeClassName('hidden');
		}
		else {
			$('send-error-sname').addClassName('hidden');
		}
		/* SENDER EMAIL */
		if($F('send-semail').length == 0) {
			error = true;
			$('send-error-semail-2').removeClassName('hidden');
		}
		else if(!this.validateEmail($F('send-semail'))){
			error = true;
			$('send-error-semail-2').addClassName('hidden');
			$('send-error-semail-1').removeClassName('hidden');
		}
		else {
			$('send-error-semail-1').addClassName('hidden');
			$('send-error-semail-2').addClassName('hidden');			
		}
		/* RECIEVER NAME */
		if($F('send-rname').length == 0) {
			error = true;
			$('send-error-rname').removeClassName('hidden');
		}
		else {
			$('send-error-rname').addClassName('hidden');
		}
		/* RECIEVER EMAIL */
		if($F('send-remail').length == 0) {
			error = true;
			$('send-error-remail-2').removeClassName('hidden');
		}
		else if(!this.validateEmail($F('send-remail'))){
			error = true;
			$('send-error-remail-2').addClassName('hidden');
			$('send-error-remail-1').removeClassName('hidden');
		}
		else {
			$('send-error-remail-2').addClassName('hidden');
			$('send-error-remail-1').addClassName('hidden');		
		}

		return error;
	},

	//-------------------------------------------------------------------//

	ajaxCheckNewsletter: function(email) {
		var ajax = new Ajax.Request(
											'/index.php?action=ajax',
											{
												method: 'post',
												parameters: 'email='+email+'&newsletter=1',
												onComplete: this.ajaxCheckNewsletterComplete.bindAsEventListener(this)
											}
											);
	},

	//-------------------------------------------------------------------//

	ajaxCheckNewsletterComplete: function(o) {
		if(o.responseText  == 1) {
			newsletterHND.showSuccess();
		}
		else {
			this.error = 2;
			newsletterHND.showError(this.error);
		}
	},

	//-------------------------------------------------------------------//

	validateBoxInputs: function() {
		var error = false;

		$('box-name').value = $F('box-name').strip().stripTags().stripScripts();
		$('box-email').value = $F('box-email').strip().stripTags().stripScripts();

		$('wrn-box-invaliduser').addClassName('hidden');

		/* NAME */
		if($F('box-name').length == 0) {
			error = true;
			$('wrn-comment-name').removeClassName('hidden');
		}
		else $('wrn-comment-name').addClassName('hidden');
		/* EMAIL */
		if($F('box-email').length == 0) {
			error = true;
			$('wrn-comment-email-1').removeClassName('hidden');
		}
		else if(!this.validateEmail($F('box-email'))){
			error = true;
			$('wrn-comment-email-1').addClassName('hidden');
			$('wrn-comment-email-2').removeClassName('hidden');
		}
		else {
			$('wrn-comment-email-1').addClassName('hidden');		
			$('wrn-comment-email-2').addClassName('hidden');		
		}

		return error;
	},

	//-------------------------------------------------------------------//

	validateForgottenInputs: function() {
		var error = false;

		$('forgotten-email').value = $F('forgotten-email').strip().stripTags().stripScripts();

		/* NAME */
		if($F('forgotten-email').length == 0) {
			error = true;
			$('error-forgotten-email').removeClassName('hidden');
		}
		else {
			$('error-forgotten-email').addClassName('hidden');
		}

		return error;
	},

	//-------------------------------------------------------------------//

	validateTags: function(input) {
		var limit = 5;
		var result = '';
		var tags = input.value.strip().stripScripts().stripTags().split(' ');

		if(tags.length > 5) {
			for(i=0; i < limit; i++) {
				if(result == '') result += tags[i];
				else result += ' '+tags[i];
			}
		}
		else result = input.value.strip().stripScripts().stripTags();

		input.value = result;
	},

	//-------------------------------------------------------------------//

	isTextSpecChars: function(input) {
		var myregExp = /^([a-zA-Z0-9]+)$/;
		return myregExp.test(input.value);
	},

	//-------------------------------------------------------------------//
	
	validateEmail: function(email){
		email =this.trim(email);

		if ((email.length > 0) && !email.match(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/)) {
			return false;
		}
		return true;
	},

	//-------------------------------------------------------------------//

	trim: function(txt){
		while (txt.charAt(0)==" ") txt=txt.substr(1, txt.length);
		while (txt.charAt(txt.length-1)==" ") txt=txt.substr(0, txt.length-1);
		return txt;
	}

	//-------------------------------------------------------------------//

}

//-------------------------------------------------------------------//
