/**
 * This needs to be build as a class.  This isn't going to work if they put multiple carousels on the same page.
 *
 * @param imageUrl
 * @param link
 * @param title
 * @param body
 */

function slide(imageUrl, link, title, body) {
    this.imageUrl = imageUrl;
    this.link = link;
    this.title = title;
    this.body = body;
}
var index = 0;
var slides = new Array();
var stopScroll = false;

function buildCarousel() {
    $('#carousel-right-button').click(function() {
        next();
    });

    $('#carousel-left-button').click(function() {
        previous();
    });

    setSlide(index);

    $('#carousel-pager div').each(
            function(idx) {
                if( idx + 1 > slides.length ) {
                    return;
                }
                if (idx == 0) {
                    $(this).addClass('carousel-pager-active');
                } else {
                    $(this).addClass('carousel-pager-inactive');
                }

                $(this).click(function() {
                    stopScroll = true;
                    index = idx;
                    setSlide(idx);
                });

                $(this).html(
                        '<h3>' + slides[idx].title + '</h3><div>'
                                + slides[idx].body + '</div>');
            });
    setTimeout("scrollCarousel()", 5000);
}

function scrollCarousel() {
    if( stopScroll ) {
        return;
    }
    index++;
    if( index >= slides.length) {
        index = 0;
    }

    setSlide(index);
    setTimeout('scrollCarousel()', 5000);
}

function updateNext(index) {
    var nextIdx = ++index;
    if( index >= slides.length) {
        nextIdx = 0;
    }
    $('#carousel-next-image').attr('src', "/carbon-content-1.0-SNAPSHOT/resources/ECMImage?contentName=" + slides[nextIdx].imageUrl);
}

function setSlide(index) {
    if( slides[index].imageUrl === "" ) {
        stopScroll = true;
        return;
    }
    $('#carousel-current-image').attr('src', "/carbon-content-1.0-SNAPSHOT/resources/ECMImage?contentName=" + slides[index].imageUrl);
    updateNext(index);
    $('#carousel-current-image').attr('alt', slides[index].altText);
    $('#more-info-area').attr('href', slides[index].link);
    $('#carousel-pager').children().removeClass('carousel-pager-inactive');
    $('#carousel-pager').children().removeClass('carousel-pager-active');
    $('#carousel-pointer').css('left', ((107) + (235 * index)) + 'px');
    $('#carousel-pager').children().each(function(idx) {
        if (idx == index) {
            $(this).addClass('carousel-pager-active');
        } else {
            $(this).addClass('carousel-pager-inactive');
        }
    });

    switch (index) {
        case 0:
            $('#carousel-indicator').attr("src", themeDisplay.getPathThemeImages() + "/carousel-pager-left.png");
            break;
        case 1:
            $('#carousel-indicator').attr("src", themeDisplay.getPathThemeImages() + "/carousel-pager-middle.png");
            break;
        case 2:
            $('#carousel-indicator').attr("src", themeDisplay.getPathThemeImages() + "/carousel-pager-right.png");
        break;
        }
}

function next() {
    stopScroll = true;
    index++;
    if (index > 3) {
        index = 0;
    }
    setSlide(index);
}

function previous() {
    stopScroll = true;
    index--;
    if (index < 0) {
        index = 3;
    }
    setSlide(index);
}
