var ImgLoader = {};

ImgLoader.queue = {};
ImgLoader.interval = null;

ImgLoader.add = function(opt) {
	if (opt.wrapper == null || $(opt.wrapper) == null) return;
	
	var wrapper = typeof(opt.wrapper) == 'object' ? opt.wrapper : $(opt.wrapper);
	wrapper.set('html', '');
	wrapper.setStyles({ height: 500, background: 'url(/images/ajax-loader.gif) center no-repeat' });
	
	var opt_ = opt;
	opt_.img = new Element('img', { src: opt_.src });
	opt_.wrapper = wrapper;
	delete opt_.src;
	this.queue[wrapper] = opt_;
	
	if (this.interval == null)
		this.interval = setInterval(this.update.bind(this), 100);
};
	
ImgLoader.update = function() {
	var count = 0;
	for (var wrapper in this.queue) {
		var opt = this.queue[wrapper];
		if (opt.img.complete) {
			opt.wrapper.setStyle('height', 'auto');
			opt.wrapper.set('html', '');
			opt.wrapper.grab(opt.img);
			if (opt.evalCode != null)
				opt.evalCode();
				
			delete this.queue[wrapper];
		}
		else
			count++;
	}
	
	if (!count) {
		clearInterval(this.interval);
		this.interval = null;
		return;
	}
};