($ document).on "click", "input[type=checkbox][name=gm-list-check]", ->
  box = $(this)
  box.attr 'disabled', 'disabled'

  listName = box[0].dataset.list

  count = Number ($ "span##{listName}-members").html()
  boxChecked = box[0].checked

  count += if boxChecked then 1 else -1

  $.ajax
    url: '/ajax/list_membership'
    type: 'POST'
    data:
      user: box[0].dataset.user
      list: listName
      add: boxChecked
    success: (data, status, jqxhr) ->
      if data.success
        box[0].checked = if data.checked? then data.checked else !boxChecked
        ($ "span##{listName}-members").html(count)
      showNotification data.message, data.success
    error: (jqxhr, status, error) ->
      box[0].checked = false
      console.log jqxhr, status, error
      showNotification translate('frontend.error.message'), false
    complete: (jqxhr, status) ->
      box.removeAttr "disabled"


$(document).on "keyup", "input#new-list-name", (evt) ->
  if evt.which == 13  # return key
    evt.preventDefault()
    $("button#create-list").trigger 'click'


($ document).on "click", "button#create-list", ->
  btn = $(this)
  btn.button "loading"
  input = ($ "input#new-list-name")

  $.ajax
    url: '/ajax/create_list'
    type: 'POST'
    data:
      name: input.val()
      user: btn[0].dataset.user
    dataType: 'json'
    success: (data, status, jqxhr) ->
      if data.success
        ($ "#lists-list ul.list-group").append(data.render)
        input.val ''
      showNotification data.message, data.success
    error: (jqxhr, status, error) ->
      console.log jqxhr, status, error
      showNotification translate('frontend.error.message'), false
    complete: (jqxhr, status) ->
      btn.button "reset"


($ document).on "click", "a#delete-list", (ev) ->
  ev.preventDefault()
  btn = $(this)
  list = btn[0].dataset.list

  swal
    title: translate('frontend.list.title')
    text: translate('frontend.list.text')
    type: "warning"
    showCancelButton: true
    confirmButtonColor: "#DD6B55"
    confirmButtonText: translate('views.actions.delete')
    cancelButtonText: translate('views.actions.cancel')
    closeOnConfirm: true
  , ->
    $.ajax
      url: '/ajax/destroy_list'
      type: 'POST'
      data:
        list: list
      dataType: 'json'
      success: (data, status, jqxhr) ->
        if data.success
          ($ "li.list-group-item#list-#{list}").slideUp()
        showNotification data.message, data.success
      error: (jqxhr, status, error) ->
        console.log jqxhr, status, error
        showNotification translate('frontend.error.message'), false
      complete: (jqxhr, status) ->