window.addEvent('domready', function() {
  var postform = $('post-form');
  if (postform) {
    var submit = $('post-submit-field');
    var disabled = $('post-disabled-field');

    var req = new Request.JSON({
      /* FIXME: Don't hardcode URL */
      url: '/forums/_post',
      onComplete: function() {
        /* Return submit button */
        submit.setStyle('display', disabled.getStyle('display'));
        disabled.setStyle('display', 'none');
      },
      onSuccess: function(resp, text) {
        if (resp.result == 'error')
          process_errors(resp.errors, 'post-');
        else if (resp.result == 'success') {
          if ($('mid-field'))
            window.location = resp.uri;
          else
            window.location.reload(true);
        }
      },
      onFailure: function(req) {
        var modal = create_modal('error-modal');

        modal.getElement('[name="modal-close"]').addEvent('click', function(event) {
          event.stop();
          modal.dispose();
        });
        modal.getElement('.modal-body').set('html', 'Error getting preview<br />' + req.status + ': ' + req.statusText);

        modal.setStyle('display', 'block').position();
      }
    });

    postform.addEvent('submit', function(event) {
      event.stop();

      /* Show disabled button */
      disabled.setStyle('display', submit.getStyle('display'));
      submit.setStyle('display', 'none');

      /* FIXME: Setup throbber so the user knows something is happening? */
      req.send(postform);
    });
  }

  var preview = $('post-preview-field');
  if (preview) {
    preview.addEvent('click', function(event) {
      event.stop();

      /* FIXME: Setup throbber so the user knows something is happening? */
      var req = new Request.JSON({
        url: '/forums/_preview',
        onSuccess: function(resp, text) {
          if (resp.result == 'error')
            console.log('error! %o', resp);
          else if (resp.result == 'success') {
            var modal = create_modal('preview-modal');

            modal.getElement('[name="modal-close"]').addEvent('click', function(event) {
              event.stop();
              modal.dispose();
            });
            modal.getElement('.modal-body').set('html', resp.output);

            modal.setStyle('display', 'block').position();
          }
        },
        onFailure: function(req) {
          var modal = create_modal('error-modal');

          modal.getElement('[name="modal-close"]').addEvent('click', function(event) {
            event.stop();
            modal.dispose();
          });
          modal.getElement('.modal-body').set('html', 'Error getting preview<br />' + req.status + ': ' + req.statusText);

          modal.setStyle('display', 'block').position();
        }
      }).send(postform);
    });
  }
});

