PageSourceSearch

https://ceps.rs/modules/mod_sj_k2_slideshowpro/assets/js/jsmart.slider.js

js ceps.rs collected 2026-10-04 01:28:34 UTC 27,008 bytes, 773 lines download raw bytes

1
2(function($) {
3
4    var SmartSlider = function(element, options){
5		//Defaults are below
6		var settings = $.extend({}, $.fn.smartSlider.defaults, options);
7
8        //Useful variables. Play carefully.
9        var vars = {
10            currentSlide: 0,
11            currentImage: '',
12            totalSlides: 0,
13            running: false,
14            paused: false,
15            stop: true
16        };
17		
18        //Get this slider
19        var slider = $(element);
20        slider.data('smart:vars', vars);
21        slider.css('position','relative');
22        slider.addClass('smartSlider');
23        
24		// var info_products = slider.find('.product_detail');
25		
26		//Max time for each slide
27		var max_time_out	= Math.max(settings.boxCols * settings.boxRows*20,settings.boxCols * 2*100,settings.slices*50);
28		
29        //Find our slider children
30        var kids = slider.find('.background_image').children();
31        kids.each(function() {
32            var child = $(this);
33			
34			//Get img width & height
35            // var childWidth = child.width();
36            // if(childWidth == 0) childWidth = child.attr('width');
37			// if(childWidth == 0 || childWidth==undefined) childWidth = child.find("img").width();
38            // var childHeight = child.height();
39            // if(childHeight == 0) childHeight = child.attr('height');
40            // if(childHeight == 0 || childHeight==undefined) childHeight = child.find("img").height();
41			
42			childWidth 	= settings.image_width;
43			childHeight = settings.image_height;
44			
45            var link = '';
46            if(!child.is('img')){
47                if(child.is('a')){
48                    child.addClass('smart-imageLink');
49                    link = child;
50                }
51                child = child.find('img:first');
52            }
53            
54			
55			//Resize the slider
56            if(childWidth > slider.width()){
57                slider.width(childWidth);
58            }
59			
60            if(childHeight > slider.height()){
61                slider.height(childHeight);
62            }
63			
64            if(link != ''){
65                link.css('display','none');
66            }
67			
68            child.css('display','none');
69            vars.totalSlides++;
70        });
71        
72		if (settings.align_image=="right" && slider.width()>slider.parent().width()){
73			slider.css("right",slider.width()-slider.parent().width());
74		}
75		
76		var slider_width	= slider.width();
77		var slider_height	= slider.height();
78		
79        // //If randomStart
80        // if(settings.randomStart){
81        	// settings.startSlide = Math.floor(Math.random() * vars.totalSlides);
82        // }
83        
84        // //Set startSlide
85        // if(settings.startSlide > 0){
86            // if(settings.startSlide >= vars.totalSlides) settings.startSlide = vars.totalSlides - 1;
87            // vars.currentSlide = settings.startSlide;
88        // }
89        
90        //Get initial image
91        if($(kids[vars.currentSlide]).is('img')){
92            vars.currentImage = $(kids[vars.currentSlide]);
93        } else {
94            vars.currentImage = $(kids[vars.currentSlide]).find('img:first');
95        }
96        
97        //Show initial link
98        if($(kids[vars.currentSlide]).is('a')){
99            $(kids[vars.currentSlide]).css('display','block');
100        }
101        
102        //Set first background
103		if (settings.align_image=="left"){
104			slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat');
105		}else{
106			slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat right top');
107		}
108        
109        // //In the words of Super Mario "let's a go!"
110        var timer = 0;
111        // if(!settings.manualAdvance && kids.length > 1){
112            // timer = setInterval(function(){ smartRun(slider, kids, settings, false); }, settings.pauseTime);
113        // }
114
115		
116		//Previous and Next button
117		$('.navigation_button div.left_button', slider.parent()).bind('click', function(){
118			if(vars.running) return false;
119			clearInterval(timer);
120			timer = '';
121			vars.currentSlide -= 2;
122			
123			// $('.info_product .product_detail', slider.parent()).remove();
124			// $('.info_product', slider.parent()).append(info_products.eq(vars.currentSlide+1).css("display","block"));
125			
126			smartRun(slider, kids, settings, 'prev');
127		});
128		
129		$('.navigation_button div.right_button', slider.parent()).bind('click', function(){
130			if(vars.running) return false;
131			clearInterval(timer);
132			timer = '';
133			
134			// $('.info_product .product_detail', slider.parent()).remove();
135			// $('.info_product', slider.parent()).append(info_products.eq(vars.currentSlide+1).css("display","block"));
136			
137			smartRun(slider, kids, settings, 'next');
138		});
139        
140
141		//Change item selected
142		// //Set initial active link
143		// $('.navigation_sspro a:eq('+ vars.currentSlide +')', slider).addClass('active');
144		$('.navigation_sspro div', slider.parent()).bind('click', function(){
145			if(vars.running) return false;
146			if($(this).hasClass('active')) return false;
147			clearInterval(timer);
148			timer = '';
149			if (settings.align_image=="left"){
150				// slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat');
151				
152				// setTimeout(function(){
153					// slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat');
154				// }, max_time_out);
155			}else{
156				// setTimeout(wait_me,100);
157				
158				// // slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat right top');
159				
160				// setTimeout(function(){
161					// slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat right top');
162				// }, max_time_out);
163			}
164			
165			vars.currentSlide = $(this).attr("class");
166			
167			// $('.info_product .product_detail', slider.parent()).remove();
168			// $('.info_product', slider.parent()).append(info_products.eq(parseInt($(this).attr("class"))+1).css("display","block"));
169			
170			smartRun(slider, kids, settings, 'control');
171        });
172		
173		//Change item selected with style bullet
174		slider.parent().find('div.bullet_button').each(function(index){
175			$(this).bind("click",function(){
176				if(vars.running) return false;
177				if($(this).hasClass('active')) return false;
178				clearInterval(timer);
179				timer = '';
180				
181				if (settings.align_image=="left"){
182					// slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat');
183					
184					// setTimeout(function(){
185						// slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat');
186					// }, max_time_out);
187				}else{
188					// slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat right top');
189					
190					// setTimeout(function(){
191						// slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat right top');
192					// }, max_time_out);
193				}
194
195				vars.currentSlide = index-1;
196
197				// $('.info_product .product_detail', slider.parent()).remove();
198				// $('.info_product', slider.parent()).append(info_products.eq(index).css("display","block"));
199				
200				smartRun(slider, kids, settings, 'control');
201			});
202		});
203		
204		
205		//Resize height of info product
206		$('.info_product', slider.parent()).css("height",slider_height);
207		
208        //Change background of slider
209		function change_background(){
210			if (options.align_image=="left"){
211				slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat');
212			}else{
213				slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat right top');
214			}
215		}
216        
217        //Event when Animation finishes
218        slider.bind('smart:animFinished', function(){
219			
220			change_background();
221			
222            vars.running 	= false; 
223			slide_running	= false;
224            //Hide child links
225            $(kids).each(function(){
226                if($(this).is('a')){
227                    $(this).css('display','none');
228                }
229            });
230            
231			//Show current link
232            if($(kids[vars.currentSlide]).is('a')){
233                $(kids[vars.currentSlide]).css('display','block');
234            }
235            
236			// //Restart the timer
237            // if(timer == '' && !vars.paused && !settings.manualAdvance){
238                // timer = setInterval(function(){ smartRun(slider, kids, settings, false); }, settings.pauseTime);
239            // }
240            
241			//Trigger the afterChange callback
242            settings.afterChange.call(this);
243        });
244        
245		function start_point(){
246			slide_running	= true;
247		}
248		
249        // Add slices for slice animations
250        var createSlices = function(slider, settings, vars){
251			
252			if (settings.align_image=="left"){
253				divWrapper= $('<div/>', {
254					id: 'wrapperImage'+settings.random_time
255				}).css({
256					position:'relative',
257					top:0,
258					left:0,
259					height:  slider_height
260				}).appendTo(slider);
261			}else{
262				divWrapper= $('<div/>', {
263					id: 'wrapperImage'+settings.random_time
264				}).css({
265					position:'absolute',
266					top:0,
267					right: 0,
268					height:  slider_height,
269					// width:  vars.currentImage.attr("width")
270					// width:  slider_width
271					width:  vars.currentImage.width()
272				}).appendTo(slider);
273			}
274			
275			for(var i = 0; i < settings.slices; i++){
276				var sliceWidth = Math.round(slider_width/settings.slices);
277				if(i == settings.slices - 1){
278					divWrapper.append(
279						$('<div class="smart-slice"></div>').css({ 
280							left:(sliceWidth*i)+'px', 
281							width:(slider_width-(sliceWidth*i))+'px',
282							height:'0px', 
283							opacity:'0', 
284							background: 'url("'+ vars.currentImage.attr('src') +'") no-repeat -'+ ((sliceWidth + (i * sliceWi
284dth)) - sliceWidth) +'px 0%'
285						})
286					);
287				} else {
288					divWrapper.append(
289						$('<div class="smart-slice"></div>').css({ 
290							left:(sliceWidth*i)+'px', 
291							width:sliceWidth+'px',
292							height:'0px', 
293							opacity:'0', 
294							background: 'url("'+ vars.currentImage.attr('src') +'") no-repeat -'+ ((sliceWidth + (i * sliceWidth)) - sliceWidth) +'px 0%'
295						})
296					);
297				}
298			}
299        }
300		
301		// Add boxes for box animations
302		var createBoxes = function(slider, settings, vars){
303			if (settings.align_image=="left"){
304				divWrapper= $('<div/>', {
305					id: 'wrapperImage'+settings.random_time
306				}).css({
307					position:'relative',
308					top:0,
309					left:0
310				}).appendTo(slider);
311			}else{
312				divWrapper= $('<div/>', {
313					id: 'wrapperImage'+settings.random_time
314				}).css({
315					position: 'absolute',
316					top: 0,
317					right: 0,
318					height:  slider_height,
319					// width:  vars.currentImage.attr("width")
320					//boi vi che do none nen phai de che do tren
321					// width:  slider_width
322					width:  vars.currentImage.width()
323				}).appendTo(slider);
324			}
325			
326			var boxWidth = Math.round(slider_width/settings.boxCols);
327			var boxHeight = Math.round(slider_height/settings.boxRows);
328			
329			for(var rows = 0; rows < settings.boxRows; rows++){
330				for(var cols = 0; cols < settings.boxCols; cols++){
331					if(cols == settings.boxCols-1){
332						divWrapper.append(
333							$('<div class="smart-box"></div>').css({ 
334								opacity:0,
335								left:(boxWidth*cols)+'px', 
336								top:(boxHeight*rows)+'px',
337								width:(slider_width-(boxWidth*cols))+'px',
338								height:boxHeight+'px',
339								background: 'url("'+ vars.currentImage.attr('src') +'") no-repeat -'+ ((boxWidth + (cols * boxWidth)) - boxWidth) +'px -'+ ((boxHeight + (rows * boxHeight)) - boxHeight) +'px'
340							})
341						);
342					} else {
343						divWrapper.append(
344							$('<div class="smart-box"></div>').css({
345								opacity:0,
346								left:(boxWidth*cols)+'px', 
347								top:(boxHeight*rows)+'px',
348								width:boxWidth+'px',
349								height:boxHeight+'px',
350								background: 'url("'+ vars.currentImage.attr('src') +'") no-repeat -'+ ((boxWidth + (cols * boxWidth)) - boxWidth) +'px -'+ ((boxHeight + (rows * boxHeight)) - boxHeight) +'px'
351							})
352						);
353					}
354				}
355			}
356		}
357
358        // Private run method
359		var smartRun = function(slider, kids, settings, nudge){
360			//Get our vars
361			var vars = slider.data('smart:vars');
362            
363            // //Trigger the lastSlide callback
364            // if(vars && (vars.currentSlide == vars.totalSlides - 1)){ 
365				// settings.lastSlide.call(this);
366			// }
367            
368            // Stop
369			if((!vars || vars.stop) && !nudge) return false;
370			
371			//Trigger the beforeChange callback
372			// settings.beforeChange.call(this);
373					
374			//Set current background before change
375			if(!nudge){
376				alert('co bao jo em biet');
377				if (settings.align_image=="left"){
378					slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat');
379				}else{
380					slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat right top');
381				}
382				// slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat');
383			} else {
384				if(nudge == 'prev'){
385					if (settings.align_image=="left"){
386						// slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat');
387						
388						// setTimeout(function(){
389							// slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat');
390						// }, max_time_out);
391					}else{
392						// slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat right top');
393						
394						// setTimeout(function(){
395							// slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat right top');
396						// }, max_time_out);
397					}
398					// slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat');
399				}
400				if(nudge == 'next'){
401					if (settings.align_image=="left"){
402						// slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat');
403						
404						// setTimeout(function(){
405							// slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat');
406						// }, max_time_out);
407					}else{
408						// slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat right top');
409						
410						// setTimeout(function(){
411							// slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat right top');
412						// }, max_time_out);
413					}
414					// slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat');
415				}
416			}
417			vars.currentSlide++;
418           
419		   //Trigger the slideshowEnd callback
420			if(vars.currentSlide == vars.totalSlides){ 
421				vars.currentSlide = 0;
422				// settings.slideshowEnd.call(this);
423			}
424			
425			if(vars.currentSlide < 0) vars.currentSlide = (vars.totalSlides - 1);
426			//Set vars.currentImage
427			if($(kids[vars.currentSlide]).is('img')){
428				vars.currentImage = $(kids[vars.currentSlide]);
429			} else {
430				vars.currentImage = $(kids[vars.currentSlide]).find('img:first');
431			}
432			
433			// //Set active links
434			// if(settings.controlNav){
435				// $('.smart-controlNav a', slider).removeClass('active');
436				// $('.smart-controlNav a:eq('+ vars.currentSlide +')', slider).addClass('active');
437			// }
438			
439			//Set active links
440			// if(settings.controlNav){
441				$('.navigation_sspro div', slider.parent()).removeClass('active');
442				$('.navigation_sspro div:eq('+ vars.currentSlide +')', slider.parent()).addClass('active');
443			// }
444			
445			// //Process caption
446			// processCaption(settings);
447			
448			// Remove any slices from last transition
449			// $('.smart-slice', slider).remove();
450
451			// Remove any boxes from last transition
452			// $('.smart-box', slider).remove();
453			$('#wrapperImage'+settings.random_time, slider).remove();
454			
455			var currentEffect = settings.effect;
456			//Generate random effect
457			if(settings.effect == 'random'){
458				var anims = new Array('sliceDownRight','sliceDownLeft','sliceUpRight','sliceUpLeft','sliceUpDown','sliceUpDownLeft','fold','fade',
459                'boxRandom','boxRain','boxRainReverse','boxRainGrow','boxRainGrowReverse');
460				currentEffect = anims[Math.floor(Math.random()*(anims.length + 1))];
461				if(currentEffect == undefined) currentEffect = 'fade';
462			}
463            
464            //Run random effect from specified set (eg: effect:'fold,fade')
465            if(settings.effect.indexOf(',') != -1){
466                var anims = settings.effect.split(',');
467                currentEffect = anims[Math.floor(Math.random()*(anims.length))];
468				if(currentEffect == undefined) currentEffect = 'fade';
469            }
470            
471           /*  //Custom transition as defined by "data-transition" attribute
472            if(vars.currentImage.attr('data-transition')){
473            	currentEffect = vars.currentImage.attr('data-transition');
474            } */
475		
476			//Run effects
477			vars.running 	= true;
478			
479			setTimeout(start_point,10);
480			
481			if(currentEffect == 'sliceDown' || currentEffect == 'sliceDownRight' || currentEffect == 'sliceDownLeft'){
482				createSlices(slider, settings, vars);
483				var timeBuff = 0;
484				var i = 0;
485				var slices = $('.smart-slice', slider);
486				if(currentEffect == 'sliceDownLeft') slices = $('.smart-slice', slider)._reverse();
487				
488				slices.each(function(){
489					var slice = $(this);
490					slice.css({ 'top': '0px' });
491					if(i == settings.slices-1){
492						setTimeout(function(){
493							slice.animate({ height:'100%', opacity:'1.0' }, settings.animSpeed, '', function(){ slider.trigger('smart:animFinished'); });
494						}, (100 + timeBuff));
495					} else {
496						setTimeout(function(){
497							slice.animate({ height:'100%', opacity:'1.0' }, settings.animSpeed);
498						}, (100 + timeBuff));
499					}
500					timeBuff += 50;
501					i++;
502				});
503			} 
504			else if(currentEffect == 'sliceUp' || currentEffect == 'sliceUpRight' || currentEffect == 'sliceUpLeft'){
505				createSlices(slider, settings, vars);
506				var timeBuff = 0;
507				var i = 0;
508				var slices = $('.smart-slice', slider);
509				if(currentEffect == 'sliceUpLeft') slices = $('.smart-slice', slider)._reverse();
510				
511				slices.each(function(){
512					var slice = $(this);
513					slice.css({ 'bottom': '0px' });
514					if(i == settings.slices-1){
515						setTimeout(function(){
516							slice.animate({ height:'100%', opacity:'1.0' }, settings.animSpeed, '', function(){ slider.trigger('smart:animFinished'); });
517						}, (100 + timeBuff));
518					} else {
519						setTimeout(function(){
520							slice.animate({ height:'100%', opacity:'1.0' }, settings.animSpeed);
521						}, (100 + timeBuff));
522					}
523					timeBuff += 50;
524					i++;
525				});
526			} 
527			else if(currentEffect == 'sliceUpDown' || currentEffect == 'sliceUpDownRight' || currentEffect == 'sliceUpDownLeft'){
528				createSlices(slider, settings, vars);
529				var timeBuff = 0;
530				var i = 0;
531				var v = 0;
532				var slices = $('.smart-slice', slider);
533				if(currentEffect == 'sliceUpDownLeft') slices = $('.smart-slice', slider)._reverse();
534				
535				slices.each(function(){
536					var slice = $(this);
537					if(i == 0){
538						slice.css('top','0px');
539						i++;
540					} else {
541						slice.css('bottom','0px');
542						i = 0;
543					}
544					
545					if(v == settings.slices-1){
546						setTimeout(function(){
547							slice.animate({ height:'100%', opacity:'1.0' }, settings.animSpeed, '', function(){ slider.trigger('smart:animFinished'); });
548						}, (100 + timeBuff));
549					} else {
550						setTimeout(function(){
551							slice.animate({ height:'100%', opacity:'1.0' }, settings.animSpeed);
552						}, (100 + timeBuff));
553					}
554					timeBuff += 50;
555					v++;
556				});
557			} 
558			else if(currentEffect == 'fold'){
559				createSlices(slider, settings, vars);
560				var timeBuff = 0;
561				var i = 0;
562				
563				$('.smart-slice', slider).each(function(){
564					var slice = $(this);
565					var origWidth = slice.width();
566					slice.css({ top:'0px', height:'100%', width:'0px' });
567					if(i == settings.slices-1){
568						setTimeout(function(){
569							slice.animate({ width:origWidth, opacity:'1.0' }, settings.animSpeed, '', function(){ slider.trigger('smart:animFinished'); });
570						}, (100 + timeBuff));
571					} else {
572						setTimeout(function(){
573							slice.animate({ width:origWidth, opacity:'1.0' }, settings.animSpeed);
574						}, (100 + timeBuff));
575					}
576					timeBuff += 50;
577					i++;
578				});
579			}  
580			else if(currentEffect == 'fade'){
581				createSlices(slider, settings, vars);
582				
583				var firstSlice = $('.smart-slice:first', slider);
584                firstSlice.css({
585                    'height': '100%',
586                    'width': slider_width + 'px'
587                });
588    
589				firstSlice.animate({ opacity:'1.0' }, (settings.animSpeed*2), '', function(){ slider.trigger('smart:animFinished'); });
590			}          
591            else if(currentEffect == 'slideInRight'){
592				createSlices(slider, settings, vars);
593				
594                var firstSlice = $('.smart-slice:first', slider);
595                firstSlice.css({
596                    'height': '100%',
597                    'width': '0px',
598                    'opacity': '1'
599                });
600
601                firstSlice.animate({ width: slider_width + 'px' }, (settings.animSpeed*2), '', function(){ slider.trigger('smart:animFinished'); });
602            }
603            else if(currentEffect == 'slideInLeft'){
604				createSlices(slider, settings, vars);
605				
606                var firstSlice = $('.smart-slice:first', slider);
607                firstSlice.css({
608                    'height': '100%',
609                    'width': '0px',
610                    'opacity': '1',
611                    'left': '',
612                    'right': '0px'
613                });
614
615                firstSlice.animate({ width: slider_width + 'px' }, (settings.animSpeed*2), '', function(){ 
616                    // Reset positioning
617                    firstSlice.css({
618                        'left': '0px',
619                        'right': ''
620                    });
621                    slider.trigger('smart:animFinished'); 
622                });
623            }
624			else if(currentEffect == 'boxRandom'){
625				createBoxes(slider, settings, vars);
626				
627				var totalBoxes = settings.boxCols * settings.boxRows;
628				var i = 0;
629				var timeBuff = 0;
630				
631				var boxes = shuffle($('.smart-box', slider));
632				boxes.each(function(){
633					var box = $(this);
634					if(i == totalBoxes-1){
635						setTimeout(function(){
636							box.animate({ opacity:'1' }, settings.animSpeed, '', function(){ slider.trigger('smart:animFinished'); });
637						}, (100 + timeBuff));
638					} else {
639						setTimeout(function(){
640							box.animate({ opacity:'1' }, settings.animSpeed);
641						}, (100 + timeBuff));
642					}
643					timeBuff += 20;
644					i++;
645				});
646			}
647			else if(currentEffect == 'boxRain' || currentEffect == 'boxRainReverse' || currentEffect == 'boxRainGrow' || currentEffect == 'boxRainGrowReverse'){
648				
649				createBoxes(slider, settings, vars);
650				
651				var totalBoxes = settings.boxCols * settings.boxRows;
652				var i = 0;
653				var timeBuff = 0;
654				
655				// Split boxes into 2D array
656				var rowIndex = 0;
657				var colIndex = 0;
658				var box2Darr = new Array();
659				box2Darr[rowIndex] = new Array();
660				var boxes = $('.smart-box', slider);
661				if(currentEffect == 'boxRainReverse' || currentEffect == 'boxRainGrowReverse'){
662					boxes = $('.smart-box', slider)._reverse();
663				}
664				boxes.each(function(){
665					box2Darr[rowIndex][colIndex] = $(this);
666					colIndex++;
667					if(colIndex == settings.boxCols){
668						rowIndex++;
669						colIndex = 0;
670						box2Darr[rowIndex] = new Array();
671					}
672				});
673				
674				// Run animation
675				for(var cols = 0; cols < (settings.boxCols * 2); cols++){
676					var prevCol = cols;
677					for(var rows = 0; rows < settings.boxRows; rows++){
678						if(prevCol >= 0 && prevCol < settings.boxCols){
679							/* Due to some weird JS bug with loop vars 
680							being used in setTimeout, this is wrapped
681							with an anonymous function call */
682							(function(row, col, time, i, totalBoxes) {
683								var box = $(box2Darr[row][col]);
684                                var w = box.width();
685                                var h = box.height();
686                                if(currentEffect == 'boxRainGrow' || currentEffect == 'boxRainGrowReverse'){
687                                    box.width(0).height(0);
688                                }
689								if(i == totalBoxes-1){
690									setTimeout(function(){
691										box.animate({ opacity:'1', width:w, height:h }, settings.animSpeed/1.3, '', function(){ slider.trigger('smart:animFinished'); });
692									}, (100 + time));
693								} else {
694									setTimeout(function(){
695										box.animate({ opacity:'1', width:w, height:h }, settings.animSpeed/1.3);
696									}, (100 + time));
697								}
698							})(rows, prevCol, timeBuff, i, totalBoxes);
699							i++;
700						}
701						prevCol--;
702					}
703					timeBuff += 100;
704				}
705			}
706			// alert(timeBuff);
707		}
708		
709		// Shuffle an array
710		var shuffle = function(arr){
711			for(var j, x, i = arr.length; i; j = parseInt(Math.random() * i), x = arr[--i], arr[i] = arr[j], arr[j] = x);
712			return arr;
713		}
714        
715        // For debugging
716        var trace = function(msg){
717            if (this.console && typeof console.log != "undefined")
718                console.log(msg);
719        }
720        
721        // Start / Stop
722        this.stop = function(){
723            if(!$(element).data('smart:vars').stop){
724                $(element).data('smart:vars').stop = true;
725                trace('Stop Slider');
726            }
727        }
728        
729        this.start = function(){
730            if($(element).data('smart:vars').stop){
731                $(element).data('smart:vars').stop = false;
732                trace('Start Slider');
733            }
734        }
735        
736        // //Trigger the afterLoad callback
737        // settings.afterLoad.call(this);
738		
739		return this;
740    };
741        
742    $.fn.smartSlider = function(options) {
743    
744        return this.each(function(key, value){
745            var element = $(this);
746            // Return early if this element already has a plugin instance
747            if (element.data('smartslider')) return element.data('smartslider');
748            // Pass options to plugin constructor
749            var smartslider = new SmartSlider(this, options);
750            // Store plugin object in this element's data
751            element.data('smartslider', smartslider);
752        });
753
754	};
755	
756	//Default settings
757	$.fn.smartSlider.defaults = {
758		effect						: 'random',	//'boxRain',
759		slices						: 15,
760		boxCols						: 8,
761		boxRows						: 4,
762		animSpeed					: 500,
763		pauseTime					: 3000,
764		random_time					: "",
765		align_image					: "left",
766		image_width					: 765,
767		image_height				: 500,
768		afterChange					: function(){}
769	};
770	
771	$.fn._reverse = [].reverse;
772	
773})(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.