
Drupal.heartbeat = Drupal.heartbeat || {};

Drupal.heartbeat.getOlderMessages = function(element, page) {
  $.post(element.href, {block: page ? 0 : 1, ajax: 1}, Drupal.heartbeat.appendMessages);
}

Drupal.heartbeat.appendMessages = function(data) {

  var result = Drupal.parseJson(data);
  
  $('.heartbeat-older-messages').each(function(d) { $(this).remove(); });
  $('.heartbeat-messages-wrapper').append(result['data']);
    
  // Reattach behaviors for new added html
  Drupal.attachBehaviors($('.heartbeat-messages-wrapper'));
}

Drupal.heartbeat.prependMessages = function(data) {

  var result = Drupal.parseJson(data);
  
  if (result['data'] != '') {
  
    // Append the messages
    $('.heartbeat-messages-wrapper').prepend(result['data']);
  
    // Update the times in the stream
    var time_updates = result['time_updates'];
    for (uaid in time_updates) {
      $('#beat-item-' + uaid).find('.heartbeat_times').text(time_updates[uaid]);
    }
    
    // Reattach behaviors for new added html
    Drupal.attachBehaviors($('.heartbeat-messages-wrapper'));
  }
}

Drupal.heartbeat.pollMessages = function() {

  if ($('.heartbeat-stream').length) {
  
    var href = Drupal.settings.basePath + 'heartbeat/js/poll';
    var stream = $('.heartbeat-stream').attr('id').replace("heartbeat-stream-", "");    
    var uaids = new Array();
    var beats = $('.heartbeat-stream .beat-item');
    var firstUaid = 0;
    
    if (beats.length > 0) {    
      firstUaid = $(beats.get(0)).attr('id').replace("beat-item-", "");
      
      beats.each(function(i) {  
        var uaid = parseInt($(this).attr('id').replace("beat-item-", ""));
        uaids.push(uaid);
      });
    }
    
    if (firstUaid) {
      $.post(href, {latestUaid: firstUaid, language: Drupal.settings.heartbeat_language, stream: stream, uaids: uaids.join(',')}, Drupal.heartbeat.prependMessages);
    }
  }
}

$(document).ready(function() {

  if (Drupal.settings.heartbeatPollNewerMessages > 0) {
    var interval = Drupal.settings.heartbeatPollNewerMessages * 1000;
    var poll = setInterval('Drupal.heartbeat.pollMessages()', interval);
  }
  
});