           $('.donation-loading-overlay').hide()
           pusher.disconnect()
           if data.status == "success"
+            gaDonations('send', 'event', 'form', 'success')
             $("#donation-script").trigger("donations:success")
             if !!config['redirectto']
               unless /^https?:\/\//.test(config['redirectto'])

          contentType: 'application/json'
          data: JSON.stringify(formPost)
          success: (response, textStatus, jqXHR) ->
            gaDonations('send', 'event', 'advance-button', 'click#success', 'submit', 1)
          error: (response, textStatus, errorThrown) ->
            gaDonations('send', 'event', 'advance-button', 'click#with-errors', 'submit', 1)
            $form.find(".donation-payment-errors").text(response.responseText or "Something went wrong.").show()
            $('.donation-loading-overlay').hide()
            $form.find("button").prop "disabled", false

    self.visibleInputSet = ko.observable(0)

    self.incrementInputSet = ->
      gaDonations('send', 'event', 'next', 'click', "from-#{self.visibleInputSet()}-to-#{self.visibleInputSet()+1}")
      self.visibleInputSet(self.visibleInputSet() + 1)

    self.setInputSet = (index) ->
      gaDonations('send', 'event', 'navigation', 'click', "from-#{self.visibleInputSet()}-to-#{index}")
      self.visibleInputSet(index)

    self.firstName = ko.observable().extend({ required: { message: "Can't be blank" } })
