$(function () {
    $("body").removeClass("coda-slider-no-js");
    $(".coda-slider").children('.panel').hide().end().prepend('<p class="loading">Loading...<br /><img src="/images/home/banners/ajax-loader.gif" alt="loading..." /></p>');
});
var sliderCount = 1;
$.fn.codaSlider = function (settings) {
    settings = $.extend({
        autoSlide: true,
        autoSlideInterval: 8500,
        autoSlideStopWhenClicked: true,
        crossLinking: true,
        externalTriggerSelector: "a.xtrig",
        firstPanelToLoad: 1,
        panelTitleSelector: "h2.title",
		fadeDuration: 700,
    }, settings);
    return this.each(function () {
        var slider = $(this);
        var panelWidth = slider.find(".panel").width();
        var panelCount = slider.find(".panel").size();
        var panelContainerWidth = panelWidth * panelCount;
        var navClicks = 0;
        $('.panel', slider).wrapAll('<div class="panel-container"></div>');
        $(".panel-container", slider).css({
            width: panelContainerWidth
        });
        if (settings.crossLinking && location.hash && parseInt(location.hash.slice(1)) <= panelCount) {
            var currentPanel = parseInt(location.hash.slice(1));
            var offset = -(panelWidth * (currentPanel - 1));
            $('.panel-container', slider).css({
                marginLeft: offset
            });
        } else if (settings.firstPanelToLoad != 1 && settings.firstPanelToLoad <= panelCount) {
            var currentPanel = settings.firstPanelToLoad;
            var offset = -(panelWidth * (currentPanel - 1));
            $('.panel-container', slider).css({
                marginLeft: offset
            });
        } else {
            var currentPanel = 1;
        };
        $('#coda-nav-' + sliderCount + ' a').each(function (z) {
            $(this).bind("click", function () {
                navClicks++;
                $(this).addClass('current').parents('ul').find('a').not($(this)).removeClass('current');
                offset = -(panelWidth * z);
                alterPanelHeight(z);
                currentPanel = z + 1;
                $('.panel-container', slider).animate({
                    'opacity': 0
                }, settings.fadeDuration).animate({
                    marginLeft: offset
                }, '0').animate({
                    'opacity': 1
                }, settings.fadeDuration);
                if (!settings.crossLinking) {
                    return false
                };
            });
        });
        $(settings.externalTriggerSelector).each(function () {
            if (sliderCount == parseInt($(this).attr("rel").slice(12))) {
                $(this).bind("click", function () {
                    navClicks++;
                    targetPanel = parseInt($(this).attr("href").slice(1));
                    offset = -(panelWidth * (targetPanel - 1));
                    alterPanelHeight(targetPanel - 1);
                    currentPanel = targetPanel;
                    slider.siblings('.coda-nav').find('a').removeClass('current').parents('ul').find('li:eq(' + (targetPanel - 1) + ') a').addClass('current');
                    $('.panel-container', slider).animate({
                        'opacity': 0
                    }, settings.fadeDuration).animate({
                        marginLeft: offset
                    }, '0').animate({
                        'opacity': 1
                    }, settings.fadeDuration);
                    if (!settings.crossLinking) {
                        return false
                    };
                });
            };
        });
        if (settings.crossLinking && location.hash && parseInt(location.hash.slice(1)) <= panelCount) {
            $("#coda-nav-" + sliderCount + " a:eq(" + (location.hash.slice(1) - 1) + ")").addClass("current");
        } else if (settings.firstPanelToLoad != 1 && settings.firstPanelToLoad <= panelCount) {
            $("#coda-nav-" + sliderCount + " a:eq(" + (settings.firstPanelToLoad - 1) + ")").addClass("current");
        } else {
            $("#coda-nav-" + sliderCount + " a:eq(0)").addClass("current");
        };
        if (settings.autoSlide) {
            slider.ready(function () {
                setTimeout(autoSlide, settings.autoSlideInterval);
            });
        };

        function alterPanelHeight(x) {
            if (settings.autoHeight) {
                panelHeight = $('.panel:eq(' + x + ')', slider).height()
                slider.animate({
                    height: panelHeight
                }, settings.autoHeightEaseDuration);
            };
        };

        function autoSlide() {
            if (navClicks == 0 || !settings.autoSlideStopWhenClicked) {
                if (currentPanel == panelCount) {
                    var offset = 0;
                    currentPanel = 1;
                } else {
                    var offset = -(panelWidth * currentPanel);
                    currentPanel += 1;
                };
                alterPanelHeight(currentPanel - 1);
                slider.siblings('.coda-nav').find('a').removeClass('current').parents('ul').find('li:eq(' + (currentPanel - 1) + ') a').addClass('current');
                $('.panel-container', slider).animate({
                    'opacity': 0
                }, settings.fadeDuration).animate({
                    marginLeft: offset
                }, '0').animate({
                    'opacity': 1
                }, settings.fadeDuration);
                setTimeout(autoSlide, settings.autoSlideInterval);
            };
        };
        $('.panel', slider).show().end().find("p.loading").remove();
        slider.removeClass("preload");
        sliderCount++;
    });
};
