preloader = {


	_images: {},


	_packs: {},


	_packId: 0,


	getImage: function(imgSrc, imgObj) {


		if (typeof(preloader._images[imgSrc]) != 'undefined') {


			var packId = preloader._images[imgSrc].pack;


			var pack = preloader._packs[packId];


			pack.left--;


			if (!pack.left) {


				pack.callback(pack.images);


			}


		}


	},


	handlerOnLoad: function() {


		preloader.getImage(this.relSrc, this);


	},


	handlerOnError: function() {


		preloader.getImage(this.relSrc, this);


	},


	handlerOnAbort: function() {


		preloader.getImage(this.relSrc, this);


	},


	add: function(imgList, callback) {


		if (typeof(callback) != 'function') {


			callback = function() {};


		}


		var packId = preloader._packId++;


		var images_no = 0;


		for (var i in imgList) {


			images_no++;


		}


		


		preloader._packs[packId] = {


			'left': images_no,


			'images': imgList,


			'callback': callback


		};


		


		for (var i in imgList) {


			var img		= new Image();


			img.onload	= preloader.handlerOnLoad;


			img.onerror	= preloader.handlerOnError;


			img.onabort	= preloader.handlerOnAbort;


			img.relSrc	= imgList[i];


			img.src		= imgList[i];


			preloader._images[imgList[i]] = {


				'pack': packId,


				'obj': img


			}


		}


	}


}
