﻿var faderCount = 1;
var timeFunction = new Array();

function RunBannerFader() {
    $("#BannersHolder").divFader();
}

$.fn.divFader = function (settings) {

    settings = $.extend({
        autoFade: true,
        dynamicTabs: true,
        dynamicTabsPosition: "top",
        fadeInterval: 5000,
        fadeSpeed: 2500,
        firstPanelToLoad: 1,
        hideDynamicTabText: true,
        panelTitleSelector: "h2.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;

        $('.panel', 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 (panelCount > 1) {
            var dynamicTabs = '<div class="navigation" id="FaderNav' + faderCount + '"><ul class="noListStyle"></ul><div class="clearSpacer">&nbsp;</div></div>';

            switch (settings.dynamicTabsPosition) {
                case "bottom":
                    fader.append(dynamicTabs);
                    break;
                case "parent":
                    fader.parent().prepend(dynamicTabs);
                    break;
                default:
                    fader.prepend(dynamicTabs);
                    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) {
            $("#FaderPanel-" + panelId).css("z-index:2;");
            $("#FaderPanel-" + panelId).fadeOut(settings.fadeSpeed);
            if (navigator.appVersion.indexOf("MSIE 8.") != -1) {
                $("#FaderPanel-" + panelId).children(".textHolder").hide();
            }
        };

        function fadeIn(panelId) {
            $("#FaderPanel-" + panelId).css("z-index:3;");
            $("#FaderPanel-" + panelId).fadeIn(settings.fadeSpeed);
            if (navigator.appVersion.indexOf("MSIE 8.") != -1) {
                $("#FaderPanel-" + panelId).children(".textHolder").show();
            }
        };

        faderCount++;
    });
};
