var gallery = {
    thumbPath : null,
    imagePath : null,	
    thumbnailPaths : [],	
	imagePaths : [],
	group : null,
    
    centerX : null,
    centerY : null,
    radiusX : null,
    radiusY : null,
    angleIncrement : null,
    
    maxWidth : 100,
    maxHeight : 100,
    
    thumbnails : null,
    container : null,
	
    initialized : false,
    
    initialize : function(params) {
        if (!this.initialized) {
			this.thumbPath = params.thumbPath;
			this.imagePath = params.imagePath;
			this.thumbnailPaths = params.thumbnailPaths;
			this.imagePaths = params.imagePaths;
			this.group = params.group;
		
            this.container = $('gallery');
            this.centerX = this.container.getWidth()/2;
            this.centerY = this.container.getHeight()/2;
            this.radiusX = this.container.getWidth()/2;
            this.radiusY = this.container.getHeight()/2;
            this.radiusX = this.radiusX * .85;
            this.radiusY = this.radiusY * .85;
            this.angleIncrement = 2 * Math.PI / this.thumbnailPaths.length;
			
            this.createThumbnails();
            this.initialized = true;
        }
    },
    
    createThumbnails : function() {
        this.thumbnails = [];
        for (var i=0, c=this.thumbnailPaths.length; i<c; i++) {
            var thumbnail = this.thumbnails[i] = $(document.createElement('img'));
            thumbnail.hide();
            thumbnail.src = this.thumbPath + this.thumbnailPaths[i];

			var a = $(document.createElement('a'));
			a.href = this.imagePath + this.imagePaths[i];
			a.rel = 'lightbox' + (this.group ? '[' + this.group + ']' : '');

			a.appendChild(thumbnail);
			this.container.appendChild(a);

			Event.observe(thumbnail, 'load', this.placeThumbnail.bind(this, i, thumbnail));
        }
    },
    
    placeThumbnail : function(index, thumbnail) {
        var left = this.centerX + Math.cos(index * this.angleIncrement) * this.radiusX;
        var top = this.centerY + Math.sin(index * this.angleIncrement) * this.radiusY;

        var width = thumbnail.getWidth();
        var height = thumbnail.getHeight();
		
        var modifiedWidth = width > this.maxWidth ? this.maxWidth : width;
        var modifiedHeight = height > this.maxHeight ? this.maxHeight : height;
        if (width > height) {
            thumbnail.setAttribute("width", modifiedWidth);
            thumbnail.setAttribute("height", modifiedHeight / width * height);
        } else {
            thumbnail.setAttribute("height", modifiedHeight);
            thumbnail.setAttribute("width", modifiedHeight / height * width);
        }
		
        var offsetX = thumbnail.getWidth()/2;
        var offsetY = thumbnail.getHeight()/2;
		
        thumbnail.setStyle({
            left: left - offsetX + 'px',
            top: top - offsetY + 'px'
        });
        thumbnail.show();
    }
}