// FORM VALIDATION PRESENTATION
// RICK JONES
// VT 4000

$(document).ready(function(){
	
	
	//--------------------------------------------------------------------
	// FUNCTIONS TO REDUCE REDUNDANCY 
	//--------------------------------------------------------------------
	
	var invalid = function(input_id, error_message){
		$('#error_span').html(error_message);
		$(input_id).addClass('error');	
		return false;	
	};
	

	var valid = function(input_id){
		$('#error_span').html("");
		$(input_id).removeClass('error');
		return true;
	};
	
	
	
	//--------------------------------------------------------------------
	// Unit VALIDATION
	//--------------------------------------------------------------------
	
	
	
	var validateUnit = function(){
		var allowed = /[^0-9]/i;
		if(allowed.test($('#unit').val()) ||  $('#unit').val() > 400 ||  $('#unit').val() < 100 )
		{
      		return invalid('#unit', '*Invalid Unit #');
  		}   
  		else
		{  
      		return valid('#unit'); 
  		}
	};
	
	
	//--------------------------------------------------------------------
	// EMAIL VALIDATION
	//--------------------------------------------------------------------
	
	
	var validateEmail = function(){
		
		var required = /^.+@.+[.].{2,}$/i;              
		if(!required.test($('#email').val()))
		{
      		return invalid('#email', '*Invalid Email');
  		}   
  		else
		{  
      		return valid('#email');   
  		}
	};

	
	//--------------------------------------------------------------------
	// REQUIRED FIELDS
	//--------------------------------------------------------------------
	
	var complete = true;
	var validateEmpty = function(){
		$('#firstName, #lastName, #email, #unit').each(function(){    
			if($(this).val().length < 2)
			{ 
				$('#error_span').html("* required field");
				$(this).addClass('error'); 
				complete = false;
				
			}   
			else
			{    
				$(this).removeClass('error');
			}
		});
		if(complete == false)
		{
			return false;
		}
		else
		{
			return true;
		}	
	};
	
	
	var validateCharacters = function(){
		var allowed = /[^ A-z0-9-_@\.]/i;
		$('#firstName, #lastName, #unit, #email, #firstName2, #lastName2, #unit2, #email2').each(function(){
			var user_input = $(this).val();
			if(allowed.test(user_input))
			{
				var invalid_characters = (user_input.match(allowed));
				$('#error_span').html('Contains invalid characters ('+ invalid_characters + ')'); 
				$(this).addClass('error'); 
				complete = false; 
			}
			else
			{  
				$(this).removeClass('error');  
			}
		});
		if(complete == false)
		{
			return false;
		}
		else
		{
			return true;
		}	
	};
	
	//--------------------------------------------------------------------
	// VALIDATES FORM BEFORE SUBMITTING IT TO THE DATABASE
	//--------------------------------------------------------------------
	
	$('#myForm').submit(function(){
		if(validateCharacters() && validateEmpty()  && validateEmail() && validateUnit()  )
		{
			console.log('hello');
			return true;
		}
		else
		{
			return false;
		}
	});
	
	
	//--------------------------------------------------------------------
	// DYNAMIC FORM VALIDATION
	//--------------------------------------------------------------------
	
	
	
	$('#email').blur(validateEmail);
	$('#unit').blur(validateUnit);
	

	
	
	
	
	//--------------------------------------------------------------------
	//  EXTRA FUNCTIONALITY
	//--------------------------------------------------------------------

//	$('input, textarea').focus(function(){
//		$(this).removeClass('error');
//	});
		
		
	$('[value="reset"]').click(function(){
			$('input').next('span').html("");
			$('input').removeClass('error');
			
	});

	
});  // END OF $(DOCUMENT).READY()

