/*
* Simple widget to rotate Atlas promos
*
* @author Hao Tan
*
 */

YAHOO.namespace("SW.local.PromoArea");

(function() {

    var yuiDom = YAHOO.util.Dom;
    var yuiEvent = YAHOO.util.Event;

    var steps = null;
    var currentStep = null;
    var currentStepIndex = 0;
    var autoPlayInterval = null;
    var loaderToggler = null;
    SW.local.PromoArea = {
        init: function() {
            loaderToggler = SW.widget.displayToggler({
                element: yuiDom.get("promo_loader"),
                showOnComplete: function(config) {
                    yuiDom.setStyle(config.element, "zIndex", "2");
                },
                hideOnComplete: function(config) {
                    yuiDom.setStyle(config.element, "zIndex", "1");
                },
                showDuration:.800,
                hideDuration:.500
            });
            loaderToggler.show();
            steps = yuiDom.getElementsByClassName("promoStep", "li", "promoSteps");

            steps.forEach(function(step, index) {
                yuiEvent.addListener(step, "click", SW.local.PromoArea.goToPromo, {step: step, index: index});

                var toggler = SW.widget.displayToggler({
                    element: yuiDom.get("promo_"+index),
                    showOnComplete: function(config) {
                        yuiDom.setStyle(config.element, "zIndex", "2");
                    },
                    hideOnComplete: function(config) {
                        yuiDom.setStyle(config.element, "zIndex", "1");
                    },
                    showDuration:.800,
                    hideDuration:.500
                });

                step.toggler = toggler;
            });
            setTimeout(SW.local.PromoArea.startRotation, 5000)
        },
        startRotation: function() {
            loaderToggler.hide();
            SW.local.PromoArea.togglePromo(steps[currentStepIndex]);
            autoPlayInterval = setInterval(SW.local.PromoArea.autoPlay, 7000);
        },
        autoPlay: function() {
            currentStepIndex = (currentStepIndex+1)%5;
            SW.local.PromoArea.togglePromo(steps[currentStepIndex]);
        },
        togglePromo: function(step) {
            if(currentStep !== null) {
                yuiDom.removeClass(currentStep, "locked");
                currentStep.toggler.hide();
            }
            currentStep = step;
            yuiDom.addClass(currentStep, "locked");
            currentStep.toggler.show();
        },
        goToPromo: function(e, params) {
            clearInterval(autoPlayInterval);
            autoPlayInterval = null;
            if(currentStepIndex != params.index) {
                currentStepIndex = params.index;
                SW.local.PromoArea.togglePromo(params.step);
            }
            autoPlayInterval = setInterval(SW.local.PromoArea.autoPlay, 7000);
            
        }
    };

    yuiEvent.onDOMReady(function() {
        SW.local.PromoArea.init();
    });

})();