/* image gallery part */
function Gallery() {
    var thisGallery = this;

    this.images = {};
    this.addImage = function(image) {
        this.images[image.uuid] = image;
        image.gallery = thisGallery;
    }
    this.getImageByUuid = function(uuid) {
        return this.images[uuid];
    }
    this.getPrev = function(image) {
        var prev = null;
        for (var v in this.images) {
            var value = this.images[v];
            if(prev != null && value.thumbElement.data('rnd') == image.thumbElement.data('rnd')) {
                return prev;
            }
            prev = value;
        }
        return image;
    }
    this.getNext = function(image) {
        var pickNext = false;
        for (var v in this.images) {
            var value = this.images[v];
            if(pickNext == true) {
                return value;
            }
            if(value.thumbElement.data('rnd') == image.thumbElement.data('rnd')) {
                pickNext = true;
            }
        }
        return image;
    }
}
function Image(thumbElement, bigImageUrl, uuid) {
    var thisImage = this;
    
    this.thumbElement = thumbElement;
    this.bigImageUrl = bigImageUrl;
    this.uuid = uuid;
    this.gallery = null;

    this.rnd = Math.random();
    this.thumbElement.data('rnd', this.rnd);

    this.thumbElement.click(function(){
        thisImage.openImage();
    });



    this.openImage = function(){
        var oldLayer = $("body div.absolute-layer");
        oldLayer.click();

        setTimeout(function(){
            var body = $("body div.body");
            body.append('<div class="absolute-layer" style="display:none;"><div class="image-preview"><img src="' + thisImage.bigImageUrl + '" alt="' + thisImage.thumbElement.attr('alt') + '" title="' + thisImage.thumbElement.attr('alt') + '" class="big-image" /><br /><div class="controls"><img src="/images/pleas.eu/close-ico.gif" alt="close" class="close-ico" /><img src="/images/pleas.eu/left-ico.gif" alt="left" class="left-ico" /><img src="/images/pleas.eu/right-ico.gif" alt="right" class="right-ico" />' + thisImage.thumbElement.attr('alt') + '</div></div></div>');
            var absLayer = body.find("div.absolute-layer:last");
            absLayer.fadeIn(300, function(){

            });


            var preview = absLayer.find("div.image-preview");
            var previewPosition = preview.position();

            if($("img.simple-image-gallery:first").data('rnd') == thisImage.thumbElement.data('rnd')) {
                absLayer.find('.left-ico').css({'visibility' : 'hidden'});
            }
            if($("img.simple-image-gallery:last").data('rnd') == thisImage.thumbElement.data('rnd')) {
                absLayer.find('.right-ico').css({'visibility' : 'hidden'});
            }

            /*
            setTimeout(function(){
                absLayer.find(".close-ico").css({'left' : previewPosition.left + preview.width() + 30, 'top' : previewPosition.top + 10});
            }, 500);
            */

            absLayer.find('div.image-preview .left-ico').click(function(evt) {
                evt.stopPropagation();
                thisImage.gallery.getPrev(thisImage).thumbElement.click();

            });
            absLayer.find('div.image-preview .right-ico').click(function(evt) {
                evt.stopPropagation();
                thisImage.gallery.getNext(thisImage).thumbElement.click();
            });
        }, 20);
    }
}
$(document).ready(function(){
    $('div.absolute-layer').live('click', function(evt) {
        var thisLayer = $(this);
        setTimeout(function(){
            thisLayer.fadeOut(200, function(){
                $(this).remove();
            });
        }, 100)
        
    });

    $('a.target-blank').live('click', function(event){
        event.preventDefault();
        window.open(this.href);
    });
});

var gallery = new Gallery();

/* This is new gallery part. The previous part can be trashed. */
$(document).ready(function(){
    var mainContentBox = $('div.main-content-box');
    var leftBlock = mainContentBox.find('div.left-block');
    var clearBlock = mainContentBox.find('div.clear-block');
    var contentBlock = mainContentBox.find('div.content-block');

    var galleryBlock = mainContentBox.find('div.gallery-block');
    var presentationWindow = galleryBlock.find('div.presentation-window');
    var presentationRow = presentationWindow.find('div.presentation-row');
    var imageWrapper = presentationRow.find('div.image-wrapper');
    var galleryPresentationBlock = mainContentBox.find('div.gallery-presentation-block');

    var intToWord = function(i) {
        var num = 'fourth';
        if(i==1) {
            num = 'first';
        } else if(i==2) {
            num = 'second';
        } else if(i==3) {
            num = 'third';
        }
        return num;
    }

    /* scrolling ability */
    galleryBlock.find('div.right-arrow').click(function(){
        presentationRow.animate({'left' : '-=200'}, 300, function(){
            if(imageWrapper.width() < (presentationWindow.width() - parseInt(presentationRow.css('left')))) {
                presentationRow.animate({'left' : presentationWindow.width() - imageWrapper.width()}, 200);
            }
        });
    });
    galleryBlock.find('div.left-arrow').click(function(){
        presentationRow.animate({'left' : '+=200'}, 300, function(){
            if(parseInt(presentationRow.css('left')) > 0) {
                presentationRow.animate({'left' : 0}, 200);
            }
        });
    });

    /* enter presentation animation */
    galleryPresentationBlock.bind('show-presentation', function(evt, clickedImage){
        galleryPresentationBlock.fadeIn(300);
        leftBlock.fadeOut(300);
        clearBlock.fadeOut(300);
        contentBlock.fadeOut(300);
        galleryBlock.fadeOut(300);

        var allImages = clickedImage.parent().find('img');
        
        cycleImage = clickedImage;
        for(var i=allImages.length;i>0;i--) {
            if(cycleImage.index() != 0) {
                cycleImage = cycleImage.prev();
            } else {
                cycleImage = allImages.last();
            }
            
            /* copy images from image row to presentation */
            var containerOffset = galleryPresentationBlock.offset();
            var clonedImage = $(cycleImage).clone();
            /* preload full images and then go to destination */
            
            if($.browser.msie && parseInt($.browser.version) < 9) {
                /* preload dont works on buggy browsers, UPGRADE IT! */
                clonedImage.attr('src', clonedImage.data('presentation-img-url'));
            } else {
                var preloadImage = $(cycleImage).clone();
                preloadImage.attr('src', preloadImage.data('presentation-img-url'));
                preloadImage.load(function(){
                    var thisImage = $(this);
                    galleryPresentationBlock.find('div.image-container img.gallery-image-id-' + thisImage.data('image-id')).attr('src', thisImage.attr('src'));

                });
                preloadImage.attr('src', preloadImage.data('presentation-img-url'));
                galleryPresentationBlock.find('div.preload').append(preloadImage);
            }
            

            /* move image from source offset to target presentation */
            var sourceOffset = $(cycleImage).offset();
            clonedImage.addClass('presented-image');
            clonedImage.css({'left' : sourceOffset.left - containerOffset.left, 'top' : sourceOffset.top - containerOffset.top});
            galleryPresentationBlock.find('div.image-container')
                .append(clonedImage);
            galleryPresentationBlock.find('div.label').text(clonedImage.data('label'));
            galleryPresentationBlock.find('div.description').html(clonedImage.data('description'));

            clonedImage.bind('rotate', function(evt, speed, clbk){
                evt.stopImmediatePropagation();
                var thisImage = $(this);
                var allImages = thisImage.parent().find('img');
                var index = allImages.length - thisImage.index();

                if(thisImage.data('locked') == true) {
                    return;
                }
                thisImage.data('locked', true);
                
                if(index == 1) {
                    /* just remove and move to the bottom */
                    thisImage.animate({
                        'left' : '+=100',
                        'top' : '-=50',
                        'height' : '+=100',
                        'opacity' : 0},
                    speed*0.8, function(){
                        galleryPresentationBlock.find('div.image-container').prepend(thisImage);
                        var num = intToWord(allImages.length);
                        thisImage.animate({
                                'opacity' : 1,
                                'left' : galleryPresentationBlock.data(num + '-left'),
                                'top' : galleryPresentationBlock.data(num + '-top'),
                                'height' : galleryPresentationBlock.data(num + '-height')},
                            speed, function(){
                                thisImage.data('locked', false);
                                clbk(thisImage);
                            });
                    });
                } else if(index > 1 && index <= 6) {
                    num = intToWord(index - 1);
                    thisImage.animate(
                    {
                        'left' : galleryPresentationBlock.data(num + '-left'),
                        'top' : galleryPresentationBlock.data(num + '-top'),
                        'height' : galleryPresentationBlock.data(num + '-height')
                    },
                    {
                        'duration' : speed,
                        'easing' : 'linear',
                        'complete' : function() {
                            thisImage.data('locked', false);
                            clbk(thisImage);
                        }
                    });

                    if(index == 2) {
                        /* display label and description */
                        galleryPresentationBlock.find('div.label').text(thisImage.data('label'));
                        galleryPresentationBlock.find('div.description').html(thisImage.data('description'));
                    }
                } else {
                    thisImage.data('locked', false);
                    clbk(thisImage);
                }
            });


            var num = intToWord(i);
            clonedImage.delay(i * 120).animate({
                'left' : galleryPresentationBlock.data(num + '-left'),
                'top' : galleryPresentationBlock.data(num + '-top'),
                'height' : galleryPresentationBlock.data(num + '-height')},
            700);


        }
    });
    galleryPresentationBlock.bind('hide-presentation', function(evt){
        galleryPresentationBlock.fadeOut(300);
        leftBlock.fadeIn(300);
        clearBlock.fadeIn(300);
        contentBlock.fadeIn(300);
        galleryBlock.fadeIn(300);
        setTimeout(function(){
            galleryPresentationBlock.find('div.image-container img.presented-image').remove();
        }, 100);
        galleryPresentationBlock.find('div.preload img').remove();
    });

    imageWrapper.find('img').click(function(){
        galleryPresentationBlock.trigger('show-presentation', [$(this)]);
    });
    galleryPresentationBlock.find('div.close-presentation').click(function(){
        galleryPresentationBlock.trigger('hide-presentation');
    });

    galleryPresentationBlock.find('div.image-container img.presented-image').live('click', function(){
        var thisImage = $(this);
        var allImages = thisImage.parent().find('img');
        var index = allImages.length - thisImage.index();

        

        /* if clicked second, third or fourth, rotate */
        if(index == 2) {
            allImages.trigger('rotate', [600, function(thsImg){
                
            }]);
        } else if(index == 3) {
            allImages.trigger('rotate', [400, function(thsImg){
                thsImg.trigger('rotate', [400, function(thsImg){
                    
                }]);
            }]);
        } else if(index == 4) {
            allImages.trigger('rotate', [300, function(thsImg){
                thsImg.trigger('rotate', [300, function(thsImg){
                    thsImg.trigger('rotate', [300, function(thsImg){

                    }]);
                }]);
            }]);
        }
    });

    /* animation of sidebar */
    var animateContainer = $('div.animate-images-container');
    var animateImagesContainer = animateContainer.find('div.animate-images');
    var animateImages = animateImagesContainer.find('img.image-to-animate');

    animateImages.css('display', 'block');

    var animateClosure = function(imagesToAnimate) {
        imagesToAnimate.last().fadeOut(500, function(){
        var animatedImage = $(this);
            animateImagesContainer.prepend(animatedImage);
            animatedImage.css('display', 'block');
            setTimeout(function(){
                animateClosure(animateImagesContainer.find('img.image-to-animate'));
            }, 4500);
        });
    };

    animateClosure(animateImages);
    
});


