/**

* jQuery Unveil
* A very lightweight jQuery plugin to lazy load images
* http://luis-almeida.github.com/unveil
*
* Licensed under the MIT license.
* Copyright 2013 Luís Almeida
* https://github.com/luis-almeida
*/

;(function($) {

$.fn.unveil = function(threshold, callback) {

  var $w = $(window),
      th = threshold || 0,
      retina = window.devicePixelRatio > 1,
      attrib = retina? "data-src-retina" : "data-src",
      images = this,
      loaded;

  this.one("unveil", function() {
    var source = this.getAttribute(attrib);
    source = source || this.getAttribute("data-src");
    if (source) {
      this.setAttribute("src", source);
      if (typeof callback === "function") callback.call(this);
    }
  });

  function unveil() {
    var inview = images.filter(function() {
      var $e = $(this);
      if ($e.is(":hidden")) return;

      var wt = $w.scrollTop(),
          wb = wt + $w.height(),
          et = $e.offset().top,
          eb = et + $e.height();

      return eb >= wt - th && et <= wb + th;
    });

    loaded = inview.trigger("unveil");
    images = images.not(loaded);
  }

  $w.on("scroll.unveil resize.unveil lookup.unveil", unveil);

  unveil();

  return this;

};

})(window.jQuery || window.Zepto);