document.observe("dom:loaded", function() {

  var flagging_dialog = $('add_flagging');

  if (flagging_dialog) {
    $("add_flagging_link").observe("click", function(event) {
      event.stop();
      target = event.element().cumulativeOffset();
      flagging_dialog.moveTo(target.left - 75, target.top - 175);
      flagging_dialog.show();
    });

    flagging_dialog.attachToBody();
    flagging_dialog.hide();

    var cancel_button = flagging_dialog.down("a[href=#cancel]").observe("click", function(event) {
      $("flagging_error_messages").update("");
      flagging_dialog.hide();
      event.stop();
    });

    var flagging_form = flagging_dialog.down("form");

    flagging_form.observe("submit", function(event) {
      event.stop();
      new Ajax.Request(flagging_form.readAttribute("action"), {
        parameters: flagging_form.serialize(),
        onLoading: function() {
          flagging_dialog.addClassName("disabled");
          flagging_form.disable();
        },
        onComplete: function(response) {
          flagging_dialog.removeClassName("disabled");
          flagging_form.enable();
        }
      });
    });
  }
});