(function($) {

	jQuery.fn.validateRequiredFields = function() {
		
		var success = true;
		
		$("label.required:visible").each(function() {
			var element = $("input[type!='submit'],textarea,select", this);
			
			element.each(function() {
				var el = $(this);
				
				if (!$.trim(el.val())) {
					var title = el.attr("elementName");
					
					if (!title) {
						error = "All bold fields are required and must be filled in.";
					} else {
						error = "Please enter " + title;
					}
					
					success = false;
					
					$.vestaUI.doGenericError(error, function() {
						el.focus();
					});
					
					return false;
				}
			});
			
		})
		
		return success;
	};
	
	jQuery.fn.populateForm = function(data) {
		$.each(data, function(key, value) {
			var field = $("#" + key);
			
			if (field) {
				field.val(value);
			}
		});
	}

	jQuery.fn.removeFormErrors = function() {
		$(".fieldError").removeClass("fieldError");
		$(".formError").remove();
	}
	
	jQuery.fn.highlightFormErrors = function(data) {
		jQuery.fn.removeFormErrors();
		
		if (!data.data) {
			data.data = data; // Maintain a uniform format for backwards compatibility
		}
		
		$.each(data.data, function(key, value) {
			
			var field = $("#" + key);
			
			field.addClass("fieldError");
			
			var el = $("<span class='formError'>" + value + "</span>");
			el.appendTo(field.parent());
			
		})
	};
	
	
})(jQuery);

