
$(document).ready(function(){
	//global vars
	var form = $("#orderform");
	var firstname = $("#first_name");
	var firstnameInfo = $("#first_nameInfo");
	var lastname = $("#last_name");
	var lastnameInfo = $("#last_nameInfo");
	var businessname = $("#business_name");
	var businessnameInfo = $("#business_nameInfo");
	var email = $("#email");
	var emailInfo = $("#emailInfo");
	var phone = $("#phone");
	var phoneInfo = $("#phoneInfo");
	var address = $("#address");
	var addressInfo = $("#addressInfo");
	var terms = $("#terms");
	var termsInfo = $("#termsInfo");
	
	//On blur
	firstname.blur(validateFirstName);
	lastname.blur(validateLastName);
	businessname.blur(validateBusinessName);
	email.blur(validateEmail);
	phone.blur(validatePhone);
	address.blur(validateAddress);
	terms.blur(validateTerms);
	
	//On key press
	firstname.keyup(validateFirstName);
	lastname.keyup(validateLastName);
	businessname.keyup(validateBusinessName);
	email.keyup(validateEmail);
	phone.keyup(validatePhone);
	address.keyup(validateAddress);
	terms.keyup(validateTerms);
	
	//On Submitting
	form.submit(function(){
		if(validateEmail() & validateFirstName() & validateLastName() & validateBusinessName() & validatePhone() & validateAddress() & validateTerms())
			return true
		else
			return false;
	});
	
	//validation functions
	
	
	function validateEmail(){
		//testing regular expression
		var a = $("#email").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)){
			email.removeClass("error");
			emailInfo.text("");
			emailInfo.removeClass("error");
			return true;
		}
		//if it's NOT valid
		else{
			email.addClass("error");
			emailInfo.text("Required");
			emailInfo.addClass("error");
			return false;
		}
	}
		
	function validateFirstName(){
		//if it's NOT valid
		if(firstname.val().length == 0){
			firstname.addClass("error");
			firstnameInfo.text("Required");
			firstnameInfo.addClass("error");
			return false;
		}
		//if it's valid
		else{
			firstname.removeClass("error");
			firstnameInfo.text("");
			firstnameInfo.removeClass("error");
			return true;
		}
	}
	
	function validateLastName(){
		//if it's NOT valid
		if(lastname.val().length == 0){
			lastname.addClass("error");
			lastnameInfo.text("Required");
			lastnameInfo.addClass("error");
			return false;
		}
		//if it's valid
		else{
			lastname.removeClass("error");
			lastnameInfo.text("");
			lastnameInfo.removeClass("error");
			return true;
		}
	}
	
	function validateBusinessName(){
		//if it's NOT valid
		if(businessname.val().length == 0){
			businessname.addClass("error");
			businessnameInfo.text("Required");
			businessnameInfo.addClass("error");
			return false;
		}
		//if it's valid
		else{
			businessname.removeClass("error");
			businessnameInfo.text("");
			businessnameInfo.removeClass("error");
			return true;
		}
	}
	
	function validatePhone(){
		//if it's NOT valid
		if(phone.val().length == 0){
			phone.addClass("error");
			phoneInfo.text("Required");
			phoneInfo.addClass("error");
			return false;
		}
		//if it's valid
		else{
			phone.removeClass("error");
			phoneInfo.text("");
			phoneInfo.removeClass("error");
			return true;
		}
	}
	
	function validateAddress(){
		//if it's NOT valid
		if(address.val().length == 0){
			address.addClass("error");
			addressInfo.text("Required");
			addressInfo.addClass("error");
			return false;
		}
		//if it's valid
		else{
			address.removeClass("error");
			addressInfo.text("");
			addressInfo.removeClass("error");
			return true;
		}
	}
	
	function validateTerms(){
		//if it's NOT valid
		if($("#terms:checked").length == 0){
			terms.addClass("error");
			termsInfo.text("You must agree to the terms and conditions before continuing");
			termsInfo.addClass("error");
			return false;
		}
		//if it's valid
		else{
			terms.removeClass("error");
			termsInfo.text("");
			termsInfo.removeClass("error");
			return true;
		}
	}
	
});