/*
 * Viewport - jQuery selectors for finding elements in viewport
 *
 * Copyright (c) 2008-2009 Mika Tuupola
 *
 * Licensed under the MIT license:
 *   http://www.opensource.org/licenses/mit-license.php
 *
 * Project home:
 *  http://www.appelsiini.net/projects/viewport
 * 
 * Latest at   github.com/NV/jquery_viewport
 */


(function($) { $.belowthefold = function(element, settings) { var fold = $(window).height() + $(window).scrollTop(); return fold <= $(element).offset().top - settings.threshold; }; $.abovethetop = function(element, settings) { var top = $(window).scrollTop(); return top >= $(element).offset().top + $(element).height() - settings.threshold; }; $.rightofscreen = function(element, settings) { var fold = $(window).width() + $(window).scrollLeft(); return fold <= $(element).offset().left - settings.threshold; }; $.leftofscreen = function(element, settings) { var left = $(window).scrollLeft(); return left >= $(element).offset().left + $(element).width() - settings.threshold; }; $.inviewport = function(element, settings) { var $element = $(element); var offset = $element.offset(); var $window = $(window); var windowTop = $window.scrollTop(); var threshold = settings.threshold; if (offset.top - threshold < windowTop) { if (offset.top + $element.height() + threshold >= windowTop) { } else { return false; } } else { if (offset.top - threshold <= windowTop + $window.height()) { } else { return false; } } var windowLeft = $window.scrollLeft(); if (offset.left - threshold < windowLeft) { if (offset.left + $element.width() + threshold >= windowLeft) { } else { return false; } } else { if (offset.left - threshold <= windowLeft + $window.width()) { } else { return false; } } return true; }; $.extend($.expr[':'], { "below-the-fold": function(a, i, m) { return $.belowthefold(a, {threshold : 0}); }, "above-the-top": function(a, i, m) { return $.abovethetop(a, {threshold : 0}); }, "left-of-screen": function(a, i, m) { return $.leftofscreen(a, {threshold : 0}); }, "right-of-screen": function(a, i, m) { return $.rightofscreen(a, {threshold : 0}); }, "in-viewport": function(a, i, m) { return $.inviewport(a, {threshold : 0}); } }); })(jQuery);


