
Event.addBehavior({
  'form.ajax_validation input.ajax_validation[type=text]:blur': function(e) {
    validateForm(this);
  },
      
  'form.ajax_validation input.ajax_validation[type=password]:blur': function(e) {
    validateForm(this);
  },
  
  'form.ajax_validation input.ajax_validation[type=checkbox]:click': function(e) {
    validateForm(this);
  },
    
  'form.ajax_validation select.ajax_validation:change': function(e) {
    validateForm(this);
  }
});

function validateForm(field) {
	var row_element = field.up();
  
  var model_name;
  if (row_element.hasClassName('Email_model')) { model_name = 'Email'; };
  if (row_element.hasClassName('User_model'))  { model_name = 'User'; };
  
  row_element.removeClassName('valid').removeClassName('invalid');
  row_element.down('strong').update("");
    
  new Ajax.Request('/validate', 
                   { asynchronous:true, evalScripts:true, 
                     parameters:"type=" + model_name + '&' + "field_name=" + field.name + '&' + "field_id=" + field.id + '&' + field.form.serialize() });
}
