$(document).ready(function()
{
	var form = $("#contactForm");
	
	var inputName = $("#inputName");
	var inputNameInfo = $("#inputNameInfo");
	
	var inputEmail = $("#inputEmail");
	var inputEmailInfo = $("#inputEmailInfo");
	
	var inputTel = $("#inputTel");
	var inputTelInfo = $("#inputTelInfo");
		
	var inputMessage = $("#inputMessage");
	var inputMessageInfo = $("#inputMessageInfo");
	
	var inputUpload = $("#inputUpload");
	var inputUploadInfo = $("#inputUploadInfo");
	
	//On blur
	inputName.blur(validateName);
	inputEmail.blur(validateEmail);
	inputMessage.blur(validateMessage);
	inputTel.blur(validateTel);
	inputUpload.blur(validateUpload);
	
	//On key press
	inputName.keyup(validateName);
	inputEmail.keyup(validateEmail);
	inputMessage.keyup(validateMessage);
	inputTel.keyup(validateTel);
	inputUpload.keyup(validateUpload);
	
	//On Submitting
	form.submit(function()
	{
		if( validateName() & validateEmail() & validateMessage() )
			return true
		else
			return false;
	});
	
	//validation functions
	function validateEmail()
	{
		if ( !inputEmail.val() )
		{
			inputEmail.removeClass("error");
			inputEmailInfo.removeClass("error");
			inputEmail.removeClass("success");
			inputEmailInfo.html('');
			return false;	
		}
		
		//testing regular expression
		var a = $("#inputEmail").val();
		var filter = /^[a-zA-Z0-9]+[a-zA-Z0-9_.-]+[a-zA-Z0-9_-]+@[a-zA-Z0-9]+[a-zA-Z0-9.-]+[a-zA-Z0-9]+.[a-z]{2,4}$/;
		
		//if it's valid email
		if(filter.test(a))
		{
			inputEmail.removeClass("error");
			inputEmailInfo.removeClass("error");
			inputEmailInfo.html('');
			inputEmail.addClass("success");
			return true;
		}
		//if it's NOT valid
		else
		{
			inputEmail.addClass("error");
			inputEmailInfo.text("Please enter a valid e-mail address.");
			inputEmailInfo.addClass("error");
			inputEmail.removeClass("success");
			return false;
		}
	}
	function validateTel()
	{
		//testing regular expression
		var a = $("#inputTel").val();
		var filter = /^[0-9 ]{6,15}$/;
		
		//if it's valid email
		if(filter.test(a))
		{
			inputTel.removeClass("error");
			inputTelInfo.removeClass("error");
			inputTelInfo.html('');
			inputTel.addClass("success");
			return true;
		}
		//if it's NOT valid
		else
		{
			if (a != '')
			{
				inputTel.addClass("error");
				inputTelInfo.text("Please leave a valid phone number.");
				inputTelInfo.addClass("error");
				inputTel.removeClass("success");
				return false;
			}
			else
			{
				inputTel.removeClass("success");	
				inputTel.removeClass("error");
				inputTelInfo.removeClass("error");
				inputTelInfo.html('');
			}
		}
	}
	function validateName()
	{
		if ( !inputName.val() )
		{
			inputName.removeClass("error");
			inputNameInfo.removeClass("error");
			inputName.removeClass("success");
			inputNameInfo.html('');
			return false;	
		}
		
		//if it's NOT valid
		if(inputName.val().length < 3){
			inputName.removeClass("success");
			inputName.addClass("error");
			inputNameInfo.text("Please ensure your this field is greater than 3 characters.");
			inputNameInfo.addClass("error");
			return false;
		}
		//if it's valid
		else{
			inputName.removeClass("error");
			inputNameInfo.removeClass("error");
			inputNameInfo.html('');
			inputName.addClass("success");
			return true;
		}
	}
	function validateMessage()
	{
		if ( !inputMessage.val() )
		{
			inputMessage.removeClass("error");
			inputMessageInfo.removeClass("error");
			inputMessage.removeClass("success");
			inputMessageInfo.html('');
			return false;	
		}
		
		//it's NOT valid
		if(inputMessage.val().length < 20)
		{
			inputMessage.removeClass("success");
			inputMessage.addClass("error");
			inputMessageInfo.addClass("error");
			inputMessageInfo.text("Please ensure your this field is greater than 20 characters");
			return false;
		}
		else
		{			
			inputMessage.removeClass("error");
			inputMessageInfo.removeClass("error");
			inputMessageInfo.html('');
			inputMessage.addClass("success");
			return true;
		}
	}
	function validateUpload()
	{
		//if it's NOT valid
		if(inputUpload.val().length)
		{
			inputUpload.addClass("success");
			return true;
		}
	}
});
