var App = {
  
  init: function() {
    this.message = $('message').addEvent('click', this.hideMessage.bind(this));
    if (this.message.get('text')) this.showMessage();
    
    this.initFeedbackForm();
  },
  
  showMessage: function(text) {
    if (text) this.message.set('text', text);
    this.message.removeClass('hidden');
  },
  
  hideMessage: function() {
    this.message.addClass('hidden');
  },
  
  initFeedbackForm: function() {
    var container = $('feedback');
    if (container) {
      var form = container.getElement('form');
      form.addEvent('submit', function(event) {
        event.stop();

        new Request.JSON({
          url: this.get('action'),
          data: this.toQueryString(),
          useSpinner: true,
          spinnerTarget: this,
          onSuccess: function(response) {
            if (response.status == 'sent') {
              form.addClass('hidden');
              container.getElement('.thanks').removeClass('hidden');
            } else {
              container.getElements('ul.error_list').destroy();
              Hash.each(response.errors, function(message, field) {
                new Element('ul', { 'class': 'error_list', html: '<li>' + message + '</li>' }).inject($('feedback_' + field), 'after');
              });
            }
          }
        }).send();
      });
    }
  }
};

window.addEvent('domready', App.init.bind(App));
