
// row_element is the div containing the label, hint, input and validation message
function updateValidation(input_element, valid, message) {
  if (input_element != null) {
    row_element = input_element.up();
    
    if (row_element != null && row_element.hasClassName('edited')) {
      var validation_element = row_element.down('strong');
      
      // This ensures that selects (which call this method after an onChange and not an onBlur) removes the
      // 'focus' class.
      row_element.removeClassName('focus');
            
      // Emptying message first to make sure errors dont show up green and vice-versa
      validation_element.update("");
      
      if (valid) {
        row_element.removeClassName('unvalidated').removeClassName('invalid').addClassName('valid');
      } 
      else {
        row_element.removeClassName('unvalidated').removeClassName('valid').addClassName('invalid');
      };
      
      validation_element.update(message).show();
    };
  };
};


// Function used to initialize LiveValidation
// overrides some of the defaults
function new_live_validation(input_element_name) {
  return new LiveValidation(input_element_name, 
                            { validMessage: '&nbsp;',
                              onlyOnBlur: true,
                              onValid: function()  { $(input_element_name).up().addClassName('edited'); 
                                                     updateValidation($(input_element_name), true,  this.message); },
                              onInvalid: function(){ $(input_element_name).up().addClassName('edited'); 
                                                     updateValidation($(input_element_name), false, this.message); },
                              displayMessageWhenEmpty: true });
};

