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.