Xmpp.Views.Contacts ||= {}
 
class Xmpp.Views.Contacts.ListView extends Backbone.View
  template: JST["backbone/templates/contacts/contact_list"]
 
  initialize: () ->
    _.bindAll(this)
 
    @el = '#' + @attributes['id']
    @title = I18n.t(@attributes['title'])
 
    @titleClass = @listClass = ''
    @activeGroup = false
    @contactViews = []
 
  createListContainer: ->
    $(@el).html(@template(title: @title, isActiveGroup: @activeGroup))
 
  appendContact: (contact) ->
    if @hasContact(contact)
      return false
 
    if @contactViews.length == 0
      @createListContainer()
 
    view =  new Xmpp.Views.Contacts.ContactView(model: contact, attributes: {listView: this})
    @contactViews.push view
    @render(view.render().el)
 
  detachContact: (contact) ->
    matchingView = @hasContact(contact)
    if matchingView
      @contactViews = _.without(@contactViews, matchingView)
      matchingView.remove()
 
      if @contactViews.length == 0
        $(@el).html('')
 
    return !!matchingView
 
  hasContact: (contact) ->
    _.find(@contactViews, (view) ->
      view.model == contact
    )
 
  setAsActiveChatGroup: ->
    @activeGroup = true
 
  render: (contactHtml) ->
    if (contactHtml?)
      $(@el).find('ul').append(contactHtml)
    else
      _.each(@contactViews, (i, contact) =>
        @render(contact.render().el)
      )
 
    return this