jQuery(function($) {

    var slideShow = {
        slide: function(dir) {

            var pointer = Number($('.slideShow input').val());

            var headlines = $('.slideShow_headlines h2').length;
            var images = $('.slideShow_container img').length;

            var next;

            switch (dir) {

                case 'next':
                    next = (pointer == images) ? 1 : pointer+1;
                break;

                case 'last':
                    next = (pointer == 1) ? images : pointer-1;
                break;

            }

            if (next <= headlines) {

                $('.slideShow_headlines h2').hide();
                $('.slideShow_headlines h2:eq('+(next-1)+')').show();

            }

            $('.slideShow_container img:eq('+(pointer-1)+')').hide();
            $('.slideShow_container img:eq('+(next-1)+')').show();

            $('.slideShow_controller .now').text(next);
            $('.slideShow input').val(next);

        },
        auto: function(time) {

            setTimeout(function() {

                if ($('.slideShow').hasClass('auto')) {

                    var pointer = Number($('.slideShow input').val());

                    var images = $('.slideShow_container img').length

                    var next = (pointer == images) ? 1 : pointer+1;

                    $('.slideShow input').val(next);

                    $('.slideShow_container img:eq('+(pointer-1)+')').fadeOut('slow', function() {
                        $('.slideShow_container img:eq('+(next-1)+')').fadeIn('slow');
                    });

                }

                slideShow.auto(time);

            }, time);

        }
    };

    slideShow.auto(3000);

    $('.slideShow_container.clickable img').live('click', function() {
        slideShow.slide('next');
    });

    $('.slideShow_controller a').live('click', function() {
        if ($(this).hasClass('next')) {
            slideShow.slide('next');
        } else if ($(this).hasClass('last')) {
            slideShow.slide('last');
        }
    });

});
