PageSourceSearch

https://www.trainingsmoke.com/js/iwd/infinityscroll/scroll.js

js trainingsmoke.com collected 2026-10-05 20:52:49 UTC 15,521 bytes, 384 lines download raw bytes

1;if(typeof(jQueryIWD) == "undefined"){if(typeof(jQuery) != "undefined") {jQueryIWD = jQuery;}} $ji = jQueryIWD;
2(function(b){b.waitForImages={hasImageProperties:["backgroundImage","listStyleImage","borderImage","borderCornerImage","cursor"]};b.expr[":"].uncached=function(a){if(!b(a).is('img[src!=""]'))return!1;var c=new Image;c.src=a.src;return!c.complete};b.fn.waitForImages=function(a,c,d){var f=0,g=0;b.isPlainObject(a)&&(d=a.waitForAll,c=a.each,a=a.finished);a=a||b.noop;c=c||b.noop;d=!!d;if(!b.isFunction(a)||!b.isFunction(c))throw new TypeError("An invalid callback was supplied.");return this.each(function(){var h=b(this),e=[],l=b.waitForImages.hasImageProperties||[],m=/url\(\s*(['"]?)(.*?)\1\s*\)/g;d?h.find("*").addBack().each(function(){var a=b(this);a.is("img:uncached")&&e.push({src:a.attr("src"),element:a[0]});b.each(l,function(b,c){var d=a.css(c),f;if(!d)return!0;for(;f=m.exec(d);)e.push({src:f[2],element:a[0]})})}):h.find("img:uncached").each(function(){e.push({src:this.src,element:this})});f=e.length;g=0;0===f&&a.call(h[0]);b.each(e,function(d,e){var k=new Image;b(k).on("load.waitForImages error.waitForImages",function(b){g++;c.call(e.element,g,f,"load"==b.type);if(g==f)return a.call(h[0]),!1});k.src=e.src})})}})(jQueryIWD);
3window.hasOwnProperty = function (obj) {return (this[obj]) ? true : false;};
4if (!window.hasOwnProperty('IWD')) {IWD = {};}
5iwdChangeHashFlag = true;
6
7IWD.InfinityScroll = {
8    div_category_products: ".category-products",
9    div_pager: ".pager",
10    div_limiter: ".limiter",
11    paginationPath: ".pager .pages a",
12    div_toolbar_bottom: ".toolbar-bottom",
13
14    whenBeginLoad: 1000,
15    isHidePaginationBlock: true,
16    isSmartUrl: true,
17    isPageBlockHead: true,
18    isButtonMode: false,
19    loadMoreButtonLabel: 'Load more...',
20    uploadMode: 'scroll',
21    ajaxUrl: null,
22    currentPage: 1,
23    pagesCount: 1,
24    preLoad: false,
25    hashTop: 0, // cannot use top position by responsive themes
26    hashPage: 1,
27    loadingFlag: false,
28    scrollToBlockTop: false,
29    loadedPages: 0,
30
31    first_page: function(){
32        var pageBlockId = 'iwd_uploaded_page_' + IWD.InfinityScroll.currentPage;
33        $ji("#iwd_uploaded_pages").append('<div id="' + pageBlockId + '"></div>');
34    },
35
36    init: function () {
37        IWD.InfinityScroll.div_pager = IWD.InfinityScroll.paginationPath.split(' ')[0];
38
39        switch(IWD.InfinityScroll.uploadMode){
40            case 'button':
41                IWD.InfinityScroll.first_page();
42                IWD.InfinityScroll.isButtonMode = true;
43                IWD.InfinityScroll.button();
44                break;
45            case 'scroll':
46                IWD.InfinityScroll.first_page();
47                IWD.InfinityScroll.scroll();
48                break;
49            case 'pagination':
50                IWD.InfinityScroll.preparePagination();
51                IWD.InfinityScroll.pagination();
52                break;
53            default:
54                return false;
55        }
56
57        IWD.InfinityScroll.hidePagination();
58
59        return true;
60    },
61
62    preparePagination: function() {
63        IWD.InfinityScroll.isHidePaginationBlock = false;
64
65        var page = IWD.InfinityScroll.getUrlParam(window.location.href, "p");
66        IWD.InfinityScroll.currentPage = !page ? 1 : page;
67
68        IWD.InfinityScroll.getHashParams();
69
70        if(IWD.InfinityScroll.hashPage != IWD.InfinityScroll.currentPage){
71            var url = IWD.InfinityScroll.setUrlParam(window.location.href, 'p', IWD.InfinityScroll.hashPage);
72            IWD.InfinityScroll.pagination_uploadPage(url);
73        }
74    },
75
76    hidePagination: function () {
77        if (IWD.InfinityScroll.isHidePaginationBlock) {
78            $ji(IWD.InfinityScroll.div_pager).css("display", "none");
79            $ji(IWD.InfinityScroll.div_limiter).css("display", "none");
80        }
81    },
82
83    loadBarShow: function () {
84        IWD.InfinityScroll.loadingFlag = true;
85        $ji('#iwd_load_bar').css("display", "block");
86        $ji('#iwd_load_more_pages').css("display", "none");
87    },
88
89    loadBarHide: function () {
90        IWD.InfinityScroll.loadingFlag = false;
91        $ji('#iwd_load_bar').css("display", "none");
92
93        if (IWD.InfinityScroll.isButtonMode) {
94            if (IWD.InfinityScroll.pagesCount > IWD.InfinityScroll.currentPage) {
95                $ji('#iwd_load_more_pages').css("display", "block");
96            }
97        }
98    },
99
100    appendPageBlockHead: function (page_block) {
101
102        if (IWD.InfinityScroll.isPageBlockHead) {
103            //console.log(page_block.id);
104            var current_page = page_block.attr('id').split('_').last();
105            $ji(page_block).prepend('<div class="page-block-head">Page ' +
106            current_page + ' from ' +
107            IWD.InfinityScroll.pagesCount + '</div>');
108        }
109
110        if (IWD.InfinityScroll.loadedPages == IWD.InfinityScroll.scrollToBlockTop - 1)
111            IWD.InfinityScroll.scrollToTopBlock();
112    },
113
114    scrollToTopBlock: function () {
115        var top = $ji("#iwd_uploaded_page_" + IWD.InfinityScroll.hashPage).offset().top;
116        window.scrollTo(0, top);
117    },
118
119    //upload and append products
120    uploadProducts: function () {
121        if (IWD.InfinityScroll.ajaxUrl && (IWD.InfinityScroll.currentPage < IWD.InfinityScroll.pagesCount)) {
122            IWD.InfinityScroll.loadBarShow();
123
124            IWD.InfinityScroll.currentPage++;
125            var pageBlockId = 'iwd_uploaded_page_' + IWD.InfinityScroll.currentPage;
126
127            $ji("#iwd_uploaded_pages").append('<div id="' + pageBlockId + '"></div>');
128            console.log(IWD.InfinityScroll.div_category_products);
129            console.log(IWD.InfinityScroll.div_category_products+'+script');
130            console.log(IWD.InfinityScroll.div_category_products +', '+ IWD.InfinityScroll.div_category_products+'+script');
131            this.loadPageAjax(pageBlockId, function (pageBlockId, block) {
132                $ji("#" + pageBlockId).append(block).promise().done(function(){
133                    $ji("#" + pageBlockId).find('.toolbar').remove();
134                    IWD.InfinityScroll.loadBarHide();
135                    IWD.InfinityScroll.loadedPages++;
136                    IWD.InfinityScroll.appendPageBlockHead($ji("#" + pageBlockId));
137                    // after
138                    if (IWD.InfinityScroll.uploadMode == 'scroll') {
139                        IWD.InfinityScroll.scrollAfter();
140                    } else if (IWD.InfinityScroll.uploadMode == 'button') {
141                        IWD.InfinityScroll.buttonAfter();
142                    }
143                    jQuery(window).resize();
144                    window.dispatchEvent(new Event('resize'));
145                });
146            });
147        }
148    },
149
150    loadPageAjax: function (pageBlockId, callback) {
151        $ji.post(
152            IWD.InfinityScroll.ajaxUrl,
153            {
154                'p': IWD.InfinityScroll.currentPage
155            },
156            function (response) {
157                //console.log($ji(response).find(IWD.InfinityScroll.div_category_products +', '+ IWD.InfinityScroll.div_category_products+'+script'));
158                //return false;
159                var block = $ji(response).find(IWD.InfinityScroll.div_category_products +', '+ IWD.InfinityScroll.div_category_products+'+script');
160                callback(pageBlockId, block);
161                // $ji("#" + pageBlockId).append(block).promise().done(function(){
162
163                    // $j(document).trigger('product-media-loaded', ProductMediaManager);
164                    // IWD.QuickView.Decorator.updateButton();
165                // });
166
167            }
168        );
169    },
170    uploadFirstPage: function () {
171        IWD.InfinityScroll.currentPage = 1;
172        var currentBlock  = $ji('.products-container');
173        $ji("#iwd_uploaded_pages").html('');
174        this.loadPageAjax(null, function (pageBlockId, block) {
175            block.find('.toolbar').remove();
176            block.find('.toolbar-bottom').remove();
177            currentBlock.replaceWith(block);
178            IWD.InfinityScroll.first_page();
179            $j('.super-attribute-select-block').selectpicker();
180            $j('.selectpicker').selectpicker();
181            $j('.block-layered-nav .toggle-block-btn').addClass('content-opened');
182            $j('.amshopby-overlay').hide();
183        });
184    },
185
186    smartUrl: function () {
187        if (!IWD.InfinityScroll.isSmartUrl)
188            return null;
189
190        IWD.InfinityScroll.getHashParams();
191
192        if (IWD.InfinityScroll.hashPage > 1 && IWD.InfinityScroll.hashPage <= IWD.InfinityScroll.pagesCount) {
193            if(IWD.InfinityScroll.uploadMode == 'button' || IWD.InfinityScroll.uploadMode == 'scroll'){
194                IWD.InfinityScroll.scrollToBlockTop = IWD.InfinityScroll.hashPage;
195
196                for (var i = 1; i < IWD.InfinityScroll.hashPage; i++) {
197                    IWD.InfinityScroll.loadingFlag = false;
198                    IWD.InfinityScroll.uploadProducts();
199                }
200
201                IWD.InfinityScroll.preLoad = 0;
202            }
203        }
204
205        return true;
206    },
207
208    getHashParams: function () {
209        var hash = window.location.hash;
210
211        if (hash != "") {
212            var regPage = /[?|&|#]page=([0-9]+)/i;
213            var param = regPage.exec(hash);
214            IWD.InfinityScroll.hashPage = (!param || !param[1]) ? 1 : param[1];
215        }
216    },
217
218    setHashParams: function (viewing_page) {
219        if (IWD.InfinityScroll.isSmartUrl && iwdChangeHashFlag) {
220            window.location.hash = "page=" + viewing_page;
221        }
222    },
223
224    viewingPage: function () {
225        if (IWD.InfinityScroll.currentPage <= 1)
226            return 1;
227
228        for (var i = 2; i <= IWD.InfinityScroll.currentPage; i++) {
229            var elem = $ji("#iwd_uploaded_page_" + i);
230            var elemTop = elem.offset().top;
231            var elemBottom = elemTop + elem.height();
232            if (elemTop <= $ji(window).scrollTop() && elemBottom > $ji(window).scrollTop())
233                return i;
234        }
235
236        return 1;
237    },
238
239    addUploadBlock: function () {
240        $ji(IWD.InfinityScroll.div_toolbar_bottom).before($ji("#iwd_load_next_page").show());
241    },
242
243    prepare: function () {
244        IWD.InfinityScroll.addUploadBlock();
245
246        if (IWD.InfinityScroll.isSmartUrl) {
247            IWD.InfinityScroll.smartUrl();
248        }
249
250        if (IWD.InfinityScroll.preLoad && !IWD.InfinityScroll.isButtonMode) {
251            IWD.InfinityScroll.uploadProducts();
252        }
253    },
254
255    addLoadingMask: function () {
256        $ji(IWD.InfinityScroll.div_category_products).append('<div id="iwd_page_loading_mask"><div class="loader"></div></div>');
257        $ji("#iwd_page_loading_mask").show();
258    },
259
260    getUrlParam: function(url, key){
261        var results = new RegExp('[\?&amp;]' + key + '=([^&amp;#]*)').exec(url);
262        if(results)
263            return results[1] || null;
264        return null
265    },
266
267    setUrlParam: function (url, key, value) {
268        var re = new RegExp("([?&])" + key + "=.*?(&|$)", "i");
269        var separator = url.indexOf('?') !== -1 ? "&" : "?";
270        if (url.match(re)){
271            return url.replace(re, '$1' + key + "=" + value + '$2');
272        } else {
273            var _url = url.split('#');
274            if(_url[1])
275                return _url[0] + separator + key + "=" + value + "#" + _url[1];
276            return _url[0] + separator + key + "=" + value;
277        }
278    },
279
280    /****************** M O D E *******************/
281    scroll: function () {
282        IWD.InfinityScroll.prepare();
283
284        $ji(window).scroll(function () {
285            if (!IWD.InfinityScroll.loadingFlag && IWD.InfinityScroll.currentPage < IWD.InfinityScroll.pagesCount) {
286                var currentPageBlock = $ji("#iwd_uploaded_page_"+IWD.InfinityScroll.currentPage);
287                if(currentPageBlock.length && currentPageBlock.offset().top < $ji(window).scrollTop() + $ji(window).height()) {
288                    //if ((($ji(window).scrollTop() + $ji(window).height()) + IWD.InfinityScroll.whenBeginLoad) >= $ji(document).height()) {
289                    IWD.InfinityScroll.uploadProducts();
290                }
291            }
292            var viewing_page = IWD.InfinityScroll.viewingPage();
293            IWD.InfinityScroll.setHashParams(viewing_page);
294        });
295    },
296
297    button: function () {
298        IWD.InfinityScroll.prepare();
299
300        $ji('#iwd_load_more_pages').on('click', function () {
301            IWD.InfinityScroll.uploadProducts();
302        });
303
304        $ji(window).scroll(function () {
305            var viewing_page = IWD.InfinityScroll.viewingPage();
306            IWD.InfinityScroll.setHashParams(viewing_page);
307        });
308    },
309
310    pagination: function () {
311        $ji(IWD.InfinityScroll.paginationPath).on('click', function (event) {
312            event.preventDefault();
313
314            var url = $ji(this).attr('href');
315
316            IWD.InfinityScroll.pagination_uploadPage(url);
317        });
318    },
319
320    pagination_uploadPage: function(url){
321        IWD.InfinityScroll.addLoadingMask();
322        $ji.post(
323            url,
324            {
325
326            },
327            function (response) {
328                //console.log($ji(response).find(IWD.InfinityScroll.div_category_products +', '+ IWD.InfinityScroll.div_category_products+'+script'));
329                //return false;
330                $ji(IWD.InfinityScroll.div_category_products).html('');
331                $ji(IWD.InfinityScroll.div_category_products).append($ji(response).find(IWD.InfinityScroll.div_category_products + ' > *' +', '+ IWD.InfinityScroll.div_category_products+'+script')).
332                    promise().
333                    done(function(){
334                        IWD.InfinityScroll.pagination();
335
336                        var page = IWD.InfinityScroll.getUrlParam(url, 'p');
337                        var viewing_page = !page ? 1 : page;
338                        IWD.InfinityScroll.setHashParams(viewing_page);
339
340                        IWD.InfinityScroll.paginationAfter();
341                        jQuery(window).resize();
342                        window.dispatchEvent(new Event('resize'));
343                        // $j(document).trigger('product-media-loaded', ProductMediaManager);
344                        // IWD.QuickView.Decorator.updateButton();
345                    });
346
347            }
348        );
349        //$ji(IWD.InfinityScroll.div_category_products).load(
350        //    url + " " + IWD.InfinityScroll.div_category_products + " > *",
351        //    {},
352        //    function () {
353        //        IWD.InfinityScroll.pagination();
354        //
355        //        var page = IWD.InfinityScroll.getUrlParam(url, 'p');
356        //        var viewing_page = !page ? 1 : page;
357        //        IWD.InfinityScroll.setHashParams(viewing_page);
358        //
359        //        IWD.InfinityScroll.paginationAfter();
360        //    }
361        //);
362    },
363
364    //custom logic after load page
365    scrollAfter: function () {
366        //by infortis them
367        //$ji(IWD.InfinityScroll.div_category_products).waitForImages(function() {
368        //    setGridItemsEqualHeight($ji);
369        //});
370    },
371    buttonAfter: function () {
372        //by infortis them
373        //$ji(IWD.InfinityScroll.div_category_products).waitForImages(function() {
374        //  setGridItemsEqualHeight($ji);
375        //});
376    },
377    paginationAfter: function () {
378        //by infortis them
379        //$ji(IWD.InfinityScroll.div_category_products).waitForImages(function() {
380        //    setGridItemsEqualHeight($ji);
381        //    setGridItemsEqualHeight($ji);
382        //});
383    }
384};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.