/**
 * This script builds slider animation that the text appears on mouseover
 *
 * @author Evgeniy Abduzhapparov <evg@73r.biz>
 * @last-updated 2009-12-09
 */

(function ($) {
    var defaultIntervalTime = 5000;

    $(document).ready(function () {
        var $container       = $('#slider_container');
        var $sliderItems     = $('div.slider_item');
        var $containers      = $('div.slider_item_container');
        var $sliderContainer = $sliderItems.parent();

        var containerWidth = $sliderContainer.width()
            - parseInt($sliderContainer.css('paddingLeft'))
            - parseInt($sliderContainer.css('paddingLeft'))
            - parseInt($sliderContainer.css('marginLeft'))
            - parseInt($sliderContainer.css('marginRight'));
        var itemCount      = $sliderItems.length;
        var defaultWidth   = $sliderItems.width();
        var defaultMargin  = parseInt($sliderItems.css('marginRight'));
        var newWidth       = $containers.width();
        var newMargin      = Math.min((containerWidth - (itemCount - 2) * defaultWidth - newWidth) / itemCount, defaultMargin);
        
        var activeSliderNumber = 0;
        var interval = null;

        $sliderItems.hover(function (event, data) {
            if (data != 'synthetic') {
                clearInterval(interval);
            }
            var $target = $(event.target);
            if (!$target.hasClass('slider_item')) {
                $target = $target.closest('div.slider_item');
            }
            $target.siblings().stop().animate({
                'width': defaultWidth,
                'marginRight': newMargin
            }, 'normal').end().stop().animate({
                'width': newWidth,
                'marginRight': newMargin
            }, 'slow');
        });
        
        /* Hover out function, is not used now
        function (event) {
            var $target = $(event.target);
            if (!$target.hasClass('slider-item')) {
                $target = $target.closest('div.slider_item');
            }
            $target.siblings().andSelf().stop().animate({
                'width': defaultWidth,
                'marginRight': defaultMargin
            }, 'fast');
        }
        */
        
        function autoLoop() {
            $sliderItems.eq(activeSliderNumber++).children().eq(0).trigger('mouseover', 'synthetic');
            if (activeSliderNumber >= itemCount) {
                activeSliderNumber = 0;
            }
        }
        
        interval = setInterval(autoLoop, defaultIntervalTime);
        autoLoop();
    });
})(jQuery);
