/*
 * @require jade.js
 * @require jade/Object.js
 */
jade.ImageFactory=function(){jade.Object.call(this);this.finishedCallbacks=[]};
jade.inherit(jade.ImageFactory,jade.Object);jade.ImageFactory.factory=null;jade.ImageFactory.prototype.finishedCallback=null;jade.ImageFactory.prototype.loading=0;
jade.ImageFactory.prototype.createImage=function(a){var b;if(!a)throw Error("URL must be set!");b=new Image;b.onload=jade.ImageFactory.handleImageLoad;b.onabort=jade.ImageFactory.handleImageError;b.onerror=jade.ImageFactory.handleImageError;b.error=!1;b.url=a;b.src=a;b.complete&&b.width&&b.height?(b.onload=null,b.onabort=null,b.onerror=null,b.loaded=!0):(b.loaded=!1,b.factory=this,this.loading++);return b};
jade.ImageFactory.prototype.preload=function(a,b,c){var d,e,f;d=[];for(e=2,f=arguments.length;e<f;e++)d.push(arguments[e]);if(!this.loading)return a&&a.apply(b?b:window,d),!0;if(a)this.finishedCallback=[a,b,d];return!1};
jade.ImageFactory.handleImageLoad=function(){var a,b,c,d;if(d=this.factory)if(this.loaded=!0,this.onerror=this.onabort=this.onload=null,d.loading--,this.factory=null,!d.loading&&d.finishedCallback)a=d.finishedCallback[0],b=d.finishedCallback[1],c=d.finishedCallback[2],jade.ImageFactory.finishedCallback=null,a.apply(b?b:window,c)};
jade.ImageFactory.handleImageError=function(a){this.error=!0;jade.ImageFactory.handleImageLoad.apply(this)};
jade.ImageFactory.createImage=function(a,b,c,d){var e,f,h,i,g;e=[];e.push(b);e.push(c);for(f=3,h=arguments.length;f<h;f++)e.push(arguments[f]);i=new jade.ImageFactory;g=i.createImage(a);e.push(g);i.preload.apply(i,e);return g};
