jade.require("jade.Log");jade.ImageFactory=function(){jade.Object.call(this);this.finishedCallbacks=[]
};jade.inherit(jade.ImageFactory,jade.Object);jade.ImageFactory.prototype.finishedCallback=null;
jade.ImageFactory.prototype.loading=0;jade.ImageFactory.prototype.createImage=function(D){var C;
if(!D){throw new Error("URL must be set!")}C=new Image();C.onload=jade.ImageFactory.handleImageLoad;
C.onabort=jade.ImageFactory.handleImageError;C.onerror=jade.ImageFactory.handleImageError;
C.error=false;C.url=D;C.src=D;if(C.complete&&C.width&&C.height){C.onload=null;C.onabort=null;
C.onerror=null;C.loaded=true}else{C.loaded=false;C.factory=this;this.loading++}return C
};jade.ImageFactory.prototype.preload=function(H,I,L){var K,J,G;K=[];for(J=2,G=arguments.length;
J<G;J++){K.push(arguments[J])}if(!this.loading){if(H){H.apply(I?I:window,K)}return true
}if(H){this.finishedCallback=[H,I,K]}return false};jade.ImageFactory.handleImageLoad=function(){var F,G,H,E;
E=this.factory;if(!E){return }this.loaded=true;this.onload=null;this.onabort=null;
this.onerror=null;E.loading--;this.factory=null;if(!E.loading&&E.finishedCallback){F=E.finishedCallback[0];
G=E.finishedCallback[1];H=E.finishedCallback[2];this.finishedCallback=null;F.apply(G?G:window,H)
}};jade.ImageFactory.handleImageError=function(B){this.error=true;jade.Log.warn("Unable to load image "+this.url);
jade.ImageFactory.handleImageLoad.apply(this)};jade.ImageFactory.createImage=function(M,L,N,O){var Q,J,P,R,K;
Q=[];Q.push(L);Q.push(N);for(J=3,P=arguments.length;J<P;J++){Q.push(arguments[J])
}R=new jade.ImageFactory();K=R.createImage(M);Q.push(K);R.preload.apply(R,Q);return K
};