﻿var faderCount = 1;
var timeFunction = new Array();


function RunBannerFader() {
    $(".bannerHolder .banner").each(function () {
        $(this).removeClass("hidden");
    });
    
    $("#HomePage .bannerHolder").divFader({
        autoFade: true,
        dynamicArrows: false,
        dynamicTabs: true,
    });
}

$.fn.divFader = function (settings) {

    settings = $.extend({
        autoFade: true,
        dynamicArrows: true,
        dynamicTabs: true,
        dynamicTabsPosition: "top",
        fadeInterval: 5000,
        fadeSpeed: 2500,
        firstPanelToLoad: 1,
        hideDynamicTabText: true,
        panelTitleSelector: "h1.title",
        stopFadeOnClick: false
    }, settings);

    return this.each(function () {

        var fader = $(this);

        var currentPanel = settings.firstPanelToLoad;
        if (location.hash) {
            currentPanel = parseInt(location.hash.slice(1));
        }

        var n = 1;
        var navigation = '';
        var height = 0;

        $('.banner', fader).each(function () {
            if ((($(this).attr("id")).split('-'))[1] != currentPanel) {
                $(this).hide();
            }

            if (height < $(this).height()) {
                height = $(this).height();
            }

            navigation += '<li class="tab' + n + (n == currentPanel ? ' current' : '') + '"><a href="#' + n + '"><span class="' + (settings.hideDynamicTabText ? 'noShow' : 'text') + '" >' + $(this).find(settings.panelTitleSelector).text() + '</span></a></li>';
            n++;
        });

        fader.height(height);
        var panelCount = n - 1;
        
        if (settings.dynamicTabs == true) {
            if (panelCount > 1) {
                var dynamicTabsDiv = '<div class="navigation" id="FaderNav' + faderCount + '"><ul class="noListStyle"></ul><div class="clearSpacer">&nbsp;</div></div>';
                switch (settings.dynamicTabsPosition) {
                    case "bottom":
                        fader.append(dynamicTabsDiv);
                        break;
                    case "parent":
                        fader.parent().prepend(dynamicTabsDiv);
                        break;
                    default:
                        fader.prepend(dynamicTabsDiv);
                        break;
                }

                var ul = $('#FaderNav' + faderCount + ' ul');
                var tfIndex = faderCount;

                ul.append(navigation);
            }

            if (settings.autoFade) {
                fader.ready(function () {
                    timeFunction[tfIndex] = setTimeout(autoFade, settings.fadeInterval);
                });
            }
        }

        $('#FaderNav' + faderCount + ' a').each(function (z) {
            // What happens when a nav link is clicked
            $(this).bind("click", function () {
                $(this).parents('ul').find('li').removeClass('current');
                $(this).parent().addClass('current')
                fadeOut(currentPanel);
                currentPanel = z + 1;
                fadeIn(currentPanel);

                if (settings.autoFade) {
                    clearTimeout(timeFunction[tfIndex]);
                    if (!settings.stopFadeOnClick) {
                        timeFunction[tfIndex] = setTimeout(autoFade, (settings.fadeInterval * 1.5));
                    }
                }
            });
        });

        function autoFade() {
            fadeOut(currentPanel);
            currentPanel++;
            if (currentPanel > panelCount) {
                currentPanel = 1;
            }
            fadeIn(currentPanel);


            // Switch the current tab:
            if (settings.dynamicTabsPosition == "parent") {
                fader.parent().children('.navigation').find('li').removeClass('current').parents('ul').find('li:eq(' + (currentPanel - 1) + ')').addClass('current');
            }
            else {
                fader.children('.navigation').find('li').removeClass('current').parents('ul').find('li:eq(' + (currentPanel - 1) + ')').addClass('current');
            }

            // auto fade:
            if (settings.autoFade) {
                timeFunction[tfIndex] = setTimeout(autoFade, settings.fadeInterval);
            }
        };

        function fadeOut(panelId) {
            $("#Banner-" + panelId).css("z-index:2;");
            $("#Banner-" + panelId).fadeOut(settings.fadeSpeed);
            if (navigator.appVersion.indexOf("MSIE 8.") != -1) {
                $("#Banner-" + panelId).children(".textHolder").hide();
            }
        };

        function fadeIn(panelId) {
            $("#Banner-" + panelId).css("z-index:3;");
            $("#Banner-" + panelId).fadeIn(settings.fadeSpeed);
            if (navigator.appVersion.indexOf("MSIE 8.") != -1) {
                $("#Banner-" + panelId).children(".textHolder").show();
            }
        };


        // If we need arrows
        if (settings.dynamicArrows && panelCount > 1) {
            fader.parent().addClass("arrows");
            fader.before('<div id="BannerPrev-' + faderCount + '" class="previous"><a href="#"><img src="/SiteFiles/Images/Banner_Prev.png" alt="Previous" /></a></div>');
            fader.after('<div id="BannerNext-' + faderCount + '" class="next"><a href="#"><img src="/SiteFiles/Images/Banner_Next.png" alt="Next" /></a></div>');

            // Left arrow click
            $("#BannerPrev-" + faderCount + " a").click(function () {
                fadeOut(currentPanel);
                if (currentPanel == 1) {
                    currentPanel = panelCount;
                    fader.siblings('.coda-nav').find('a.current').removeClass('current').parents('ul').find('li:last a').addClass('current');
                } else {
                    currentPanel -= 1;
                    fader.siblings('.coda-nav').find('a.current').removeClass('current').parent().prev().find('a').addClass('current');
                };
                fadeIn(currentPanel);
                if (settings.crossLinking) { location.hash = currentPanel }; // Change the URL hash (cross-linking)
                return false;
            });

            // Right arrow click
            $('#BannerNext-' + faderCount + ' a').click(function () {
                fadeOut(currentPanel);
                if (currentPanel == panelCount) {
                    currentPanel = 1;
                    fader.siblings('.navigation').find('a.current').removeClass('current').parents('ul').find('a:eq(0)').addClass('current');
                } else {
                    currentPanel += 1;
                    fader.siblings('.navigation').find('a.current').removeClass('current').parent().next().find('a').addClass('current');
                };
                fadeIn(currentPanel);
                if (settings.crossLinking) { location.hash = currentPanel }; // Change the URL hash (cross-linking)
                return false;
            });
        };

        faderCount++;
    });
};
