$(function() {
    /**
     * Funkcja dokonująca przesunięcia "slajdu" w wybranym kierunku
     * podanym jako parametr 'left' lub 'right'
     * @author Daniel Mendalka <daniel.mendalka@gmail.com>
     */
    $.fn.slide = function(direction) {
        if($(this).find('li:animated').size() == 0) {
            old_slide = $(this).find('li:visible:first').hide().show();

            if(direction == 'left') {
                new_slide = $(old_slide).prev();
                oposite = 'right';
            } else {
                new_slide = $(old_slide).next();
                oposite = 'left';
            }
        
            if($(new_slide).size() == 0 && $(old_slide).hasClass('copied')) {
                $(this).find('li.copied').show();
                $(old_slide).hide();
                return $(this).slide(direction);
            }
        
            $(new_slide).show('slide', {direction: direction}, 1000);
            $(old_slide).hide('slide', {direction: oposite}, 1000);            
        }
        return false;    
    }


    /**
     * Funkcja podpinająca kliknięcie na link z klasą slider-left
     * do funckji slide('left');
     * @author Daniel Mendalka <daniel.mendalka@gmail.com>
     */
    $('.slider .slider-left').click(function(event){
        event.preventDefault();
        $(this).parents('.slider:first').find('ul').addClass('stop').slide('left');
        return false;
    });

    /**
     * Funkcja podpinająca kliknięcie na link z klasą slider-left
     * do funckji slide('left');
     * @author Daniel Mendalka <daniel.mendalka@gmail.com>
     */
    $('.slider .slider-right').click(function(event){
        event.preventDefault();
        $(this).parents('.slider:first').find('ul').addClass('stop').slide('right');
        return false;
    });

    /**
     * Funkcja, która kopiuje pierwszy slajd oznaczony klasą copied i dodaje go na końcu listy ukrywając go.
     * Zabieg niezbędny żeby był możliwy ciągłe wykonywanie slide() w jedną i tą samą stronę.
     * Następnie dostoswuje wielkość bloku ul do największego elementu li w nim zawartego
     * @author Daniel Mendalka <daniel.mendalka@gmail.com>
     */
    $('.slider ul').each(function(){
        $(this).find('li:first').addClass('copied').clone().css('display', 'none').appendTo(this);    

        var tallest = 0;
        $(this).find('li').each(function() {
            if($(this).outerHeight() > tallest) {
                tallest = $(this).outerHeight();
            }
        });
        
        $(this).css('visibility', 'visible');
        $(this).animate({height: tallest + 'px'}, 1000)
    });

    /**
     * Przełączaj na kolejny slajd co 5 sekund
     * @author Daniel Mendalka <daniel.mendalka@gmail.com>
     */
    setInterval("autoSlide('right')", 5000);
});

function autoSlide(direction) {
    $('.slider ul').each(function() {
        if(!$(this).hasClass('stop')) {
            $(this).slide(direction);
        }        
    });
}

