	
	FV.operatorStepOne = new Object();
				
	FV.InfoSuffix = 'Info';
	FV.ColorSuffix = 'Color';
				
	FV.operatorStepOne.FirstName = function() {	
	
		var sNameBase = 'FirstName';
		var sInfoName = sNameBase+FV.InfoSuffix;
		var sInfoColor = sNameBase+FV.ColorSuffix;
	
		if(!FV.Validation.Required($(sNameBase), 'First name is required', sInfoName, sInfoColor)) return false;
		if(!FV.Validation.HasLengthBetween($(sNameBase), 2, 50, 'First name must be between 2 and 50 characters long', sInfoName, sInfoColor)) return false;
		if(!FV.Validation.MatchRegexp($(sNameBase), /^[\sa-z'_`-]*$/i , 'First name can not contain special characters', sInfoName, sInfoColor)) return false;
		FV.Restore(sInfoName,sInfoColor);
		return true;
	}
	
	FV.operatorStepOne.LastName = function() {
	
		var sNameBase = 'LastName';
		var sInfoName = sNameBase+FV.InfoSuffix;
		var sInfoColor = sNameBase+FV.ColorSuffix;
	
		if(!FV.Validation.Required($(sNameBase), 'Last name is required', sInfoName, sInfoColor)) return false;
		if(!FV.Validation.HasLengthBetween($(sNameBase), 2, 50, 'Last name must be between 2 and 50 characters long', sInfoName, sInfoColor)) return false;
		if(!FV.Validation.MatchRegexp($(sNameBase), /^[\sa-z'_`-]*$/i , 'Last name can not contain special characters', sInfoName, sInfoColor)) return false;
		FV.Restore(sInfoName,sInfoColor);
		return true;
	}
	
	FV.operatorStepOne.DateOfBirth = function() {
	
		var sNameBase = 'DateOfBirth';
		var sInfoName = sNameBase+FV.InfoSuffix;
		var sInfoColor = sNameBase+FV.ColorSuffix;
	
		if(
			!FV.Validation.IsSelected($('DateOfBirthDayOfBirth'), 0, 'Date of birth is required', sInfoName, sInfoColor) ||
			!FV.Validation.IsSelected($('DateOfBirthMonthOfBirth'), 0, 'Date of birth is required', sInfoName, sInfoColor) ||
			!FV.Validation.IsSelected($('DateOfBirthYearOfBirth'), 0, 'Date of birth is required', sInfoName, sInfoColor)
		) {
			return false;
		}
		
		if(!FV.Validation.IsOver18($('DateOfBirthDayOfBirth'), $('DateOfBirthMonthOfBirth'), $('DateOfBirthYearOfBirth'), 'You must be 18 or over', sInfoName, sInfoColor)) return false;
		
		FV.Restore(sInfoName,sInfoColor);
		return true;
	}
	
	FV.operatorStepOne.Email = function() {
	
		var sNameBase = 'Email';
		var sInfoName = sNameBase+FV.InfoSuffix;
		var sInfoColor = sNameBase+FV.ColorSuffix;
		
		if(!FV.Validation.Required($(sNameBase), 'Email is required', sInfoName, sInfoColor)) return false;
		if(!FV.Validation.Email($(sNameBase), 'Email format not supported', sInfoName, sInfoColor)) return false;
		if(!FV.Validation.IsShorterOrEqualTo($(sNameBase), 75, 'Email must be less than 75 characters', sInfoName, sInfoColor)) return false;
		FV.Restore(sInfoName,sInfoColor);
		return true;
	}
	
	FV.operatorStepOne.EmailConfirm = function() {
	
		var sNameBase = 'EmailConfirm';
		var sInfoName = sNameBase+FV.InfoSuffix;
		var sInfoColor = sNameBase+FV.ColorSuffix;
		
		if(!FV.Validation.Required($(sNameBase), 'Confirmation email is required', sInfoName, sInfoColor)) return false;
		if(!FV.Validation.Email($(sNameBase), 'Confirmation email format not supported', sInfoName, sInfoColor)) return false;
		if(!FV.Validation.IsShorterOrEqualTo($(sNameBase), 75, 'Confirmation email must be less than 75 characters', sInfoName, sInfoColor)) return false;
		if(!FV.Validation.SameAs($(sNameBase), $('Email'), 'Email and confirmation email do not match', sInfoName, sInfoColor)) return false;
		FV.Restore(sInfoName,sInfoColor);
		return true;
	}
	
	FV.operatorStepOne.AddressLineOne = function() {
		
		var sNameBase = 'AddressLine1';
		var sInfoName = sNameBase+FV.InfoSuffix;
		var sInfoColor = sNameBase+FV.ColorSuffix;
		
		if(!FV.Validation.Required($(sNameBase), 'Address is required', sInfoName, sInfoColor)) return false;
		if(!FV.Validation.HasLengthBetween($(sNameBase), 2, 75, 'Address must be between 2 and 75 characters long', sInfoName, sInfoColor)) return false;
		FV.Restore(sInfoName,sInfoColor);
		return true;	
	}
	
	FV.operatorStepOne.AddressLineTwo = function() {
		
		var sNameBase = 'AddressLine2';
		var sInfoName = sNameBase+FV.InfoSuffix;
		var sInfoColor = sNameBase+FV.ColorSuffix;
				
		if(!FV.Validation.IsShorterThan($(sNameBase),76, 'Address must be less than 75 characters', sInfoName, sInfoColor)) return false;
		FV.Restore(sInfoName,sInfoColor);
		return true;	
	}
	
	FV.operatorStepOne.AddressLineThree = function() {
		
		var sNameBase = 'AddressLine3';
		var sInfoName = sNameBase+FV.InfoSuffix;
		var sInfoColor = sNameBase+FV.ColorSuffix;
				
		if(!FV.Validation.IsShorterThan($(sNameBase),76, 'Address must be less than 75 characters', sInfoName, sInfoColor)) return false;
		FV.Restore(sInfoName,sInfoColor);
		return true;	
	}
	
	FV.operatorStepOne.City = function() {
		
		var sNameBase = 'City';
		var sInfoName = sNameBase+FV.InfoSuffix;
		var sInfoColor = sNameBase+FV.ColorSuffix;
		
		if(!FV.Validation.Required($(sNameBase), 'City is required', sInfoName, sInfoColor)) return false;
		if(!FV.Validation.IsShorterThan($(sNameBase), 21, 'City must be less than 20 characters', sInfoName, sInfoColor)) return false;
		FV.Restore(sInfoName,sInfoColor);
		return true;
	}
	
	FV.operatorStepOne.County = function() {
		
		var sNameBase = 'County';
		var sInfoName = sNameBase+FV.InfoSuffix;
		var sInfoColor = sNameBase+FV.ColorSuffix;
		
		if(!FV.Validation.IsShorterThan($(sNameBase),51, 'County must be less than 50 characters', sInfoName, sInfoColor)) return false;
		FV.Restore(sInfoName,sInfoColor);
		return true;
	}
	
	FV.operatorStepOne.PostCode = function() {
		
		var sNameBase = 'PostCode';
		var sInfoName = sNameBase+FV.InfoSuffix;
		var sInfoColor = sNameBase+FV.ColorSuffix;
		
		if(!FV.Validation.Required($(sNameBase), 'ZIP/Postcode is required', sInfoName, sInfoColor)) return false;
		if(!FV.Validation.HasLengthBetween($(sNameBase), 2, 12, 'ZIP/Postcode must be between 2 and 12 characters long', sInfoName, sInfoColor)) return false;
		FV.Restore(sInfoName,sInfoColor);
		return true;
	}
	
	FV.operatorStepOne.Country = function() {
		return true;
	} 
	
	FV.operatorStepOne.Mobile = function() {
		
		var sNameBase = 'Mobile';
		var sInfoName = sNameBase+FV.InfoSuffix;
		var sInfoColor = sNameBase+FV.ColorSuffix;
		
		if(!FV.Validation.Required($(sNameBase), 'Contact phone is required', sInfoName, sInfoColor)) return false;
		if(!FV.Validation.MatchRegexp($(sNameBase), /^[\s0-9-+]*$/i , 'Contact phone can not contain special characters', sInfoName, sInfoColor)) return false;
		if(!FV.Validation.HasLengthBetween($(sNameBase), 9, 16, 'Contact phone must be between 9 and 16 digits long', sInfoName, sInfoColor)) return false;
		
		FV.Restore(sInfoName,sInfoColor);
		return true;
	}
	
	FV.operatorStepOne.PreviousExperience = function() {
		
		var sNameBase = 'PreviousExperience';
		var sInfoName = sNameBase+FV.InfoSuffix;
		var sInfoColor = sNameBase+FV.ColorSuffix;
				
		if(!FV.Validation.IsShorterThan($(sNameBase),251, 'Previous experience must be less than 250 characters', sInfoName, sInfoColor)) return false;
		FV.Restore(sInfoName,sInfoColor);
		return true;	
	}
	
	FV.operatorStepOne.Submit = function() {

		var iErrors = 0;
	
		if(!FV.operatorStepOne.FirstName()) iErrors++;
		if(!FV.operatorStepOne.LastName()) iErrors++;
		if(!FV.operatorStepOne.DateOfBirth()) iErrors++;
		if(!FV.operatorStepOne.Email()) iErrors++;
		if(!FV.operatorStepOne.EmailConfirm()) iErrors++;
		if(!FV.operatorStepOne.AddressLineTwo()) iErrors++;
		//if(!FV.operatorStepOne.AddressLineThree()) iErrors++;
		if(!FV.operatorStepOne.AddressLineOne()) iErrors++;
		if(!FV.operatorStepOne.City()) iErrors++;
		if(!FV.operatorStepOne.County()) iErrors++;
		if(!FV.operatorStepOne.PostCode()) iErrors++;
		if(!FV.operatorStepOne.Country()) iErrors++;
		if(!FV.operatorStepOne.Mobile()) iErrors++;
		if(!FV.operatorStepOne.PreviousExperience()) iErrors++;
		
		if(!iErrors) return true;
			
		if(iErrors > 1) {
			Element.show($('operatorStepOne_error'));
		} else {
			Element.show($('operatorStepOne_error'));
		}
		
		return false;
	}
	