1/** 2 * jQuery Skitter Slideshow 3 * @name jquery.skitter.js 4 * @description Slideshow 5 * @author Thiago Silva Ferreira - http://thiagosf.net 6 * @version 3.7 7 * @date August 04, 2010 8 * @update October 28, 2011 9 * @copyright (c) 2010 Thiago Silva Ferreira - http://thiagosf.net 10 * @license Dual licensed under the MIT or GPL Version 2 licenses 11 * @example http://thiagosf.net/projects/jquery/skitter/ 12 */ 13 14(function($) { 15 16 var number_skitter = 0, 17 skitters = []; 18 19 $.fn.skitter = function(options) { 20 return this.each(function() { 21 $(this).data('skitter_number', number_skitter); 22 skitters.push(new $sk(this, options, number_skitter)); 23 ++number_skitter; 24 }); 25 }; 26 27 var defaults = { 28 velocity: 1, 29 interval: 2500, 30 animation: '', 31 numbers: true, 32 navigation: true, 33 label: true, 34 easing_default: '', 35 box_skitter: null, 36 time_interval: null, 37 images_links: null, 38 image_atual: null, 39 link_atual: null, 40 label_atual: null, 41 target_atual: '_self', 42 width_skitter: null, 43 height_skitter: null, 44 image_i: 1, 45 is_animating: false, 46 is_hover_box_skitter: false, 47 random_ia: null, 48 show_randomly: false, 49 thumbs: false, 50 animateNumberOut: {backgroundColor:'#333', color:'#fff'}, 51 animateNumberOver: {backgroundColor:'#fff', color:'#000'}, 52 animateNumberActive: {backgroundColor:'#cc3333', color:'#fff'}, 53 hideTools: false, 54 fullscreen: false, 55 xml: false, 56 dots: false, 57 width_label: null, 58 opacity_elements: 0.75, // Final opacity of elements in hideTools 59 interval_in_elements: 300, // Interval animation hover elements hideTools 60 interval_out_elements: 500, // Interval animation out elements hideTools 61 onLoad: null, 62 imageSwitched: null, 63 max_number_height: 20, 64 numbers_align: 'left', 65 preview: false, 66 focus: false, 67 foucs_active: false, 68 focus_position: 'center', 69 controls: false, 70 controls_position: 'center', 71 progressbar: false, 72 progressbar_css: {}, 73 is_paused: false, 74 is_blur: false, 75 is_paused_time: false, 76 timeStart: 0, 77 elapsedTime: 0, 78 stop_over: true, 79 enable_navigation_keys: false, 80 structure: '<span class="prev_button">prev</span>' 81 + '<span class="next_button">next</span>' 82 + '<span class="info_slide"></span>' 83 + '<div class="container_skitter">' 84 + '<div class="image">' 85 + '<a href=""><img class="image_main" /></a>' 86 + '<div class="label_skitter"></div>' 87 + '</div>' 88 + '</div>', 89 navShowOnMouseOver : false, 90 controlShowOnMouseOver : false, 91 auto_play: true, 92 base_width: '', 93 base_height: '' 94 95 }; 96 97 $.skitter = function(obj, options, number) { 98 this.box_skitter = $(obj); 99 this.timer = null; 100 this.settings = $.extend({}, defaults, options || {}); 101 this.number_skitter = number; 102 this.setup(); 103 }; 104 105 // Shortcut 106 var $sk = $.skitter; 107 108 $sk.fn = $sk.prototype = {}; 109 110 $sk.fn.extend = $.extend; 111 112 $sk.fn.extend({ 113 114 /** 115 * Init 116 */ 117 setup: function() 118 { 119 var self = this; 120 121 // Fullscreen 122 if (this.settings.fullscreen) { 123 var width = $(window).width(); 124 var height = $(window).height(); 125 this.box_skitter.width(width).height(height); 126 this.box_skitter.css({'position':'absolute', 'top':0, 'left':0, 'z-index':1000}); 127 this.settings.stop_over = false; 128 $('body').css({'overflown':'hidden'}); 129 } 130 131 this.settings.width_skitter = parseFloat(this.box_skitter.css('width')); 132 this.settings.height_skitter = parseFloat(this.box_skitter.css('height')); 133 134 if (!this.settings.width_skitter || !this.settings.height_skitter) { 135 console.warn('Width or height size is null! - Skitter Slideshow'); 136 return false; 137 } 138 139 // Structure html 140 this.box_skitter.append(this.settings.structure); 141 142 // Settings 143 this.settings.easing_default = this.getEasing(this.settings.easing); 144 145 if (this.settings.velocity >= 2) this.settings.velocity = 1.3; 146 if (this.settings.velocity <= 0) this.settings.velocity = 1; 147 148 if (!this.settings.numbers && !this.settings.thumbs && !this.settings.dots) this.box_skitter.find('.info_slide').hide(); 149 if (!this.settings.label) this.box_skitter.find('.label_skitter').hide(); 150 if (!this.settings.navigation || (this.settings.navigation && this.settings.navShowOnMouseOver)) { 151 this.box_skitter.find('.prev_button').hide(); 152 this.box_skitter.find('.next_button').hide(); 153 } 154 155 this.box_skitter.find('.container_skitter').width(this.settings.width_skitter); 156 this.box_skitter.find('.container_skitter').height(this.settings.height_skitter); 157 158 var width_label = this.settings.width_label ? this.settings.width_label : this.settings.width_skitter; 159 this.box_skitter.find('.label_skitter').width(width_label); 160 161 var initial_select_class = ' image_number_select', u = 0; 162 this.settings.images_links = new Array(); 163 164 // Add image, link, animation type and label 165 var addImageLink = function (link, src, animation_type, label, target) { 166 self.settings.images_links.push([src, link, animation_type, label, target]); 167 if (self.settings.thumbs) { 168 var dimension_thumb = ''; 169 if (self.settings.width_skitter > self.settings.height_skitter) { 170 dimension_thumb = 'height="100"'; 171 } 172 else { 173 dimension_thumb = 'width="100"';
174 } 175 self.box_skitter.find('.info_slide').append( 176 '<span class="image_number'+initial_select_class+'" rel="'+(u - 1)+'" id="image_n_'+u+'_'+self.number_skitter+'">' 177 +'<img src="'+src+'" '+dimension_thumb+' />' 178 +'</span> ' 179 ); 180 } 181 else { 182 self.box_skitter.find('.info_slide').append( 183 '<span class="image_number'+initial_select_class+'" rel="'+(u - 1)+'" id="image_n_'+u+'_'+self.number_skitter+'">'+u+'</span> ' 184 ); 185 } 186 initial_select_class = ''; 187 }; 188 189 // Load from XML 190 if (this.settings.xml) { 191 $.ajax({ 192 type: 'GET', 193 url: this.settings.xml, 194 async: false, 195 dataType: 'xml', 196 success: function(xml) { 197 var ul = $('<ul></ul>'); 198 $(xml).find('skitter slide').each(function(){ 199 ++u; 200 var link = ($(this).find('link').text()) ? $(this).find('link').text() : '#'; 201 var src = $(this).find('image').text(); 202 var animation_type = $(this).find('image').attr('type'); 203 var label = $(this).find('label').text(); 204 var target = ($(this).find('target').text()) ? $(this).find('target').text() : '_self'; 205 addImageLink(link, src, animation_type, label, target); 206 }); 207 } 208 }); 209 } 210 // Load from json 211 else if (this.settings.json) { 212 213 } 214 // Load from HTML 215 else { 216 this.box_skitter.find('ul li').each(function(){ 217 ++u; 218 var link = ($(this).find('a').length) ? $(this).find('a').attr('href') : '#'; 219 var src = $(this).find('img').attr('src'); 220 var animation_type = $(this).find('img').attr('class'); 221 var label = $(this).find('.label_text').html(); 222 var target = ($(this).find('a').length && $(this).find('a').attr('target')) ? $(this).find('a').attr('target') : '_self'; 223 addImageLink(link, src, animation_type, label, target); 224 }); 225 } 226 227 // Thumbs 228 if (self.settings.thumbs) 229 { 230 // New animation 231 self.settings.animateNumberOut = {opacity:0.2, width:'70px'}; 232 self.settings.animateNumberOver = {opacity:0.5, width:'70px'}; 233 self.settings.animateNumberActive = {opacity:1.0, width:'70px'}; 234 235 self.box_skitter.find('.info_slide').addClass('info_slide_thumb'); 236 var width_info_slide = u * 55 + 75; 237 self.box_skitter.find('.info_slide_thumb').width(width_info_slide); 238 self.box_skitter.css({height:self.box_skitter.height() + self.box_skitter.find('.info_slide').height() + 5}); 239 self.settings.label = false; 240 241 self.box_skitter.append('<div class="container_thumbs"></div>'); 242 var copy_info_slide = self.box_skitter.find('.info_slide').clone(); 243 self.box_skitter.find('.info_slide').remove(); 244 self.box_skitter.find('.container_thumbs') 245 .width(self.settings.width_skitter) 246 .height(50) 247 .append(copy_info_slide); 248 249 // Scrolling with mouse movement 250 var width_image = 0, 251 width_skitter = this.settings.width_skitter, 252 height_skitter = this.settings.height_skitter, 253 w_info_slide_thumb = 0, 254 info_slide_thumb = self.box_skitter.find('.info_slide_thumb'), 255 x_value = 0, 256 y_value = self.box_skitter.offset().top; 257 258 info_slide_thumb.find('.image_number').each(function(){ 259 width_image += $(this).width() 260 + parseInt($(this).css('marginLeft')) 261 + parseInt($(this).css('marginRight')) 262 + parseInt($(this).css('paddingLeft')) 263 + parseInt($(this).css('paddingRight')); 264 }); 265 266 info_slide_thumb.width(width_image+'px'); 267 w_info_slide_thumb = info_slide_thumb.width(); 268 width_valor = this.settings.width_skitter; 269 270 width_valor = width_skitter - 100; 271 272 if (width_info_slide > self.settings.width_skitter) { 273 self.box_skitter.mousemove(function(e){ 274 x_value = self.box_skitter.offset().left + 90; 275 276 var x = e.pageX, y = e.pageY, new_x = 0; 277 278 x = x - x_value; 279 y = y - y_value; 280 novo_width = w_info_slide_thumb - width_valor; 281 new_x = -((novo_width * x) / width_valor); 282 283 if (new_x > 0) new_x = 0; 284 if (new_x < -(w_info_slide_thumb - width_skitter - 5)) new_x = -(w_info_slide_thumb - width_skitter - 5); 285 286 if (y > height_skitter) { 287 info_slide_thumb.css({left: new_x}); 288 } 289 }); 290 } 291 292 self.box_skitter.find('.scroll_thumbs').css({'left':10}); 293 294 if (width_info_slide < self.settings.width_skitter) { 295 self.box_skitter.find('.info_slide').width('auto'); 296 self.box_skitter.find('.box_scroll_thumbs').hide(); 297 298 var class_info = '.info_slide'; 299 switch (self.settings.numbers_align) { 300 case 'center' : 301 var _vleft = (self.settings.width_skitter - self.box_skitter.find(class_info).width()) / 2; 302 self.box_skitter.find(class_info).css({'left':_vleft}); 303 break; 304 305 case 'right' : 306 self.box_skitter.find(class_info).css({'left':'auto', 'right':'-5px'}); 307 break; 308 309 case 'left' : 310 self.box_skitter.find(class_info).css({'left':'0px'}); 311 break; 312 } 313 } 314 315 } 316 else 317 { 318 var class_info = '.info_slide'; 319 320 if (self.settings.dots) { 321 self.box_skitter.find('.info_slide').addClass('info_slide_dots').removeClass('info_slide'); 322 class_info = '.info_slide_dots'; 323 } 324 325 switch (self.settings.numbers_align) { 326 case 'center' : 327 var _vleft = (self.settings.width_skitter - self.box_skitter.find(class_info).width()) / 2; 328 self.box_skitter.find(class_info).css({'left':_vleft}); 329 break; 330 331 case 'right' : 332 self.box_skitter.find(class_info).css({'left':'auto', 'right':'15px'}); 333 break; 334 335 case 'left' : 336 self.box_skitter.find(class_info).css({'left':'15px'}); 337 break; 338 } 339 340 if (!self.settings.dots) { 341 if (self.box_skitter.find('.info_slide').height() > 20) { 342 self.box_skitter.find('.info_slide').hide(); 343 } 344 } 345 346 if (self.settings.dots) { 347 if (self.box_skitter.find('.info_slide_dots').height() > 20) { 348 self.box_skitter.find('.info_slide_dots').hide(); 349 } 350 } 351 } 352 353 this.box_skitter.find('ul').hide(); 354 355 if (this.settings.show_randomly) 356 this.settings.images_links.sort(function(a,b) {return Math.random() - 0.5;}); 357 358 this.settings.image_atual = this.settings.images_links[0][0]; 359 this.settings.link_atual = this.settings.images_links[0][1]; 360 this.settings.label_atual = this.settings.images_links[0][3]; 361 this.settings.target_atual = this.settings.images_links[0][4]; 362 363 if (this.settings.images_links.length > 1) 364 { 365 this.box_skitter.find('.prev_button').click(function() { 366 if (self.settings.is_animating == false) { 367 368 self.settings.image_i -= 2; 369 370 if (self.settings.image_i == -2) { 371 self.settings.image_i = self.settings.images_links.length - 2; 372 } 373 else if (self.settings.image_i == -1) { 374 self.settings.image_i = self.settings.images_links.length - 1; 375 } 376 377 self.jumpToImage(self.settings.image_i); 378 } 379 return false;
380 }); 381 382 this.box_skitter.find('.next_button').click(function() { 383 self.jumpToImage(self.settings.image_i); 384 return false; 385 }); 386 387 //self.box_skitter.find('.next_button, .prev_button').bind('mouseover', self.mouseOverButton); 388 self.box_skitter.find('.next_button, .prev_button').bind('mouseleave', self.mouseOutButton); 389 390 this.box_skitter.find('.image_number').hover(function() { 391 if ($(this).attr('class') != 'image_number image_number_select') { 392 $(this).stop().animate(self.settings.animateNumberOver, 300); 393 } 394 }, function(){ 395 if ($(this).attr('class') != 'image_number image_number_select') { 396 $(this).stop().animate(self.settings.animateNumberOut, 500); 397 } 398 }); 399 400 this.box_skitter.find('.image_number').click(function(){ 401 if ($(this).attr('class') != 'image_number image_number_select') { 402 var imageNumber = parseInt($(this).attr('rel')); 403 self.jumpToImage(imageNumber); 404 } 405 return false; 406 }); 407 408 this.box_skitter.find('.image_number').css(self.settings.animateNumberOut); 409 this.box_skitter.find('.image_number:eq(0)').css(self.settings.animateNumberActive); 410 411 // Preview 412 if (self.settings.preview && self.settings.dots) 413 { 414 var preview = $('<div id="preview_slide"><ul></ul></div>'); 415 416 for (var i = 0; i < this.settings.images_links.length; i++) { 417 var li = $('<li></li>'); 418 var img = $('<img />'); 419 img.attr('src', this.settings.images_links[i][0]); 420 li.append(img); 421 preview.find('ul').append(li); 422 } 423 424 var width_preview_ul = parseInt(this.settings.images_links.length * 100); 425 preview.find('ul').width(width_preview_ul); 426 $(class_info).append(preview); 427 428 self.box_skitter.find(class_info).find('.image_number').mouseenter(function() { 429 var _left_info = parseFloat(self.box_skitter.find(class_info).offset().left); 430 var _left_image = parseFloat($(this).offset().left); 431 var _left_preview = (_left_image - _left_info) - 43; 432 433 var rel = parseInt($(this).attr('rel')); 434 var image_current_preview = self.box_skitter.find('#preview_slide_current img').attr('src'); 435 var _left_ul = -(rel * 100); 436 437 self.box_skitter.find('#preview_slide').find('ul').animate({left: _left_ul}, {duration:200, queue: false, easing: 'easeOutSine'}); 438 self.box_skitter.find('#preview_slide').fadeTo(1,1).animate({left: _left_preview}, {duration:200, queue: false}); 439 }); 440 441 self.box_skitter.find(class_info).mouseleave(function() { 442 $('#preview_slide').animate({opacity: 'hide'}, {duration: 200, queue: false}); 443 }); 444 } 445 } 446 447 // Focus 448 if (self.settings.focus) { 449 self.focusSkitter(); 450 } 451 452 // Constrols 453 if (self.settings.controls) { 454 self.setControls(); 455 } 456 457 // Progressbar 458 if (self.settings.progressbar) { 459 self.addProgressBar(); 460 } 461 462 // hideTools 463 if (self.settings.hideTools) { 464 self.hideTools(); 465 } 466 467 // Navigation keys 468 if (self.settings.enable_navigation_keys) { 469 self.enableNavigationKeys(); 470 } 471 472 this.loadImages(); 473 }, 474 475 /** 476 * Load images 477 */ 478 loadImages: function () 479 { 480 var self = this; 481 482 var loading = $('<div class="loading">Loading</div>'); 483 this.box_skitter.append(loading); 484 var total = this.settings.images_links.length; 485 486 var u = 0; 487 $.each(this.settings.images_links, function(i) 488 { 489 var self_il = this; 490 var loading = $('<span class="image_loading"></span>'); 491 loading.css({position:'absolute', top:'-9999em'}); 492 self.box_skitter.append(loading); 493 var img = new Image(); 494 495 $(img).load(function () { 496 ++u; 497 if (u == total) { 498 499 self.box_skitter.find('.loading').remove(); 500 self.box_skitter.find('.image_loading').remove(); 501 self.start(); 502 } 503 }).error(function () { 504 self.box_skitter.find('.loading, .image_loading, .image_number, .next_button, .prev_button').remove(); 505 self.box_skitter.html('<p style="color:white;background:black;">Error loading images. One or more images were not found.</p>'); 506 }).attr('src', self_il[0]); 507 }); 508 }, 509 510 /** 511 * Start skitter 512 */ 513 start: function() 514 { 515 var self = this; 516 517 self.startTime(); 518 self.windowFocusOut(); 519 self.setLinkAtual(); 520 521 self.box_skitter.find('.image a img').attr({'src': self.settings.image_atual});
522 self.setResizeImage(true); 523 img_link = self.box_skitter.find('.image a'); 524 img_link = self.resizeImage(img_link); 525 img_link.find('img').fadeIn(1500); 526 527 self.setValueBoxText(); 528 self.showBoxText(); 529 530 self.stopOnMouseOver(); 531 self.navOnMouseOver(); 532 // Start slideshow 533 if (self.settings.images_links.length > 1) { 534 self.autoPlay(); 535 } 536 else { 537 self.box_skitter.find('.loading, .image_loading, .image_number, .next_button, .prev_button').remove(); 538 } 539 540 if ($.isFunction(self.settings.onLoad)) self.settings.onLoad(); 541 }, 542 543 autoPlay: function() 544 { 545 var self = this; 546 if (self.settings.auto_play) 547 { 548 setTimeout(function() { self.jumpToImage(self.settings.image_i); }, self.settings.interval); 549 } 550 else 551 { 552 var play_pause_button = self.box_skitter.find('.play_pause_button'); 553 play_pause_button.html('play'); 554 play_pause_button.addClass('play_button'); 555 self.settings.is_paused = true; 556 } 557 }, 558 /** 559 * Jump to image 560 */ 561 jumpToImage: function(imageNumber) 562 { 563 if (this.settings.is_animating == false) { 564 565 this.settings.elapsedTime = 0; 566 this.box_skitter.find('.box_clone').stop(); 567 this.clearTimer(true); 568 this.settings.image_i = Math.floor(imageNumber); 569 570 this.box_skitter.find('.image a').attr({'href': this.settings.link_atual}); 571 this.box_skitter.find('.image_main').attr({'src': this.settings.image_atual}); 572 this.box_skitter.find('.box_clone').remove(); 573 574 this.nextImage(); 575 } 576 }, 577 578 /** 579 * Next image 580 */ 581 nextImage: function() 582 { 583 var self = this; 584 this.setResizeImage(false); 585 animations_functions = [ 586 'cube', 587 'cubeRandom', 588 'block', 589 'cubeStop', 590 'cubeStopRandom', 591 'cubeHide', 592 'cubeSize', 593 'horizontal', 594 'showBars', 595 'showBarsRandom', 596 'tube', 597 'fade', 598 'fadeFour', 599 'paralell', 600 'blind', 601 'blindHeight', 602 'blindWidth', 603 'directionTop', 604 'directionBottom', 605 'directionRight', 606 'directionLeft', 607 'cubeSpread', 608 'glassCube', 609 'glassBlock', 610 'circles', 611 'circlesInside', 612 'circlesRotate', 613 'cubeShow', 614 'upBars', 615 'downBars' 616 ]; 617 618 if (self.settings.progressbar) self.hideProgressBar(); 619 620 animation_type = (this.settings.animation == '' && this.settings.images_links[this.settings.image_i][2]) ? 621 this.settings.images_links[this.settings.image_i][2] : (this.settings.animation == '' ? 'default' : this.settings.animation); 622 623 // RandomUnique 624 if (animation_type == 'randomSmart') 625 { 626 if (!this.settings.random_ia) { 627 animations_functions.sort(function() { 628 return 0.5 - Math.random(); 629 }); 630 this.settings.random_ia = animations_functions; 631 } 632 animation_type = this.settings.random_ia[this.settings.image_i]; 633 } 634 // Random 635 else if (animation_type == 'random') 636 { 637 var random_id = parseInt(Math.random() * animations_functions.length); 638 animation_type = animations_functions[random_id]; 639 } 640 641 switch (animation_type) 642 { 643 case 'cube' : 644 this.animationCube(); 645 break; 646 case 'cubeRandom' : 647 this.animationCube({random:true}); 648 break; 649 case 'block' : 650 this.animationBlock(); 651 break; 652 case 'cubeStop' : 653 this.animationCubeStop(); 654 break; 655 case 'cubeStopRandom' : 656 this.animationCubeStop({random:true}); 657 break; 658 case 'cubeHide' : 659 this.animationCubeHide(); 660 break; 661 case 'cubeSize' : 662 this.animationCubeSize(); 663 break; 664 case 'horizontal' : 665 this.animationHorizontal(); 666 break; 667 case 'showBars' : 668 this.animationShowBars(); 669 break; 670 case 'showBarsRandom' : 671 this.animationShowBars({random:true}); 672 break; 673 case 'tube' : 674 this.animationTube(); 675 break; 676 case 'fade' : 677 this.animationFade(); 678 break; 679 case 'fadeFour' : 680 this.animationFadeFour(); 681 break; 682 case 'paralell' : 683 this.animationParalell(); 684 break; 685 case 'blind' : 686 this.animationBlind(); 687 break; 688 case 'blindHeight' : 689 this.animationBlindDimension({height:true}); 690 break; 691 case 'blindWidth' : 692 this.animationBlindDimension({height:false, time_animate:400, delay:50}); 693 break; 694 case 'directionTop' : 695 this.animationDirection({direction:'top'}); 696 break; 697 case 'directionBottom' : 698 this.animationDirection({direction:'bottom'}); 699 break; 700 case 'directionRight' : 701 this.animationDirection({direction:'right', total:5}); 702 break; 703 case 'directionLeft' : 704 this.animationDirection({direction:'left', total:5}); 705 break; 706 case 'cubeSpread' : 707 this.animationCubeSpread(); 708 break; 709 case 'cubeJelly' : 710 this.animationCubeJelly(); 711 break; 712 case 'glassCube' : 713 this.animationGlassCube(); 714 break; 715 case 'glassBlock' : 716 this.animationGlassBlock(); 717 break; 718 case 'circles' : 719 this.animationCircles(); 720 break; 721 case 'circlesInside' : 722 this.animationCirclesInside(); 723 break; 724 case 'circlesRotate' : 725 this.animationCirclesRotate(); 726 break; 727 case 'cubeShow' : 728 this.animationCubeShow(); 729 break; 730 case 'upBars' : 731 this.animationDirectionBars({direction: 'top'}); 732 break; 733 case 'downBars' : 734 this.animationDirectionBars({direction: 'bottom'}); 735 break; 736 default : 737 this.animationTube(); 738 break; 739 } 740 }, 741 742 setResizeImage: function(resize) { 743 744 var self = this; 745 // Get actual size image_main 746 var container = this.box_skitter; 747 var currSrc = this.box_skitter.find('.image_main').attr('src'); 748 //var currSrc = this.box_skitter.find('.image_main'); 749 if (currSrc) 750 { 751 var img = new Image(); 752 img.onload = function() { 753 var baseWidth = this.width; 754 var scaleWidth = container.find('.container_skitter').width(); 755 756 var baseWidth = parseInt(baseWidth); 757
758 var scale = scaleWidth / baseWidth; 759 760 var img_clone = self.box_skitter.find('img'); 761 762 img_clone.height(parseInt(self.settings.base_height)*scale); 763 764 if (resize == true) 765 { 766 container.height(parseInt(self.settings.base_height)*scale); 767 container.find('.container_skitter').height(parseInt(self.settings.base_height)*scale); 768 self.settings.height_skitter = parseInt(self.settings.base_height)*scale; 769 self.settings.width_skitter = scaleWidth; 770 } 771 772 773 } 774 img.src = currSrc; 775 } 776 }, 777 778 animationCube: function (options) 779 { 780 var self = this; 781 782 var options = $.extend({}, {random: false}, options || {}); 783 784 this.settings.is_animating = true; 785 var easing = (this.settings.easing_default == '') ? 'easeOutExpo' : this.settings.easing_default; 786 var time_animate = 700 / this.settings.velocity; 787 788 this.setActualLevel(); 789 790 var division_w = Math.ceil(this.settings.width_skitter / (this.settings.width_skitter / 8));
791 var division_h = Math.ceil(this.settings.height_skitter / (this.settings.height_skitter / 3)); 792 var total = division_w * division_h; 793 794 var width_box = Math.ceil(this.settings.width_skitter / division_w); 795 var height_box = Math.ceil(this.settings.height_skitter / division_h); 796 797 var init_top = this.settings.height_skitter + 200; 798 var init_left = this.settings.height_skitter + 200; 799 800 var col_t = 0; 801 var col = 0; 802 803 for (i = 0; i < total; i++) { 804 805 init_top = (i % 2 == 0) ? init_top : -init_top; 806 init_left = (i % 2 == 0) ? init_left : -init_left; 807 808 var _vtop = init_top + (height_box * col_t) + (col_t * 150); 809 var _vleft = -self.settings.width_skitter; 810 //var _vleft = (init_left + (width_box * col)) + (col * 50); 811 812 var _vtop_image = -(height_box * col_t); 813 814 var _vleft_image = -(width_box * col); 815 var _btop = (height_box * col_t); 816 var _bleft = (width_box * col); 817 818 var box_clone = this.getBoxClone(); 819 box_clone.hide(); 820 821 var delay_time = 50 * (i); 822 823 if (options.random) { 824 delay_time = 40 * (col); 825 box_clone.css({left:_vleft+'px', top:_vtop+'px', width:width_box, height:height_box}); 826 } 827 else { 828 time_animate = 500; 829 //box_clone.css({left:(this.settings.width_skitter / 2), top:this.settings.height_skitter + 50, width:width_box, height:height_box}); 830 box_clone.css({left:(this.settings.width_skitter) + (width_box * i), top:this.settings.height_skitter + (height_box * i), width:width_box, height:height_box}); 831 } 832 833 //box_clone.find('img').css({left:_vleft_image, top:_vtop_image}); 834 //box_clone.find('img').css({left:_vleft_image+100, top:_vtop_image}); 835 836 this.addBoxClone(box_clone); 837 838 var callback = (i == (total - 1)) ? function() { self.finishAnimation(); } : ''; 839 box_clone.show().delay(delay_time).animate({top:_btop+'px', left:_bleft+'px'}, time_animate, easing, callback); 840 841 if (options.random) { 842 box_clone.find('img').css({left:_vleft_image+100, top:_vtop_image+50}); 843 box_clone.find('img').delay(delay_time+(time_animate/2)).animate({left:_vleft_image, top:_vtop_image}, 1000, 'easeOutBack'); 844 } 845 else { 846 box_clone.find('img').css({left:_vleft_image, top:_vtop_image}); 847 box_clone.find('img').delay(delay_time+(time_animate/2)).fadeTo(100, 0.5).fadeTo(300, 1); 848 } 849 850 col_t++; 851 if (col_t == division_h) { 852 col_t = 0; 853 col++; 854 } 855 } 856 }, 857 858 animationBlock: function(options) 859 { 860 var self = this; 861 862 this.settings.is_animating = true; 863 var easing = (this.settings.easing_default == '') ? 'easeOutQuad' : this.settings.easing_default; 864 var time_animate = 500 / this.settings.velocity; 865 866 this.setActualLevel(); 867 868 var total = Math.ceil(this.settings.width_skitter / (this.settings.width_skitter / 15)); 869 var width_box = Math.ceil(this.settings.width_skitter / total); 870 var height_box = (this.settings.height_skitter); 871 872 for (i = 0; i < total; i++) { 873 874 var _bleft = (width_box * (i)); 875 var _btop = 0; 876 877 var box_clone = this.getBoxClone(); 878 box_clone.css({left: this.settings.width_skitter + 100, top:0, width:width_box, height:height_box}); 879 box_clone.find('img').css({left:-(width_box * i)}); 880 881 this.addBoxClone(box_clone); 882 883 var delay_time = 80 * (i); 884 var callback = (i == (total - 1)) ? function() { self.finishAnimation(); } : ''; 885 //box_clone.delay(delay_time).animate({top:_btop, left:_bleft, opacity:'show'}, time_animate, easing, callback); 886 887 box_clone.show().delay(delay_time).animate({top:_btop, left:_bleft}, time_animate, easing); 888 box_clone.find('img').hide().delay(delay_time+100).animate({opacity:'show'}, time_animate+300, easing, callback); 889 } 890 891 }, 892 893 animationCubeStop: function(options) 894 { 895 var self = this; 896 897 var options = $.extend({}, {random: false}, options || {}); 898 899 this.settings.is_animating = true; 900 var easing = (this.settings.easing_default == '') ? 'easeInQuad' : this.settings.easing_default; 901 var time_animate = 300 / this.settings.velocity; 902 903 var image_old = this.box_skitter.find('.image_main').attr('src'); 904 905 this.setActualLevel(); 906 907 this.setLinkAtual(); 908 this.box_skitter.find('.image_main').attr({'src':this.settings.image_atual}); 909 910 var division_w = Math.ceil(this.settings.width_skitter / (this.settings.width_skitter / 8)); 911 var division_h = Math.ceil(this.settings.height_skitter / (this.settings.width_skitter / 8)); 912 var total = division_w * division_h; 913 914 var width_box = Math.ceil(this.settings.width_skitter / division_w); 915 var height_box = Math.ceil(this.settings.height_skitter / division_h); 916 917 var init_top = 0; 918 var init_left = 0; 919 920 var col_t = 0; 921 var col = 0; 922 var _ftop = this.settings.width_skitter / 16; 923 924 for (i = 0; i < total; i++) { 925 init_top = (i % 2 == 0) ? init_top : -init_top; 926 init_left = (i % 2 == 0) ? init_left : -init_left; 927 928 var _vtop = init_top + (height_box * col_t); 929 var _vleft = (init_left + (width_box * col)); 930 var _vtop_image = -(height_box * col_t); 931 932 var _vleft_image = -(width_box * col); 933 var _btop = _vtop - _ftop; 934 var _bleft = _vleft - _ftop; 935 936 var box_clone = this.getBoxCloneImgOld(image_old); 937 box_clone.css({left:_vleft+'px', top:_vtop+'px', width:width_box, height:height_box}); 938 box_clone.find('img').css({left:_vleft_image, top:_vtop_image}); 939 940 this.addBoxClone(box_clone); 941 box_clone.show(); 942 943 var delay_time = 50 * i; 944 945 if (options.random) { 946 time_animate = 1000 / this.settings.velocity; 947 _btop = _vtop; 948 _bleft = _vleft; 949 delay_time = 30 * (Math.random() * 30); 950 } 951 952 var callback = (i == (total - 1)) ? function() { self.finishAnimation(); } : ''; 953 box_clone.delay(delay_time).animate({opacity:'hide', top:_btop+'px', left:_bleft+'px'}, time_animate, easing, callback); 954 955 col_t++; 956 if (col_t == division_h) { 957 col_t = 0; 958 col++; 959 } 960 } 961 }, 962 963 animationCubeHide: function(options) 964 { 965 var self = this; 966 967 this.settings.is_animating = true; 968 var easing = (this.settings.easing_default == '') ? 'easeOutQuad' : this.settings.easing_default; 969 var time_animate = 500 / this.settings.velocity; 970 971 var image_old = this.box_skitter.find('.image_main').attr('src'); 972 973 this.setActualLevel(); 974 975 this.setLinkAtual(); 976 this.box_skitter.find('.image_main').attr({'src':this.settings.image_atual}); 977
978 var division_w = Math.ceil(this.settings.width_skitter / (this.settings.width_skitter / 8)); 979 var division_h = Math.ceil(this.settings.height_skitter / (this.settings.height_skitter / 3)); 980 var total = division_w * division_h; 981 982 var width_box = Math.ceil(this.settings.width_skitter / division_w); 983 var height_box = Math.ceil(this.settings.height_skitter / division_h); 984 985 var init_top = 0; 986 var init_left = 0; 987 988 var col_t = 0; 989 var col = 0; 990 991 for (i = 0; i < total; i++) { 992 993 init_top = (i % 2 == 0) ? init_top : -init_top; 994 init_left = (i % 2 == 0) ? init_left : -init_left; 995 996 var _vtop = init_top + (height_box * col_t); 997 var _vleft = (init_left + (width_box * col)); 998 var _vtop_image = -(height_box * col_t); 999 1000 var _vleft_image = -(width_box * col); 1001 var _btop = _vtop - 50; 1002 var _bleft = _vleft - 50; 1003 1004 var box_clone = this.getBoxCloneImgOld(image_old); 1005 box_clone.css({left:_vleft+'px', top:_vtop+'px', width:width_box, height:height_box}); 1006 box_clone.find('img').css({left:_vleft_image, top:_vtop_image}); 1007 1008 this.addBoxClone(box_clone); 1009 box_clone.show(); 1010 1011 var delay_time = 50 * i; 1012 delay_time = (i == (total - 1)) ? (total * 50) : delay_time; 1013 var callback = (i == (total - 1)) ? function() { self.finishAnimation(); } : ''; 1014 1015 box_clone.delay(delay_time).animate({opacity:'hide'}, time_animate, easing, callback); 1016 1017 col_t++; 1018 if (col_t == division_h) { 1019 col_t = 0; 1020 col++; 1021 } 1022 } 1023 1024 }, 1025 1026 animationCubeJelly: function(options) 1027 { 1028 var self = this; 1029 1030 this.settings.is_animating = true; 1031 var easing = (this.settings.easing_default == '') ? 'easeInBack' : this.settings.easing_default; 1032 var time_animate = 300 / this.settings.velocity; 1033 1034 var image_old = this.box_skitter.find('.image_main').attr('src'); 1035 1036 this.setActualLevel(); 1037 1038 this.setLinkAtual(); 1039 this.box_skitter.find('.image_main').attr({'src':this.settings.image_atual}); 1040 1041 var division_w = Math.ceil(this.settings.width_skitter / (this.settings.width_skitter / 8));
1042 var division_h = Math.ceil(this.settings.height_skitter / (this.settings.height_skitter / 3)); 1043 var total = division_w * division_h; 1044 1045 var width_box = Math.ceil(this.settings.width_skitter / division_w); 1046 var height_box = Math.ceil(this.settings.height_skitter / division_h); 1047 1048 var init_top = 0; 1049 var init_left = 0; 1050 1051 var col_t = 0; 1052 var col = 0; 1053 var u = -1; 1054 1055 for (i = 0; i < total; i++) { 1056 1057 if (col % 2 != 0) { 1058 if (col_t == 0) { 1059 u = u + division_h + 1; 1060 } 1061 u--; 1062 } 1063 else { 1064 if (col > 0 && col_t == 0) { 1065 u = u + 2; 1066 } 1067 u++; 1068 } 1069 1070 init_top = (i % 2 == 0) ? init_top : -init_top; 1071 init_left = (i % 2 == 0) ? init_left : -init_left; 1072 1073 var _vtop = init_top + (height_box * col_t); 1074 var _vleft = (init_left + (width_box * col)); 1075 var _vtop_image = -(height_box * col_t); 1076 1077 var _vleft_image = -(width_box * col); 1078 var _btop = _vtop - 50; 1079 var _bleft = _vleft - 50; 1080 1081 var box_clone = this.getBoxCloneImgOld(image_old); 1082 box_clone.css({left:_vleft+'px', top:_vtop+'px', width:width_box, height:height_box}); 1083 box_clone.find('img').css({left:_vleft_image, top:_vtop_image}); 1084 1085 this.addBoxClone(box_clone); 1086 box_clone.show(); 1087 1088 var delay_time = (50 * i); 1089 var callback = (i == (total - 1)) ? function() { self.finishAnimation(); } : ''; 1090 1091 box_clone.delay(delay_time).animate({width:'+=100px', height:'+=100px', top:'-=20px', left: '-=20px', opacity:'hide'}, time_animate, easing, callback); 1092 col_t++; 1093 1094 if (col_t == division_h) { 1095 col_t = 0; 1096 col++; 1097 } 1098 1099 } 1100 }, 1101 1102 animationCubeSize: function(options) 1103 { 1104 var self = this; 1105 1106 this.settings.is_animating = true; 1107 var easing = (this.settings.easing_default == '') ? 'easeInOutQuad' : this.settings.easing_default; 1108 var time_animate = 600 / this.settings.velocity; 1109 1110 var image_old = this.box_skitter.find('.image_main').attr('src'); 1111 1112 this.setActualLevel(); 1113 1114 this.setLinkAtual(); 1115 this.box_skitter.find('.image_main').attr({'src':this.settings.image_atual}); 1116 1117 var division_w = Math.ceil(this.settings.width_skitter / (this.settings.width_skitter / 8));
1118 var division_h = Math.ceil(this.settings.height_skitter / (this.settings.height_skitter / 3)); 1119 var total = division_w * division_h; 1120 1121 var width_box = Math.ceil(this.settings.width_skitter / division_w); 1122 var height_box = Math.ceil(this.settings.height_skitter / division_h); 1123 1124 var init_top = 0; 1125 var init_left = 0; 1126 1127 var col_t = 0; 1128 var col = 0; 1129 var _ftop = Math.ceil(this.settings.width_skitter / 6); 1130 1131 for (i = 0; i < total; i++) { 1132 1133 init_top = (i % 2 == 0) ? init_top : -init_top; 1134 init_left = (i % 2 == 0) ? init_left : -init_left; 1135 1136 var _vtop = init_top + (height_box * col_t); 1137 var _vleft = (init_left + (width_box * col)); 1138 var _vtop_image = -(height_box * col_t); 1139 1140 var _vleft_image = -(width_box * col); 1141 var _btop = _vtop - _ftop; 1142 var _bleft = _vleft - _ftop; 1143 1144 var box_clone = this.getBoxCloneImgOld(image_old); 1145 box_clone.css({left:_vleft, top:_vtop, width:width_box, height:height_box}); 1146 box_clone.find('img').css({left:_vleft_image, top:_vtop_image}); 1147 1148 this.addBoxClone(box_clone); 1149 box_clone.show(); 1150 1151 var delay_time = 50 * i; 1152 var callback = (i == (total - 1)) ? function() { self.finishAnimation(); } : ''; 1153 box_clone.delay(delay_time).animate({ 1154 opacity:'hide',width:'hide',height:'hide',top:_vtop+(width_box*1.5),left:_vleft+(height_box*1.5) 1155 }, time_animate, easing, callback); 1156 1157 col_t++; 1158 if (col_t == division_h) { 1159 col_t = 0; 1160 col++; 1161 } 1162 } 1163 1164 }, 1165 1166 animationHorizontal: function(options) 1167 { 1168 var self = this; 1169 1170 this.settings.is_animating = true; 1171 var easing = (this.settings.easing_default == '') ? 'easeOutExpo' : this.settings.easing_default; 1172 var time_animate = 700 / this.settings.velocity; 1173 1174 this.setActualLevel(); 1175 1176 var total = Math.ceil(this.settings.width_skitter / (this.settings.width_skitter / 7)); 1177 var width_box = (this.settings.width_skitter); 1178 var height_box = Math.ceil(this.settings.height_skitter / total); 1179 1180 for (i = 0; i < total; i++) { 1181 var _bleft = (i % 2 == 0 ? '' : '') + width_box; 1182 var _btop = (i * height_box); 1183 1184 var box_clone = this.getBoxClone(); 1185 1186 box_clone.css({left:_bleft+'px', top:_btop+'px', width:width_box, height:height_box}); 1187 box_clone.find('img').css({left:0, top:-_btop}); 1188 1189 this.addBoxClone(box_clone); 1190 1191 var delay_time = 90 * i; 1192 var callback = (i == (total - 1)) ? function() { self.finishAnimation(); } : ''; 1193 box_clone.delay(delay_time).animate({opacity:'show', top:_btop, left:0}, time_animate, easing, callback); 1194 } 1195 }, 1196 1197 animationShowBars: function(options) 1198 { 1199 var self = this; 1200 1201 var options = $.extend({}, {random: false}, options || {}); 1202 1203 this.settings.is_animating = true; 1204 var easing = (this.settings.easing_default == '') ? 'easeOutQuad' : this.settings.easing_default; 1205 var time_animate = 400 / this.settings.velocity; 1206 1207 this.setActualLevel(); 1208 1209 var total = Math.ceil(this.settings.width_skitter / (this.settings.width_skitter / 10)); 1210 var width_box = Math.ceil(this.settings.width_skitter / total); 1211 var height_box = (this.settings.height_skitter); 1212 1213 for (i = 0; i < total; i++) { 1214 1215 var _bleft = (width_box * (i)); 1216 var _btop = 0; 1217 1218 var box_clone = this.getBoxClone(); 1219 1220 box_clone.css({left:_bleft, top:_btop - 50, width:width_box, height:height_box}); 1221 box_clone.find('img').css({left:-(width_box * i), top:0}); 1222 1223 this.addBoxClone(box_clone); 1224 1225 if (options.random) { 1226 var random = this.getRandom(total); 1227 var delay_time = 50 * random; 1228 delay_time = (i == (total - 1)) ? (50 * total) : delay_time; 1229 } 1230 else { 1231 var delay_time = 70 * (i); 1232 time_animate = time_animate - (i * 2); 1233 } 1234 1235 var callback = (i == (total - 1)) ? function() { self.finishAnimation(); } : ''; 1236 box_clone.delay(delay_time).animate({ 1237 opacity:'show', top:_btop+'px', left:_bleft+'px' 1238 }, time_animate, easing, callback); 1239 } 1240 1241 }, 1242 1243 animationTube: function(options) 1244 { 1245 var self = this; 1246 1247 this.settings.is_animating = true; 1248 var easing = (this.settings.easing_default == '') ? 'easeOutElastic' : this.settings.easing_default; 1249 var time_animate = 600 / this.settings.velocity; 1250 1251 this.setActualLevel(); 1252
1253 var total = Math.ceil(this.settings.width_skitter / (this.settings.width_skitter / 10)); 1254 var width_box = Math.ceil(this.settings.width_skitter / total); 1255 var height_box = this.settings.height_skitter; 1256 1257 for (i = 0;i<total;i++) { 1258 var _btop = 0; 1259 var _vtop = height_box; 1260 var vleft = width_box * i; 1261 1262 var box_clone = this.getBoxClone(); 1263 1264 box_clone.css({left:vleft,top: _vtop, height:height_box, width: width_box}); 1265 box_clone.find('img').css({left:-(vleft)}); 1266 1267 this.addBoxClone(box_clone); 1268 1269 var random = this.getRandom(total); 1270 var delay_time = 30 * random; 1271 var callback = (i == (total - 1)) ? function() { self.finishAnimation(); } : ''; 1272 box_clone.show().delay(delay_time).animate({top:_btop}, time_animate, easing, callback); 1273 } 1274 }, 1275 1276 animationFade: function(options) 1277 { 1278 var self = this; 1279 1280 this.settings.is_animating = true; 1281 var easing = (this.settings.easing_default == '') ? 'easeOutQuad' : this.settings.easing_default; 1282 var time_animate = 800 / this.settings.velocity; 1283 1284 this.setActualLevel(); 1285 1286 var width_box = this.settings.width_skitter; 1287 var height_box = this.settings.height_skitter; 1288 var total = 2; 1289 1290 for (i = 0;i<total;i++) { 1291 var _vtop = 0; 1292 var _vleft = 0; 1293 1294 var box_clone = this.getBoxClone(); 1295 box_clone.css({left:_vleft, top:_vtop, width:width_box, height:height_box}); 1296 this.addBoxClone(box_clone); 1297 1298 var callback = (i == (total - 1)) ? function() { self.finishAnimation(); } : ''; 1299 box_clone.animate({opacity:'show', left:0, top:0}, time_animate, easing, callback); 1300 } 1301 }, 1302 1303 animationFadeFour: function(options) 1304 { 1305 var self = this; 1306 1307 this.settings.is_animating = true; 1308 var easing = (this.settings.easing_default == '') ? 'easeOutQuad' : this.settings.easing_default; 1309 var time_animate = 500 / this.settings.velocity; 1310 1311 this.setActualLevel(); 1312 1313 var width_box = this.settings.width_skitter; 1314 var height_box = this.settings.height_skitter; 1315 var total = 4; 1316 1317 for (i = 0;i<total;i++) { 1318 1319 if (i == 0) { 1320 var _vtop = '-100px'; 1321 var _vleft = '-100px'; 1322 } else if (i == 1) { 1323 var _vtop = '-100px'; 1324 var _vleft = '100px'; 1325 } else if (i == 2) { 1326 var _vtop = '100px'; 1327 var _vleft = '-100px'; 1328 } else if (i == 3) { 1329 var _vtop = '100px'; 1330 var _vleft = '100px'; 1331 } 1332 1333 var box_clone = this.getBoxClone(); 1334 box_clone.css({left:_vleft, top:_vtop, width:width_box, height:height_box}); 1335 this.addBoxClone(box_clone); 1336 1337 var callback = (i == (total - 1)) ? function() { self.finishAnimation(); } : ''; 1338 box_clone.animate({opacity:'show', left:0, top:0}, time_animate, easing, callback); 1339 } 1340 }, 1341 1342 animationParalell: function(options) 1343 { 1344 var self = this; 1345 1346 this.settings.is_animating = true; 1347 var easing = (this.settings.easing_default == '') ? 'easeOutQuad' : this.settings.easing_default; 1348 var time_animate = 400 / this.settings.velocity; 1349 1350 this.setActualLevel(); 1351 1352 var total = Math.ceil(this.settings.width_skitter / (this.settings.width_skitter / 16)); 1353 var width_box = Math.ceil(this.settings.width_skitter / total); 1354 var height_box = this.settings.height_skitter; 1355 1356 for (i = 0; i < total; i++) { 1357 1358 var _bleft = (width_box * (i)); 1359 var _btop = 0; 1360 1361 var box_clone = this.getBoxClone(); 1362 1363 box_clone.css({left:_bleft, top:_btop - this.settings.height_skitter, width:width_box, height:height_box}); 1364 box_clone.find('img').css({left:-(width_box * i), top:0}); 1365 1366 this.addBoxClone(box_clone); 1367 1368 var delay_time; 1369 if (i <= ((total / 2) - 1)) { 1370 delay_time = 1400 - (i * 200); 1371 } 1372 else if (i > ((total / 2) - 1)) { 1373 delay_time = ((i - (total / 2)) * 200); 1374 } 1375 delay_time = delay_time / 2.5; 1376 1377 var callback = (i == (total - 1)) ? function() { self.finishAnimation(); } : ''; 1378 box_clone.delay(delay_time).animate({ 1379 top:_btop+'px', left:_bleft+'px', opacity: 'show' 1380 }, time_animate, easing, callback); 1381 } 1382 1383 }, 1384 1385 animationBlind: function(options) 1386 { 1387 var self = this; 1388 1389 var options = $.extend({}, {height: false}, options || {}); 1390 1391 this.settings.is_animating = true; 1392 var easing = (this.settings.easing_default == '') ? 'easeOutQuad' : this.settings.easing_default; 1393 var time_animate = 400 / this.settings.velocity; 1394 1395 this.setActualLevel(); 1396
1397 var total = Math.ceil(this.settings.width_skitter / (this.settings.width_skitter / 16)); 1398 var width_box = Math.ceil(this.settings.width_skitter / total); 1399 var height_box = this.settings.height_skitter; 1400 1401 for (i = 0; i < total; i++) { 1402 1403 var _bleft = (width_box * (i)); 1404 var _btop = 0; 1405 1406 var box_clone = this.getBoxClone(); 1407 1408 box_clone.css({left:_bleft, top:_btop, width:width_box, height:height_box}); 1409 box_clone.find('img').css({left:-(width_box * i), top:0}); 1410 1411 this.addBoxClone(box_clone); 1412 1413 var delay_time; 1414 1415 if (!options.height) { 1416 if (i <= ((total / 2) - 1)) { 1417 delay_time = 1400 - (i * 200); 1418 } 1419 else if (i > ((total / 2) - 1)) { 1420 delay_time = ((i - (total / 2)) * 200); 1421 } 1422 var callback = (i == (total - 1)) ? function() { self.finishAnimation(); } : ''; 1423 } 1424 else { 1425 if (i <= ((total / 2) - 1)) { 1426 delay_time = 200 + (i * 200); 1427 } 1428 else if (i > ((total / 2) - 1)) { 1429 delay_time = (((total / 2) - i) * 200) + (total * 100); 1430 } 1431 var callback = (i == (total / 2)) ? function() { self.finishAnimation(); } : ''; 1432 } 1433 1434 delay_time = delay_time / 2.5; 1435 1436 if (!options.height) { 1437 box_clone.delay(delay_time).animate({ 1438 opacity:'show',top:_btop+'px', left:_bleft+'px', width:'show' 1439 }, time_animate, easing, callback); 1440 } 1441 else { 1442 time_animate = time_animate + (i * 2); 1443 var easing = 'easeOutQuad'; 1444 box_clone.delay(delay_time).animate({ 1445 opacity:'show',top:_btop+'px', left:_bleft+'px', height:'show' 1446 }, time_animate, easing, callback); 1447 } 1448 } 1449 1450 }, 1451 1452 animationBlindDimension: function(options) 1453 { 1454 var self = this; 1455 1456 var options = $.extend({}, {height: true, time_animate: 500, delay: 100}, options || {}); 1457 1458 this.settings.is_animating = true; 1459 var easing = (this.settings.easing_default == '') ? 'easeOutQuad' : this.settings.easing_default; 1460 var time_animate = options.time_animate / this.settings.velocity; 1461 1462 this.setActualLevel(); 1463 1464 var total = Math.ceil(this.settings.width_skitter / (this.settings.width_skitter / 16)); 1465 var width_box = Math.ceil(this.settings.width_skitter / total); 1466 var height_box = this.settings.height_skitter; 1467 1468 for (i = 0; i < total; i++) { 1469 1470 var _bleft = (width_box * (i)); 1471 var _btop = 0; 1472 1473 var box_clone = this.getBoxClone(); 1474 1475 box_clone.css({left:_bleft, top:_btop, width:width_box, height:height_box}); 1476 box_clone.find('img').css({left:-(width_box * i), top:0}); 1477 1478 this.addBoxClone(box_clone); 1479 1480 var delay_time = options.delay * i; 1481 var callback = (i == (total - 1)) ? function() { self.finishAnimation(); } : ''; 1482 1483 if (!options.height) { 1484 box_clone.delay(delay_time).animate({ 1485 opacity:'show',top:_btop+'px', left:_bleft+'px', width:'show' 1486 }, time_animate, easing, callback); 1487 } 1488 else { 1489 var easing = 'easeOutQuad'; 1490 box_clone.delay(delay_time).animate({ 1491 opacity:'show',top:_btop+'px', left:_bleft+'px', height:'show' 1492 }, time_animate, easing, callback); 1493 } 1494 } 1495 1496 }, 1497 1498 animationDirection: function(options) 1499 { 1500 var self = this; 1501 1502 var options = $.extend({}, {direction: 'top', delay_type: 'sequence', total: 7}, options || {}); 1503 1504 this.settings.is_animating = true; 1505 var easing = (this.settings.easing_default == '') ? 'easeInOutExpo' : this.settings.easing_default; 1506 var time_animate = 1200 / this.settings.velocity; 1507 1508 var image_old = this.box_skitter.find('.image_main').attr('src'); 1509 1510 this.setActualLevel(); 1511 1512 this.setLinkAtual(); 1513 this.box_skitter.find('.image_main').attr({'src':this.settings.image_atual}); 1514 this.box_skitter.find('.image_main').hide(); 1515 1516 var total = options.total; 1517 1518 for (i = 0; i < total; i++) { 1519 1520 switch (options.direction) 1521 { 1522 default : case 'top' : 1523 1524 var width_box = Math.ceil(this.settings.width_skitter / total); 1525 var height_box = this.settings.height_skitter; 1526 1527 var _itopc = 0; 1528 var _ileftc = (width_box * i); 1529 var _ftopc = -height_box; 1530 var _fleftc = _ileftc; 1531 1532 var _itopn = height_box; 1533 var _ileftn = _ileftc; 1534 var _ftopn = 0; 1535 var _fleftn = _ileftc; 1536 1537 var _vtop_image = 0; 1538 var _vleft_image = -_ileftc; 1539 1540 break; 1541 1542 case 'bottom' : 1543
1544 var width_box = Math.ceil(this.settings.width_skitter / total); 1545 var height_box = this.settings.height_skitter; 1546 1547 var _itopc = 0; 1548 var _ileftc = (width_box * i); 1549 var _ftopc = height_box; 1550 var _fleftc = _ileftc; 1551 1552 var _itopn = -height_box; 1553 var _ileftn = _ileftc; 1554 var _ftopn = 0; 1555 var _fleftn = _ileftc; 1556 1557 var _vtop_image = 0; 1558 var _vleft_image = -_ileftc; 1559 1560 break; 1561 1562 case 'right' : 1563 1564 var width_box = this.settings.width_skitter; 1565 var height_box = Math.ceil(this.settings.height_skitter / total); 1566 1567 var _itopc = (height_box * i); 1568 var _ileftc = 0; 1569 var _ftopc = _itopc; 1570 var _fleftc = width_box; 1571 1572 var _itopn = _itopc; 1573 var _ileftn = -_fleftc; 1574 var _ftopn = _itopc; 1575 var _fleftn = 0; 1576 1577 var _vtop_image = -_itopc; 1578 var _vleft_image = 0; 1579 1580 break; 1581 1582 case 'left' : 1583 1584 var width_box = this.settings.width_skitter; 1585 var height_box = Math.ceil(this.settings.height_skitter / total); 1586 1587 var _itopc = (height_box * i); 1588 var _ileftc = 0; 1589 var _ftopc = _itopc; 1590 var _fleftc = -width_box; 1591 1592 var _itopn = _itopc; 1593 var _ileftn = -_fleftc; 1594 var _ftopn = _itopc; 1595 var _fleftn = 0; 1596 1597 var _vtop_image = -_itopc; 1598 var _vleft_image = 0; 1599 1600 break; 1601 1602 } 1603 1604 switch (options.delay_type) 1605 { 1606 case 'zebra' : default : var delay_time = (i % 2 == 0) ? 0 : 150; break; 1607 case 'random' : var delay_time = 30 * (Math.random() * 30); break; 1608 case 'sequence' : var delay_time = i * 100; break; 1609 } 1610 1611 var box_clone = this.getBoxCloneImgOld(image_old); 1612 box_clone.find('img').css({left:_vleft_image, top:_vtop_image}); 1613 1614 box_clone.css({top:_itopc, left:_ileftc, width:width_box, height:height_box}); 1615 1616 this.addBoxClone(box_clone); 1617 box_clone.show(); 1618 box_clone.delay(delay_time).animate({ top:_ftopc, left:_fleftc }, time_animate, easing); 1619 1620 // Next image 1621 var box_clone_next = this.getBoxClone(); 1622 box_clone_next.find('img').css({left:_vleft_image, top:_vtop_image}); 1623 1624 box_clone_next.css({top:_itopn, left:_ileftn, width:width_box, height:height_box}); 1625 1626 this.addBoxClone(box_clone_next); 1627 box_clone_next.show(); 1628 1629 var callback = (i == (total - 1)) ? function() { self.finishAnimation(); } : '';
1630 box_clone_next.delay(delay_time).animate({ top:_ftopn, left:_fleftn }, time_animate, easing, callback); 1631 1632 } 1633 }, 1634 1635 animationCubeSpread: function(options) 1636 { 1637 var self = this; 1638 1639 this.settings.is_animating = true; 1640 var easing = (this.settings.easing_default == '') ? 'easeOutQuad' : this.settings.easing_default; 1641 var time_animate = 700 / this.settings.velocity; 1642 1643 this.setActualLevel(); 1644 1645 var division_w = Math.ceil(this.settings.width_skitter / (this.settings.width_skitter / 8)); 1646 var division_h = Math.ceil(this.settings.height_skitter / (this.settings.width_skitter / 8)); 1647 var total = division_w * division_h; 1648 1649 var width_box = Math.ceil(this.settings.width_skitter / division_w); 1650 var height_box = Math.ceil(this.settings.height_skitter / division_h); 1651 1652 var init_top = 0; 1653 var init_left = 0; 1654 1655 var col_t = 0; 1656 var col = 0; 1657 var order = new Array; 1658 var spread = new Array; 1659 1660 // Make order 1661 for (i = 0; i < total; i++) { 1662 init_top = (i % 2 == 0) ? init_top : -init_top; 1663 init_left = (i % 2 == 0) ? init_left : -init_left; 1664 1665 var _vtop = init_top + (height_box * col_t); 1666 var _vleft = (init_left + (width_box * col)); 1667 1668 order[i] = [_vtop, _vleft]; 1669 1670 col_t++; 1671 if (col_t == division_h) { 1672 col_t = 0; 1673 col++; 1674 } 1675 } 1676 1677 // Reset col and col_t 1678 col_t = 0; 1679 col = 0; 1680 1681 // Make array for spread 1682 for (i = 0; i < total; i++) { 1683 spread[i] = i; 1684 }; 1685 1686 // Shuffle array 1687 var spread = self.shuffleArray(spread); 1688 1689 for (i = 0; i < total; i++) { 1690 init_top = (i % 2 == 0) ? init_top : -init_top; 1691 init_left = (i % 2 == 0) ? init_left : -init_left; 1692 1693 var _vtop = init_top + (height_box * col_t); 1694 var _vleft = (init_left + (width_box * col)); 1695 var _vtop_image = -(height_box * col_t); 1696 1697 var _vleft_image = -(width_box * col); 1698 var _btop = _vtop; 1699 var _bleft = _vleft; 1700 1701 _vtop = order[spread[i]][0]; 1702 _vleft = order[spread[i]][1]; 1703 1704 var box_clone = this.getBoxClone(); 1705 1706 box_clone.css({left:_vleft+'px', top:_vtop+'px', width:width_box, height:height_box}); 1707 box_clone.find('img').css({left:_vleft_image, top:_vtop_image}); 1708 1709 this.addBoxClone(box_clone); 1710 1711 var delay_time = 30 * (Math.random() * 30); 1712 if (i == (total-1)) delay_time = 30 * 30; 1713 var callback = (i == (total - 1)) ? function() { self.finishAnimation(); } : ''; 1714 box_clone.delay(delay_time).animate({opacity:'show',top:_btop+'px', left:_bleft+'px'}, time_animate, easing, callback); 1715 1716 col_t++; 1717 if (col_t == division_h) { 1718 col_t = 0; 1719 col++; 1720 } 1721 } 1722 }, 1723 1724 animationGlassCube: function(options) 1725 { 1726 var self = this; 1727 1728 this.settings.is_animating = true; 1729 var easing = (this.settings.easing_default == '') ? 'easeOutExpo' : this.settings.easing_default; 1730 var time_animate = 500 / this.settings.velocity; 1731 1732 this.setActualLevel(); 1733 1734 var total = Math.ceil(this.settings.width_skitter / (this.settings.width_skitter / 10)) * 2; 1735 var width_box = Math.ceil(this.settings.width_skitter / total) * 2; 1736 var height_box = (this.settings.height_skitter) / 2; 1737 var col = 0; 1738 1739 for (i = 0; i < total; i++) { 1740 mod = (i % 2) == 0 ? true : false; 1741 1742 var _ileft = (width_box * (col)); 1743 var _itop = (mod) ? -self.settings.height_skitter : self.settings.height_skitter; 1744 1745 var _fleft = (width_box * (col)); 1746 var _ftop = (mod) ? 0 : (height_box); 1747 1748 var _bleft = -(width_box * col); 1749 var _btop = (mod) ? 0 : -(height_box); 1750 1751 var delay_time = 120 * col; 1752 1753 var box_clone = this.getBoxClone(); 1754 box_clone.css({left: _ileft, top:_itop, width:width_box, height:height_box}); 1755 1756 box_clone 1757 .find('img') 1758 .css({left: _bleft + (width_box / 1.5), top: _btop}) 1759 .delay(delay_time) 1760 .animate({left: _bleft, top: _btop}, (time_animate * 1.9), 'easeOutQuad'); 1761 1762 this.addBoxClone(box_clone); 1763 1764 var callback = (i == (total - 1)) ? function() { self.finishAnimation(); } : ''; 1765 box_clone.show().delay(delay_time).animate({top:_ftop, left:_fleft}, time_animate, easing, callback); 1766 1767 if ((i % 2) != 0) col++; 1768 } 1769 }, 1770 1771 animationGlassBlock: function(options) 1772 { 1773 var self = this; 1774 1775 this.settings.is_animating = true; 1776 var easing = (this.settings.easing_default == '') ? 'easeOutExpo' : this.settings.easing_default; 1777 var time_animate = 700 / this.settings.velocity; 1778 1779 this.setActualLevel(); 1780
1781 var total = Math.ceil(this.settings.width_skitter / (this.settings.width_skitter / 10)); 1782 var width_box = Math.ceil(this.settings.width_skitter / total); 1783 var height_box = (this.settings.height_skitter); 1784 1785 for (i = 0; i < total; i++) { 1786 var _ileft = (width_box * (i)); 1787 var _itop = 0; 1788 1789 var _fleft = (width_box * (i)); 1790 var _ftop = 0; 1791 1792 var _bleft = -(width_box * (i)); 1793 var _btop = 0; 1794 1795 var delay_time = 100 * i; 1796 1797 var box_clone = this.getBoxClone(); 1798 box_clone.css({left: _ileft, top:_itop, width:width_box, height:height_box}); 1799 1800 box_clone 1801 .find('img') 1802 .css({left: _bleft + (width_box / 1.5), top: _btop}) 1803 .delay(delay_time) 1804 .animate({left: _bleft, top: _btop}, (time_animate * 1.1), 'easeInOutQuad'); 1805 1806 this.addBoxClone(box_clone); 1807 1808 var callback = (i == (total - 1)) ? function() { self.finishAnimation(); } : ''; 1809 box_clone.delay(delay_time).animate({top:_ftop, left:_fleft, opacity: 'show'}, time_animate, easing, callback); 1810 1811 } 1812 }, 1813 1814 animationCircles: function(options) 1815 { 1816 var self = this; 1817 1818 this.settings.is_animating = true; 1819 var easing = (this.settings.easing_default == '') ? 'easeInQuad' : this.settings.easing_default; 1820 var time_animate = 500 / this.settings.velocity; 1821 1822 this.setActualLevel(); 1823 1824 var total = Math.ceil(this.settings.width_skitter / (this.settings.width_skitter / 10)); 1825 var size_box = 100; 1826 1827 var radius = Math.sqrt(Math.pow((this.settings.width_skitter), 2) + Math.pow((this.settings.height_skitter), 2)); 1828 var radius = Math.ceil(radius); 1829 1830 for (i = 0; i < total; i++) { 1831 var _ileft = (self.settings.width_skitter / 2) - (size_box / 2); 1832 var _itop = (self.settings.height_skitter / 2) - (size_box / 2); 1833 1834 var _fleft = _ileft; 1835 var _ftop = _itop; 1836 1837 var box_clone = this.getBoxClone(); 1838 box_clone.css({left: _ileft, top:_itop, width:size_box, height:size_box}).css3({ 1839 'border-radius': radius+'px' 1840 }); 1841 box_clone.find('img').css({left: -_ileft, top: -_itop}); 1842 1843 size_box += 100; 1844 1845 this.addBoxClone(box_clone); 1846 1847 var delay_time = 70 * i; 1848 var callback = (i == (total - 1)) ? function() { self.finishAnimation(); } : ''; 1849 box_clone.delay(delay_time).animate({top: _ftop, left: _fleft, opacity: 'show'}, time_animate, easing, callback); 1850 1851 } 1852 }, 1853 1854 animationCirclesInside: function(options) 1855 { 1856 var self = this; 1857 1858 this.settings.is_animating = true; 1859 var easing = (this.settings.easing_default == '') ? 'easeInQuad' : this.settings.easing_default; 1860 var time_animate = 500 / this.settings.velocity; 1861 1862 var image_old = this.box_skitter.find('.image_main').attr('src'); 1863 1864 this.setActualLevel(); 1865 1866 this.setLinkAtual(); 1867 this.box_skitter.find('.image_main').attr({'src':this.settings.image_atual}); 1868 1869 var total = Math.ceil(this.settings.width_skitter / (this.settings.width_skitter / 10)); 1870 1871 var radius = Math.sqrt(Math.pow((this.settings.width_skitter), 2) + Math.pow((this.settings.height_skitter), 2)); 1872 var radius = Math.ceil(radius); 1873 var size_box = radius; 1874 1875 for (i = 0; i < total; i++) { 1876 var _ileft = (self.settings.width_skitter / 2) - (size_box / 2); 1877 var _itop = (self.settings.height_skitter / 2) - (size_box / 2); 1878 1879 var _fleft = _ileft; 1880 var _ftop = _itop; 1881 1882 var box_clone = this.getBoxCloneImgOld(image_old); 1883 box_clone.css({left: _ileft, top:_itop, width:size_box, height:size_box}).css3({ 1884 'border-radius': radius+'px' 1885 }); 1886 box_clone.find('img').css({left: -_ileft, top: -_itop}); 1887 1888 size_box -= 100; 1889 1890 this.addBoxClone(box_clone); 1891 box_clone.show(); 1892 1893 var delay_time = 70 * i; 1894 var callback = (i == (total - 1)) ? function() { self.finishAnimation(); } : ''; 1895 box_clone.delay(delay_time).animate({top: _ftop, left: _fleft, opacity: 'hide'}, time_animate, easing, callback); 1896 1897 } 1898 }, 1899 1900 animationCirclesRotate: function(options) 1901 { 1902 var self = this; 1903 1904 this.settings.is_animating = true; 1905 var easing = (this.settings.easing_default == '') ? 'easeOutQuad' : this.settings.easing_default; 1906 var time_animate = 500 / this.settings.velocity; 1907 1908 var image_old = this.box_skitter.find('.image_main').attr('src'); 1909 1910 this.setActualLevel(); 1911 1912 this.setLinkAtual(); 1913 this.box_skitter.find('.image_main').attr({'src':this.settings.image_atual}); 1914
1915 var total = Math.ceil(this.settings.width_skitter / (this.settings.width_skitter / 10)); 1916 1917 var radius = Math.sqrt(Math.pow((this.settings.width_skitter), 2) + Math.pow((this.settings.height_skitter), 2)); 1918 var radius = Math.ceil(radius); 1919 var size_box = radius; 1920 1921 for (i = 0; i < total; i++) { 1922 var _ileft = (self.settings.width_skitter / 2) - (size_box / 2); 1923 var _itop = (self.settings.height_skitter / 2) - (size_box / 2); 1924 1925 var _fleft = _ileft; 1926 var _ftop = _itop; 1927 1928 var box_clone = this.getBoxCloneImgOld(image_old); 1929 box_clone.css({left: _ileft, top:_itop, width:size_box, height:size_box}).css3({ 1930 'border-radius': radius+'px' 1931 }); 1932 box_clone.find('img').css({left: -_ileft, top: -_itop}); 1933 1934 size_box -= 100; 1935 1936 this.addBoxClone(box_clone); 1937 box_clone.show(); 1938 1939 var delay_time = 100 * i; 1940 var callback = (i == (total - 1)) ? function() { self.finishAnimation(); } : ''; 1941 var _rotate = (i % 2 == 0) ? '20deg' : '-20deg'; 1942 box_clone.delay(delay_time).animate({top: _ftop, left: _fleft, opacity: 'hide', rotate: _rotate}, time_animate, easing, callback); 1943 } 1944 }, 1945 1946 animationCubeShow: function(options) 1947 { 1948 var self = this; 1949 1950 this.settings.is_animating = true; 1951 var easing = (this.settings.easing_default == '') ? 'easeOutQuad' : this.settings.easing_default; 1952 var time_animate = 400 / this.settings.velocity; 1953 1954 this.setActualLevel(); 1955 1956 var division_w = Math.ceil(this.settings.width_skitter / (this.settings.width_skitter / 8)); 1957 var division_h = Math.ceil(this.settings.height_skitter / (this.settings.height_skitter / 4)); 1958 var total = division_w * division_h; 1959 1960 var width_box = Math.ceil(this.settings.width_skitter / division_w); 1961 var height_box = Math.ceil(this.settings.height_skitter / division_h); 1962 1963 var last = false; 1964 1965 var _btop = 0; 1966 var _bleft = 0; 1967 var line = 0; 1968 var col = 0; 1969 1970 for (i = 0; i < total; i++) { 1971 1972 _btop = height_box * line; 1973 _bleft = width_box * col; 1974 1975 var delay_time = 30 * (i); 1976 1977 var box_clone = this.getBoxClone(); 1978 box_clone.css({left:_bleft, top:_btop, width:width_box, height:height_box}).hide(); 1979 box_clone.find('img').css({left:-_bleft, top:-_btop}); 1980 this.addBoxClone(box_clone); 1981 1982 var callback = (i == (total - 1)) ? function() { self.finishAnimation(); } : ''; 1983 box_clone.delay(delay_time).animate({width:'show', height:'show'}, time_animate, easing, callback); 1984 1985 line++; 1986 if (line == division_h) { 1987 line = 0; 1988 col++; 1989 } 1990 } 1991 }, 1992 1993 animationDirectionBars: function(options) 1994 { 1995 var self = this; 1996 1997 var options = $.extend({}, {direction: 'top'}, options || {}); 1998 1999 this.settings.is_animating = true; 2000 var easing = (this.settings.easing_default == '') ? 'easeInOutQuad' : this.settings.easing_default; 2001 var time_animate = 400 / this.settings.velocity; 2002 2003 var image_old = this.box_skitter.find('.image_main').attr('src'); 2004 2005 this.setActualLevel(); 2006 2007 this.setLinkAtual(); 2008 this.box_skitter.find('.image_main').attr({'src':this.settings.image_atual}); 2009 2010 var total = 12; 2011 var width_box = Math.ceil(this.settings.width_skitter / total); 2012 var height_box = this.settings.height_skitter; 2013 var _ftop = (options.direction == 'top') ? -height_box : height_box; 2014 2015 for (i = 0; i < total; i++) { 2016 var _vtop = 0; 2017 var _vleft = (width_box * i); 2018 var _vtop_image = 0; 2019 var _vleft_image = -(width_box * i) ; 2020 2021 var box_clone = this.getBoxCloneImgOld(image_old); 2022 2023 box_clone.css({left:_vleft+'px', top:_vtop+'px', width:width_box, height:height_box}); 2024 box_clone.find('img').css({left:_vleft_image, top:_vtop_image}); 2025 2026 this.addBoxClone(box_clone); 2027 box_clone.show(); 2028 2029 var delay_time = 70 * i; 2030 var callback = (i == (total - 1)) ? function() { self.finishAnimation(); } : ''; 2031 2032 box_clone.delay(delay_time).animate({top:_ftop}, time_animate, easing, callback); 2033 } 2034 2035 }, 2036 2037 // End animations ---------------------- 2038
2039 // Finish animation 2040 finishAnimation: function (options) 2041 { 2042 var self = this; 2043 this.box_skitter.find('.image_main').show(); 2044 this.showBoxText(); 2045 this.settings.is_animating = false; 2046 this.box_skitter.find('.image_main').attr({'src': this.settings.image_atual}); 2047 this.box_skitter.find('.image a').attr({'href': this.settings.link_atual}); 2048 if (!this.settings.is_hover_box_skitter && !this.settings.is_paused && !this.settings.is_blur) { 2049 this.timer = setTimeout(function() { self.completeMove(); }, this.settings.interval); 2050 } 2051 2052 self.startTime(); 2053 }, 2054 2055 // Complete move 2056 completeMove: function () 2057 { 2058 this.clearTimer(true); 2059 this.box_skitter.find('.box_clone').remove(); 2060 if (!this.settings.is_paused && !this.settings.is_blur) this.nextImage(); 2061 }, 2062 2063 // Actual config for animation 2064 setActualLevel: function() { 2065 if ($.isFunction(this.settings.imageSwitched)) this.settings.imageSwitched(this.settings.image_i, this); 2066 this.setImageLink(); 2067 this.addClassNumber(); 2068 this.hideBoxText(); 2069 this.increasingImage(); 2070 }, 2071 2072 // Set image and link 2073 setImageLink: function() 2074 { 2075 var name_image = this.settings.images_links[this.settings.image_i][0]; 2076 var link_image = this.settings.images_links[this.settings.image_i][1]; 2077 var label_image = this.settings.images_links[this.settings.image_i][3]; 2078 var target_link = this.settings.images_links[this.settings.image_i][4]; 2079 2080 this.settings.image_atual = name_image; 2081 this.settings.link_atual = link_image; 2082 this.settings.label_atual = label_image; 2083 this.settings.target_atual = target_link; 2084 }, 2085 2086 // Add class for number 2087 addClassNumber: function () 2088 { 2089 var self = this; 2090 this.box_skitter.find('.image_number_select').animate(self.settings.animateNumberOut, 500).removeClass('image_number_select'); 2091 $('#image_n_'+(this.settings.image_i+1)+'_'+self.number_skitter).animate(self.settings.animateNumberActive, 700).addClass('image_number_select'); 2092 }, 2093 2094 // Increment image_i 2095 increasingImage: function() 2096 { 2097 this.settings.image_i++; 2098 if (this.settings.image_i == this.settings.images_links.length) { 2099 this.settings.image_i = 0; 2100 } 2101 }, 2102 2103 // Get box clone 2104 getBoxClone: function() 2105 { 2106 if (this.settings.link_atual != '#') { 2107 //var img_clone = $('<a href="'+this.settings.link_atual+'"><img src="'+this.settings.image_atual+'" /></a>'); 2108 var img_clone = $('<a href="'+this.settings.link_atual+'" target="'+this.settings.target_atual+'"><img src="'+this.settings.image_atual+'" /></a>'); 2109 } 2110 else { 2111 var img_clone = $('<img src="'+this.settings.image_atual+'" />'); 2112 } 2113 2114 img_clone = this.resizeImage(img_clone); 2115 var box_clone = $('<div class="box_clone"></div>'); 2116 box_clone.append(img_clone); 2117 return box_clone; 2118 }, 2119 2120 // Get box clone 2121 getBoxCloneImgOld: function(image_old) 2122 { 2123 if (this.settings.link_atual != '#') { 2124 //var img_clone = $('<a href="'+this.settings.link_atual+'"><img src="'+image_old+'" /></a>'); 2125 var img_clone = $('<a href="'+this.settings.link_atual+'" target="'+this.settings.target_atual+'"><img src="'+image_old+'" /></a>'); 2126 } 2127 else { 2128 var img_clone = $('<img src="'+image_old+'" />'); 2129 } 2130 2131 img_clone = this.resizeImage(img_clone); 2132 var box_clone = $('<div class="box_clone"></div>'); 2133 box_clone.append(img_clone); 2134 return box_clone; 2135 }, 2136 2137 // Redimensiona imagem 2138 resizeImage: function(img_clone) 2139 { 2140 if (this.settings.fullscreen) { 2141 img_clone.find('img').height(this.settings.height_skitter); 2142 } 2143 img_clone.find('img').width(this.settings.width_skitter); 2144 return img_clone; 2145 }, 2146 2147 // Add box clone in box_skitter 2148 addBoxClone: function(box_clone) 2149 { 2150 this.box_skitter.find('.container_skitter').append(box_clone); 2151 }, 2152 2153 // Get accepts easing 2154 getEasing: function(easing) 2155 { 2156 var easing_accepts = [ 2157 'easeInQuad', 'easeOutQuad', 'easeInOutQuad', 2158 'easeInCubic', 'easeOutCubic', 'easeInOutCubic', 2159 'easeInQuart', 'easeOutQuart', 'easeInOutQuart', 2160 'easeInQuint', 'easeOutQuint', 'easeInOutQuint', 2161 'easeInSine', 'easeOutSine', 'easeInOutSine', 2162 'easeInExpo', 'easeOutExpo', 'easeInOutExpo', 2163 'easeInCirc', 'easeOutCirc', 'easeInOutCirc', 2164 'easeInElastic', 'easeOutElastic', 'easeInOutElastic', 2165 'easeInBack', 'easeOutBack', 'easeInOutBack', 2166 'easeInBounce', 'easeOutBounce', 'easeInOutBounce', 2167 ]; 2168 2169 if (jsnThemeSliderjQuery.inArray(easing, easing_accepts) > 0) { 2170 return easing; 2171 } 2172 else { 2173 return ''; 2174 } 2175 }, 2176 2177 // Get random number 2178 getRandom: function (i) 2179 { 2180 return Math.floor(Math.random() * i); 2181 }, 2182 2183 // Set value for text 2184 setValueBoxText: function () 2185 { 2186 this.box_skitter.find('.label_skitter').html(this.settings.label_atual); 2187 }, 2188 2189 // Show box text 2190 showBoxText: function () 2191 { 2192 var self = this; 2193 if (this.settings.label_atual != undefined && this.settings.label_atual != '' && self.settings.label) { 2194 self.box_skitter.find('.label_skitter').slideDown(400); 2195 } 2196 }, 2197 2198 // Hide box text 2199 hideBoxText: function () 2200 { 2201 var self = this; 2202 this.box_skitter.find('.label_skitter').slideUp(200, function() { 2203 self.setValueBoxText(); 2204 }); 2205 }, 2206 2207 // Stop time to get over box_skitter 2208 stopOnMouseOver: function () 2209 { 2210 var self = this; 2211 var opacity_elements = self.settings.opacity_elements; 2212 var interval_in_elements = self.settings.interval_in_elements; 2213 var interval_out_elements = self.settings.interval_out_elements; 2214 if ( self.settings.stop_over ) 2215 { 2216 self.box_skitter.hover(function() { 2217 2218 if (self.settings.stop_over) self.settings.is_hover_box_skitter = true; 2219 2220 if (!self.settings.is_paused_time) { 2221 self.pauseTime(); 2222 } 2223 2224 if (self.settings.hideTools) { 2225 if (self.settings.numbers) { 2226 self.box_skitter 2227 .find('.info_slide') 2228 .show() 2229 .css({opacity:0}
2229) 2230 .animate({opacity: opacity_elements}, interval_in_elements); 2231 } 2232 2233 if (self.settings.navigation) { 2234 self.box_skitter 2235 .find('.prev_button') 2236 .show() 2237 .css({opacity:0}) 2238 .animate({opacity: opacity_elements}, interval_in_elements); 2239 2240 self.box_skitter 2241 .find('.next_button') 2242 .show().css({opacity:0}) 2243 .animate({opacity: opacity_elements}, interval_in_elements); 2244 } 2245 2246 if (self.settings.focus && !self.settings.foucs_active) { 2247 self.box_skitter 2248 .find('.focus_button') 2249 .stop() 2250 .show().css({opacity:0}) 2251 .animate({opacity:opacity_elements}, 200); 2252 } 2253 2254 if (self.settings.controls) { 2255 self.box_skitter 2256 .find('.play_pause_button') 2257 .stop() 2258 .show().css({opacity:0}) 2259 .animate({opacity:opacity_elements}, 200); 2260 } 2261 } 2262 2263 self.clearTimer(true); 2264 2265 if (self.settings.focus && !self.settings.foucs_active && !self.settings.hideTools) { 2266 self.box_skitter 2267 .find('.focus_button') 2268 .stop() 2269 .animate({opacity:1}, 200); 2270 } 2271 2272 if (self.settings.controls && !self.settings.hideTools) { 2273 self.box_skitter 2274 .find('.play_pause_button') 2275 .stop() 2276 .animate({opacity:1}, 500); 2277 } 2278 }, function() { 2279 if (self.settings.stop_over) self.settings.is_hover_box_skitter = false; 2280 2281 if (self.settings.elapsedTime == 0 && !self.settings.is_animating && !self.settings.is_paused) { 2282 self.startTime(); 2283 } 2284 else if (!self.settings.is_paused) { 2285 self.resumeTime(); 2286 } 2287 2288 if (self.settings.hideTools) { 2289 if (self.settings.numbers) { 2290 self.box_skitter 2291 .find('.info_slide') 2292 .queue("fx", []) 2293 .show() 2294 .css({opacity: opacity_elements}) 2295 .animate({opacity:0}
2295, interval_out_elements); 2296 } 2297 2298 if (self.settings.navigation) { 2299 self.box_skitter 2300 .find('.prev_button') 2301 .queue("fx", []) 2302 .show() 2303 .css({opacity: opacity_elements}) 2304 .animate({opacity:0}, interval_out_elements); 2305 2306 self.box_skitter 2307 .find('.next_button') 2308 .queue("fx", []) 2309 .show() 2310 .css({opacity: opacity_elements}) 2311 .animate({opacity:0}, interval_out_elements); 2312 } 2313 2314 2315 if (self.settings.focus && !self.settings.foucs_active) { 2316 self.box_skitter 2317 .find('.focus_button') 2318 .stop() 2319 .css({opacity: opacity_elements}) 2320 .animate({opacity:0}, 200); 2321 } 2322 2323 if (self.settings.controls) { 2324 self.box_skitter 2325 .find('.play_pause_button') 2326 .stop() 2327 .css({opacity: opacity_elements}) 2328 .animate({opacity:0}, 200); 2329 } 2330 } 2331 2332 self.clearTimer(true); 2333 2334 if (!self.settings.is_animating && self.settings.images_links.length > 1) { 2335 self.timer = setTimeout(function() { self.completeMove(); }, self.settings.interval - self.settings.elapsedTime); 2336 self.box_skitter.find('.image_main').attr({'src': self.settings.image_atual}); 2337 self.box_skitter.find('.image a').attr({'href': self.settings.link_atual}); 2338 } 2339 2340 if (self.settings.focus && !self.settings.foucs_active && !self.settings.hideTools) { 2341 self.box_skitter 2342 .find('.focus_button') 2343 .stop() 2344 .animate({opacity:0.3}, 200); 2345 } 2346 2347 if (self.settings.controls && !self.settings.hideTools) { 2348 self.box_skitter 2349 .find('.play_pause_button') 2350 .stop() 2351 .animate({opacity:0.3}, 200); 2352 } 2353 2354 }); 2355 } 2356 }, 2357 2358 // Stop timer 2359 clearTimer: function (force) { 2360 var self = this; 2361 clearInterval(self.timer); 2362 }, 2363 2364 // Set link atual 2365 setLinkAtual: function() { 2366 if (this.settings.link_atual != '#') { 2367 this.box_skitter.find('.image a').attr({'href': this.settings.link_atual, 'target': this.settings.target_atual}); 2368 } 2369 else { 2370 this.box_skitter.find('.image a').removeAttr('href'); 2371 } 2372 }, 2373 2374 // Hide tools 2375 hideTools: function() { 2376 this.box_skitter.find('.info_slide').hide(); 2377 this.box_skitter.find('.prev_button').hide(); 2378 this.box_skitter.find('.next_button').hide(); 2379 this.box_skitter.find('.label_skitter').hide(); 2380 this.box_skitter.find('.focus_button').hide(); 2381 this.box_skitter.find('.play_pause_button').hide(); 2382 }, 2383 2384 // Animation mouse over 2385 mouseOverButton: function() { 2386 $(this).stop().animate({opacity:0.5}, 200); 2387 }, 2388 2389 // Animation mouse out 2390 mouseOutButton: function() { 2391 $(this).stop().animate({opacity:1}, 200); 2392 }, 2393 2394 // Focus Skitter 2395 focusSkitter: function() { 2396 var self = this; 2397 2398 var focus_button = $('<span class="focus_button">focus</span>'); 2399 self.box_skitter.append(focus_button); 2400 2401 var _left = (self.settings.width_skitter - focus_button.width()) / 2; 2402 var _space = 0; 2403 2404 if (self.settings.controls) _left -= 25; 2405 if (self.settings.controls_position == self.settings.focus_position) _space = focus_button.width() + 5; 2406 2407 var cssPosition = {left: _left}; 2408 2409 switch (self.settings.focus_position) 2410 { 2411 case 'leftTop' : cssPosition = {left: 5 + _space, top: 30}; break; 2412 case 'rightTop' : cssPosition = {right: 5 + _space, top: 30}; break; 2413 case 'leftBottom' : cssPosition = {left: 5 + _space, bottom: 5, top: 'auto'}; break; 2414 case 'rightBottom' : cssPosition = {right: 5 + _space, bottom: 5, top: 'auto'}; break; 2415 } 2416 2417 focus_button 2418 .css(cssPosition) 2419 .animate({opacity:0.3}, self.settings.interval_in_elements); 2420 2421 $(document).keypress(function(e) { 2422 var code = (e.keyCode ? e.keyCode : e.which); 2423 if (code == 27) $('#overlay_skitter').trigger('click'); 2424 }); 2425 2426 self.box_skitter.find('.focus_button').click(function() { 2427 self.settings.foucs_active = true; 2428 2429 $(this).stop().animate({opacity:0}
2429, self.settings.interval_out_elements); 2430 2431 var div = $('<div id="overlay_skitter"></div>') 2432 .height( $(document).height() ) 2433 .hide() 2434 .fadeTo(self.settings.interval_in_elements, 0.98); 2435 2436 var _top = $('.box_skitter').offset().top; 2437 var _left = $('.box_skitter').offset().left; 2438 var _topFinal = (($(window).height() - $('.box_skitter').height()) / 2) + $(document).scrollTop(); 2439 var _leftFinal = ($(window).width() - $('.box_skitter').width()) / 2; 2440 2441 self.box_skitter.before('<div id="mark_position"></div>'); 2442 $('body').prepend(div); 2443 $('body').prepend(self.box_skitter); 2444 self.box_skitter 2445 .css({'top':_top, 'left':_left, 'position':'absolute', 'z-index':9999}) 2446 .animate({'top':_topFinal, 'left':_leftFinal}, 2000, 'easeOutExpo'); 2447 2448 $('#mark_position') 2449 .width($('.box_skitter').width()) 2450 .height($('.box_skitter').height()) 2451 .css({'background':'none'}) 2452 .fadeTo(300,0.3); 2453 2454 $('#overlay_skitter').click(function() { 2455 if ($(this).hasClass('finish_overlay_skitter')) return false; 2456 2457 self.settings.foucs_active = false; 2458 $(this).addClass('finish_overlay_skitter'); 2459 2460 $('#mark_position').before($('.box_skitter')); 2461 2462 if (!self.settings.hideTools) self.box_skitter.find('.focus_button').animate({opacity:0.3}, 200); 2463 2464 self.box_skitter 2465 .stop() 2466 .animate({'top':_top, 'left':_left}, 300, 'easeOutExpo', function() { 2467 $(this).css({'position':'relative', 'top':0, 'left': 0}); 2468 $('#mark_position').remove(); 2469 }); 2470 2471 $('#overlay_skitter').fadeTo(self.settings.interval_out_elements, 0, function() { 2472 $(this).remove(); 2473 }); 2474 2475 return false; 2476 }); 2477 2478 return false; 2479 }); 2480 }, 2481 2482 2483 /** 2484 * Controls: play and stop 2485 */ 2486 setControls: function() { 2487 var self = this; 2488 2489 var play_pause_button = $('<span class="play_pause_button">pause</span>'); 2490 self.box_skitter.append(play_pause_button); 2491 2492 var _left = (self.settings.width_skitter - play_pause_button.width()) / 2; 2493 2494 if (self.settings.focus) _left += 25; 2495 2496 var cssPosition = {left: _left}; 2497 2498 switch (self.settings.controls_position) 2499 { 2500 case 'leftTop' : cssPosition = {left: 5, top: 30}; break; 2501 case 'rightTop' : cssPosition = {right: 5, top: 30}; break; 2502 case 'leftBottom' : cssPosition = {left: 5, bottom: 5, top: 'auto'}; break; 2503 case 'rightBottom' : cssPosition = {right: 5, bottom: 5, top: 'auto'}; break; 2504 } 2505 if (!self.settings.controlShowOnMouseOver) 2506 { 2507 play_pause_button 2508 .css(cssPosition) 2509 .animate({opacity:0.3}, self.settings.interval_in_elements); 2510 } 2511 else 2512 { 2513 play_pause_button 2514 .css(cssPosition) 2515 .animate({opacity:0}
2515, self.settings.interval_in_elements); 2516 } 2517 play_pause_button.click(function() { 2518 if (!self.settings.is_paused) { 2519 $(this).html('play'); 2520 $(this).fadeTo(100, 0.5).fadeTo(100, 1); 2521 2522 $(this).addClass('play_button'); 2523 self.pauseTime(); 2524 self.settings.is_paused = true; 2525 self.clearTimer(true); 2526 } 2527 else { 2528 if (!self.settings.is_animating && !self.box_skitter.find('.progressbar').is(':visible')) { 2529 self.settings.elapsedTime = 0; 2530 } 2531 else { 2532 self.resumeTime(); 2533 } 2534 2535 if (!self.settings.progressbar) self.resumeTime(); 2536 2537 self.settings.is_paused = false; 2538 2539 $(this).html('pause'); 2540 $(this).fadeTo(100, 0.5).fadeTo(100, 1); 2541 $(this).removeClass('play_button'); 2542 2543 if (!self.settings.stop_over) { 2544 self.clearTimer(true); 2545 if (!self.settings.is_animating && self.settings.images_links.length > 1) { 2546 self.timer = setTimeout(function() { self.completeMove(); }, self.settings.interval - self.settings.elapsedTime); 2547 self.box_skitter.find('.image_main').attr({'src': self.settings.image_atual}); 2548 self.box_skitter.find('.image a').attr({'href': self.settings.link_atual}); 2549 } 2550 } 2551 } 2552 2553 return false; 2554 }); 2555 }, 2556 2557 /** 2558 * Object size 2559 */ 2560 objectSize: function(obj) { 2561 var size = 0, key; 2562 for (key in obj) { if (obj.hasOwnProperty(key)) size++; } 2563 return size; 2564 }, 2565 2566 /** 2567 * Add progress bar 2568 */ 2569 addProgressBar: function() { 2570 var self = this; 2571 2572 var progressbar = $('<div class="progressbar"></div>'); 2573 self.box_skitter.append(progressbar); 2574 2575 if (self.objectSize(self.settings.progressbar_css) == 0) { 2576 if (parseInt(progressbar.css('width')) > 0) { 2577 self.settings.progressbar_css.width = parseInt(progressbar.css('width')); 2578 } 2579 else { 2580 self.settings.progressbar_css = {width: self.settings.width_skitter, height:5}; 2581 } 2582 } 2583 if (self.objectSize(self.settings.progressbar_css) > 0 && self.settings.progressbar_css.width == undefined) { 2584 self.settings.progressbar_css.width = self.settings.width_skitter; 2585 } 2586 2587 progressbar.css(self.settings.progressbar_css).hide(); 2588 }, 2589 2590 /** 2591 * Start progress bar 2592 */ 2593 startProgressBar: function() { 2594 var self = this; 2595 if (self.settings.is_hover_box_skitter || self.settings.is_paused || self.settings.is_blur || !self.settings.progressbar) return false; 2596 self.box_skitter.find('.progressbar') 2597 .hide() 2598 .dequeue() 2599 .width(self.settings.progressbar_css.width) 2600 .animate({width:'show'}, self.settings.interval, 'linear'); 2601 }, 2602 2603 /** 2604 * Pause progress bar 2605 */ 2606 pauseProgressBar: function() { 2607 var self = this; 2608 if (!self.settings.is_animating) { 2609 self.box_skitter.find('.progressbar').stop(); 2610 } 2611 }, 2612 2613 /** 2614 * Resume progress bar 2615 */ 2616 resumeProgressBar: function() { 2617 var self = this; 2618 2619 if (self.settings.is_hover_box_skitter || self.settings.is_paused || !self.settings.progressbar) return false; 2620 2621 self.box_skitter.find('.progressbar').dequeue().animate({width: self.settings.progressbar_css.width}, (self.settings.interval - self.settings.elapsedTime), 'linear'); 2622 }, 2623 2624 /** 2625 * Hide progress bar 2626 */ 2627 hideProgressBar: function() { 2628 var self = this; 2629 2630 if (!self.settings.progressbar) return false; 2631 2632 self.box_skitter.find('.progressbar').stop().fadeOut(300, function() { 2633 $(this).width(self.settings.progressbar_css.width); 2634 }); 2635 }, 2636 2637 /** 2638 * Start time 2639 */ 2640 startTime: function() { 2641 var self = this; 2642 2643 self.settings.is_paused_time = false; 2644 2645 var date = new Date(); 2646 self.settings.elapsedTime = 0; 2647 self.settings.timeStart = date.getTime(); 2648 2649 // Start progress bar 2650 self.startProgressBar(); 2651 }, 2652 2653 /** 2654 * Pause time 2655 */ 2656 pauseTime: function() { 2657 var self = this; 2658 2659 if (self.settings.is_paused_time) return false; 2660 self.settings.is_paused_time = true; 2661 2662 var date = new Date(); 2663 self.settings.elapsedTime += date.getTime() - self.settings.timeStart; 2664 2665 // Pause progress bar 2666 self.pauseProgressBar(); 2667 }, 2668 2669 /** 2670 * Resume time 2671 */ 2672 resumeTime: function() { 2673 var self = this; 2674 2675 self.settings.is_paused_time = false;
2676 2677 var date = new Date(); 2678 self.settings.timeStart = date.getTime(); 2679 2680 // Resume progress bar 2681 self.resumeProgressBar(); 2682 }, 2683 2684 /** 2685 * Enable navigation keys 2686 */ 2687 enableNavigationKeys: function() { 2688 var self = this; 2689 $(window).keydown(function(e) { 2690 // Next 2691 if (e.keyCode == 39 || e.keyCode == 40) { 2692 self.box_skitter.find('.next_button').trigger('click'); 2693 } 2694 // Prev 2695 else if (e.keyCode == 37 || e.keyCode == 38) { 2696 self.box_skitter.find('.prev_button').trigger('click'); 2697 } 2698 }); 2699 }, 2700 2701 /** 2702 * Shuffle array 2703 * @author Daniel Castro Machado <[email protected]> 2704 */ 2705 shuffleArray: function (arrayOrigem) { 2706 var self = this; 2707 var arrayDestino = new Array(); 2708 var indice; 2709 while (arrayOrigem.length > 0) { 2710 indice = self.randomUnique(0, arrayOrigem.length - 1); 2711 arrayDestino[arrayDestino.length] = arrayOrigem[indice]; 2712 arrayOrigem.splice(indice, 1); 2713 } 2714 return arrayDestino; 2715 }, 2716 2717 /** 2718 * Gera números aleatórios inteiros entre um intervalo 2719 * @author Daniel Castro Machado <[email protected]> 2720 */ 2721 randomUnique: function (valorIni, valorFim) { 2722 var numRandom; 2723 do numRandom = Math.random(); while (numRandom == 1); // Evita gerar o número valorFim + 1 2724 return (numRandom * (valorFim - valorIni + 1) + valorIni) | 0; 2725 }, 2726 2727 /** 2728 * Stop on window focus out 2729 * @author Dan Partac (http://thiagosf.net/projects/jquery/skitter/#comment-355473307) 2730 */ 2731 windowFocusOut: function () { 2732 var self = this; 2733 $(window).bind('blur', function(){ 2734 self.settings.is_blur = true; 2735 self.pauseTime(); 2736 self.clearTimer(true); 2737 }); 2738 $(window).bind('focus', function(){ 2739 if ( self.settings.images_links.length > 1 ) { 2740 self.settings.is_blur = false; 2741 2742 if (self.settings.elapsedTime == 0) { 2743 self.startTime(); 2744 } 2745 else { 2746 self.resumeTime(); 2747 } 2748 2749 if (self.settings.elapsedTime <= self.settings.interval) { 2750 self.timer = setTimeout(function() { self.completeMove(); }, self.settings.interval - self.settings.elapsedTime); 2751 self.box_skitter.find('.image_main').attr({'src': self.settings.image_atual}); 2752 self.box_skitter.find('.image a').attr({'href': self.settings.link_atual}); 2753 } 2754 } 2755 }); 2756 }, 2757 2758 /** 2759 * Navigation : onMouseOver 2760 */ 2761 navOnMouseOver: function() { 2762 var self = this; 2763 var opacity_elements = self.settings.opacity_elements; 2764 var interval_out_elements = self.settings.interval_out_elements; 2765 2766 if (self.settings.navShowOnMouseOver && self.settings.navigation) 2767 { 2768 self.box_skitter.hover(function() { 2769 self.box_skitter 2770 .find('.prev_button') 2771 .fadeIn(500); 2772 self.box_skitter 2773 .find('.next_button') 2774 .fadeIn(500); 2775 }, function(){ 2776 self.box_skitter 2777 .find('.prev_button') 2778 .fadeOut(500); 2779 self.box_skitter 2780 .find('.next_button') 2781 .fadeOut(500); 2782 }); 2783 } 2784 2785 if (self.settings.controlShowOnMouseOver && self.settings.controls) 2786 { 2787 self.box_skitter.hover(function() { 2788 self.box_skitter 2789 .find('.play_pause_button') 2790 .show(); 2791 }, function(){ 2792 self.box_skitter 2793 .find('.play_pause_button') 2794 .fadeOut(500); 2795 }); 2796 } 2797 } 2798 }); 2799 2800 /** 2801 * Helper function for cross-browser CSS3 support, prepends all possible prefixes to all properties passed in 2802 * @param {Object} props Ker/value pairs of CSS3 properties 2803 */ 2804 $.fn.css3 = function(props) { 2805 var css = {}; 2806 var prefixes = ['moz', 'ms', 'o', 'webkit']; 2807 2808 for(var prop in props) { 2809 // Add the vendor specific versions 2810 for(var i=0; i<prefixes.length; i++) 2811 css['-'+prefixes[i]+'-'+prop] = props[prop]; 2812 2813 // Add the actual version 2814 css[prop] = props[prop]; 2815 } 2816 2817 this.css(css); 2818 return this; 2819 }; 2820 2821 // Monkey patch jQuery 1.3.1+ to add support for setting or animating CSS 2822 // scale and rotation independently. 2823 // 2009-2010 Zachary Johnson www.zachstronaut.com 2824 // Updated 2010.11.06 2825 var rotateUnits = 'deg'; 2826 2827 $.fn.rotate = function (val) { 2828 var style = $(this).css('transform') || 'none'; 2829 2830 if (typeof val == 'undefined') { 2831 if (style) { 2832 var m = style.match(/rotate\(([^)]+)\)/); 2833 if (m && m[1]) { 2834 return m[1]; 2835 } 2836 } 2837 return 0; 2838 } 2839 2840 var m = val.toString().match(/^(-?\d+(\.\d+)?)(.+)?$/); 2841 2842 if (m) { 2843 if (m[3]) rotateUnits = m[3]; 2844 $(this).css('transform', 2845 style.replace(/none|rotate\([^)]*\)/, '') + 'rotate(' + m[1] + rotateUnits + ')' 2846 ); 2847 } 2848 2849 return this; 2850 }; 2851 2852 // Note that scale is unitless. 2853 $.fn.scale = function (val, duration, options) { 2854 var style = $(this).css('transform'); 2855 2856 if (typeof val == 'undefined') { 2857 if (style) { 2858 var m = style.match(/scale\(([^)]+)\)/); 2859 if (m && m[1]) { 2860 return m[1]; 2861 } 2862 } 2863 return 1; 2864 } 2865 2866 $(this).css('transform', 2867 style.replace(/none|scale\([^)]*\)/, '') + 'scale(' + val + ')' 2868 ); 2869 2870 return this; 2871 }; 2872 2873 // fx.cur() must be monkey patched because otherwise it would always 2874 // return 0 for current rotate and scale values 2875 var curProxied = $.fx.prototype.cur; 2876 $.fx.prototype.cur = function () { 2877 if (this.prop == 'rotate') { 2878 return parseFloat($(this.elem).rotate()); 2879 } 2880 else if (this.prop == 'scale') { 2881 return parseFloat($(this.elem).scale()); 2882 } 2883 return curProxied.apply(this, arguments); 2884 }; 2885 2886 $.fx.step.rotate = function (fx) { 2887 $(fx.elem).rotate(fx.now + rotateUnits); 2888 }; 2889 2890 $.fx.step.scale = function (fx) { 2891 $(fx.elem).scale(fx.now); 2892 }; 2893 2894 var animateProxied = $.fn.animate; 2895 $.fn.animate = function (prop) { 2896 if (typeof prop['rotate'] != 'undefined') { 2897 var m = prop['rotate'].toString().match(/^(([+-]=)?(-?\d+(\.\d+)?))(.+)?$/); 2898 if (m && m[5]) { 2899 rotateUnits = m[5]; 2900 } 2901 prop['rotate'] = m[1]; 2902 } 2903 2904 return animateProxied.apply(this, arguments); 2905 }; 2906 2907 // Monkey patch jQuery 1.3.1+ css() method to support CSS 'transform' 2908 // property uniformly across Safari/Chrome/Webkit, Firefox 3.5+, IE 9+, and Opera 11+.
2909 // 2009-2011 Zachary Johnson www.zachstronaut.com 2910 // Updated 2011.05.04 (May the fourth be with you!) 2911 function getTransformProperty(element) { 2912 var properties = ['transform', 'WebkitTransform', 'msTransform', 'MozTransform', 'OTransform']; 2913 var p; 2914 while (p = properties.shift()) { 2915 if (typeof element.style[p] != 'undefined') { 2916 return p; 2917 } 2918 } 2919 return 'transform'; 2920 }; 2921 2922 var _propsObj = null; 2923 2924 var proxied = $.fn.css; 2925 $.fn.css = function (arg, val) { 2926 if (_propsObj === null) { 2927 if (typeof $.cssProps != 'undefined') { 2928 _propsObj = $.cssProps; 2929 } 2930 else if (typeof $.props != 'undefined') { 2931 _propsObj = $.props; 2932 } 2933 else { 2934 _propsObj = {}; 2935 } 2936 } 2937 2938 if 2939 ( 2940 typeof _propsObj['transform'] == 'undefined' 2941 && 2942 ( 2943 arg == 'transform' 2944 || 2945 ( 2946 typeof arg == 'object' 2947 && typeof arg['transform'] != 'undefined' 2948 ) 2949 ) 2950 ) { 2951 _propsObj['transform'] = getTransformProperty(this.get(0)); 2952 } 2953 2954 if (_propsObj['transform'] != 'transform') { 2955 // Call in form of css('transform' ...) 2956 if (arg == 'transform') { 2957 arg = _propsObj['transform']; 2958 if (typeof val == 'undefined' && jsnThemeSliderjQuery.style) { 2959 return jsnThemeSliderjQuery.style(this.get(0), arg); 2960 } 2961 } 2962 2963 // Call in form of css({'transform': ...}) 2964 else if 2965 ( 2966 typeof arg == 'object' 2967 && typeof arg['transform'] != 'undefined' 2968 ) { 2969 arg[_propsObj['transform']] = arg['transform']; 2970 delete arg['transform']; 2971 } 2972 } 2973 2974 return proxied.apply(this, arguments); 2975 }; 2976 2977})(jsnThemeSliderjQuery);
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.