var slide;
var timerId;
(function ($, undefined) {
    var current = 1;
    var time = 6000;

    var $root          = $('div.slideshow');
    var $slideParent   = $('div.slideshow ul');
    var $slideChildren = $('div.slideshow li');

    slide = function (next, mode) {
        if ((current === next) || ($slideChildren.filter(':animated').length !== 0)) {
            return;
        }

        if (next > $slideChildren.length ) {
            next = 1;
        }

        clearInterval(timerId);
        $slideChildren.css({'z-index': 100});
        $slideChildren.filter(':nth-child(' + current + ')').css({'z-index': 150});
        $slideChildren.filter(':nth-child(' + next + ')').css({'display': 'none', 'z-index': 200}).fadeIn(1000);

        var $thumbChildren = $('div.slideshow ul.thumbnails li');
        $thumbChildren.removeClass('current');
        $thumbChildren.filter(':nth-child(' + next + ')').addClass('current');

        current = next;
        timerId = setInterval(function () { slide(current + 1) }, time);
    };

    var init = function () {

        $slideParent.width($slideChildren.width());
        $slideParent.height($slideChildren.height());

        //
        var $thumbParent = $('<ul>').addClass('thumbnails');
        $.each($slideChildren, function(i, v) {
            var $this = $(this);
            $thumbParent.append($('<li>').append(
                $('<img>')
                .attr({'src': $this.data('thumb_src'), 'width': 38, 'height': 38})
                .click(function() {
                    slide(i + 1);
                })
                .hover(
                    function () {
                        $(this).parent().addClass('hover');
                    },
                    function () {
                        $(this).parent().removeClass('hover');
                    })
                ));
        });
        $root.append($thumbParent);


        //current = Math.ceil(Math.random() * $slideChildren.length);
        $slideChildren.filter(':nth-child(' + current + ')').css({'z-index': 101});
        $thumbParent.find('li:nth-child(' + current + ')').addClass('current');
    };


    $(function () {
        init();
        timerId = setInterval(function () { slide(current + 1) }, time);
    });
})(jQuery);

