     BeatmapsetPageHash.generate mode: mode
 
 
+  toggleFavourite: (e) ->
+    e.preventDefault()
+
+    if !currentUser.id?
+      userLogin.show e.target
+    else
+      $.publish 'beatmapset:favourite:toggle'
+
   togglePreview: (e) =>
     $.publish 'beatmapset:preview:toggle', !@props.isPreviewPlaying

          el BeatmapsetMapping, beatmapset: @props.beatmapset

          if currentUser.id?
            div {},
              if @props.beatmapset.availability
                div className: 'beatmapset-header__availability-info',
                  if @props.beatmapset.availability.download_disabled
                    osu.trans 'beatmaps.beatmapset.availability.disabled'
                  else

                    div className: 'beatmapset-header__availability-link',
                      a href: @props.beatmapset.availability.more_information, target: '_blank', osu.trans 'beatmaps.beatmapset.availability.more-info'

              div
                key: 'buttons'
                className: 'beatmapset-header__buttons'
                unless @props.beatmapset.availability?.download_disabled
                  [
                    if @props.beatmapset.video
                      [
                        @downloadButton
                          key: 'video'
                          href: Url.beatmapDownload @props.beatmapset.id, true
                          bottomTextKey: 'video'

                        @downloadButton
                          key: 'no-video'
                          href: Url.beatmapDownload @props.beatmapset.id, false
                          bottomTextKey: 'no-video'
                      ]
                    else
                      @downloadButton
                        key: 'default'
                        href: Url.beatmapDownload @props.beatmapset.id, false

                    @downloadButton
                      key: 'direct'
                      topTextKey: 'direct'
                      href:
                        if currentUser.isSupporter
                          Url.beatmapDownloadDirect @props.beatmapset.id
                        else
                          laroute.route 'support-the-game'
                  ]

                if @props.beatmapset.discussion_status.enabled
                  el BigButton,
                    key: 'discussion'
                    modifiers: ['beatmapset-header']
                    text:
                      top: osu.trans 'beatmaps.beatmapset.show.discussion'
                    icon: 'comments-o'
                    props:
                      href: laroute.route 'beatmaps.beatmapsets.show.discussion', beatmapset: @props.beatmapset.id
            ]

        div className: 'beatmapset-header__box beatmapset-header__box--stats',
          el BeatmapsetPage.Stats,
