PageSourceSearch

https://bangalinet.com/js/pgwslider.js

js bangalinet.com collected 2026-10-02 12:18:50 UTC 10,262 bytes, 279 lines download raw bytes

1/**
2 * PgwSlider - Version 1.1
3 *
4 * Copyright 2014, Jonathan M. Piat
5 * http://pgwjs.com - http://pagawa.com
6 * 
7 * Released under the MIT license - http://opensource.org/licenses/MIT
8 */
9;(function($){
10    $.fn.pgwSlider = function(options) {
11
12        var defaults = {
13            autoSlide : true,
14            adaptiveHeight : false,
15            adaptiveDuration : 400,
16            transitionDuration : 400,
17            intervalDuration : 3000
18        };
19
20        if (this.length == 0) {
21            return this;
22        } else if(this.length > 1) {
23            this.each(function() {
24                $(this).pgwSlider(options);
25            });
26            return this;
27        }
28
29        var pgwSlider = {};
30        pgwSlider.plugin = this;
31        pgwSlider.data = [];
32        pgwSlider.config = {};
33        pgwSlider.currentNb = 0;
34        pgwSlider.nbElements = 0;
35        pgwSlider.eventInterval = null;
36        pgwSlider.window = $(window);
37
38        // Init
39        var init = function() {
40        
41            // Merge the user options with the defaults config
42            pgwSlider.config = $.extend({}, defaults, options);
43
44            // Setup
45            setup();
46
47            // Activate interval
48            if (pgwSlider.config.autoSlide) {
49                activateInterval();
50            }
51            
52            return true;
53        };
54
55        // Get element
56        var getElement = function(obj) {
57            var element = {};
58
59            // Get link
60            var elementLink = obj.find('a').attr('href');
61            if ((typeof elementLink != 'undefined') && (elementLink != '')) {
62                element.link = elementLink;
63                var elementLinkTarget = obj.find('a').attr('target');
64                if ((typeof elementLinkTarget != 'undefined') && (elementLinkTarget != '')) {
65                    element.linkTarget = elementLinkTarget;
66                }
67            }
68
69            // Get image 
70            var elementThumbnail = obj.find('img').attr('src');
71            if ((typeof elementThumbnail != 'undefined') && (elementThumbnail != '')) {
72                element.thumbnail = elementThumbnail;
73            }
74
75            var elementImage = obj.find('img').attr('data-large-src');
76            if ((typeof elementImage != 'undefined') && (elementImage != '')) {
77                element.image = elementImage;
78            }
79
80            // Get title 
81            var elementSpan = obj.find('span').text();
82            if ((typeof elementSpan != 'undefined') && (elementSpan != '')) {
83                element.title = elementSpan;
84            } else {
85                var elementTitle = obj.find('img').attr('alt');
86                if ((typeof elementTitle != 'undefined') && (elementTitle != '')) {
87                    element.title = elementTitle;
88                }
89            }
90
91            // Get description
92            var elementDescription = obj.find('img').attr('data-description');
93            if ((typeof elementDescription != 'undefined') && (elementDescription != '')) {
94                element.description = elementDescription;
95            }
96
97            return element;
98        };
99
100        // Update the current height
101        var updateHeight = function(height, animate) {  
102
103            // Adjust the height of the right list items
104            var elementHeight = ((height - ((pgwSlider.nbElements - 1) * 6)) / pgwSlider.nbElements);
105            var elementWidth = (100 / pgwSlider.nbElements);
106            pgwSlider.plugin.find('ul li').css({ width: elementWidth + '%' });
107        
108            // Adjust the height of the main container
109            if (typeof animate != 'undefined' && animate) {
110                pgwSlider.plugin.find('.ps-current').animate({
111                    height: height
112                }, pgwSlider.config.adaptiveDuration, function() {
113                    pgwSlider.plugin.find('ul li').animate({ height: elementHeight }, pgwSlider.config.adaptiveDuration);
114                });
115                
116            } else {
117                pgwSlider.plugin.find('.ps-current').css('height', height);
118                pgwSlider.plugin.find('ul li').css('height', elementHeight);
119            }
120            
121            return true;
122        };
123
124        // Setup
125        var setup = function() {
126        
127            // Create container
128            pgwSlider.plugin.wrap('<div class="pgwSlider"></div>');
129            pgwSlider.plugin = pgwSlider.plugin.parent();
130            pgwSlider.plugin.find('ul').removeClass('pgwSlider');
131            pgwSlider.plugin.prepend('<div class="ps-current"></div>');
132            pgwSlider.nbElements = pgwSlider.plugin.find('ul li').length;
133
134            // Get slider elements
135            var elementId = 0;
136            pgwSlider.plugin.find('ul li').each(function() {
137                var element = getElement($(this));
138                element.id = elementId;
139                pgwSlider.data.push(element);
140
141                $(this).addClass('elt_' + element.id);
142
143                if (element.title) {
144                    if ($(this).find('span').length == 1) {
145                        if ($(this).find('span').text() == '') {
146                            $(this).find('span').text(element.title);
147                        }
148                    } else {
149                        $(this).find('img').after('<span>' + element.title + '</span>');
150                    }
151                }
152
153                // Disable native links in the right list
154                $(this).css('cursor', 'pointer').click(function(event) {
155                    event.preventDefault();
156                    displayCurrent(element.id);
157                });
158                
159                elementId++;
160            });
161
162            // Attach slide events
163            if (pgwSlider.config.autoSlide) {
164                pgwSlider.plugin.on('mouseenter', function() {
165                    clearInterval(pgwSlider.eventInterval);
166                    pgwSlider.eventInterval = null;
167                }).on('mouseleave', function() {
168                    activateInterval();
169                });
170            }
171
172            // Display the first element
173            displayCurrent(0, true);
174            
175            return true;
176        };
177
178        // Display current element
179        var displayCurrent = function(elementId, init) {
180
181            pgwSlider.currentNb = elementId;
182            var element = pgwSlider.data[elementId];
183            var elementContainer = pgwSlider.plugin.find('.ps-current');
184
185            // Opacify the current element
186            elementContainer.animate({
187                opacity : 0,
188            }, pgwSlider.config.transitionDuration, function() {
189            
190                pgwSlider.plugin.find('ul li').css('opacity', '0.6');
191                pgwSlider.plugin.find('ul li.elt_' + elementId).css('opacity', '1');
192
193                // Create image
194                if (element.image) {
195                    elementContainer.html('<img src="' + element.image + '" alt="' + (element.title ? element.title : '') + '">');
196                } else if (element.thumbnail) {
197                    elementContainer.html('<img src="' + element.thumbnail + '" alt="' + (element.title ? element.title : '') + '">');
198                } else {
199                    elementContainer.html('');
200                }           
201
202                // Create caption
203                var elementText = '';
204                if (element.title) {
205                    elementText += '<b>' + element.title + '</b>';
206                }
207
208                if (element.description) {
209                    if (elementText != '') elementText += '<br>';
210                    elementText += element.description;
211                }
212
213                if (elementText != '') {
214                    elementContainer.append('<span>' + elementText + '</span>');
215                }
216
217                // Check if the element has a link
218                if (element.link) {
219                    var linkTarget = '';
220                    if (element.linkTarget) {
221                        var linkTarget = ' target="' + element.linkTarget + '"';
222                    }
223                    elementContainer.html('<a href="' + element.link + '"' + linkTarget + '>' + elementContainer.html() + '</a>');
224                }
225
226                // Set the container height
227                elementContainer.find('img').load(function() {
228                    if (typeof pgwSlider.plugin.find('.ps-current').attr('data-checked') == 'undefined') {
229                    
230                        var maxHeight = pgwSlider.plugin.find('.ps-current img').height();
231                        updateHeight(maxHeight);
232                        pgwSlider.plugin.find('.ps-current').attr('data-checked', 'true');
233                        
234                        pgwSlider.window.resize(function() {
235                            var maxHeight = pgwSlider.plugin.find('.ps-current img').height();
236                            updateHeight(maxHeight);
237                        });
238
239                    } else if (pgwSlider.config.adaptiveHeight) {
240                        var maxHeight = pgwSlider.plugin.find('.ps-current img').height();
241                        updateHeight(maxHeight, true);
242                    }
243                });
244
245                // Display the new element
246                elementContainer.animate({
247                    opacity : 1,
248                }, pgwSlider.config.transitionDuration);
249            });
250            
251            return true;
252        };
253
254        // Activate interval
255        var activateInterval = function() {
256        
257            if (pgwSlider.nbElements > 1 && pgwSlider.config.autoSlide) {
258            
259                pgwSlider.eventInterval = setInterval(function() {
260                    var maxNb = pgwSlider.nbElements - 1;
261                    
262                    if (pgwSlider.currentNb + 1 <= maxNb) {
263                        var nextNb = pgwSlider.currentNb + 1;
264                    } else {
265                        var nextNb = 0;
266                    }
267                    
268                    displayCurrent(nextNb);
269                    
270                }, pgwSlider.config.intervalDuration);
271            }
272            
273            return true;
274        };
275
276        init();
277        return this;
278    }
279})(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.