/**
 * This object handles retrieval of an image associated with a particular entity.
 * The image is retrieved asynchronously an inserted into the DOM
 * as a child of: updateParentElement
 */
var ImageLoader = {
	/**
	 * Class construtor
	 */
	load: function(urlString, updateParentElement) {
		this.attachLoadingImage(updateParentElement);
		new Ajax.Request(
			urlString, 
			{
  				onSuccess:function(transport) {
					ImageLoader.detachLoadingImage();
					ImageLoader.processResult(updateParentElement, transport.responseText);
				}
			}
		);
		
	},
	// insert the image into the DOM
	processResult: function(updateElement, jsonResult) {
		
		var jsonObj = jsonResult.evalJSON();
		var srcString = '/includes/skin/default/front_images/no-offer.jpg';
		
		var randomnumber=Math.floor(Math.random()*11)
		
		if (jsonObj.got_image == true) {
			var srcString = '/client/uploads/images/thumbs/thumb__' + jsonObj.file_name;
		}
		else {
			jsonObj.file_name = 'no_offer_' + randomnumber;
			jsonObj.alt_text = 'Another offer from Volvo';
		}
	
		var thumbnail = new Element('img', {
				'src': srcString,
				'alt': jsonObj.alt_text,
				'id': jsonObj.file_name
			});
		
		$(updateElement).appendChild(thumbnail);
	},
	// insert the loading image into the DOM
	attachLoadingImage: function(parentElement) {
		
		var ajaxLoader = new Element('img', {
			'src': '/includes/skin/default/front_images/image_loader.gif',
			'alt': 'Loading...',
			'id': 'ajax_loader'
			
		});
		
		$(parentElement).appendChild(ajaxLoader);
	},
	// remove the loading image from the DOM
	detachLoadingImage: function() {
		$('ajax_loader').remove();
	}
}
