Kwo.Push = {

  "Base": {

    "id": null,

    "signup": function(id, args) {
      Kwo.Push.Base.id = id;
      $("newsletter-"+id+"-ko").update("");
      Kwo.exec('/push/base.signup', args);
    },

    "back": function(msg) {
      if (msg !== undefined) {
        $("newsletter-" + Kwo.Push.Base.id + "-ko").update("Oops! " + msg.ucfirst());
        return ;
      }
      $("newsletter-" + Kwo.Push.Base.id,
        "newsletter-" + Kwo.Push.Base.id + "-ok").invoke("toggle");
    }
    
  }

};

Kwo.Subscriptions = {

  "onSubmit": function(args) {
    Kwo.exec("/account/push/subscriptions.set", args);
  }

};

Kwo.Newsletter = {
  
  "button": null,

  "signup": function(code) {
    new Kwo.Dialog("/push/newsletter.signup", {"code": code});
  },
  
  "onSubmit": function(args) {
    Kwo.Newsletter.button = $(args).select("input[type=submit]")[0];
    Kwo.Newsletter.button.disable();
    Kwo.exec("/push/newsletter.subscribe", args,
             {"callback": Kwo.Newsletter.onCallback});
  },

  "onCallback": function(h) {
    if (Kwo.hasError(h)) {
      Kwo.Newsletter.button.enable();
      return Kwo.error(h);
    }
    Kwo.Newsletter.button.up("FORM").select(".base-description")[0].hide();
    Kwo.Newsletter.button.up("FORM").select(".base-confirmation")[0].show();
  }

};