var form;
var inputs;
var errorHolder;

var count = 0;
var errors = new Array;
var errorText = {
	name: 'Please enter your first and last name, correctly formatted.',
	phone: 'Please enter a valid phone number.',
	email: 'Please enter a valid email address',
	zip: 'Please enter a valid zip code'
};

// Form validation
function formValidate() {
	// reset
	$(errorHolder).children('p').remove();
	count = 0;
	errors = new Array;
	
	for (i=0; i<inputs.length; i++) {
		$(inputs[i]).removeClass('error');
	}
	
	var name = $(form).find('#name').attr('value');
  	if (name) name = name.match(/^[a-zA-Z\-]+\s+[a-zA-Z\-\.\,\s]+$/);
	var phone = $(form).find('#phone').attr('value');
	if (phone) phone = phone.match(/^((\+\d{1,3}(-| |\.)?\(?\d\)?(-| |\.)?\d{1,5})|(\(?\d{2,6}\)?))(-| |\.)?(\d{3,4})(-| |\.)?(\d{4})(( x| ext)\d{1,5}){0,1}$/);
	var email = $(form).find('#email').attr('value');
	if (email) email = email.match(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*\.(\w{2}|(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum))$/);
	var zip = $(form).find('#zip').attr('value');
	if (zip) zip = zip.match(/(^\d{5}$)|(^\d{5}(-|\.| )?\d{4}$)/);
	
    if (!name) registerError('name');
	if (!phone) registerError('phone');
	if (!email) registerError('email');
	if (!zip) registerError('zip');
	
	if (errors.length != 0) {
		for (i=0; i<errors.length; i++) {
			errorP = $('<p>').addClass('error');
			$(errorP).append(errors[i])
			$(errorHolder).append(errorP);
		}
		return false;
	}
}

function registerError(field) {
    $(form).find('#'+ field).addClass('error');
    errors[count] = errorText[field];
    count++;
}

$(document).ready(function(){
	form = $('#estimateForm');
	inputs = $(form).find('input');
	errorHolder = $(form).find('div.error');
	
	$(form).submit(formValidate);
});
