PK

ADDRLIN : /home/anibklip/oddbox.in/site/js/
FLL :
Current File : /home/anibklip/oddbox.in/site/js/jquery.lazyload.js

/*
 * Lazy Load - jQuery plugin for lazy loading images
 *
 * Copyright (c) 2007-2009 Mika Tuupola
 *
 * Licensed under the MIT license:
 *   http://www.opensource.org/licenses/mit-license.php
 *
 * Project home:
 *   http://www.appelsiini.net/projects/lazyload
 *
 * Version:  1.5.1
 *
 */
(function ($,window) {

    $.fn.lazyload = function(options) {
        // $.offset.top() reports wrong position after scroll
        // http://bugs.jquery.com/ticket/6446
        var fixedOffset = function (e) {
            var result = $(e).offset();
            if ( /; CPU.*OS (?:3_2|4_0)/i.test(navigator.userAgent)
              && 'getBoundingClientRect' in document.documentElement) {
                result.top -= window.scrollY;
                result.left -= window.scrollX;
            }
            return result;
        };
        
        var FALSE = !1
          , ORIGINAL = 'original'
          , SRC = 'src'
          , TRUE = !FALSE
          , elements = this
          , settings = { threshold: 0
                       , container: window
                       , effect: 'show'
                       , namespace: '.lazyload'
                       };
                       
        if(options) $.extend(settings, options);
       
        var container = $(settings.container)
          , namespace = settings.namespace
          , APPEAR = 'appear' + namespace
          , RESIZE = 'resize' + namespace
          , SCROLL = 'scroll' + namespace;
        
        var isInViewport = function (element) {
            element = $(element);
            if (!element.length) return false;

            var threshold = settings.threshold
              , offset;

            if (container[0] === window) {
                var bottom = container.height() + container.scrollTop()
                  , left = container.scrollLeft()
                  , right = container.width() + container.scrollLeft()
                  , top = container.scrollTop();
            } else {
                offset = fixedOffset(container);
                var bottom = offset.top + container.height()
                  , left = offset.left
                  , right = offset.left + container.width()
                  , top = offset.top;
            }
            
            offset = fixedOffset(element);
            var elementBottom = offset.top + element.height()
              , elementLeft = offset.left
              , elementRight = offset.left + element.width()
              , elementTop = offset.top;
              
            return (elementTop + threshold) <= bottom
                && (elementLeft + threshold) <= right
                && (elementBottom - threshold) >= top
                && (elementRight - threshold) > left;
        };

        elements.each(function () {
            var e = this;
            
            // skip visible images
            if (isInViewport($(e)) && !$(e).attr(ORIGINAL)) {
                e.loaded = TRUE;
                return;
            }

            // Save original or src attribute
            $(e).data(ORIGINAL, $(e).attr(ORIGINAL) || $(e).attr(SRC));
            
            if ( !$(e).attr(SRC)
              || settings.placeholder === $(e).attr(SRC) 
              || (!isInViewport($(e)))) {

                settings.placeholder
                ? $(e).attr(SRC, settings.placeholder)
                : $(e).removeAttr(SRC);
                
                e.loaded = FALSE;
            }

            // When appear is triggered load original image.
            $(e).one(APPEAR, function() {
                if (this.loaded) return;
                $("<img />").load(function() {
                    $(e).hide()
                        .attr(SRC, $(e).data(ORIGINAL))
                        [settings.effect](settings.effectSpeed)
                        .removeData(ORIGINAL);
                    e.loaded = TRUE;
                }).attr(SRC, $(e).data(ORIGINAL));
            });
        });
        
        container.bind(SCROLL+' '+RESIZE, function () {
            var counter = 0;
            elements.each(function() {
                var e = this;
                if (isInViewport(e) && !e.loaded) $(e).trigger(APPEAR);
            });
            
            // Remove image from array so it is not looped next time.
            elements = $($.grep(elements, function(e) {
                return !e.loaded;
            }));
            
            // stop binding if every elements are loaded
            if (!elements.length) container.unbind(namespace);
        })
        // trigger event once loaded
        .trigger(SCROLL);

        return this;
    };
})(jQuery,window);


PK 99