
//--Set custom object properties to carousel--
var __carouselProperties = {
    linkSpot: null,
    isLinkSpotExanded: false,
    iterationComplete: false
};

$(document).ready(function () {
    // !get number of slides in deck
    var numSlides = $('#carousel>div').length;

    // !gracefully add previous and next buttons, if more than one slide			
    if (numSlides > 1) {
        $('<a id="prev" href="#">Previous</a><a id="next" href="#">Next</a>').appendTo('#carousel_container');
    }
    $('#prev,#next').fadeIn('slow');

    $('#prev').mouseover(function () {
        $('#carousel').cycle('pause');
    });

    $('#prev').mouseout(function () {
        if (__carouselProperties.isLinkSpotExanded == false) $('#carousel').cycle('resume');
    });

    $('#next').mouseover(function () {
        $('#carousel').cycle('pause');
    });

    $('#next').mouseout(function () {
        if (__carouselProperties.isLinkSpotExanded == false) $('#carousel').cycle('resume');
    });

    function startCarousel() {
        // !parameters for slideshow
        $('#carousel').cycle({
            fx: 'scrollHorz',
            CleartypeNoBg: 1,
            speed: 1250,
            timeout: 6000,
            prev: '#prev',
            next: '#next',
            pause: 0,
            autostop: 1,
            autostopCount: numSlides + 1,
            before: onTransition
        });
    }

    startCarousel();

    function onTransition() {
        var prevTitle;
        if ($(this).prev().find('h1').length == 0) {
            prevTitle = $(this).siblings().filter(":last").find('h1').text();
        }
        else {
            prevTitle = $(this).prev().find('h1').text();
        }

        var nextTitle;
        if ($(this).next().find('h1').length == 0) {
            nextTitle = $(this).siblings().filter(":first").find('h1').text();
        }
        else {
            nextTitle = $(this).next().find('h1').text();
        }
        // !display tooltip over "next" and "previous" buttons
        $('#prev').attr('title', prevTitle);
        $('#next').attr('title', nextTitle);

        if (__carouselProperties.linkSpot && __carouselProperties.linkSpot.hasClass("carousel-icon-open")) {
            __carouselProperties.linkSpot.toggleClass("carousel-icon-closed carousel-icon-open");
            __carouselProperties.linkSpot.next().animate({ opacity: 'hide' }, 'normal');
        }
    }

    //--Begin Click Handler--
    $(".carousel-icon-closed,.carousel-icon-open").click(function () {
        var iconPosition = $(this).position();
        var divText = $(this).next();
        var carousel = $('#carousel');

        divText.css('left', iconPosition.left + 19);
        divText.css('top', iconPosition.top + 19);
        divText.corner();

        if ($(this).hasClass("carousel-icon-closed")) {
            if (__carouselProperties.linkSpot && __carouselProperties.linkSpot != $(this)) {
                if (__carouselProperties.linkSpot.hasClass("carousel-icon-open")) {
                    __carouselProperties.linkSpot.toggleClass("carousel-icon-closed carousel-icon-open");
                    __carouselProperties.linkSpot.next().animate({ opacity: 'hide' }, 'normal');
                }
            }

            __carouselProperties.isLinkSpotExanded = true;
            divText.animate({ opacity: 'show' }, 'normal');
        }
        else {
            __carouselProperties.isLinkSpotExanded = false;
            divText.animate({ opacity: 'hide' }, 'normal');
        }

        __carouselProperties.linkSpot = $(this);

        $(this).toggleClass("carousel-icon-closed carousel-icon-open");

        if (__carouselProperties.isLinkSpotExanded) {
            carousel.cycle('pause');
        }
        else {
            carousel.cycle('resume');
        }
    });
    //--End Click Handler--

});

//--Opens the correct tab and scrolls to the specified id--
function jumpToHotspot(id) {
    var jumpPoint = $('#' + id);
    var tab = jumpPoint.parents(".tab-content");

    $("ul.tab-list").children().each(function (index, element) {
        if (index == tab.index() - 1) {
            $(this).children().click();
        }
    });

    var accordionTab = jumpPoint.parent(".accordion-content");
    if (accordionTab.is(":hidden")) accordionTab.prev().click();

    var position = jumpPoint.position();
    if (position) window.scrollTo(position.left, position.top + (window.screen.height / 2));
}

