PageSourceSearch

https://www.dasbettkomplett.de/plugins/jsnimageshow/themeslider/assets/js/skitter/jquery.skitter.js

js dasbettkomplett.de collected 2026-10-07 00:34:17 UTC 90,952 bytes, 2,977 lines download raw bytes

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.