$(document).ready(function() {

//global vars for validation
var form = $("#job-form");
var title = $("#title");
var firstname = $("#firstname");
var lastname = $("#lastname");
var email = $("#email");
var portfoliourl = $("#portfoliourl");
var resumefile = $("#resumefile");
var whymessage = $("#whymessage");

function validateTitle(){
	//if it's NOT valid
	var error_msg = 'Select a Position';
	
	if(title.val() == ''){
		if (title.hasClass("error")) {
			return false; 
			} else {
			title.after("<span class=\"error\">"+error_msg+"</span>");
			title.addClass('error');
			return false;
		} 
	}
	//if it's valid
	else{
		$("span").remove(":contains('"+error_msg+"')");
		return true;
	}
}

function validateFirstName(){
	//if it's NOT valid
	var error_msg = 'We need your name.';
	if(firstname.val() == ''){
		if (firstname.hasClass("error")) {
			return false; 
			} else {
			firstname.after("<span class=\"error\">"+error_msg+"</span>");
			firstname.addClass('error');
			return false;
		} 
	}
	//if it's valid
	else{
		$("span").remove(":contains('"+error_msg+"')");
		return true;
	}
}

function validateLastName(){
	//if it's NOT valid
	var error_msg = 'Last name is required.';
	
	if(lastname.val() == ''){
		if (lastname.hasClass("error")) {
			return false; 
			} else {
			lastname.after("<span class=\"error\">"+error_msg+"</span>");
			lastname.addClass('error');
			return false;
		} 
	}
	//if it's valid
	else{
		$("span").remove(":contains('"+error_msg+"')");
		return true;
	}
}

function validateEmail(){
	//if it's NOT valid
	var emailpattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
	var error_msg = 'Oh no, invalid email address.';
	if(!emailpattern.test( email.val() )){
		if (email.hasClass("error")) {
			return false; 
			} else {
			email.after("<span class=\"error\">"+error_msg+"</span>");
			email.addClass('error');
			return false;
		} 
	}
	//if it's valid
	else{
		$("span").remove(":contains('"+error_msg+"')");
		return true;
	}
}

function validatePortfolioURL(){
	//if it's NOT valid
	//var urlpattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
	var error_msg = 'URL is invalid.';
	if(portfoliourl.val() == ''){
		if (portfoliourl.hasClass("error")) {
			return false; 
			} else {
			portfoliourl.after("<span class=\"error\">"+error_msg+"</span>");
			portfoliourl.addClass('error');
			return false;
		} 
	}
	//if it's valid
	else{
		$("span").remove(":contains('"+error_msg+"')");
		return true;
	}
}


function validateResume(){
	//if it's NOT valid
	var error_msg = 'Invalid resume file.';
	var extpattern = /\.(doc)$/;
	if(resumefile.val() == '' || (!extpattern.test( resumefile.val()))){
		if (resumefile.hasClass("error")) {
			//do nothing
		} else {
			resumefile.after("<span class=\"error\">"+error_msg+"</span>");
			resumefile.addClass('error');			
		}
		
		return false;
			
	}
	//if it's valid
	else{
		$("span").remove(":contains('"+error_msg+"')");
		return true;
	}
}

function validateWhyMessage(){
	var error_msg = "We need at least one paragraph.";
	//it's NOT valid
	if(whymessage.val().length < 100){
		if (whymessage.hasClass("error")) {
			return false; 
			} else {
			whymessage.after("<span class=\"error\">"+error_msg+"</span>");
			whymessage.addClass('error');
			return false;
		} 
	}
	//it's valid
	else{
		$("span").remove(":contains('"+error_msg+"')");
		return true;
	}
}

//On blur
title.blur(validateTitle);
title.change(validateTitle);
firstname.blur(validateFirstName);
lastname.blur(validateLastName);
email.blur(validateEmail);
portfoliourl.blur(validatePortfolioURL);
resumefile.blur(validateResume);
resumefile.change(validateResume);

//On key press
firstname.keyup(validateFirstName);
lastname.keyup(validateLastName);
email.keyup(validateEmail);
portfoliourl.keyup(validatePortfolioURL);
whymessage.keyup(validateWhyMessage);

$("#submitbutton").click(function() {

	//check form fields
	if (validateTitle() & validateFirstName() & validateLastName() & validateEmail() & validatePortfolioURL() & validateResume() & validateWhyMessage()) {
	
		//upload the resume
		ajaxFileUpload();
		
		//encode variables for submission page
		var posttitle = escape(title.val());
		var postfirstname = escape(firstname.val());
		var postlastname = escape(lastname.val());
		var postemail = escape(email.val());
		var postportfoliourl = escape(portfoliourl.val());
		var postresumefile = escape(resumefile.val());
		var postwhymessage = escape(whymessage.val());
		var posturl = "includes/appsubmitted.php?title="+posttitle+"&firstname="+postfirstname+"&lastname="+postlastname+"&email="+postemail+"&portfoliourl="+postportfoliourl+"&resumefile="+postresumefile+"&whymessage="+postwhymessage;
		//load submission page
		$("#job-form").load(posturl);	
	} else {
	 //do nothing
	};

			
   
});
   
   function ajaxFileUpload()
	{
		$("#loading")
		.ajaxStart(function(){
			$(this).show();
		})
		.ajaxComplete(function(){
			$(this).hide();
		});

		$.ajaxFileUpload
		(
			{
				url:'functions/ajaxfileupload.php',
				secureuri:false,
				fileElementId:'resumefile',
				dataType: 'json',
				success: function (data, status)
				{
					if(typeof(data.error) != 'undefined')
					{
						if(data.error != '')
						{
							alert(data.error);
						}else
						{
							alert(data.msg);
						}
					}
				},
				error: function (data, status, e)
				{
					//alert(e);
				}
			}
		)
		
		return false;

	}


    
    

});