/*
* Simple widget to rotate Atlas promos
*
* @author Randy Knight
*
 */

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

(function() {

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

    var promos = null;
    var currentPromo = null;
    var currentPromoIndex = 0;
    var autoPlayInterval = null;
	var isPaused = false;
    SW.local.PromoArea = {
        init: function() {
            promos = yuiDom.getElementsByClassName("promo", "div", "promoPlacement");
            if (promos.length > 1) {
                document.getElementById("promoNavigation").style.visibility = "visible";
                yuiEvent.addListener(yuiDom.get("back"), "click", SW.local.PromoArea.goToPrevPromo);
                yuiEvent.addListener(yuiDom.get("play"), "click", SW.local.PromoArea.resumeRotation);
                yuiEvent.addListener(yuiDom.get("pause"), "click", SW.local.PromoArea.pauseRotation);
                yuiEvent.addListener(yuiDom.get("next"), "click", SW.local.PromoArea.goToNextPromo);
            }
            
            promos.forEach(function(promo) {
                promo.toggler = SW.widget.displayToggler({
                    element: promo,
                    showOnComplete: function(config) {
                        yuiDom.setStyle(config.element, "zIndex", "2");
						/*yuiDom.setStyle(config.element, "display", "block");*/
                    },
                    hideOnComplete: function(config) {
                        yuiDom.setStyle(config.element, "zIndex", "1");
						/*yuiDom.setStyle(config.element, "display", "none");*/
                    },
                    showDuration:.800,
                    hideDuration:.500
                });
            });
            SW.local.PromoArea.startRotation();
        },
        startRotation: function() {
            SW.local.PromoArea.togglePromo(promos[currentPromoIndex]);
            if (promos.length == 1) autoPlayInterval = null;
            else autoPlayInterval = setInterval(SW.local.PromoArea.autoPlay, 7000);
        },
        resumeRotation: function() {
            yuiDom.get("pause").style.display = "block";
            yuiDom.get("play").style.display = "none";
            autoPlayInterval = setInterval(SW.local.PromoArea.autoPlay, 7000);
        },
        pauseRotation: function() {
            yuiDom.get("pause").style.display = "none";
            yuiDom.get("play").style.display = "block";
            clearInterval(autoPlayInterval);
            autoPlayInterval = null;
			isPaused = true;
        },
        autoPlay: function() {
            currentPromoIndex = (currentPromoIndex+1)%promos.length;
            SW.local.PromoArea.togglePromo(promos[currentPromoIndex]);
			isPaused = false;
        },
        togglePromo: function(promo) {
            if(currentPromo !== null) {
                currentPromo.toggler.hide();
            }
            currentPromo = promo;
            currentPromo.toggler.show();
        },
        goToPrevPromo: function(e) {
            clearInterval(autoPlayInterval);
            autoPlayInterval = null;
            if (currentPromoIndex == 0) currentPromoIndex = promos.length - 1;
            else currentPromoIndex = (currentPromoIndex-1)%promos.length;
            SW.local.PromoArea.togglePromo(promos[currentPromoIndex]);
            if(!isPaused)
				autoPlayInterval = setInterval(SW.local.PromoArea.autoPlay, 7000);
        },
        goToNextPromo: function(e) {
            clearInterval(autoPlayInterval);
            autoPlayInterval = null;
            currentPromoIndex = (currentPromoIndex+1)%promos.length;
            SW.local.PromoArea.togglePromo(promos[currentPromoIndex]);
			if(!isPaused)
				autoPlayInterval = setInterval(SW.local.PromoArea.autoPlay, 7000);
        }
    };

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

})();
