/***************************/
//@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 fname = $("#fname");
	var fnameInfo = $("#fnameInfo");
	var lname = $("#lname");
	var lnameInfo = $("#lnameInfo");
	var mobile = $("#mobile");
	var mobileInfo = $("#mobileInfo");
	var email = $("#email");
	var emailInfo = $("#emailInfo");
	var gender = $("#gender");
	var genderInfo = $("#genderInfo");
	
	var dd = $("#dd");
	var mm = $("#mm");
	var yy = $("#yy");
	
	var dobInfo = $("#dobInfo");
	var location = $("#location");
	var locationInfo = $("#locationInfo");
	var status = $("#status");
	var statusInfo = $("#statusInfo");
	var image = $("#image");
	var imageInfo = $("#imageInfo");
	var message = $("#message");
	var messageInfo = $("#messageInfo");
	
	
	//On blur
	fname.blur(validateFname);
	lname.blur(validateLname);
	mobile.blur(validateMobile);
	email.blur(validateEmail);
	gender.blur(validateGender);
	
	dd.blur(validateDob);
	mm.blur(validateDob);
	yy.blur(validateDob);
	
	location.blur(validateLocation);
	status.blur(validateStatus);
	image.blur(validateImage);
	message.blur(validateMessage);
		
	//On key press
	fname.keyup(validateFname);
	lname.keyup(validateLname);
	mobile.keyup(validateMobile);
	email.keyup(validateEmail);
	gender.keyup(validateGender);
	
	dd.keyup(validateDob);
	mm.keyup(validateDob);
	yy.keyup(validateDob);
	
	location.keyup(validateLocation);
	status.keyup(validateStatus);
	image.keyup(validateImage);
	message.keyup(validateMessage);
	
	//On Submitting
	form.submit(function(){
		if(validateFname() & validateLname() & validateMobile() & validateEmail() & validateGender() & validateDob()  & validateLocation() & validateStatus() & validateImage() & validateMessage())
			return true
		else
			return false;
	});
	
	//validation functions
	function validateEmail(){
		//testing regular expressiond
		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}$/;
		var filter = /^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
		//if it's valid email
		if(filter.test(a)){
			email.removeClass("error");
			email.addClass("correct");
			emailInfo.text("Done!");
			emailInfo.removeClass("error");
			emailInfo.addClass("correct");			
			return true;
		}
		//if it's NOT valid
		else{
			email.removeClass("correct");
			email.addClass("error");
			emailInfo.text("This is not a valid Email address!");
			emailInfo.removeClass("correct");
			emailInfo.addClass("error");		
			return false;
		}
	}
	
	function validateFname(){
		//testing regular expressiond
		var b = $("#fname").val();
		var filter = /^[a-zA-Z]{3,15}$/;
		//if it's valid email
		if(filter.test(b)){
			fname.removeClass("error");
			fname.addClass("correct");
			fnameInfo.text("Done!");
			fnameInfo.removeClass("error");
			fnameInfo.addClass("correct");
			return true;
		}
		//if it's NOT valid
		else{
			fname.removeClass("correct");
			fname.addClass("error");
			fnameInfo.text("Enter your First Name, between 3 to 15!");
			fnameInfo.removeClass("correct");
			fnameInfo.addClass("error");		
			return false;
		}
	}
	
	function validateLname(){
		//testing regular expressiond
		var a = $("#lname").val();
		var filter = /^[a-zA-Z]{3,15}$/;
		//if it's valid email
		if(filter.test(a)){
			lname.removeClass("error");
			lname.addClass("correct");
			lnameInfo.text("Done!");
			lnameInfo.removeClass("error");
			lnameInfo.addClass("correct");			
			return true;
		}
		//if it's NOT valid
		else{
			lname.removeClass("correct");
			lname.addClass("error");
			lnameInfo.text("Enter your Last Name, between 3 to 15!");
			lnameInfo.removeClass("correct");
			lnameInfo.addClass("error");		
			return false;
		}
	}

	function validateImage(){
		//if it's NOT valid
		//if(image.val().length < 8){
			var ext = image.val().split('.').pop().toLowerCase();
			var allow = new Array('gif','png','jpg','jpeg');
		if(jQuery.inArray(ext, allow) == -1) {
			image.removeClass("correct");
			image.addClass("error");
			imageInfo.text("Upload jpg, png, jpeg or gif!");
			imageInfo.removeClass("correct");
			imageInfo.addClass("error");
			return false;
		}
		//if it's valid
		else{
			image.removeClass("error");
			image.addClass("correct");
			imageInfo.text("Done!");
			imageInfo.removeClass("error");
			imageInfo.addClass("correct");	
			return true;
		}
	}
	
	function validateMobile(){
		//testing regular expression
		var a = $("#mobile").val();
		var filter = /^([7-9][0-9]{9,9})/;
		//if it's valid mobile
		if(filter.test(a)){
			mobile.removeClass("error");
			mobile.addClass("correct");
			mobileInfo.text("Done!");
			mobileInfo.removeClass("error");
			mobileInfo.addClass("correct");
			return true;
		}
		//if it's NOT valid
		else{
			mobile.removeClass("correct");
			mobile.addClass("error");
			mobileInfo.text("Enter valid Mobile No.!");
			mobileInfo.removeClass("correct");
			mobileInfo.addClass("error");
			return false;
		}
	}
	
	function validateLocation(){
		//if it's NOT valid
		if(location.val().length < 4){
			location.removeClass("correct");
			location.addClass("error");
			locationInfo.text("Endter your Location!");
			locationInfo.removeClass("correct");
			locationInfo.addClass("error");
			return false;
		}
		//if it's valid
		else{
			location.removeClass("error");
			location.addClass("correct");
			locationInfo.text("Done!");
			locationInfo.removeClass("error");
			locationInfo.addClass("correct");
			return true;
		}
	}
	
	function validateGender(){
		//if it's NOT valid
		if(gender.val().length < 4){
			gender.removeClass("correct");
			gender.addClass("error");
			genderInfo.text("Specify your gender!");
			genderInfo.removeClass("correct");
			genderInfo.addClass("error");			
			return false;
		}
		//if it's valid
		else{
			gender.removeClass("error");
			gender.addClass("correct");
			genderInfo.text("Done!");
			genderInfo.removeClass("error");
			genderInfo.addClass("correct");
			return true;
		}
	}
	
	function validateStatus(){
		//if it's NOT valid
		if(status.val().length < 4){
			status.removeClass("correct");
			status.addClass("error");
			statusInfo.text("Specify your Marital Status!");
			statusInfo.removeClass("correct");
			statusInfo.addClass("error");			
			return false;
		}
		//if it's valid
		else{
			status.removeClass("error");
			status.addClass("correct");
			statusInfo.text("Done!");
			statusInfo.removeClass("error");
			statusInfo.addClass("correct");
			return true;
		}
	}
	
	function validateDob(){
		//if it's NOT valid
		if((dd.val().length < 1) || (mm.val().length < 1) || (yy.val().length < 4)){
			dd.removeClass("correct");
			mm.removeClass("correct");
			yy.removeClass("correct");
			
			dd.addClass("error");
			mm.addClass("error");
			yy.addClass("error");
			
			dobInfo.text("Enter your Date of Birth!");
			dobInfo.removeClass("correct");
			dobInfo.addClass("error");
			return false;
		}
		//if it's valid
		else{
			dd.removeClass("error");
			mm.removeClass("error");
			yy.removeClass("error");
			
			dd.addClass("correct");
			mm.addClass("correct");
			yy.addClass("correct");
			
			dobInfo.text("Done!");
			dobInfo.removeClass("error");			
			dobInfo.addClass("correct");
			return true;
		}
	}
	
	function validateMessage(){
		//if it's NOT valid
		if(message.val().length < 6){
			message.removeClass("correct");
			message.addClass("error");
			messageInfo.text("Heard about Sampark from?");
			messageInfo.removeClass("correct");
			messageInfo.addClass("error");
			return false;
		}
		//if it's valid
		else{
			message.removeClass("error");
			message.addClass("correct");
			messageInfo.text("Done!");
			messageInfo.removeClass("error");			
			messageInfo.addClass("correct");
			return true;
		}
	}
});
