/*global VuFind */

function checkSaveStatuses(container) {
  if (typeof(container) == 'undefined') {
    container = $('body');
  }

  var elements = {};
  var data = $.map(container.find('.result,.record'), function(record) {
    if ($(record).find('.hiddenId').length == 0 || $(record).find('.hiddenSource').length == 0) {
      return null;
    }
    var datum = {'id':$(record).find('.hiddenId').val(), 'source':$(record).find('.hiddenSource')[0].value};
    var key = datum.source+'|'+datum.id;
    if (typeof elements[key] === 'undefined') {
      elements[key] = $();
    }
    elements[key] = elements[key].add($(record).find('.savedLists'));
    return datum;
  });
  if (data.length) {
    var ids = [];
    var srcs = [];
    for (var i = 0; i < data.length; i++) {
      ids[i] = data[i].id;
      srcs[i] = data[i].source;
    }
    $.ajax({
      dataType: 'json',
      method: 'POST',
      url: VuFind.path + '/AJAX/JSON?method=getSaveStatuses',
      data: {'id':ids, 'source':srcs}
    })
    .done(function(response) {
      for (var sel in response.data) {
        var list = elements[sel];
        if (!list) {
          list = $('.savedLists');
        }
        var html = list.find('strong')[0].outerHTML+'<ul>';
        for (var i=0; i<response.data[sel].length; i++) {
          html += '<li><a href="' + response.data[sel][i].list_url + '">'
            + htmlEncode(response.data[sel][i].list_title) + '</a></li>';
        }
        html += '</ul>';
        list.html(html).removeClass('hidden');
      }
    });
  }
}

$(document).ready(function() {
  checkSaveStatuses();
});