if (!Kwo) var Kwo = {};

Kwo.Inbox = {
  
  Message: { 

    onComment: function(elt) {
      Kwo.exec("/account/social/message.reply", elt, 
               {callback:Kwo.Inbox.Message.onCommentCallback, disable:true});
    },

    onCommentCallback: function(res) {
      if (Kwo.hasError(res)) return Kwo.error(res);
      Kwo.Inbox.Message.view(res["result"]["id"]);
    },

    onDelete: function(elt) {
      Kwo.exec("messages.delete", $(elt).up("FORM"), 
               {callback:Kwo.Inbox.display, confirm:elt});
    },

    onMarkRead: function(args) {
      Kwo.exec("messages.mark.read", $(elt).up("FORM"), 
               {callback:Kwo.Inbox.display});
    },
    
    onMarkUnread: function(elt) {
      Kwo.exec("messages.mark.unread", $(elt).up("FORM"), 
               {callback:Kwo.Inbox.display});
    },
    
    view: function(id) {
      Kwo.go("message", {"id": id, 
                         "inbox_offset": window.inbox_offset || 0});
    }

  },
  
  display: function(res) {
    if (Kwo.hasError(res)) return Kwo.error(res);
    Kwo.go("/account/social/inbox", {offset:window.inbox_offset});
  },

  onSelect: function(elt) {
    var type = $F(elt);
    if (type.length <= 1) return;
    $(elt.form).select("[type=checkbox]").each(function(input) {
      if (type == "none" || type == "all") {
        input.checked = type == "all";
      }
      else {
        input.checked = input.hasClassName("message-" + type);
      }
    });
  }

};

Kwo.Connection = {

  onConfirm: function(user_id) {
    new Kwo.Dialog("/social/connection.confirm", {"user_id": user_id}, 
                   {"className": "layout-hbox"});
  },

  onRequest: function(elt) {
    Kwo.exec("/social/invitation.save", elt, 
             {callback: elt});
  },

  onAccept: function(user_id) {

  }

};


Kwo.Group = {

  onCancel: function(elt) {
    elt = $(elt);
    elt.up("TD.column").update();
  },

  onEdit: function(elt) {
    elt = $(elt);
    Kwo.exec("group.edit", {"id": elt.readAttribute("data")},
             {container: elt.up("TD").next()});
  },

  onDelete: function(elt) {
    elt = $(elt);
    Kwo.exec("group.delete", elt.up("FORM"),
             {callback:true, disable:true, confirm:true});
  },

  onInvitationCallback: function(res) {
    this.update(res["result"]["callback_msg"]);
  },

  onInvitationSend: function(elt) {
    elt = $(elt);
    Kwo.exec("/social/invitation.save", elt,
             {callback:Kwo.Group.onInvitationCallback.bind(elt), disable:true});
  },

  onInvite: function(elt) {
    elt = $(elt);
    new Kwo.Dialog("/social/group.invite", {"item_key": elt.readAttribute("data")}, 
                   {className: "layout-hbox", width:600, height:400});
  },

  onJoin: function(id) {},

  onLeave: function(elt) {
    elt = $(elt);
    Kwo.exec("group.leave", {"id": elt.readAttribute("data")}, 
             {callback:elt.up("DIV.group"), confirm:true});
  },

  onSave: function(elt) {
    Kwo.exec("group.save", elt, 
             {callback:true, disable:true});
  }

};

Kwo.Invitation = {

  onAccept: function(elt) {
    elt = $(elt);
    Kwo.exec("/account/social/invitation.accept", {"id": elt.readAttribute("data")},
             {callback: elt.up("DIV")});
  },

  onRefuse: function(elt) {
    elt = $(elt);
    Kwo.exec("/account/social/invitation.refuse", {"id": elt.readAttribute("data")},
             {callback: elt.up("DIV"), confirm: elt});
  } 

};
