/* Copyright 2003-2008 Emergent Music LLC  All rights reserved.
$Id$
*/

FLYFI.fmfTrackDicts_carousel_itemLoadCallback = function(carousel, state)
{
    var soundFinishedFunc = function (playerControls) {
        FLYFI.fmfTrackDicts_carousel_soundFinishedCallback(carousel, playerControls);
    };
    
    for (var i = carousel.first; i <= carousel.last; i++) { // >
        if (carousel.has(i)) {
            continue;
        }

        if (i > FLYFI.fmfTrackDicts.length) {
            break;
        }

        var trackCarouselCell = new FLYFI.TrackCarouselCell(FLYFI.fmfTrackDicts[i-1], soundFinishedFunc);
        var widget = trackCarouselCell.html();
        carousel.add(i, widget);
    }
};

FLYFI.fmfTrackDicts_carousel_soundFinishedCallback = function(carousel, playerControls) {
    // determine next item number
    var widget = playerControls.targetTrackWidget();
    var item = widget.parents('.jcarousel-item');
    var pos = item.attr('jcarouselindex');
    var next = parseInt(pos, 10) + 1;
    if (carousel.size() <= next) {
        next = 1;
    }
    
    if (next < carousel.first || carousel.last < next) { // make it visible
        carousel.scroll(next);
    }
    
    // find and click the play button on next
    var playButton = carousel.get(next).find('.play_btn');
    $(playButton).click();
};

FLYFI.didInit_FMFTrackCarousel = false;
FLYFI.init_FMFTrackCarousel = function() { // call this only if the carousel is visible - else screws up
    $('#freemusicmain').show();
    $('#mycontent').show();
    if (!FLYFI.didInit_FMFTrackCarousel) {
        $('#fmf_carousel').jcarousel({
                                size: FLYFI.fmfTrackDicts.length,
                                itemLoadCallback: {onBeforeAnimation: FLYFI.fmfTrackDicts_carousel_itemLoadCallback},
                                itemVisibleInCallback: FLYFI.carousel_itemVisibleInCallback,
                                itemVisibleOutCallback: FLYFI.carousel_itemVisibleOutCallback,
                                wrap: 'last'
                            });
    }
};

FLYFI.start_FMFTrackCarousel = function() {
    if (!FLYFI.isPostStart()) {  // visible if no libraries to show
        FLYFI.init_FMFTrackCarousel();
    }
};

// on calling page when $(document).ready: $(window).bind(FLYFI.MSG_Start, FLYFI.start_FMFTrackCarousel);

