/***************************/
//@Author: Adrian "yEnS" Mato Gondelle & Ivan Guardado Castro
//@website: www.yensdesign.com
//@email: yensamg@gmail.com
//@license: Feel free to use it, but keep this credits please!					
/***************************/

$(document).ready(function(){
	//global vars
	var form = $("#customForm");
	
	var contact = $("#contact");
	var contactInfo = $("#contactInfo");
	
	var company = $("#company");
	var companyInfo = $("#companyInfo");
	
	var address = $("#address");
	var addressInfo = $("#addressInfo");
	
	var city = $("#city");
	var cityInfo = $("#cityInfo");
	
	var province = $("#province");
	var provinceInfo = $("#provinceInfo");

	var postalcode = $("#postalcode");
	var postalcodeInfo = $("#postalcodeInfo");
	
	var phone = $("#phone");
	var phoneInfo = $("#phoneInfo");
	
	var email1 = $("#email1");
	var email1Info = $("#email1Info");
		
	var email2 = $("#email2");
	var email2Info = $("#email2Info");
	
	var url = $("#url");
	var urlInfo = $("#urlInfo");
	
	var category = $("#category");
	var categoryInfo = $("#categoryInfo");	
	
	//On blur
	contact.blur(validateContact);
	company.blur(validateCompany);
	address.blur(validateAddress);
	city.blur(validateCity);
	province.blur(validateProvince);
	
	postalcode.blur(validatePostalCode);
	phone.blur(validatePhoneNumber);
	
	email1.blur(validateEmail);
	email2.blur(validateEmails);
	
	url.blur(validateURL);
	
	category.blur(validateCategory);

	//On key press
/*	name.keyup(validateName);
	pass1.keyup(validatePass1);
	pass2.keyup(validatePass2);
	message.keyup(validateMessage);*/
	
	contact.keyup(validateContact);
	company.keyup(validateCompany);
	address.keyup(validateAddress);
	city.keyup(validateCity);
	province.keyup(validateProvince);
	
	postalcode.keyup(validatePostalCode);
	phone.keyup(validatePhoneNumber);
	
	email1.keyup(validateEmail);
	email2.keyup(validateEmails);
	url.keyup(validateURL);
	category.keyup(validateCategory);	
	
	
	
	//On Submitting
	form.submit(function(){
		if(validateText() & validateEmail() & validateEmails() & validatePostalCode() & validatePhoneNumber())
			return true
		else
			return false;
	});
	
	//validation functions


	
	function validateContact(){
		//if it's NOT valid
		if(contact.val().length < 4){
			contact.addClass("error");
			contactInfo.text("More than 3 letters please!");
			contactInfo.addClass("error");
			return false;
		}
		//if it's valid
		else{
			contact.removeClass("error");
			contactInfo.text("");
			contactInfo.removeClass("error");
			return true;
		}
	}

	function validateCompany(){
		//if it's NOT valid
		if(company.val().length < 4){
			company.addClass("error");
			companyInfo.text("More than 3 letters please!");
			companyInfo.addClass("error");
			return false;
		}
		//if it's valid
		else{
			company.removeClass("error");
			companyInfo.text("");
			companyInfo.removeClass("error");
			return true;
		}
	}
	
	function validateAddress(){
		//if it's NOT valid
		if(address.val().length < 4){
			address.addClass("error");
			addressInfo.text("More than 3 letters please!");
			addressInfo.addClass("error");
			return false;
		}
		//if it's valid
		else{
			address.removeClass("error");
			addressInfo.text("");
			addressInfo.removeClass("error");
			return true;
		}
	}
	
	function validateCity(){
		//if it's NOT valid
		if(city.val().length < 4){
			city.addClass("error");
			cityInfo.text("More than 3 letters please!");
			cityInfo.addClass("error");
			return false;
		}
		//if it's valid
		else{
			city.removeClass("error");
			cityInfo.text("");
			cityInfo.removeClass("error");
			return true;
		}
	}
	
	function validateProvince(){
		//if it's NOT valid
		if(province.val().length == ""){
			province.addClass("error");
			provinceInfo.text("Select a province.");
			provinceInfo.addClass("error");
			return false;
		}
		//if it's valid
		else{
			province.removeClass("error");
			provinceInfo.text("");
			provinceInfo.removeClass("error");
			return true;
		}
	}	
	
	function validatePostalCode(){
	
		//testing regular expression
		var a = $("#postalcode").val();
		var filter = /^[a-zA-Z]{1}[0-9]{1}[a-zA-Z]{1}[0-9]{1}[a-zA-Z]{1}[0-9]{1}$/;
		//if it's valid email
		if(filter.test(a)){
			postalcode.removeClass("error");
			postalcodeInfo.text("");
			postalcodeInfo.removeClass("error");
			return true;
		}
		//if it's NOT valid
		else{
			postalcode.addClass("error");
			postalcodeInfo.text("Format is T5T5T5.");
			postalcodeInfo.addClass("error");
			return false;
		}
	}

	function validatePhoneNumber(){
		//testing regular expression
		var a = $("#phone").val();
		var filter = /^[0-9]{3}-[0-9]{3}-[0-9]{4}/;
		//if it's valid email
		if(filter.test(a)){
			phone.removeClass("error");
			phoneInfo.text("");
			postalcodeInfo.removeClass("error");
			return phoneInfo;
		}
		//if it's NOT valid
		else{
			phone.addClass("error");
			phoneInfo.text("Format is 111-222-1234.");
			phoneInfo.addClass("error");
			return false;
		}	
	
	}
	function validateEmail(){
		//testing regular expression
		var a = $("#email1").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)){
			email1.removeClass("error");
			email1Info.text("");
			email1Info.removeClass("error");
			return true;
		}
		//if it's NOT valid
		else{
			email1.addClass("error");
			email1Info.text("Valid E-mail please.");
			email1Info.addClass("error");
			return false;
		}
	}
	
	function validateEmails(){
		var a = $("#email1");
		var b = $("#email2");
		//are NOT valid
		if( email1.val() != email2.val() ){
			email2.addClass("error");
			email2Info.text("Email doesn't match!");
			email2Info.addClass("error");
			return false;
		}
		//are valid
		else{
			email2.removeClass("error");
			email2Info.text("");
			email2Info.removeClass("error");
			return true;
		}
	}	
	function validateURL(){
		//if it's NOT valid
		if(url.val().length < 4){
			url.addClass("error");
			urlInfo.text("Invalid url.");
			urlInfo.addClass("error");
			return false;
		}
		//if it's valid
		else{
			url.removeClass("error");
			urlInfo.text("");
			urlInfo.removeClass("error");
			return true;
		}
		
		
		
/*		var a = $("#url").val();
		var filter = /^[a-zA-Z0-9]+.[a-z]{2,4}$/;
		//if it's valid email
		if(filter.test(a)){
			url.removeClass("error");
			urlInfo.text("");
			urlInfo.removeClass("error");
			return true;
		}
		//if it's NOT valid
		else{
			url.addClass("error");
			urlInfo.text("Valid web site please.");
			urlInfo.addClass("error");
			return false;
		}	*/	
	}
		
	function validateCategory(){
		//if it's NOT valid
		if(category.val().length == ""){
			category.addClass("error");
			categoryInfo.text("Please select a category.");
			return false;
		}
		//if it's valid
		else{
			category.removeClass("error");
			categoryInfo.text("");
			categoryInfo.removeClass("error");
			return true;
		}
	}		
/*	function validatePass1(){
		var a = $("#password1");
		var b = $("#password2");

		//it's NOT valid
		if(pass1.val().length <5){
			pass1.addClass("error");
			pass1Info.text("Password required.");
			pass1Info.addClass("error");
			return false;
		}
		//it's valid
		else{			
			pass1.removeClass("error");
			pass1Info.text("");
			pass1Info.removeClass("error");
			validatePass2();
			return true;
		}
	}*/

/*	function validateMessage(){
		//it's NOT valid
		if(message.val().length < 10){
			message.addClass("error");
			return false;
		}
		//it's valid
		else{			
			message.removeClass("error");
			return true;
		}
	}*/
});
