(function() {

window.imagesLoad = function(images) {
  images = images || document.getElementsByTagName('img');
  var imagesCount = images.length, loadedCount = 0, image;
  var i, j, loaded = false, cbs = [];
  imagesCount < 1 && (loaded = true);
  for (i = 0; i < imagesCount; i++) {
    image = images[i];
    image.complete ? handleImageLoad() : image.addEventListener('load', handleImageLoad);
  }
  function handleImageLoad() {
    loadedCount++;
    if (loadedCount === imagesCount) {
      loaded = true;
      if (cbs.length > 0) {
        for (j = 0; j < cbs.length; j++) {
          cbs[j]();
        }
      }
    }
  }
  return {
    then: function(cb) {
      cb && (loaded ? cb() : (cbs.push(cb)));
    }
  };
};

})();