var ModelErrors = Class.create({
  initialize: function(objectName, options) {
    this.options = {
      errorTextSelector: '#errorExplanation ul li',
      messageClass: 'popinfo_inner'
    }
    Object.extend(this.options, options || { })
    this.objectName = objectName

    this.createFieldWarningEvents()
  },

  createFieldWarningEvents: function() {
    $$(this.options.errorTextSelector).each(function(listElement) {
      var errorText = listElement.innerHTML
      var errorFieldName = errorText.split(' ')[0].toLowerCase()
      var fieldID = this.objectName.toLowerCase() + '_' + errorFieldName
      
      if ($(fieldID)) {
        Event.observe(fieldID, 'focus', function() { this.showError(fieldID, errorText) }.bind(this))
        Event.observe(fieldID, 'blur',  function() { this.removeError(fieldID, errorText) }.bind(this))
      }
    }.bind(this))
  },
  
  showError: function(fieldID, errorText) {
    var messageID = fieldID + '_error'
    
    // Don't show the message more than once
    if ($(messageID)) {
      return
    }
    
    $(fieldID).insert({ before: '<div class="model_error" id="#{messageID}"><div class="#{messageClass}">#{message}</div><div class="popinfo_image"></div></div>'.interpolate({ messageID: messageID, messageClass: this.options.messageClass, message: errorText }) })
    $(messageID).clonePosition($(fieldID))
  },
  
  removeError: function(fieldID, errorText) {
    var messageElement = $(fieldID + '_error')
    if (messageElement) {
      messageElement.remove()
    }
  }
})
