$(document).ready( function() {
	
	$('#form_properties').submit( function() {
		if ( validSubmit() ){
			return true;
		} else {
			return false;
		}
	});

});

function validSubmit() {
	
	var first_name = trim( $('#first_name').val() );
	var last_name = trim( $('#last_name').val() );
	var company = trim( $('#company').val() );
	var category = trim( $('#category').val() );
	var address1 = trim( $('#address1').val() );
	var city = trim( $('#city').val() );
	var state = trim( $('#state').val() );
	var zip = trim( $('#zip').val() );
	var email = trim( $('#email').val() );
	
	if ( empty(first_name) || !cleanName(first_name) ) {
		alert("Please enter a valid first name");
		return false;
	} else if ( empty(last_name) || !cleanName(last_name) ) {
		alert("Please enter a valid last name");
		return false;
	} else if ( empty(company) || !cleanName(company) ) {
		alert("Please enter a valid company");
		return false;
	} else if ( empty(category) || !cleanName(category) ) {
		alert("Please select a valid category");
		return false;
	} else if ( empty(address1) ) {
		alert("Please enter a valid address");
		return false;
	} else if ( empty(city) || !cleanName(city) ) {
		alert("Please enter a valid city");
		return false;
	} else if ( empty(state) || !cleanName(state) ) {
		alert("Please select a valid state");
		return false;
	} else if ( empty(zip) ) {
		alert("Please enter a valid zip");
		return false;
	} else if ( empty(email) || !validEmail(email) ) {
		alert("Please enter a valid email");
		return false;
	} else {
		return true;
	}
	
}

function validEmail(str) {
	var testresults=true;
	var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
	var emailPat=/^(.+)@(.+)$/; 
	var matchArray=str.match(emailPat); 
	if (matchArray==null) {	testresults=false; }
	if (!filter.test(str)) { testresults=false; }
	return testresults;
}

function cleanName(n) {
    var regCheck =  /^[a-zA-Z\s-_']$/;
    for (i = 0; i < n.length; i++) {   
        // Check that current character is number.
        var c = n.charAt(i);
		var matchChar = c.match(regCheck);
		if (matchChar == null) {
			return false;
			break;
		}
    }
    // All characters are valid
    return true;
}

function empty(x) {
	return (x=='' || x==null);
}

function trim(str, chars) {
	return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars) {
	chars = chars ||"\\s";
	return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}