PageSourceSearch

https://boxes.com.uy/js/jquery.rcbrand.js

js boxes.com.uy collected 2026-10-08 06:30:25 UTC 15,112 bytes, 368 lines download raw bytes

1/*www.oguzhansengul.com*/
2(function ($) {
3
4    $.fn.rcbrand = function (options) {
5
6        var defaults = $.extend({
7            visibleItems: 4,
8            itemsToScroll: 3,
9            animationSpeed: 400,
10            infinite: true,
11            navigationTargetSelector: null,
12            autoPlay: {
13                enable: false,
14                interval: 5000,
15                pauseOnHover: true
16            },
17            responsiveBreakpoints: { 
18                portrait: { 
19                    changePoint:480,
20                    visibleItems: 1,
21                    itemsToScroll: 1
22                }, 
23                landscape: { 
24                    changePoint:640,
25                    visibleItems: 2,
26                    itemsToScroll: 2
27                },
28                tablet: { 
29                    changePoint:768,
30                    visibleItems: 3,
31                    itemsToScroll: 3
32                }
33            },
34            loaded: function(){ },
35            before: function(){ },
36            after: function(){ },
37            resize: function(){ }
38        }, options);
39               
40        
41        var object = $(this);
42        var settings = $.extend(defaults, options);        
43        var itemsWidth;
44        var canNavigate = true; 
45        var itemCount; 
46        var itemsVisible = settings.visibleItems; 
47        var itemsToScroll = settings.itemsToScroll;
48        var responsivePoints = [];
49        var resizeTimeout;
50        var autoPlayInterval;        
51          
52        
53        var methods = {
54                
55            init: function() {
56                return this.each(function () {
57                    methods.appendHTML();
58                    methods.setEventHandlers();                  
59                    methods.initializeItems();                    
60                });
61            },           
62            
63            initializeItems: function() {
64                
65                var obj = settings.responsiveBreakpoints;
66                for(var i in obj) { responsivePoints.push(obj[i]); }
67                responsivePoints.sort(function(a, b) { return a.changePoint - b.changePoint; });
68                var childSet = object.children();
69                childSet.first().addClass("index");
70                itemsWidth = methods.getCurrentItemWidth();
71                itemCount = childSet.length;
72                childSet.width(itemsWidth);
73                if(settings.infinite) {
74                    methods.offsetItemsToBeginning(Math.floor(childSet.length / 2)); 
75                    object.css({
76                        'left': -itemsWidth * Math.floor(childSet.length / 2)
77                    }); 
78                }
79                $(window).trigger('resize');              
80                object.fadeIn();
81                settings.loaded.call(this, object);
82                
83            },          
84            
85            appendHTML: function() {
86                
87                object.addClass("rc-rcbrand-ul");
88                object.wrap("<div class='rc-rcbrand-container'><div class='rc-rcbrand-inner'></div></div>");
89                object.find("li").addClass("rc-rcbrand-item");
90                
91                if(settings.navigationTargetSelector && $(settings.navigationTargetSelector).length > 0) {
92                    $("<div class='rc-rcbrand-nav-left'></div><div class='rc-rcbrand-nav-right'></div>").appendTo(settings.navigationTargetSelector);
93                } else {
94                    settings.navigationTargetSelector = object.parent();
95                    $("<div class='rc-rcbrand-nav-left'></div><div class='rc-rcbrand-nav-right'></div>").insertAfter(object);    
96                }
97                    
98                if(settings.infinite) {    
99                    var childSet = object.children();
100                    var cloneContentBefore = childSet.clone();
101                    var cloneContentAfter = childSet.clone();
102                    object.prepend(cloneContentBefore);
103                    object.append(cloneContentAfter);
104                }
105                
106            },
107            setEventHandlers: function() {
108                var self = this;
109                var childSet = object.children();
110                
111                $(window).on("resize", function(event){
112                    canNavigate = false;
113                    clearTimeout(resizeTimeout);
114                    resizeTimeout = setTimeout(function(){
115                        canNavigate = true;
116                        methods.calculateDisplay();
117                        itemsWidth = methods.getCurrentItemWidth();
118                        childSet.width(itemsWidth);
119                        
120                        if(settings.infinite) {
121                            object.css({
122                                'left': -itemsWidth * Math.floor(childSet.length / 2)
123                            });        
124                        } else {
125                            methods.clearDisabled();
126                            $(settings.navigationTargetSelector).find(".rc-rcbrand-nav-left").addClass('disabled');
127                            object.css({
128                                'left': 0
129                            });
130                        }
131                        
132                        settings.resize.call(self, object);
133
134                    }, 100);
135                    
136                });                    
137                
138                $(settings.navigationTargetSelector).find(".rc-rcbrand-nav-left").on("click", function (event) {
139                    methods.scroll(true);
140                });
141                
142                $(settings.navigationTargetSelector).find(".rc-rcbrand-nav-right").on("click", function (event) {
143                    methods.scroll(false);
144                });
145                
146                if(settings.autoPlay.enable) {
147
148                    methods.setAutoplayInterval();
149
150                    if (settings.autoPlay.pauseOnHover === true) {
151                        object.on({
152                            mouseenter : function() {
153                                canNavigate = false;
154                            },
155                            mouseleave : function() {
156                                canNavigate = true;
157                            }
158                        });        
159                    }            
160                    
161                }
162                
163                object[0].addEventListener('touchstart', methods.touchHandler.handleTouchStart, false);        
164                object[0].addEventListener('touchmove', methods.touchHandler.handleTouchMove, false);                
165                
166            },                 
167            
168            calculateDisplay: function() {
169                var contentWidth = $('html').width();
170                var largestCustom = responsivePoints[responsivePoints.length-1].changePoint; 
171                
172                for(var i in responsivePoints) {
173                    
174                    if(contentWidth >= largestCustom) { 
175                        itemsVisible = settings.visibleItems;
176                        itemsToScroll = settings.itemsToScroll;
177                        break;
178                    }
179                    else { 
180                    
181                        if(contentWidth < responsivePoints[i].changePoint) {
182                            itemsVisible = responsivePoints[i].visibleItems;
183                            itemsToScroll = responsivePoints[i].itemsToScroll;
184                            break;
185                        }
186                        else {
187                            continue;
188                        }
189                    }
190                }
191                
192            },                             
193            
194            scroll: function(reverse) {
195
196                if(typeof reverse === 'undefined') { reverse = true }
197
198                if(canNavigate == true) {
199                    canNavigate = false;
200                    settings.before.call(this, object);
201                    itemsWidth = methods.getCurrentItemWidth();
202                    
203                    if(settings.autoPlay.enable) {
204                        clearInterval(autoPlayInterval);
205                    }
206                    
207                    if(!settings.infinite) {
208                        
209                        var scrollDistance = itemsWidth * itemsToScroll;
210                        
211                        if(reverse) {                            
212                            object.animate({
213                                'left': methods.calculateNonInfiniteLeftScroll(scrollDistance)
214                            }, settings.animationSpeed, function(){
215                                settings.after.call(this, object);
216                                canNavigate = true;
217                            });                            
218                            
219                        } else {
220                            object.animate({
221                                'left': methods.calculateNonInfiniteRightScroll(scrollDistance)
222                            },settings.animationSpeed, function(){
223                                settings.after.call(this, object);
224                                canNavigate = true;
225                            });                                    
226                        }
227                        
228                        
229                        
230                    } else {                    
231                        object.animate({
232                            'left' : reverse ? "+=" + itemsWidth * itemsToScroll : "-=" + itemsWidth * itemsToScroll
233                        }, settings.animationSpeed, function() {
234                            settings.after.call(this, object);
235                            canNavigate = true;
236                            
237                            if(reverse) { 
238                                methods.offsetItemsToBeginning(itemsToScroll); 
239                            } else {
240                                methods.offsetItemsToEnd(itemsToScroll);
241                            }
242                            methods.offsetSliderPosition(reverse); 
243                            
244                        });
245                    }
246                    
247                    if(settings.autoPlay.enable) {
248                        methods.setAutoplayInterval();
249                    }
250                    
251                }
252            },
253            
254            touchHandler: {
255
256                xDown: null,
257                yDown: null,
258                handleTouchStart: function(evt) {                                         
259                    this.xDown = evt.touches[0].clientX;                                      
260                    this.yDown = evt.touches[0].clientY;
261                }, 
262                handleTouchMove: function (evt) {
263                    if (!this.xDown || !this.yDown) {
264                        return;
265                    }
266
267                    var xUp = evt.touches[0].clientX;                                    
268                    var yUp = evt.touches[0].clientY;
269
270                    var xDiff = this.xDown - xUp;
271                    var yDiff = this.yDown - yUp;
272                    if (Math.abs( xDiff ) > 0) {
273                        if ( xDiff > 0 ) {
274                            methods.scroll(false);
275                        } else {
276                            methods.scroll(true);
277                        }                       
278                    }
279                    this.xDown = null;
280                    this.yDown = null;
281                    canNavigate = true;
282                }
283            },            
284            
285            getCurrentItemWidth: function() {
286                return (object.parent().width())/itemsVisible;
287            },            
288            
289            offsetItemsToBeginning: function(number) {
290                if(typeof number === 'undefined') { number = 1 }
291                for(var i = 0; i < number; i++) {
292                    object.children().last().insertBefore(object.children().first());
293                }    
294            },                
295            
296            offsetItemsToEnd: function(number) {
297                if(typeof number === 'undefined') { number = 1 }
298                for(var i = 0; i < number; i++) {
299                    object.children().first().insertAfter(object.children().last());    
300                }
301            },            
302            
303            offsetSliderPosition: function(reverse) {
304                var left = parseInt(object.css('left').replace('px', ''));
305                if (reverse) { 
306                    left = left - itemsWidth * itemsToScroll; 
307                } else {
308                    left = left + itemsWidth * itemsToScroll;
309                }
310                object.css({
311                    'left': left
312                });
313            },
314
315            getOffsetPosition: function() {
316                return parseInt(object.css('left').replace('px', ''));    
317            },
318            
319            calculateNonInfiniteLeftScroll: function(toScroll) {
320                
321                methods.clearDisabled();
322                if(methods.getOffsetPosition() + toScroll >= 0) {
323                    $(settings.navigationTargetSelector).find(".rc-rcbrand-nav-left").addClass('disabled');
324                    return 0;
325                } else {
326                    return methods.getOffsetPosition() + toScroll;
327                }
328            },
329            
330            calculateNonInfiniteRightScroll: function(toScroll){
331                
332                methods.clearDisabled();
333                var negativeOffsetLimit = (itemCount * itemsWidth) - (itemsVisible * itemsWidth);
334                
335                if(methods.getOffsetPosition() - toScroll <= -negativeOffsetLimit) {
336                    $(settings.navigationTargetSelector).find(".rc-rcbrand-nav-right").addClass('disabled');
337                    return -negativeOffsetLimit;        
338                } else {
339                    return methods.getOffsetPosition() - toScroll;
340                }
341            },
342            
343            setAutoplayInterval: function(){
344                autoPlayInterval = setInterval(function() {
345                    if (canNavigate) {
346                        methods.scroll(false);
347                    }
348                }, settings.autoPlay.interval);                    
349            },
350            
351            clearDisabled: function() {
352                var parent = $(settings.navigationTargetSelector);
353                parent.find(".rc-rcbrand-nav-left").removeClass('disabled');
354                parent.find(".rc-rcbrand-nav-right").removeClass('disabled');
355            }                        
356            
357        };
358
359        if (methods[options]) {     
360            return methods[options].apply(this, Array.prototype.slice.call(arguments, 1));
361        } else if (typeof options === 'object' || !options) {    
362            return methods.init.apply(this);  
363        } else {
364            $.error(method);
365        }        
366};
367
368})(jQuery);

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.