class window.BoardBaseCtrl extends BaseCtrl
    constructor: (@$scope, @$rootScope, @$state, @$injector, @Dock, @Analytics, @Constants, @MixPanel) ->
      delete @Dock.data.board
      super()
      @nudgePreloader()
      @getSite()
      @page = 1

    canSubmit: (type) ->
      @Dock.data.board? && @Dock.data.board.submissions.allowed && (@Dock.data.board.item_type == type)

    goToUpload: =>
      @$state.go(@Constants.routes.user, {boardId: @boardId})

    gotoInfo: () =>
      @$state.go(@Constants.routes.boardinfo, {boardId: @boardId})

    nextPage: =>
      unless @pageRequestProcessing
        @pageRequestProcessing = true
        @page = 1 if @Dock? && @Dock.data? && @Dock.data.board? && @Dock.data.board.entries? && @Dock.data.board.entries.length == 0
        if @Dock.data.board?
          console.log 'performing request page'
          @requestPage()

    requestPage: =>
      @Entries = @$injector.get("Entries")
      @Entries.query
        boardId: @Dock.data.board.id,
        page: @page
      , (data) =>
        @page = @page + 1
        @pageRequestProcessing = false if data.length
        @Dock.setEntries(data)

    firstEntry: =>
      @Dock.getEntries()[0]

    gotoPhoto: (photo) =>
      delete @Dock.data.entry
      if photo.details.type == 'board'
        @$state.go(@Constants.routes.boardbase, {boardId: photo.id})
      else
        @$state.go(@Constants.routes.viewPhoto, {boardId: @Dock.data.board.id, entryId: photo.id})

    getBoard: =>
      @Board = @$injector.get("Board")
      @Board.get({id: @boardId}, @onGetBoard, @onSiteError)

    onGetBoard: (data) =>
      @Dock.setBoard(data)
      @$rootScope.description = @Dock.data.board.description
      @pageRequestProcessing = false
      @nextPage()

    progress: =>
      if @Dock.data.userInfo
        @$state.go(@Constants.routes.boardbase, {boardId: @boardId})

    imgWithFallback: (photo) =>
      if photo.images.list
        photo.images.list
      else
        photo.images.small_square

    imgText: (photo) =>
      if photo? && photo.images? && !photo.images.list?
        photo.details.description

BoardBaseCtrl.$inject = ["$scope", "$rootScope", "$state", "$injector", "Dock", "Analytics", "Constants", "MixPanel"]

angular.module("shuttlerockApp").controller("BoardBaseCtrl", BoardBaseCtrl)