%PDF- %PDF-
| Direktori : /home/lightco1/upgrade.lightco.com.au/media/lib_compojoom/js/ |
| Current File : /home/lightco1/upgrade.lightco.com.au/media/lib_compojoom/js/jquery.onimpression.js |
/**
* onImpression : A jQuery plugin to trigger a callback function when an element is displayed on screen
* Created by Jason Ramsey - check out http://www.jaseowns.com/solutions/onimpression for examples and use options
*
* Licensed under the MIT license.
*
* Inspired by Luís Almeida's Unveil https://github.com/luis-almeida
**/
; (function ($) {
$.fn.onImpression = function (options) {
var settings = $.extend({
offset: 0,
callback: null,
attribute: "",
alwayscallback: false,
scrollable: ""
}, options);
var $window = $(window),
$scrollable = $(settings.scrollable),
onImpressionElements = this,
loaded;
this.one("onImpression", function () {
if (typeof settings.callback === "function") settings.callback.call(this, this.getAttribute(settings.attribute));
});
this.on("alwaysOnImpression", function () {
if (typeof settings.callback === "function") settings.callback.call(this, this.getAttribute(settings.attribute));
});
function onImpression() {
var inview = onImpressionElements.filter(function () {
var $e = $(this);
if ($e.is(":hidden")) return;
var wt = $window.scrollTop(),
wb = wt + $window.height(),
et = $e.offset().top,
eb = et + $e.height();
var inScrollable = false;
if ($scrollable.length) {
var scrollTop = $scrollable.scrollTop(),
scrollBottom = scrollTop + $scrollable.height();
inScrollable = (eb >= scrollTop - settings.offset && et <= scrollBottom + settings.offset);
}
return (eb >= wt - settings.offset && et <= wb + settings.offset) || inScrollable;
});
if (settings.alwayscallback) {
loaded = inview.trigger("alwaysOnImpression");
}
else {
loaded = inview.trigger("onImpression");
onImpressionElements = onImpressionElements.not(loaded);
}
}
// Only run code if the callback is available, else there is no point
if (typeof settings.callback === "function") {
if ($scrollable.length) {
$scrollable.on("scroll.onImpression resize.onImpression lookup.onImpression", onImpression);
} else {
$window.on("scroll.onImpression resize.onImpression lookup.onImpression", onImpression);
}
onImpression();
}
return this;
};
})(window.jQuery);