/*
$(document).ready(function(){
 
	$("h2").append('<em></em>')
 
	$(".thumbs a").click(function(){
	
		var largePath = $(this).attr("href");
		var largeAlt = $(this).attr("title");
		var largeAlt2 = $(this).attr("href");
		$("#largeImg").attr({href:largeAlt2, src: largePath, alt: largeAlt });
		
		$("h2 em").html(" (" + largeAlt + ")"); return false;
	});
	
});
*/
$(document).ready(function(){

    function Slider(){
        
        var scope = this;
        this.images = new Images();
        this.slider = new Slider();
        this.clicker = new Clicker();
        
        function Images(){
            
            this.store = {};
        }

        Images.prototype.scan = function(){
            
            var scope = this;
            
            var links = $('#gallery_container').find('a').each(function(i){

                var link = $(this);
                var image = link.attr('href');
                var thumb = $('> img', link).attr('src');
                
                scope.store[i] = {'thumb' : thumb, 'image' : image, 'dom' : link};
            });
        }


        Images.prototype.preload = function(f){
            
            var total = this.size() * 2;
            var loaded = 0;
            var scope = this;
            
            
            for(var i in this.store){
                var src1 = this.store[i].thumb;
                var src2 = this.store[i].image;

                var image1 = new Image();
                image1.src = src1;
                
                var image2 = new Image();
                image2.src = src2;
                
            	$(image1).unbind("load");
            	$(image1).bind("load", function() {
                    loaded ++;
                    if((total - 1) == loaded) f();
                    return;
            	});

            	$(image2).unbind("load");
            	$(image2).bind("load", function() {
                    loaded ++;
                    if((total - 1) == loaded) f();
                    return;
            	});
            }
        }
        
        Images.prototype.size = function(f){
        
                var size = 0;
                for (key in this.store) {
                    if (this.store.hasOwnProperty(key)) size++;
                }
                
                return size;

        }
        
        function Slider(){
            
            this.timeout = 3500;
            this.current_slide = 0;
            this.intervalObject;
        }
        
        Slider.prototype._start = function(){
            
            clearInterval(this.intervalObject);
            
            scope.slider.prepareSlide(this.current_slide);
            
            this.intervalObject = setInterval(function(){
                
                scope.slider.prepareFade(scope.slider.current_slide);
                scope.slider.prepareSlide(scope.slider.nextSlideNr());
                
            }, this.timeout);        
        }

        Slider.prototype.prepareFade = function(i){
            
            $('#image_effect').html('<img src=\'' + scope.images.store[i].image + '\' />');
            
            $('#image_effect').css('opacity','1');
            $('#image_effect').css('z-index','5');
            $('#image_effect').animate({
                opacity: 0
            }, 500, function() {
            
            });
  
        }
        
        Slider.prototype.prepareSlide = function(i){
            
            $('img#largeImg').attr('src', scope.images.store[i].image);
            
            var thumb = scope.images.store[i].dom;
            var thumbs = $('#gallery_container a');
            
            thumbs.addClass('opaque');
            thumb.removeClass('opaque');
        }
        
        Slider.prototype.nextSlideNr = function(){
            
            if(this.current_slide == (scope.images.size() - 1)){
                this.current_slide = 0;
                return this.current_slide;
            } else {
                this.current_slide += 1;
                return this.current_slide;
            }
        }

        function Clicker(){
            
        }

        Clicker.prototype.makeButtons = function(){
            
            var links = $('#gallery_container').find('a').each(function(i){
                
                $(this).click(function(){
                
                    scope.slider.current_slide = i;
                    scope.slider._start();
                    return false;
                });
                
            });
        }

        this.images.scan();
        this.images.preload(function(){

        });
        
        scope.clicker.makeButtons();
        scope.slider._start();
        
        $('#gallery_container').prepend('<p style=\'position:absolute; margin: 1px 0 0 7px;\' id=\'image_effect\'></p>');

    }
    
    var slider = new Slider();
});
