var validationErrors;

function doFormSubmit(form) {

	if( document.getElementById('SubForms').getElementsByTagName('div').length ) {

		validationErrors = Array();

		validateFormElements(document.getElementsByTagName('input'));

		validateFormElements(document.getElementsByTagName('textarea'));

		validateFormElements(document.getElementsByTagName('select'));

		if( ! formIsValid() ) {

			alert(
				"UNABLE TO CONTINUE . . . \n\n" +
				"We were unable to continue because some required information is either\n" +
				"missing or invalid.  Please check the following and resubmit once each\n" +
				"item has been corrected: \n\n" +
				"- " + getErrorsAsArray().join("\n- ")
			);

		} else {

			form.submit();

		}

	} else {

		alert('You must add at least one pet record before the form can be submitted.');

	}

}

function formIsValid() {

	getErrorsAsArray().length == 0 ? result = true : result = false;

	return result;

}

function getErrorsAsArray() {

	var result = Array();

	for( var key in validationErrors ) result.push(validationErrors[key]);

	return result;

}

function validateFormElements(elements) {

	for( var x = 0; x < elements.length; x++ ) {

		var isQualified = false;

		if( elements[x].getAttribute('isNotEmpty') ) {

			var pattern = /^\w+.+$/;

			if( null == elements[x].value.match(pattern) ) validationErrors[elements[x].getAttribute('name')] = elements[x].getAttribute('isNotEmpty');

			isQualified = true;

		}

		if( elements[x].getAttribute('isFullPhone') ) {

			var pattern = /(^$)|(^[0-9]{3,3}-[0-9]{3,3}-[0-9]{4,4}( x[0-9]{1,5})?$)/;

			if( null == elements[x].value.match(pattern) ) validationErrors[elements[x].getAttribute('name')] = elements[x].getAttribute('isFullPhone');

			isQualified = true;

		}

		if( elements[x].getAttribute('isZipCode') ) {

			var pattern = /(^$)|(^[0-9]{5,5}(-[0-9]{4,4})?$)/;

			if( null == elements[x].value.match(pattern) ) validationErrors[elements[x].getAttribute('name')] = elements[x].getAttribute('isZipCode');

			isQualified = true;

		}

		if( elements[x].getAttribute('isDate') ) {

			var pattern = /(^$)|(^[0-9]{1,2}[-/][0-9]{1,2}[-/][0-9]{2,4}$)/;

			if( null == elements[x].value.match(pattern) ) validationErrors[elements[x].getAttribute('name')] = elements[x].getAttribute('isDate');

			isQualified = true;

		}

		if( elements[x].getAttribute('isTime') ) {

			var pattern = /(^$)|(^[0-9]{1,2}:[0-9]{2,2} ?(AM|PM)$)/i;

			if( null == elements[x].value.match(pattern) ) validationErrors[elements[x].getAttribute('name')] = elements[x].getAttribute('isTime');

			isQualified = true;

		}

		if( elements[x].getAttribute('isInteger') ) {

			var pattern = /(^$)|(^[0-9]+$)/;

			if( null == elements[x].value.match(pattern) ) validationErrors[elements[x].getAttribute('name')] = elements[x].getAttribute('isInteger');

			isQualified = true;

		}

		if( validationErrors[elements[x].getAttribute('name')] ) {

			elements[x].style.border = '1px red solid';

		} else if( isQualified == true ) {

			elements[x].style.border = '1px #747576 solid';

		}

	}

}


