/////////////////////////////////
//                             //
//   Author: Gritsay Yevgeniy  //
//   yevgen_grytsay@mail.ru    //
//                             //
/////////////////////////////////

function ImageLoader(pSrc, pCallback) {
	this.src = pSrc;	
	this.callback = pCallback;
	this.args = [];
	
	var len = arguments.length;
	
	for(var i = 2; i < len; i++) {
		this.args[i-2] = arguments[i];
	}
}

ImageLoader.prototype.load = function() {
	var newImage = new Image();
	var _self = this;
	
	newImage.onload = function() {
		_self.callback.apply(newImage, [_self.args[0]]);
	}
	
	newImage.src = this.src;
	
	// For Opera
	if(newImage.complete) {
		_self.callback.apply(newImage, [_self.args[0]]);
	}
	
	return newImage;
}

/////////////////////////////////
//  	 ImageSetLoader		   //
/////////////////////////////////


function ImageSetLoader(pHtml, pCallback) {
	this.html = pHtml;	
	this.callback = pCallback;
	this.args = [];
	
	var len = arguments.length;
	
	for(var i = 2; i < len; i++) {
		this.args[i-2] = arguments[i];
	}
}

ImageSetLoader.prototype.getSrcFromHtml = function(html) {
	var images, len, srcs = [];
	var container = document.createElement('DIV');
	
	container.innerHTML = html;
	images = container.getElementsByTagName('IMG');
	len = images.length;
	
	for(var i = 0; i < len; i++) {
		srcs[i] = images[i].src;
	}
	
	return srcs;
}

ImageSetLoader.prototype.load = function() {
	var loaded = 0;
	var srcs = this.getSrcFromHtml(this.html);
	var toLoad = srcs.length;
	var callback = this.callback;
	
	var onImageLoad = function() {
		++loaded;
		
		// In Opera "onImageLoad" can be invoked twice;
		if(loaded >= toLoad) {
			callback();
		}
	}
	
	
	for(var i = 0; i < toLoad; ++i) {
		var img = new Image();
		
		
		img.onload = function() {
			onImageLoad();
		}		
		img.src = srcs[i];

		// For Opera
		if(img.complete === true) {
			onImageLoad();
		}
	}
}





