Current Path : /var/test/www/alh/catalog/view/theme/journal2/lib/infinite-scroll/ |
Current File : /var/test/www/alh/catalog/view/theme/journal2/lib/infinite-scroll/jquery.infinitescroll.min.js |
; (function ($) { $.fn.infinitescroll = function (options, callback) { function debug() { if (opts.debug) { window.console && console.log.call(console, arguments) } } function areSelectorsValid(opts) { for (var key in opts) { if (key.indexOf && key.indexOf('Selector') > -1 && $(opts[key]).length === 0) { debug('Your ' + key + ' found no elements.'); return false; } return true; } } function determinePath(path) { path.match(relurl) ? path.match(relurl)[2] : path; if (path.match(/^(.*?)\b2\b(.*?$)/)) { path = path.match(/^(.*?)\b2\b(.*?$)/).slice(1); } else if (path.match(/^(.*?)2(.*?$)/)) { if (path.match(/^(.*?page=)2(\/.*|$)/)) { path = path.match(/^(.*?page=)2(\/.*|$)/).slice(1); return path; } debug('Trying backup next selector parse technique. Treacherous waters here, matey.'); path = path.match(/^(.*?)2(.*?$)/).slice(1); } else { if (path.match(/^(.*?page=)1(\/.*|$)/)) { path = path.match(/^(.*?page=)1(\/.*|$)/).slice(1); return path; } debug('Sorry, we couldn\'t parse your Next (Previous Posts) URL. Verify your the css selector points to the correct A tag. If you still get this error: yell, scream, and kindly ask for help at infinite-scroll.com.'); props.isInvalidPage = true; } return path; } function getDocumentHeight() { return opts.localMode ? ($(props.container)[0].scrollHeight && $(props.container)[0].scrollHeight) : $(document).height() } function isNearBottom() { var pixelsFromWindowBottomToBottom = 0 + getDocumentHeight() - (opts.localMode ? $(props.container).scrollTop() : ($(props.container).scrollTop() || $(props.container.ownerDocument.body).scrollTop())) - $(opts.localMode ? props.container : window).height(); debug('math:', pixelsFromWindowBottomToBottom, props.pixelsFromNavToBottom); return (pixelsFromWindowBottomToBottom - opts.bufferPx < props.pixelsFromNavToBottom); } function showDoneMsg() { props.loadingMsg.find('img').hide().parent().find('div').html(opts.donetext).animate({ opacity: 1 }, 2000).fadeOut('normal'); opts.errorCallback(); } function infscrSetup() { if (props.isDuringAjax || props.isInvalidPage || props.isDone) return; if (!isNearBottom(opts, props)) return; $(document).trigger('retrieve.infscr'); } function kickOffAjax() { props.isDuringAjax = true; props.loadingMsg.appendTo(opts.contentSelector).show(); $(opts.navSelector).hide(); props.currPage++; debug('heading into ajax', path); box = $(opts.contentSelector).is('table') ? $('<tbody/>') : $('<div/>'); frag = document.createDocumentFragment(); console.log(window.J2FilterData); box.load(path.join(props.currPage) + ' ' + opts.itemSelector, window.J2FilterData, loadCallback); } function loadCallback() { if (props.isDone) { showDoneMsg(); return false; } else { var children = box.children().get(); if (children.length == 0) { return $.event.trigger("ajaxError", [{ status: 404 }]); } while (box[0].firstChild) { frag.appendChild(box[0].firstChild); } $(opts.contentSelector)[0].appendChild(frag); props.loadingMsg.fadeOut('normal'); if (opts.animate) { var scrollTo = $(window).scrollTop() + $('#infscr-loading').height() + opts.extraScrollPx + 'px'; $('html,body').animate({ scrollTop: scrollTo }, 800, function () { props.isDuringAjax = false; }); } callback.call($(opts.contentSelector)[0], children); if (!opts.animate) props.isDuringAjax = false; } } $.browser.ie6 = $.browser.msie && $.browser.version < 7; var opts = $.extend({}, $.infinitescroll.defaults, options), props = $.infinitescroll, box, frag; callback = callback || function () {}; if (!areSelectorsValid(opts)) { return false; } props.container = opts.localMode ? this : document.documentElement; opts.contentSelector = opts.contentSelector || this; var relurl = /(.*?\/\/).*?(\/.*)/, path = $(opts.nextSelector).attr('href'); if (!path) { debug('Navigation selector not found'); return; } path = determinePath(path); if (opts.localMode) $(props.container)[0].scrollTop = 0; props.pixelsFromNavToBottom = getDocumentHeight() + (props.container == document.documentElement ? 0 : $(props.container).offset().top) - $(opts.navSelector).offset().top; props.loadingMsg = $('<span id="infscr-loading" style="text-align: center;"><img alt="Loading..." src="' + opts.loadingImg + '" /><div>' + opts.loadingText + '</div></span>'); (new Image()).src = opts.loadingImg; $(document).ajaxError(function (e, xhr, opt) { debug('Page not found. Self-destructing...'); if (xhr.status == 404) { showDoneMsg(); props.isDone = true; $(opts.localMode ? this : window).unbind('scroll.infscr'); } }); $(opts.localMode ? this : window).bind('scroll.infscr', infscrSetup).trigger('scroll.infscr'); $(document).bind('retrieve.infscr', kickOffAjax); return this; } $.infinitescroll = { defaults: { debug: false, preload: false, nextSelector: "div.navigation a:first", loadingImg: "http://www.infinite-scroll.com/loading.gif", loadingText: "<em>Loading the next set of posts...</em>", donetext: "<em>Congratulations, you've reached the end of the internet.</em>", navSelector: "div.navigation", contentSelector: null, extraScrollPx: 150, itemSelector: "div.post", animate: false, localMode: false, bufferPx: 40, errorCallback: function () {} }, loadingImg: undefined, loadingMsg: undefined, container: undefined, currPage: 1, currDOMChunk: null, isDuringAjax: false, isInvalidPage: false, isDone: false }; })(jQuery);