﻿function ImageLoader(path, callback){
    this.imgPath = path;
    this.imgObject;
    this.loadTimer;
    this.callbackObj = callback;
    
    this.init = function(){
        //start load!
        if(this.imgPath != null) this.startLoad();
    }
    
    this.setImage = function(path, callback){
        this.imgPath = path;
        this.callbackObj = callback;
        this.startLoad();
    }
    
    this.startLoad = function(){
        this.imgObject = new Image();
        this.imgObject.src = this.imgPath;
        this.imgObject.onLoad = this.onImgLoaded();
    }
    
    this.onImgLoaded = function(){
        if(this.loadTimer != null) clearTimeout(this.loadTimer);
        if(!this.imgObject.complete){
            var thisObj = this;
            this.loadTimer = setTimeout(function(){ thisObj.onImgLoaded() }, 3);
        }else{
            this.onComplete();
        }
        
    }
    
    this.onComplete = function(){
        if(this.callbackObj != null){
            this.callbackObj.scope[this.callbackObj.func](this.imgObject);
        }
    }
    
    this.init();
}
