
	var Gallery = {
		// Dimensions
		dimensions :
		{
			thumbnail:
			{
				resize : 
				{
					width : 55,
					height: 41
				},
				
				crop :
				{
					width : 55,
					height: 41
				}
			},
			
			full :
			{
				resize :
				{
					width : 350,
					height: 262
				},
				
				crop :
				{
					width : 350,
					height: 262
				}				
			}
		},
		
		// Elements
		elements :
		{
			fullImage : dojo.byId("NewCarModelBigImageDiv")
		},
		
		// Paths
		paths :
		{
			thumbnailPath 	: function(image)
			{
				return  "/resize.php?image=" + image + 
						"&rwidth="  + Gallery.dimensions.thumbnail.resize.width  +  
						"&rheight=" + Gallery.dimensions.thumbnail.resize.height + 
						"&cwidth="  + Gallery.dimensions.thumbnail.crop.width  +
						"&cheight=" + Gallery.dimensions.thumbnail.crop.height +
						"&mode=resizeAndCrop";
			},

			fullPath : function(image)
			{
				return  "/resize.php?image=" + image + 
						"&rwidth="  + Gallery.dimensions.full.resize.width  +  
						"&rheight=" + Gallery.dimensions.full.resize.height + 
						"&cwidth="  + Gallery.dimensions.full.crop.width  +
						"&cheight=" + Gallery.dimensions.full.crop.height +
						"&mode=resizeAndCrop";
			}	
		},
		
		// Intervals
		interval : new Array(),
		
		// Loader Images
		loaderImages : 
		{
			big		: "/themes/brown/images/ajax-loader-big.gif",
			small 	: "/themes/brown/images/ajax-loader-small.gif"
		},

		// BIG loader
		bigLoader	: new Image(),
		
		// SMALL loader
		smallLoader	: new Image(),

		// Preload Loaders
		preloadLoaders : function()
		{
			// Preload Big Loader
			this.bigLoader.src 	       = this.loaderImages.big;
			
			// Preload Small Loader
			this.smallLoader.src = this.loaderImages.small;
		},
		
		// Return TRUE if the image is loaded
		isLoaded : function(image)
		{
			return image.complete;
		},
		
		// Fire when image be loaded
		fireWhenLoaded : function(image, index, callback)
		{
			var object = this;
				object.interval[index] = setInterval(function()
				{
					if(object.isLoaded(image) === true)
					{
						// Clear Interval
						clearInterval(object.interval[index]);

						// Call callback function
						callback();
					}
				}, 150);
		},

		// Set Image
		setImage : function(element, image)
		{
			dojo.byId(element).src = image;
		},
		
		// Load Image
		loadImage : function(element, elementParent, index, image, preloader)
		{
			// Load Image
			var preloadImage = new Image();
				preloadImage.src = image;
			
			// Append Preloader
			if(preloader !== undefined)
			{
				this.setImage(element, preloader.src);
			}
			
			// Append Image when it be loaded
			var object = this;
			var appendImage = function()
			{
				object.setImage(element, preloadImage.src);
			};
			
			// Fire on Image Loaded
			this.fireWhenLoaded(preloadImage, index, appendImage);
		},
		
		// Append Loader
		appendLoader : function(element, loader)
		{
			this.setImage(element, loader);
		},

		// Append Thumbnail
		appendThumbnail : function(imageData, place, index, loader)
		{
			var ThumbDiv = document.createElement("div");
			var ThumbA	 = document.createElement("a");
				dojo.attr(ThumbA, {
				    "href" : "javascript: void(0);",
				    "onclick" : function()
				    {
						Gallery.appendFullImage(Images[index], dojo.byId("NewCarModelBigImageDiv"), "full", Gallery.bigLoader);
				    }
				});
				ThumbDiv.appendChild(ThumbA);

			var ThumbImg = document.createElement("img");
				dojo.attr(ThumbImg, {
				    "id" 	: imageData.id,
				    "alt" 	: imageData.text,
					"title" : imageData.text
				});
				ThumbA.appendChild(ThumbImg);
				place.appendChild(ThumbDiv);

				this.loadImage(ThumbImg, ThumbDiv, index, (this.paths.thumbnailPath(imageData.src)), loader);								
		},
		
		// Append Full Image
		appendFullImage : function(imageData, place, index, loader)
		{
			// Check if img tag exists
			var FullImg;
			
			if(place.getElementsByTagName("img")[0] === undefined)
			{
				FullImg = document.createElement("img");
				place.appendChild(FullImg);
			}
			else
			{
				FullImg = place.getElementsByTagName("img")[0];
			}
			
			dojo.attr(FullImg, {
			    "id" 	: imageData.id,
			    "alt" 	: imageData.text,
				"title" : imageData.text
			});

			this.loadImage(FullImg, place, index, (this.paths.fullPath(imageData.src)), loader);								
		}
	};
	
	var Images;
	
    dojo.addOnLoad(function()
    {
    	if(Images !== undefined)
    	{
			// Start to preload loader
			Gallery.preloadLoaders();
	    	
	    	// Append Thumbnails
			var place  = dojo.byId("NewCarModelThumbnails");
			var loader = Gallery.smallLoader;
			
			for(var index=0; index < Images.length; index++)
			{
				Gallery.appendThumbnail(Images[index], place, index, loader);
			}
	
			// Append Full Image
			Gallery.appendFullImage(Images[0], dojo.byId("NewCarModelBigImageDiv"), "full", Gallery.bigLoader);
    	}
    });