/**
 * Класс для промо объявлений
 * @namespace DesignCafe
 */

DesignCafe.Promo = function() {

    /** @type {Number} Время показа объявления */
    var DISPLAY_TIMEOUT = 8000;

    /** @type {Number} Время показа/затухания */
    var FADE_DURATION = 500;

    var $wrap = $(), $items = $(), $nums = $();

    /** @type {Number} Текущий индекс объявления */
    var currentIndex = 0;

    /** @type {Boolean} Идет ли слайд-шоу
    var timeout;

    var auto = false;

    /**
     * Начать слайд-шоу
     */
    function start() {
        // Говорим что идет слайд-шоу
        auto = true;
        // Запускаем таймер
        timeout = window.setTimeout(showNext, DISPLAY_TIMEOUT);
    }

    /**
     * Показать следующий слайд
     */
    function showNext() {
        var idx = currentIndex + 1;
        if (idx > $items.length -1)
            idx = 0;
        show(idx);
    }

    /**
     * Показать слайд
     * @param {Number} idx номер слайда
     */
    function show(idx) {
        if (idx == currentIndex)
            return;
        function _h() {
            currentIndex = idx;
            $nums.removeClass('active').eq(idx).addClass('active');
            if (auto)
                timeout = window.setTimeout(showNext, DISPLAY_TIMEOUT);
        }
        $items.eq(currentIndex).fadeOut(FADE_DURATION);
        $items.eq(idx).fadeIn(FADE_DURATION, _h);
    }
    function _$itemReset() {
        $(this).hide().css({ left : (100 * direction) + '%' });
    }

    /**
     * Рисует циферки
     */
    function showNumbers() {
        if ($items.length > 1) {
            var $w = $(document.createElement('div'))
                .addClass('nums')
                .appendTo($wrap);
            for (var i = 0; i < $items.length; i++) {
                var $s = $(document.createElement('span'))
                    .html(i + 1)
                    .appendTo($w);
            }
            $nums = $w.find('span').click(_numClickHandler);
            $nums.eq(0).addClass('active');
        }
    }

    function _numClickHandler() {
        if (timeout)
            window.clearTimeout(timeout);
        auto = false;
        show($nums.index(this));
    }

    return {
        init: function() {
            $wrap = $(document.getElementById('promo-block'));
            if ($wrap.length) {
                $items = $wrap.find('.action');
                $items
                    .hide()
                    .click(function() {
                        var a = this.getElementsByTagName('a')[0];
                        if (a)
                            window.location = a;
                    })
                    .eq(0)
                        .show()
                    .end()
                    .has('a')
                        .css({
                            cursor : 'pointer'
                        });
                showNumbers();
                start();
            }
        }
   };
}();

