function validateForm(formButton, formObj, fieldsArray) {
	formButton.className = "formButtonDisabled";
	formButton.disabled = true;
	formButton.blur();
	var oldFormTitle = formButton.value;
	formButton.value = "Processing";
	var errorMsg = "";
	for (var i=0; i<fieldsArray.length; i++) {
		var valid = true;
		var field = formObj[fieldsArray[i].field];
		if (fieldsArray[i].req && !field.value.length) {
			errorMsg += '- "' + fieldsArray[i].name + '" is a required field\n';
			valid = false;
		} else {
			switch (fieldsArray[i].type) {
				case "text" :
					if (field.value.length && field.value.length < fieldsArray[i].minLen) {
						errorMsg += '- "' + fieldsArray[i].name + '" must be at least ' + fieldsArray[i].minLen + ' characters long\n';
						valid = false;					
					} else if (field.value.length > fieldsArray[i].maxLen) {
						errorMsg += '- "' + fieldsArray[i].name + '" must be at less ' + fieldsArray[i].maxLen + ' characters long\n';
						valid = false;					
					}
					break;
				case "email" :
   					var emailReg = new RegExp("^[\\w-_\.]*[\\w-_\.]\@[\\w]\.+[\\w]+[\\w]$");
					if (!emailReg.test(field.value)) {
						errorMsg += '- "' + fieldsArray[i].name + '" must be a valid e-mail address\n';
						valid = false;
					}
					break;
				case "phone" :
					var stripped = field.value.replace(/[\(\)\.\-\ ]/g, '');
					if (field.value.length > 0 && (isNaN(parseInt(stripped)) || stripped.length < 6)) {
						errorMsg += '- "' + fieldsArray[i].name + '" must be a valid telephone number\n';
						valid = false;
					}				
					break;
				case "int" :
					if (Math.round(field.value) != field.value) {
						errorMsg += '- "' + fieldsArray[i].name + '" must be a whole number\n';
						valid = false;
					} else if (field.value < fieldsArray[i].min || field.value > fieldsArray[i].max) {
						errorMsg += '- "' + fieldsArray[i].name + '" must be between ' + fieldsArray[i].min + ' and ' + fieldsArray[i].max + '\n';
						valid = false;
					}
					break;
			}
		}
		if (valid) {
			field.className = "formElement"
		} else {
			field.className = "formElementRequired"
		}
	}
	if (errorMsg.length) {
		alert(errorMsg);
		formButton.className = "formButton";
		formButton.value = oldFormTitle;
		formButton.disabled = false;
	} else {
		formObj.submit();
	}
}
function controlTextAreaInput(textarea, maxlength, maxLines) {
	var mainString = textarea.value;
	var len = mainString.length;
	var aLines = mainString.split("\n");
	var numberOfLines = aLines.length;
	
	var indexOfCurrentLine = eval(parseInt(aLines.length)-1);
	var string = aLines[indexOfCurrentLine];
	var lastCharacter = string.charAt(eval(len-1));
	var previousLines = "";
	
	if (numberOfLines > maxLines) indexOfCurrentLine = maxLines;
	
	for(var i=0;i<indexOfCurrentLine;i++) previousLines +=aLines[i];
	
	var keyCode = document.layers ? event.which : event.keyCode;
	if (keyCode == 13){
	    if (aLines.length >= eval(maxLines+1)){
		textarea.value = mainString.substr(0, eval(len-2));
		textarea.value = previousLines.substring(0,eval(previousLines.length-1));
	    } else {
		return true;
	    }
	}
	if (string.length > maxlength - 1) textarea.value = previousLines +string.substr(0, maxlength);
	return;
}
