//Make new class UsersPrototype 
var UsersPrototype = Class.create();
//UsersPrototype class
UsersPrototype.prototype = {
	regUserLogin:		/^[a-z_0-9 ]*$/i,
	initialize: function() {
	},
	login: function() {
		var userLogin	= $F('user_auth_login').strip();
		var userPassword = $F('user_auth_password').strip();
		var error = false;
		$('user_auth_form_message').style.display = 'none';
		$('user_auth_form_message').update('');
		if(userLogin == '' && userPassword == '') {
			$('user_auth_form_message').update($('user_auth_blank_login_password_error').innerHTML);
			error = true;
		} else if(userLogin == '') {
			$('user_auth_form_message').update($('user_auth_blank_login_error').innerHTML);
			error = true;
		} else if(userPassword != '') {
			if(userPassword.length < 6) {
				$('user_auth_form_message').insert($('user_auth_password_length_error').innerHTML);
				error = true;
			}
		} else if(userPassword == '') {
			$('user_auth_form_message').insert($('user_auth_password_blank_error').innerHTML);
			error = true;
		}
		if(!error) {
			argsObj = new Object();
			argsObj['moduleaction']  = 'logon';
			argsObj['userLogin']	 = userLogin;
			argsObj['userPassword']  = userPassword;
			call('Users/showLogin', argsObj);
		} else {
			$('user_auth_form_message').style.display = 'block';
		}
		return false;
	},
	reloadAfterLogin: function() {
			setTimeout(function() { reload(); } , 2000);
	},
	reloadAfterRegistration: function() {
		setTimeout(function() { Users.showLoginForm(); } , 2000);
	},
	showLoginForm: function() {
		argsObject = new Object();
		argsObject['moduleaction'] = 'showLoginForm';
		ajaxCall('Users/showLogin', argsObject);
	},
	settings: function() {
		argsObject = new Object();
		argsObject['moduleaction'] = 'profile';
		makeCall('Users/showLogin', argsObject);
	},
	profile: function() {
		argsObject = new Object();
		argsObject['moduleaction'] = 'profile';
		makeCall('Users/showLogin', argsObject);
	},
	editProfile: function() {
		argsObject = new Object();
		argsObject['moduleaction'] = 'editProfile';
		makeCall('Users/showLogin', argsObject);
	},
	showLoginError: function(message_id)
	{
		 $('user_auth_form_message').insert($(message_id).innerHTML);
		 $('user_auth_form_message').style.display = 'block'; 
	},
	logout: function() {
		argsObject = new Object();
		argsObject['moduleaction'] = 'logout';
		makeCall('Users/showLogin', argsObject);
	},

	lostPassword: function() {
		argsObject = new Object();
		argsObject['moduleaction'] = 'lostPassword';
		makeCall('Users/showLogin', argsObject);
	},
	registration: function() {
		argsObject = new Object();
		argsObject['moduleaction'] = 'registration';
		makeCall('Users/showLogin', argsObject);
	},
	scrollTo: function(id) {
		$(id).scrollTo();
	},
	checkLogin: function()
	{
		if($F('user_login') != '') {
			if(this.regUserLogin.test($F('user_login'))) {
				argsObject = new Object();
				argsObject['moduleaction'] = 'checkLogin';
				argsObject['user_login']   = $F('user_login');
				call('Users/showLogin', argsObject);
			} else {
				 $('user_form_message').update($('user_login_error').innerHTML);
			}
		} else {
			$('user_form_message').update($('user_blank_login_error').innerHTML);
		}
	},
	registrationSubmit: function()
	{
		var userLogin		  = $F('user_login');
		var userEmail		  = $F('user_email');
		var userPassword	   = $F('user_password');
		var userPasswordRepeat = $F('user_password_repeat');
		
		var error = false;
		$('user_form_message').style.display = 'none';
		$('user_form_message').update('');

		if(userLogin != '') {
			if(this.regUserLogin.test($F('user_login'))) {
			} else {
				 $('user_form_message').update($('user_login_error').innerHTML);
				 error = true;
			}
		} else {
			$('user_form_message').update($('user_blank_login_error').innerHTML);
			error = true;
		}
		
		if(userEmail != '') {
			if(!Validate.email(userEmail)) {
				$('user_form_message').insert($('user_email_error').innerHTML);
				error = true;
			}
		} else {
			$('user_form_message').insert($('user_blank_email_error').innerHTML);
			error = true;
		}		
		if(userPassword != '') {
			if(userPassword.length < 6) {
				$('user_form_message').insert($('user_password_length_error').innerHTML);
				error = true;
			}
		} else {
			$('user_form_message').insert($('user_password_blank_error').innerHTML);
			error = true;
		}		
		if(userPasswordRepeat != '') {
			if(userPasswordRepeat != userPassword) {
				$('user_form_message').insert($('user_passwords_not_equal').innerHTML);
				error = true;
			}
		} else {
			$('user_form_message').insert($('user_password_repeat_blank_error').innerHTML);
			error = true;
		}
		if(!error) {
			Form.Element.disable('user_registration_submit');
			argsObj = new Object();
			argsObj['moduleaction']  = 'register';
			argsObj['userLogin']	 = userLogin;
			argsObj['userEmail']	 = userEmail;
			argsObj['userPassword']  = userPassword;
			ajaxCall('Users/showLogin', argsObj);
		} else {
			$('user_form_message').style.display = 'block';
		}
	},
	
	initProfile: function()
	{
		this.isUpload = 'off';
		this.uploadFlag = 0;
		this.photoObj = $('userPhoto');
		this.photo = '';
		this.userName		   = '';
		this.userLastname	   = '';
		this.userPatronymicname = '';
		this.userTelephone	  = '';
		this.userMobilephone	= '';
		this.userWorkphone	  = '';
		this.userIcq			= '';
	},
	
	uploadInit: function()
	{
		if (this.uploadFlag == 1) {
			this.uploadFlag = 0;
			var errorUploading = Xms.getCookie('err');
			$('user_form_message').update('');
			$('user_form_message').style.display = 'none';
			if (errorUploading != 'false' && this.isUpload == 'on') {
				this.photoObj.addClassName('x-form-invalid');
				switch (errorUploading) {
					case 'BigSize' :
						$('user_form_message').insert($('user_bigSize').innerHTML);
					break;
					case 'Partial' :
						$('user_form_message').insert($('user_partial').innerHTML);
					break;
					case 'NoFile' :
						$('user_form_message').insert($('user_notUploaded').innerHTML);
					break;
					case 'WrongMime' :
						$('user_form_message').insert($('user_wrongMime').innerHTML);
					break;
				}
				Xms.deleteCookie('err','/','');
				this.isUpload = 'off';
			} else {
				this.profileSaveToDb();
			}
		}
	},
	
	profileSave: function() {
		  
		this.userName		   = $F('user_name');
		this.userLastname	   = $F('user_lastname');
		this.userPatronymicname = $F('user_patronymicname');
		this.userTelephone	  = $F('user_telephone');
		this.userMobilephone	= $F('user_mobile_phone');
		this.userWorkphone	  = $F('user_work_phone');
		this.userIcq			= $F('user_icq');
		this.photo			  = this.photoObj.getValue(); 

		var error = false;

		$('user_form_message').update('');
		$('user_form_message').style.display = 'none';

		if(this.userName != '' && !Validate.name(this.userName)) {
			$('user_form_message').insert($('user_name_error').innerHTML);
			error = true;
		}
		if(this.userLastname != '' && !Validate.name(this.userLastname)) {
			$('user_form_message').insert($('user_lastname_error').innerHTML);
			error = true;
		}
		if(this.userPatronymicname != '' && !Validate.name(this.userPatronymicname)) {
			$('user_form_message').insert($('user_patronymicname_error').innerHTML);
			error = true;
		}		
		if(this.userTelephone != '' && !Validate.phone(this.userTelephone)) {
			$('user_form_message').insert($('user_telephone_error').innerHTML);
			error = true;
		}  
		if(this.userMobilephone != '' && !Validate.phone(this.userMobilephone)) {
			$('user_form_message').insert($('user_mobile_phone_error').innerHTML);
			error = true;
		}  
		if(this.userWorkphone != '' && !Validate.phone(this.userWorkphone)) {
			$('user_form_message').insert($('user_work_phone_error').innerHTML);
			error = true;
		}
		if(this.userIcq != '' && !Validate.phone(this.userIcq)) {
			 $('user_form_message').insert($('user_icq_error').innerHTML);
			error = true;
		}
	   
		if(error) {
			$('user_form_message').style.display = 'block';
		} else {
			if(this.photo != '') {
				document.forms.user_registration_form.submit();
				this.isUpload = 'on';
				this.uploadFlag = 1;
			} else {			
				this.profileSaveToDb();			
			}
		}
	},
	
	profileSaveToDb: function() {
		Form.Element.disable('user_profile_save');

		argsObj = new Object();

		argsObj['moduleaction']	   = 'updateProfile';
		argsObj['userName']		   = this.userName;
		argsObj['userLastname']	   = this.userLastname;
		argsObj['userPatronymicname'] = this.userPatronymicname;
		argsObj['userTelephone']	  = this.userTelephone;
		argsObj['userMobilephone']	= this.userMobilephone;
		argsObj['userWorkphone']	  = this.userWorkphone;
		argsObj['userIcq']			= this.userIcq;
		argsObj['userPhoto']		  = Xms.getCookie('userPhoto');
		Xms.deleteCookie('userPhoto','/','');

		ajaxCall('Users/showLogin', argsObj);
	}
};

//Create new copy of class UsersPrototype
Users = new UsersPrototype();

