// field validation taken from LimeForm, developed by Joey Livingston @ Limesharp
function validateFields(form) {
	var pass = true;
	var fields = jQuery(form).find('.field');
	for(i=0; i<fields.length; i++) {
		if(jQuery(fields[i]).parents(':hidden').length == 0) {
			var reqFields = jQuery(fields[i]).find('.required');
			for(j=0; j<reqFields.length; j++) {
				var check = false;
				var fieldValue = '';
				var radios = jQuery(reqFields[j]).parents('.field').find(':radio,:checkbox');
				for(k=0; k<radios.length; k++) {
					if(jQuery(radios[k]).attr('checked') == true) {
						fieldValue = jQuery(radios[k]).val();
						check = true;
					}
				}
				var textInputs = jQuery(reqFields[j]).parents('.field').find(':text');
				for(k=0; k<textInputs.length; k++) {
					if(jQuery(textInputs[k]).val() != '') {
						fieldValue = jQuery(textInputs[k]).val();
						check = true;
					}
				}
				var hiddenInputs = jQuery(reqFields[j]).parents('.field').find(':hidden');
				for(k=0; k<hiddenInputs.length; k++) {
					if(jQuery(hiddenInputs[k]).val() != '') {
						fieldValue = jQuery(hiddenInputs[k]).val();
						check = true;
					}
				}
				var textAreas = jQuery(reqFields[j]).parents('.field').find('textarea');
				for(k=0; k<textAreas.length; k++) {
					if(jQuery(textAreas[k]).val() != '') {
						fieldValue = jQuery(textAreas[k]).val();
						check = true;
					}
				}
				var selects = jQuery(reqFields[j]).parents('.field').find('select');
				for(k=0; k<selects.length; k++) {
					if(jQuery(selects[k]).val() != '') {
						fieldValue = jQuery(selects[k]).val();
						check = true;
					}
				}

				var requirements = jQuery(reqFields[j]).find('.requirements');
				for(m=0; m<requirements.length; m++) {
					var text = jQuery(requirements[m]).html();
					var re = new RegExp('{([^}]+)}');
					var command = text.match(re);
					instructions = command[1];
					commands = instructions.split('-');
					var functionName = commands[0];
					var functionParam = commands[1];
					check = eval(functionName+"('"+fieldValue+"', '"+functionParam+"');");
				}

				if(check == false) {
					jQuery(reqFields[j]).css({display:'block'});
				} else {
					jQuery(reqFields[j]).css({display:'none'});
				}
			}
		}

		if(pass != false) {
			if (typeof check != 'undefined') {
				pass = check;
			}
		}
	}
	if(pass != true) {
		jQuery('.form-validation-msg').css({display:'block'});
	} else {
		jQuery('.form-validation-msg').css({display:'none'});
	}
	return pass;
}