// $Id: lol_message.js 257 2009-12-13 17:24:04Z krkj $

Drupal.lolMessage = {
  lastMessageTimestamp: 0,
  update: function (messages) {
    // Only update messages if there is a new one.
  $('#lol-message-messages-button span.countMessage').text(messages.length);

    if (messages && messages.length > 0 && messages[0].created > Drupal.lolMessage.lastMessageTimestamp) {
      // When updating, store the timestamp of the latest message, so
      // we'll know when to update next time.
      Drupal.lolMessage.lastMessageTimestamp = messages[0].created;

      // Store the jQuery object for the box, so we don't have to
      // continually reselect it.
      var $box = $("#lol-message-box");
      var $lol = $("#lol-message-hide-button");

      $.each(messages.reverse(), function () {
        // If message does not exist in box, create it.
        if (!$box.find('#lol-message-' + this.message_id).length) {
          $box.prepend('<li id="lol-message-' + this.message_id + '" class="message"><h4><span class="time">' + this.created_formatted + '</span> <span class="name">' + this.name + '</span></h4>' + this.message_formatted + '</li>');

          // Whenever we add a new message, unhide the hide button.
          $lol.show();
          $box.parent().show();

        }

        // Store the message data for later use.
        $box.find('#lol-message-' + this.message_id).data('message', this);
      });
      Drupal.lolMessage.expunge();

      if($('#lol-message-messages-button').css('display') == 'block')
        $('#lol-message-messages-button').hide();

    }
  },
  expunge: function () {
    var $box = $("#lol-message-box");

    // Keep only the last 5 messages.
    while ($box.find('li.message').length > 5) {
      $box.find('li.message:last').remove();
    }

    var now = new Date().getTime() / 1000; 

    // Inspect the remaining messages to see if they are expired.
    $box.find('li.message').each(function () {
      var $this = $(this);
      var data = $this.data('message');

      if (!data.hasOwnProperty('expiry') || data.expiry < now) {
        $this.remove();
      }
    });
  }
};

$(function() {
  // Create our container div if it does not exist.
  if (!$("#lol-message-box").length) {
    $('body').append('<div id="np_lol-message" style="display:none;"><span class="boxHeader"><h2>beskeder fra lektier online</h2></span><ul id="lol-message-box"></ul><div id="np_message-bottom-bg"></div></div>');
    $('#footer > div.section').prepend('<div id="lol-message-hide-button" class="hidden"><h2>Skjul beskeder</h2></div>');
    $('#footer > div.section').prepend('<div id="lol-message-messages-button" style="display:none;" class="hidden"><h2>Beskeder fra lektier online</h2></div>');
    $('#lol-message-messages-button').prepend('<span class="countMessage"></span>');
  }

  $('#lol-message-hide-button').click(function () {
    $("#np_lol-message").hide();

    $('#lol-message-messages-button').show();
    $(this).hide();
  }).hide();

  $('#lol-message-messages-button').click(function () {
    $("#np_lol-message").show();
    $('#lol-message-hide-button').show();
    $(this).hide();
  }).hide();

  // Remove expired messages every 10 seconds.
  setInterval(Drupal.lolMessage.expunge, 10000);
});

