$.fn.donutGallery = function() {
    
liczklikniecia = 0;

$(this).click(function(){
    
    option = $(this).attr('title');
    iloscZdjec = $('#' + option + ' img').length; // ilosc zdjec w galerii
    if(iloscZdjec == 1) {
        $('#galeriaPrev').hide();
        $('#galeriaNext').hide();
    }
    $('.curtine').slideDown('slow', function() {
            $('.galeria-main').appendTo('#niewiemco');
            $('#' + option).append('<div id="close">×</div>');
           $('#' + option + ' img').each(function(){
                $(this).removeClass('zoomed').css({'max-width':'600px', 'max-height':'600px'}).hide();
            });
            $('#' + option + ' img:first-child').show();
            obecne = 1;
            $('.galeria-main').show();
            $('#overlay').css({'display':'table-cell'});
            $('#niewiemco').show();
            hoverDonut();
            $('#close').click(function(){

                $('.curtine').slideDown('slow', function() { 
                            $('#niewiemco').hide();
                            $('.galeria-main').hide();
                            $('#overlay').hide();
                            obecne = 1;
                            $('.galeria-main img').hide();
                }).slideUp('slow');
                $('#close').remove();
            });
        }).slideUp('slow');
    
    if(liczklikniecia == 0) {
        keyPressOnOverlay();
        initialize();
        ++liczklikniecia;
    }
    
});


    
function getImgSize(imgSrc){ // pobiera prawdziwy rozmiar zdjecia
    var newImg = new Image();
    newImg.src = imgSrc;
    var height = newImg.height;
    var width = newImg.width;
    p = $(newImg).ready(function(){
        return {width: newImg.width, height: newImg.height};
    });
    return p[0];
}

function randomized() { // wybiera randomowo opcje flip'a
    wybor = new Array(4);  
    wybor[0] = "tb";  
    wybor[1] = "bt";  
    wybor[2] = "lr";  
    wybor[3] = "rl";  
    randno = Math.floor ( Math.random() * wybor.length );

    return wybor[randno];
}

function keyPressOnOverlay() { // obsługa strzałek na klawiaturze oraz esc

        $(document).keydown(function(e){
            if (e.keyCode == 37) { //lewo
                $('#galeriaPrev').trigger('click');
            return false;
            }
            if (e.keyCode == 38) { //góra
                $('#galeriaPrev').trigger('click');
            return false;
            }
            if (e.keyCode == 39) { //prawo
                $('#galeriaNext').trigger('click');
            return false;
            }
            if (e.keyCode == 40) { //dół
                $('#galeriaNext').trigger('click');
            return false;
            }
            if (e.keyCode == 27) { //esc
                $('#close').trigger('click');
            return false;
        }

        });

    
}

function hoverDonut() {
    $('#galeriaNext, #galeriaPrev, #close').hover(function(){
        $(this).stop().animate({opacity:0.5}, 200);
    }, function(){
        $(this).stop().animate({opacity:0.2}, 200);
    });
    $('#zoom').hover(function(){
        $('#zoom').show().stop().animate({opacity:0.5}, 200);
        $('#close').show();
        $('#galeriaPrev').show();
        $('#galeriaNext').show();
    }, function(){
        $('#zoom').stop().animate({opacity:0}, 200).hide();
    });
    $('#' + option + ' img, #galeriaNext, #galeriaPrev, #close').hover(function(){
        if($('#' + option + ' img:nth-child(' + obecne + ')').width() > 599 || $('#' + option + ' img:nth-child(' + obecne + ')').height() > 599) {
            $('#zoom').show().stop().animate({opacity:0.2}, 200);
        }
        
        //offset
            $('#close').css({opacity:0.2,'top':'50%', 'left':'50%','margin-left':($('#' + option + ' img:nth-child(' + obecne + ')').width()/2-40)+'px','margin-top':'-'+($('#' + option + ' img:nth-child(' + obecne + ')').height()/2)+'px'}).show();
            if(iloscZdjec == 1) {
                $('#galeriaPrev').hide();
                $('#galeriaNext').hide();
            }else {
                $('#galeriaPrev').css({opacity:0.2,'top':'50%', 'left':'50%','margin-left':'-'+($('#' + option + ' img:nth-child(' + obecne + ')').width()/2)+'px','margin-top':'-40px'}).show();
                $('#galeriaNext').css({opacity:0.2,'top':'50%', 'right':'50%','margin-right':'-'+($('#' + option + ' img:nth-child(' + obecne + ')').width()/2)+'px','margin-top':'-40px'}).show();
            }
            
    }, function(){
        $('#zoom').stop().animate({opacity:0}, 200).hide();
        //offset
            $('#close').hide();
            $('#galeriaPrev').hide();
            $('#galeriaNext').hide(); 
    });
    
}
 
function initialize() {

    
    fullscreen == 0;
    hoverDonut();
        
    
    obecne = 0; //numer zdjęcia na którym jesteśmy teraz ;p , 0 oznacza start galerii
         
    
    $('#galeriaNext').click(function(){ // kliniecie Prev
        ++obecne;
        if(obecne > iloscZdjec)
            obecne = 1;
        if(fullscreen != 1) {
            $('#' + option + ' img').each(function(){
            $(this).removeClass('zoomed').css({'max-width':'600px', 'max-height':'600px'});
        });
        }
        $('#' + option + ' img, #galeriaNext, #galeriaPrev, #close').unbind('hover').trigger('mouseleave');
        //offset
        $('#zoom').hide();
        $('#close').hide();
        $('#galeriaPrev').hide();
        $('#galeriaNext').hide();
        $('#' + option + ' img').hide();
        
        $('#' + option + ' img:nth-child(' + obecne + ')').show();
        $('#' + option + ' img:nth-child(' + obecne + ')').flip({
                direction:randomized(),
                onBefore: function(){
                    
                },
                onAnimation: function(){
                    
                },
                onEnd: function(){
                    $('#zoom').css({opacity:0});
                    $('#close').css({opacity:0});
                    $('#galeriaPrev').css({opacity:0});
                    $('#galeriaNext').css({opacity:0});
                    hoverDonut();
                }
        });
    });
    $('#galeriaPrev').click(function(){ // klikniecie Next
        --obecne;
        if(obecne < 1)
            obecne = iloscZdjec;
        if(fullscreen != 1) {
            $('#' + option + ' img').each(function(){
            $(this).removeClass('zoomed').css({'max-width':'600px', 'max-height':'600px'});
        });
        }
        $('#' + option + ' img, #galeriaNext, #galeriaPrev, #close').unbind('hover').trigger('mouseleave');
        //offset
        $('#zoom').hide();
        $('#close').hide();
        $('#galeriaPrev').hide();
        $('#galeriaNext').hide();
        $('#' + option + ' img').hide();
        $('#' + option + ' img:nth-child(' + obecne + ')').show();
        $('#' + option + ' img:nth-child(' + obecne + ')').flip({ 
                direction:randomized(),
                onBefore: function(){

                },
                onAnimation: function(){

                },
                onEnd: function(){
                    $('#zoom').css({opacity:0});
                    $('#close').css({opacity:0});
                    $('#galeriaPrev').css({opacity:0});
                    $('#galeriaNext').css({opacity:0});
                    hoverDonut();
                }
        });
    });

    
    
    $('#' + option).stop().css({'max-width':$(document).width(),'max-height':$(document).height()});
    $("#zoom").click(function(){
        if($('#' + option + ' img:nth-child(' + obecne + ')').hasClass('zoomed') ) {
            $('#' + option + ' img:nth-child(' + obecne + ')').removeClass('zoomed').stop().animate({'max-width':'600px', 'max-height':'600px'}, 'fast');
        } else {
            zdjecie = getImgSize($('#' + option + ' img:nth-child(' + obecne + ')').attr('src'));
            if(zdjecie.width > zdjecie.height) {
                $('#' + option + ' img:nth-child(' + obecne + ')').stop().animate({'max-width': $(window).width() - 20,'max-height': $(window).height() - 20}, 'fast').addClass('zoomed');
            } else {
                $('#' + option + ' img:nth-child(' + obecne + ')').stop().animate({'max-height': $(window).height() - 20,'max-width': $(window).width() - 20}, 'fast').addClass('zoomed');
            }
        }
        $('#close').hide();
        $('#galeriaPrev').hide();
        $('#galeriaNext').hide();
        
    });
    $("#fullscreen").click(function(){
        //opcja full screen
        fullscreen = 1;
        $('#' + option + ' img').each(function(){
            zdjecie2 = getImgSize($(this).attr('src'));
            if(zdjecie2.width > zdjecie2.height) {
                $(this).stop().css({'max-width': $(window).width() - 20,'max-height': $(window).height() - 20}).addClass('zoomed');
            } else {
                $(this).stop().css({'max-height': $(window).height() - 20,'max-width': $(window).width() - 20}).addClass('zoomed');
            }
        });
    });
}
};

