function imgLoader() {
    var callbacks = [];
    var images = [];
    var loadedImages = [];
    var imagesLoaded = 0;

    function checkFinished() {
        imagesLoaded++;
        if (imagesLoaded == images.length) fireFinish();
    }
  
    function fireFinish() {
        for(var i=0; i<callbacks.length; i++) {
            callbacks[i]();
        }
        images = [];
        loadedImages = [];
        imagesLoaded = 0;
        callbacks = [];
    }


    this.add = function(image) {
        if (typeof image == 'string') images.push(image);
        if (typeof image == 'array' || typeof image == 'object') {
            for (var i=0; i< image.length; i++) {
                images.push(image[i]);
            }
        }
    }

    this.onFinish = function(func) {
        if (typeof func == 'function') callbacks.push(func);
        if (typeof func == 'array' || typeof func == 'object') {
            for (var i=0; i< func.length; i++) {
                callbacks.push(func[i]);
            }
        }
    }

    this.load = function() {
        for(var i=0; i<images.length; i++) {
            loadedImages[i] = new Image();
            loadedImages[i].src = images[i];
            loadedImages[i].onLoad = checkFinished();
        }
    }
}
