'use strict';

window.ImageManager = (function () {

function newImage (src) {
	var img = new Image();
	img.src = src;
	return img;
}


// ImageManager
function ImageManager (dir) {
	this.dir = dir || './';
	// 缓存
	this.black = newImage(this.dir + 'images/WIXOSS_BLACK.jpg');
	this.white = newImage(this.dir + 'images/WIXOSS_WHITE.jpg');
	this.noimage = newImage(this.dir + 'images/noimage.jpg');
	this.imageCache = {};
	this.stateImageMap = {
		'frozen': newImage(this.dir + 'background/frozen.png'),
		'charm': newImage(this.dir + 'background/charm.png'),
		'lancer': newImage(this.dir + 'background/lancer.png'),
		'doubleCrash': newImage(this.dir + 'background/doubleCrash.png'),
		'locked': newImage(this.dir + 'background/locked.png'),
		'assassin': newImage(this.dir + 'background/assassin.png')
	};
}

ImageManager.prototype.getUrlByPid = function (pid) {
	if (!pid) return this.black.src;
	var url = window.ImageFileCache.getUrlByPid(pid);
	if (url) return url;
	url = this.dir + 'images/' + ('0000' + pid).slice(-4) + '.jpg';
	window.ImageFileCache.fetchAndCache(pid,url);
	return url;
};

ImageManager.prototype.getImageByPid = function (pid) {
	if (!pid) return this.noimage;
	if (pid in this.imageCache) {
		return this.imageCache[pid];
	} else {
		var src = this.getUrlByPid(pid);
		var img = newImage(src);
		this.imageCache[pid] = img;
		return img;
	}
};

ImageManager.prototype.getBackImage = function (isWhite) {
	return isWhite? this.white : this.black;
};

ImageManager.prototype.getStateImage = function (state) {
	return this.stateImageMap[state];
};

return ImageManager;
})();