function ajax_validate_field(form,field)
{	
	$(document).ready(function () {
		
	  //Define model field name to pass to DataMapper model, based on Merb's form field naming conventions
	  var model_attribute_name = field.replace(form+"_","");
	
	  //Define DOM object defined by received field
	  var field_dom_object = $("#"+field)

	  //On leaving a form field, validate its contents against it's model's validation rules
	  field_dom_object.blur(function () {
	    var t = this;
	    if (this.value != this.lastValue) {
	      if (this.timer) clearTimeout(this.timer);
  		  hide_onscreen_errors(field_dom_object);
	      this.timer = setTimeout(function () {
	        $.ajax({
	          url: '/validate_field',
	          data: "field=" + model_attribute_name + "&value=" + t.value,
	          dataType: 'json',
	          type: 'post',
	          success: function (json) {
				if(json.errormessage != null) {
					display_onscreen_errors(field_dom_object,json.errormessage);
				}
	          }
	        });
	      }, 200);
	      this.lastValue = this.value;
	    }
	  });
	});
}

function hide_onscreen_errors(field)
{
	field.removeClass('error');
	$("#"+field.attr("id")+"_error").fadeOut();
}

function display_onscreen_errors(field,message)
{
	field.addClass('error');
	$("<div id='"+field.attr("id")+"_error' class='validation_error'>"+message+"</div>").insertAfter(field).addClass('error').hide().fadeIn();
}