function CSpriteLibrary(){var _oLibSprites={};var _oSpritesToLoad;var _iNumSprites;var _iCntSprites;var _cbCompleted;var _cbTotalCompleted;var _cbOwner;this.init=function(cbCompleted,cbTotalCompleted,cbOwner){_oSpritesToLoad={};_iNumSprites=0;_iCntSprites=0;_cbCompleted=cbCompleted;_cbTotalCompleted=cbTotalCompleted;_cbOwner=cbOwner;};this.addSprite=function(szKey,szPath){if(_oLibSprites.hasOwnProperty(szKey)){return;}
var oImage=new Image();_oLibSprites[szKey]=_oSpritesToLoad[szKey]={szPath:szPath,oSprite:oImage,bLoaded:false};_iNumSprites++;};this.getSprite=function(szKey){if(!_oLibSprites.hasOwnProperty(szKey)){return null;}else{return _oLibSprites[szKey].oSprite;}};this._onSpritesLoaded=function(){_iNumSprites=0;_cbTotalCompleted.call(_cbOwner);};this._onSpriteLoaded=function(){_cbCompleted.call(_cbOwner);if(++_iCntSprites===_iNumSprites){this._onSpritesLoaded();}};this.loadSprites=function(){for(var szKey in _oSpritesToLoad){_oSpritesToLoad[szKey].oSprite["oSpriteLibrary"]=this;_oSpritesToLoad[szKey].oSprite["szKey"]=szKey;_oSpritesToLoad[szKey].oSprite.onload=function(){this.oSpriteLibrary.setLoaded(this.szKey);this.oSpriteLibrary._onSpriteLoaded(this.szKey);};_oSpritesToLoad[szKey].oSprite.onerror=function(evt){var oSpriteToRestore=evt.currentTarget;setTimeout(function(){_oSpritesToLoad[oSpriteToRestore.szKey].oSprite.src=_oSpritesToLoad[oSpriteToRestore.szKey].szPath;},500);};_oSpritesToLoad[szKey].oSprite.src=_oSpritesToLoad[szKey].szPath;}};this.setLoaded=function(szKey){_oLibSprites[szKey].bLoaded=true;};this.isLoaded=function(szKey){return _oLibSprites[szKey].bLoaded;};this.getNumSprites=function(){return _iNumSprites;};}