function loadItemHandler(carousel, start, last, available)
{
    if (available) {
        // Trigger loaded
        carousel.loaded();
        return;
    }

    var cr = carousel;

    jQuery.get("/files/corporate/000/000/001/43/gateway/js/example_dynamic_ajax.txt", function(data) {
        appendItemCallback(cr, start, last, data);
    });
};

function appendItemCallback(carousel, start, last, data)
{
    var items = data.split("|");

    for (i = start; i <= last; i++) {
        if (items[i-1] == undefined) {
            break;
        }

        var item = carousel.add(i, getItemHTML(items[i-1]));

        item.each(function() {
            // Urgh...ThickBox should provide a function for that
            jQuery("a.thickbox", this).bind("click", function() {
                var t = this.title || this.name || null;
                var g = this.rel || false;
                TB_show(t,this.href,g);
                this.blur();
                return false;
            });
        });
    }

    // Trigger loaded
    carousel.loaded();
};

function getItemHTML(data)
{
    var split = data.split(";");
    var url   = jQuery.trim(split[0]);
    var title = jQuery.trim(split[1]);
    var url_m = url.replace(/_s.jpg/g, '_m.jpg');
    return '<a href="' + url_m + '" title="' + title + '" class="thickbox"><img src="' + url + '" width="' + 75 + '" height="' + 75 + '" alt="' + title + '" /></a>';
};

// "#TB_inline?height=300&width=300&inlineId=myOnPageContent"
// <a href="ajaxOverFlow.htm?keepThis=true&TB_iframe=true&height=300&width=500" title="add a caption to title attribute / or leave blank" class="thickbox">Example 2</a>

// Next-Button handling...
var nextOver = function() {
    jQuery(this).attr("src", "/files/corporate/000/000/002/65/gateway/images/next-over.gif");
};

var nextOut = function() {
    jQuery(this).attr("src", "/files/corporate/000/000/002/65/gateway/images/next.gif");
};

var nextDown = function() {
    jQuery(this).attr("src", "/files/corporate/000/000/002/65/gateway/images/next-down.gif");
};

function nextButtonStateHandler(carousel, button, enabling)
{
    if (enabling) {
        jQuery(button).attr("src", "/files/corporate/000/000/002/65/gateway/images/next.gif")
                      .bind("mouseover", nextOver)
                      .bind("mouseout", nextOut)
                      .bind("mousedown", nextDown);
    } else {
        jQuery(button).attr("src", "/files/corporate/000/000/002/65/gateway/images/next-disabled.gif")
                      .unbind("unmouseover", nextOver)
                      .unbind("unmouseout", nextOut)
                      .unbind("unmousedown", nextDown);
    }
}

// Prev-Button handling
var prevOver = function() {
    jQuery(this).attr("src", "/files/corporate/000/000/002/65/gateway/images/prev-over.gif");
};

var prevOut = function() {
    jQuery(this).attr("src", "/files/corporate/000/000/002/65/gateway/images/prev.gif");
};

var prevDown = function() {
    jQuery(this).attr("src", "/files/corporate/000/000/002/65/gateway/images/prev-down.gif");
};

function prevButtonStateHandler(carousel, button, enabling)
{
    if (enabling) {
        jQuery(button).attr("src", "/files/corporate/000/000/002/65/gateway/images/prev.gif")
                      .bind("mouseover", prevOver)
                      .bind("mouseout", prevOut)
                      .bind("mousedown", prevDown);
    } else {
        jQuery(button).attr("src", "/files/corporate/000/000/002/65/gateway/images/prev-disabled.gif")
                      .unbind("unmouseover", prevOver)
                      .unbind("unmouseout", prevOut)
                      .unbind("unmousedown", prevDown);
    }
}

// Ride the carousel...
jQuery(document).ready(function() {
		/*jQuery('#mycarousel').jcarousel({*/    
		/**
     * We show a simple loading indicator
     * using the jQuery ajax events
     */
    jQuery().ajaxStart(function() {
        jQuery(".loading").show();
    });

    jQuery().ajaxStop(function() {
        jQuery(".loading").hide();
    });

    jQuery("#mycarousel").jcarousel({
        itemVisible: 5,
        itemScroll: 3,
        wrap: true,
        loadItemHandler: loadItemHandler,
        nextButtonStateHandler: nextButtonStateHandler,
        prevButtonStateHandler: prevButtonStateHandler
    });
});
