responseKeys = []
responseItems = []
ModelIter = 0
firstRun = true
newestDate = ""
refresh = false
counter = 0
limitHolder = 10

#substantiate response_id
response_id = ""

#substantiate infiniteScroll flag and get loading spinner
infiniteScrollFlag = true
$loading = $('div.loading.container')
$(document).ready ->
  if Django.subscription_type != 'free'
    getResponseItemList(counter,counter+limitHolder)
  else
    $('#upgradeOverlay.feed').addClass('active').click (e) ->
      e.preventDefault()
    $('#upgradePopup').show()
    $('.dropdown.category a').addClass('disabled').prop('disabled', true)

infiniteLoad = ->
  $loading.remove()
  $('#loadingHolder').append($loading)
  getResponseItemList(counter,counter+limitHolder)

infiniteScroll = -> 
  if ($(window).scrollTop() == $(document).height() - $(window).height()) 
    if (infiniteScrollFlag == true) 
      infiniteLoad()

getResponseItemList = (start,limit) ->
  counter += limitHolder
  infiniteScrollFlag = false
  $loading.slideDown(1000).delay(1500)
  updatePos()
  $.get("/engagement/response-list/?start=#{start}&limit=#{limit}")
  .done((data) -> 
    if data.length == 0
      infiniteScrollFlag = false
      $loading.slideUp(1000)
      setTimeout( ( -> $("#allItemsLoaded").addClass("active") ) , 2000)
    else 
      newestDate = moment(data[0].created_at)
      responseItems = responseItems.concat(data)
      infiniteScrollFlag = true
    return data
  )
  .always(->
    createFeed()
    updatePos()
  ) 

options = $(".accountOptions")
nav = $("#accountNav")
mainHeight = $("#rightContent").height()
updatePos = ->
  $("#engagement.feedHolder").height("auto")
  mainHeight = $("#rightContent").height()
  $("#engagement.feedHolder").height(mainHeight)
  nav.height(mainHeight)
  $("#mainContent").height(mainHeight)
  if options.hasClass("fixed")
    if $(window).scrollTop() + $(window).height() > mainHeight + 39
      options.removeClass("fixed").addClass("relative")
      nav.removeClass("fixed").addClass("relative")
  if options.hasClass("relative")
    if $(window).scrollTop() + $(window).height() < mainHeight + 39
      options.removeClass("relative").addClass("fixed")
      nav.removeClass("relative").addClass("fixed") 

createFeed = ->
  for thisItem, index in responseItems
    responseClasses = "response"

    if not thisItem.length
      numFeedbacks = 1

    itemAlphaList = $("<ul>").addClass("recipientList")

    if thisItem.bcc.length == 0
      itemAlphaRecipient = $("<li>").text(thisItem.to)
      itemAlphaList.append(itemAlphaRecipient)
    else 
      $.each(thisItem.bcc, (index, value) ->
        itemAlphaRecipient = $("<li>").text(value)
        itemAlphaList.append(itemAlphaRecipient)
      )

    $('#engagement').append($("<div id='ID#{index}'>").addClass("alpha container recipientAlpha")
      .append($("<a>").addClass("close closeForm")
        .append($("<i>").addClass('fa fa-times')))
      .append($("<div>").addClass("alphaWrapper")
        .append($("<h4>").text("Recipient List"))
        .append(itemAlphaList)))

    if thisItem.bcc.length
      numRecipients = thisItem.bcc.length
    else
      numRecipients = 1

    date = moment(thisItem.created_at)
    
    itemContainer = $("<li id='#{index}'>").addClass('response').addClass(responseClasses)
      .append($("<div>").addClass('info').html("<p class='responseEmail'>#{thisItem.user}</p><span class='recipientCount'>#{thisItem.subject}</span>"))
      .append($("<div>").addClass("responseBody")
      .append($("<ul>").addClass("responseList")
        .append($("<li id='commentsResponse'>").addClass("responseItem comments")
          .append($("<div>").addClass("responseDataWrapper response")
            .append($("<p>").html(thisItem.body)))))
        .append($("<div>").addClass('dateWrapper')
          .append($("<p>").addClass("recipients recipientAlpha").text("Recipients: " + numRecipients))
          .append($("<p id='#{date.format("M-D-YY")}'>").addClass('date').text(date.fromNow()))))

    if refresh == false
      $('#feed-item-feed').append(itemContainer)
    else
      $('#feed-item-feed').insertBefore(itemContainer,$('#feed-item-feed').firstChild)
    $("div.loading").slideUp(1000)
    $("a.selectAll").removeClass("disabled")
    mainHeight = $("#rightContent").height()
    $("#accountNav").height(mainHeight)
    $("#mainContent").height(mainHeight)

    updatePos()

  if firstRun
    $(window).scroll(_.throttle(infiniteScroll, 1000))

  $("p.recipientAlpha").click ->
    pos = $(this).offset()
    thisID = $(this).parents("li.response").attr("id")
    $("#ID#{thisID}").toggleClass("active").css("top", pos.top - 50)
    $("#alphaOverlay").toggleClass("active")

  $("a.closeForm").click ->
    $(".alpha").removeClass("active")
    $("#alphaOverlay").removeClass("active")
  if refresh == true
    counter += responseItems.length
  responseItems = []
  refresh = false
  firstRun = false
