﻿$(function () {
    //On Page Load
    homepageBannerManager.load();
});

var homepageBannerManager = function () {
    return {
        currentIndex: 0,
        bannerInterval: null,

        load: function () {
            // data present & correct
            var dataValid = false;
            if (homepageBannerData && homepageBannerData.banners) {
                if (homepageBannerData.banners.length > 0) {
                    dataValid = true;
                }
            }
            // exit now
            if (!dataValid) {
                return;
            }

            this.currentIndex = (loadingOrder == RandomLoadOptions.Default ? 0 : this.randomIndex());

            var bannerMgr = this;
            // loop thru banners and add to page
            $.each(homepageBannerData.banners, function (index, banner) {
                // have to hide every banner after the first or they will appear on top            
                var classes = (index == bannerMgr.currentIndex) ? "banner currentBanner" : "banner hide";
                var bannerHtml = '<li id="banner' + index + '" title="' + banner.title + '" class="' + classes + '">';
                if (banner.uri && banner.uri != "") bannerHtml += '<a href="' + banner.uri + '" title="' + banner.title + '">';
                bannerHtml += '<img class="mainImage" alt="' + banner.title + '" src="/library/images/banners/' + banner.image + '" />';
                if (banner.uri && banner.uri != "") bannerHtml += '</a>';
                bannerHtml += '</li>';

                $("#computerImage").append(bannerHtml);
            });

            if (homepageBannerData.banners.length > 1) {
                this.startAnimation(this.currentIndex);
            }
        },



        startAnimation: function (index) {
            //if defined use custom display time, othewise use banner specific
            var displayFor = (homepageBannerData.banners[this.currentIndex].displayFor) ? homepageBannerData.banners[this.currentIndex].displayFor : homepageBannerData.displayFor;
            setTimeout("homepageBannerManager.animate()", displayFor);
        },

        animate: function () {
            // show next banner, if this is the last, then show the first
            var nextIndex = 0;
            if (loadingOrder == RandomLoadOptions.RandomAll) {
                nextIndex = this.randomIndex();
            }
            else {
                nextIndex = (this.currentIndex != homepageBannerData.banners.length - 1) ? this.currentIndex + 1 : 0;
            }

            var $current = $("#banner" + this.currentIndex);
            var $next = $("#banner" + nextIndex);

            // fade out current banner
            $current.animate({ opacity: 0 }, homepageBannerData.transitionFor, function () {
                $current.addClass('hide');
                $current.removeClass('currentBanner');
            });

            // change the z-index
            $next.css({ opacity: 0.0 })
            .removeClass('hide')
            .addClass('currentBanner')
            .animate({ opacity: 1.0 }, homepageBannerData.transitionFor);

            this.currentIndex = nextIndex;
            this.startAnimation(this.currentIndex);
        },

        randomIndex: function () {
            rand = 0;
            do {
                rand = Math.floor(Math.random() * homepageBannerData.banners.length + 1) - 1;
            }
            while (rand == this.currentIndex)
            return rand;
        }
    }
} ();
