function mycarousel_itemLoadCallback(carousel, state)
{
    // Check if the requested items already exist
    if (carousel.has(carousel.first, carousel.last)) {
        return;
    }

    jQuery.get(
        carousel.options.call,
        {
            page: carousel.first,
            user_id: carousel.options.user_id,
            library_type: carousel.options.library_type,
            rand: carousel.options.rand
        },
        function(data) {
            mycarousel_itemAddCallback(carousel, carousel.first, data);
        },
        'json'
    );
};

function mycarousel_itemAddCallback(carousel, first, data)
{
    if (data.Resultset.totalResultsReturned == 0) {
      carousel.size(1);
      carousel.add(1, '<p>No results</p>');
      return;
    }
    else {
      carousel.size(data.Resultset.Books.length);
    }
    var page = data.Resultset.page;
    var offset = carousel.options.offset;
    var last = offset*page;
    var j = last-offset+1;

    for (var i = 0; i < data.Resultset.Books.length; i++) {
      carousel.add(j, mycarousel_getItemHTML(carousel, data.Resultset.Books[i]));
      j++;
    }
};

/**
 * Item html creation helper.
 */
function mycarousel_getItemHTML(carousel, item)
{
    var output = "<a id=\"" + item.stripped_title + "\" href=\""+ carousel.options.itemurl + item.stripped_title + "\" title=\"" + item.title + "\">"
               + "<img class=\"carousel-img\" src=\"" + item.cover + "\" alt=\"" + item.title + "\" />"
               + "</a>"
    return output;
};