text: /**
   * jQuery Skitter Slideshow
   * @name jquery.skitter.js
   * @description Slideshow
   * @author Thiago Silva Ferreira - http://thiagosf.net
   * @version 4.2.1
   * @date August 04, 2010
   * @update April 25, 2013
   * @copyright (c) 2010 Thiago Silva Ferreira - http://thiagosf.net
   * @license Dual licensed under the MIT or GPL Version 2 licenses
   * @example http://thiagosf.net/projects/jquery/skitter/
   */
  ;(function($) {
  	
  	var number_skitter = 0,
  		skitters = [];
  	
  	$.fn.skitter = function(options) {
  		return this.each(function() {
  			if ( $(this).data('skitter_number') == undefined ) {
  				$(this).data('skitter_number', number_skitter);
  				skitters.push(new $sk(this, options, number_skitter));
  				++number_skitter;
  			}
  		});
  	};
  	
  	var defaults = {
  		// Animation velocity
  		velocity: 				1,
  
  		// Interval between transitions
  		interval: 				2500, 
  
  		// Default animation
  		animation: 				'',
  
  		// Numbers display
  		numbers: 				true,
  
  		// Navigation display
  		navigation:			 	true,
  
  		// Label display
  		label:					true,
  
  		// Easing default
  		easing_default: 		'',
  
  		// The skitters box (internal)
  		box_skitter: 			null,
  
  		// @deprecated
  		time_interval: 			null,
  
  		// Image link (internal)
  		images_links: 			null,
  
  		// Actual image (internal)
  		image_atual: 			null,
  
  		// Actual link (internal)
  		link_atual: 			null,
  
  		// Actual label (internal)
  		label_atual: 			null,
  
  		// Actual target (internal)
  		target_atual: 			'_self',
  
  		// Skitter width (internal)
  		width_skitter: 			null,
  
  		// Skitter height (internal)
  		height_skitter: 		null,
  
  		// Image number loop (internal)
  		image_i: 				1,
  
  		// Is animating (internal)
  		is_animating:  			false,
  
  		// Is hover box_skitter (internal)
  		is_hover_box_skitter: 	false,
  
  		// Smart randomly (internal)
  		random_ia: 				null,
  
  		// Randomly sliders
  		show_randomly: 			false,
  
  		// Navigation with thumbs
  		thumbs: 				false,
  
  		// Animation/style number/dot
  		animateNumberOut: 		false,
  
  		// Animation/style hover number/dot
  		animateNumberOver: 		false,
  
  		// Animation/style active number/dot
  		animateNumberActive: 	false,
  
  		// Hide numbers and navigation
  		hideTools: 				false,
  
  		// Fullscreen mode
  		fullscreen: 			false,
  
  		// Loading data from XML file
  		xml: 					false,
  
  		// Navigation with dots
  		dots: 					false,
  
  		// Width label
  		width_label: 			null,
  
  		// Final opacity of elements in hideTools
  		opacity_elements:		0.75,
  
  		// Interval animation hover elements hideTools 
  		interval_in_elements:	200, 
  
  		// Interval animation out elements hideTools
  		interval_out_elements:	300, 
  
  		// Onload Callback
  		onLoad:					null,
  
  		// Function call to change image
  		imageSwitched:			null,
  
  		// @deprecated
  		max_number_height: 		20,
  
  		// Alignment of numbers/dots/thumbs
  		numbers_align:			'left',
  
  		// Preview with dots
  		preview:				false,
  
  		// Focus slideshow
  		focus:					false,
  
  		// Focus active (internal)
  		foucs_active:			false,
  
  		// Position of button focus slideshow
  		focus_position:			'center',
  
  		// Option play/pause manually
  		controls:				false,
  
  		// Position of button controls
  		controls_position:		'center',
  
  		// Displays progress bar
  		progressbar:			false,
  
  		// CSS progress bar
  		progressbar_css:		{},
  
  		// Is paused (internal)
  		is_paused:				false,
  
  		// Is blur (internal)
  		is_blur:				false,
  
  		// Is paused time (internal)
  		is_paused_time:			false,
  
  		// Time start (internal)
  		timeStart:				0,
  
  		// Elapsed time (internal)
  		elapsedTime:			0,
  
  		// Stop animation to move mouse over it.
  		stop_over:				true,
  
  		// Enable navigation keys
  		enable_navigation_keys:	false,
  
  		// Specific animations
  		with_animations:		[],
  
  		// Function call to go over the navigation buttons
  		// mouseOverButton: 		function() { $(this).stop().animate({opacity:0.5}, 200); }, 
  		mouseOverButton: 		null, 
  
  		// Function call to go out the navigation buttons
  		// mouseOutButton: 		function() { $(this).stop().animate({opacity:1}, 200); }, 
  		mouseOutButton: 		null, 
  
  		// Sets whether the slideshow will start automatically
  		auto_play: 				true, 
  
  		// Label animation type
  		labelAnimation: 		'slideUp', 
  
  		// Theme
  		theme: null, 
  
  		// Structure (internal)
  		structure: 	 			  '<a href="#" class="btn prev_button"></a>'
  								+ '<a href="#" class="btn next_button"></a>'
  								+ '<div class="w960">'
  								+ '<span class="info_slide"></span>'
  								+ '</div>'
  								+ '<div class="container_skitter">'
  									+ '<div class="image">'
  										+ '<a href=""><img class="image_main" /></a>'
  										+ '<div class="label_skitter"></div>'
  									+ '</div>'
  								+ '</div>'
  		
  	};
  	
  	$.skitter = function(obj, options, number) {
  		this.box_skitter = $(obj);
  		this.timer = null;
  		this.settings = $.extend({}, defaults, options || {});
  		this.number_skitter = number;
  		this.setup();
  	};
  	
  	// Shortcut
  	var $sk = $.skitter;
  	
  	$sk.fn = $sk.prototype = {};
  	
  	$sk.fn.extend = $.extend;
  	
  	$sk.fn.extend({
  		
  		/**
  		 * Init
  		 */
  		setup: function() 
  		{
  			var self = this;
  
  			// Fullscreen
  			if (this.settings.fullscreen) {
  				var width = $(window).width();
  				var height = $(window).height();
  				this.box_skitter.width(width).height(height);
  				this.box_skitter.css({'position':'absolute', 'top':0, 'left':0, 'z-index':1000});
  				this.settings.stop_over = false;
  				$('body').css({'overflown':'hidden'});
  			}
  			
  			this.settings.width_skitter 	= parseFloat(this.box_skitter.css('width'));
  			this.settings.height_skitter 	= parseFloat(this.box_skitter.css('height'));
  			
  			if (!this.settings.width_skitter || !this.settings.height_skitter) {
  				console.warn('Width or height size is null! - Skitter Slideshow');
  				return false;
  			}
  
  			// Theme
  			if ( this.settings.theme ) {
  				this.box_skitter.addClass('skitter-' + this.settings.theme);
  			}
  			
  			// Structure html
  			this.box_skitter.append(this.settings.structure);
  			
  			// Settings
  			this.settings.easing_default 	= this.getEasing(this.settings.easing);
  						
  			if (this.settings.velocity >= 2) this.settings.velocity = 1.3;
  			if (this.settings.velocity <= 0) this.settings.velocity = 1;
  			
  			this.box_skitter.find('.info_slide').hide();
  			this.box_skitter.find('.label_skitter').hide();
  			this.box_skitter.find('.prev_button').hide();
  			this.box_skitter.find('.next_button').hide();
  						
  			this.box_skitter.find('.container_skitter').width(this.settings.width_skitter);
  			this.box_skitter.find('.container_skitter').height(this.settings.height_skitter);
  			
  			var width_label = this.settings.width_label ? this.settings.width_label : this.settings.width_skitter;
  			this.box_skitter.find('.label_skitter').width(width_label);
  			
  			var initial_select_class = ' image_number_select', u = 0;
  			this.settings.images_links = new Array();
  			
  			// Add image, link, animation type and label
  			var addImageLink = function (link, src, animation_type, label, target) {
  				self.settings.images_links.push([src, link, animation_type, label, target]);
  				if (self.settings.thumbs) {
  					var dimension_thumb = '';
  					if (self.settings.width_skitter > self.settings.height_skitter) {
  						dimension_thumb = 'height="100"';
  					} 
  					else {
  						dimension_thumb = 'width="100"';
  					}
  					self.box_skitter.find('.info_slide').append(
  						'<span class="image_number'+initial_select_class+'" rel="'+(u - 1)+'" id="image_n_'+u+'_'+self.number_skitter+'">'
  							+'<img src="'+src+'" '+dimension_thumb+' />'
  							+'</span> '
  					);
  				}
  				else {
  					self.box_skitter.find('.info_slide').append(
  						'<span class="image_number'+initial_select_class+'" rel="'+(u - 1)+'" id="image_n_'+u+'_'+self.number_skitter+'">'+u+'</span> '
  					);
  				}
  				initial_select_class = '';
  			};
  
  			// Load from XML
  			if (this.settings.xml) {
  				$.ajax({
  					type: 'GET',
  					url: this.settings.xml,
  					async: false,
  					dataType: 'xml',
  					success: function(xml) {
  						var ul = $('<ul></ul>');
  						$(xml).find('skitter slide').each(function(){
  							++u;
  							var link 			= ($(this).find('link').text()) ? $(this).find('link').text() : '#';
  							var src 			= $(this).find('image').text();
  							var animation_type 	= $(this).find('image').attr('type');
  							var label 			= $(this).find('label').text();
  							var target 			= ($(this).find('target').text()) ? $(this).find('target').text() : '_self';
  							addImageLink(link, src, animation_type, label, target);
  						});
  					}
  				});
  			}
  			// Load from json
  			else if (this.settings.json) {
  				
  			}
  			// Load from HTML
  			else {
  				this.box_skitter.find('ul li').each(function(){
  					++u;
  					var link 			= ($(this).find('a').length) ? $(this).find('a').attr('href') : '#';
  					var src 			= $(this).find('img').attr('src');
  					var animation_type 	= $(this).find('img').attr('class');
  					var label 			= $(this).find('.label_text').html();
  					var target 			= ($(this).find('a').length && $(this).find('a').attr('target')) ? $(this).find('a').attr('target') : '_self';
  					addImageLink(link, src, animation_type, label, target);
  				});
  			}
  			
  			// Thumbs
  			if (self.settings.thumbs && !self.settings.fullscreen) 
  			{
  				// New animation
  				self.settings.animateNumberOut = {opacity:0.3};
  				self.settings.animateNumberOver = {opacity:0.5};
  				self.settings.animateNumberActive = {opacity:1};
  				
  				self.box_skitter.find('.info_slide').addClass('info_slide_thumb');
  				var width_info_slide = (u + 1) * self.box_skitter.find('.info_slide_thumb .image_number').width();
  				self.box_skitter.find('.info_slide_thumb').width(width_info_slide);
  				self.box_skitter.css({height:self.box_skitter.height() + self.box_skitter.find('.info_slide').height()});
  				
  				self.box_skitter.append('<div class="container_thumbs"></div>');
  				var copy_info_slide = self.box_skitter.find('.info_slide').clone();
  				self.box_skitter.find('.info_slide').remove();
  				self.box_skitter.find('.container_thumbs')
  					.width(self.settings.width_skitter)
  					.append(copy_info_slide);
  				
  				// Scrolling with mouse movement
  				var width_image = 0, 
  					width_skitter = this.settings.width_skitter,
  					height_skitter = this.settings.height_skitter, 
  					w_info_slide_thumb = 0,
  					info_slide_thumb = self.box_skitter.find('.info_slide_thumb'),
  					x_value = 0,
  					y_value = self.box_skitter.offset().top;
  					
  				info_slide_thumb.find('.image_number').each(function(){
  					width_image += $(this).outerWidth();
  				});
  				
  				info_slide_thumb.width(width_image+'px');
  				w_info_slide_thumb = info_slide_thumb.width();
  				width_value = this.settings.width_skitter;
  				
  				width_value = width_skitter - 100;
  				
  				if (width_info_slide > self.settings.width_skitter) {
  					self.box_skitter.mousemove(function(e){
  						x_value = self.box_skitter.offset().left + 90;
  						
  						var x = e.pageX, y = e.pageY, new_x = 0;
  						
  						x = x - x_value;
  						y = y - y_value;
  						novo_width = w_info_slide_thumb - width_value;
  						new_x = -((novo_width * x) / width_value);
  						
  						if (new_x > 0) new_x = 0;
  						if (new_x < -(w_info_slide_thumb - width_skitter)) new_x = -(w_info_slide_thumb - width_skitter);
  						
  						if (y > height_skitter) {
  							info_slide_thumb.css({left: new_x});
  						}
  					});
  				}
  				
  				self.box_skitter.find('.scroll_thumbs').css({'left':10});
  				
  				if (width_info_slide < self.settings.width_skitter) {
  					self.box_skitter.find('.info_slide').width('auto');
  					self.box_skitter.find('.box_scroll_thumbs').hide();
  					
  					var class_info = '.info_slide';
  					switch (self.settings.numbers_align) {
  						case 'center' : 
  							var _vleft = (self.settings.width_skitter - self.box_skitter.find(class_info).width()) / 2;
  							self.box_skitter.find(class_info).css({'left':_vleft});
  							break;
  							
  						case 'right' : 
  							self.box_skitter.find(class_info).css({'left':'auto', 'right':'-5px'});
  							break;
  							
  						case 'left' : 
  							self.box_skitter.find(class_info).css({'left':'0px'});
  							break;
  					}
  				}
  				
  			}
  			else 
  			{
  				var class_info = '.info_slide';
  				
  				if (self.settings.dots) {
  					self.box_skitter.find('.info_slide').addClass('info_slide_dots').removeClass('info_slide');
  					class_info = '.info_slide_dots';
  				}
  				
  				switch (self.settings.numbers_align) {
  					case 'center' : 
  						var _vleft = (self.settings.width_skitter - self.box_skitter.find(class_info).width()) / 2;
  						self.box_skitter.find(class_info).css({'left':_vleft});
  						break;
  						
  					case 'right' : 
  						self.box_skitter.find(class_info).css({'left':'auto', 'right':'15px'});
  						break;
  						
  					case 'left' : 
  						self.box_skitter.find(class_info).css({'left':'15px'});
  						break;
  				}
  				
  				if (!self.settings.dots) {
  					if (self.box_skitter.find('.info_slide').height() > 20) {
  						self.box_skitter.find('.info_slide').hide();
  					}
  				}
  			}
  			
  			this.box_skitter.find('ul').hide();
  			
  			if (this.settings.show_randomly)
  			this.settings.images_links.sort(function(a,b) {return Math.random() - 0.5;});
  			
  			this.settings.image_atual 	= this.settings.images_links[0][0];
  			this.settings.link_atual 	= this.settings.images_links[0][1];
  			this.settings.label_atual 	= this.settings.images_links[0][3];
  			this.settings.target_atual 	= this.settings.images_links[0][4];
  			
  			if (this.settings.images_links.length > 1) 
  			{
  				this.box_skitter.find('.prev_button').click(function() {
  					if (self.settings.is_animating == false) {
  						
  						self.settings.image_i -= 2;
  						
  						if (self.settings.image_i == -2) {
  							self.settings.image_i = self.settings.images_links.length - 2;
  						} 
  						else if (self.settings.image_i == -1) {
  							self.settings.image_i = self.settings.images_links.length - 1;
  						}
  						
  						self.jumpToImage(self.settings.image_i);
  					}
  					return false;
  				});
  				
  				this.box_skitter.find('.next_button').click(function() {
  					self.jumpToImage(self.settings.image_i);
  					return false;
  				});
  				
  				self.box_skitter.find('.next_button, .prev_button').bind('mouseover', self.settings.mouseOverButton);
  				self.box_skitter.find('.next_button, .prev_button').bind('mouseleave', self.settings.mouseOutButton);
  				
  				this.box_skitter.find('.image_number').hover(function() {
  					if ($(this).attr('class') != 'image_number image_number_select') {
  						if ( self.settings.animateNumberOver ) {
  							$(this).stop().animate(self.settings.animateNumberOver, 300);
  						}
  						// $(this).stop().animate(self.settings.animateNumberOver, 300);
  					}
  				}, function(){
  					if ($(this).attr('class') != 'image_number image_number_select') {
  						if ( self.settings.animateNumberOut ) {
  							$(this).stop().animate(self.settings.animateNumberOut, 500);
  						}
  						// $(this).stop().animate(self.settings.animateNumberOut, 500);
  					}
  				});
  				
  				this.box_skitter.find('.image_number').click(function(){
  					if ($(this).attr('class') != 'image_number image_number_select') {
  						var imageNumber = parseInt($(this).attr('rel'));
  						self.jumpToImage(imageNumber);
  					}
  					return false;
  				});
  				
  				if ( self.settings.animateNumberOut ) {
  					this.box_skitter.find('.image_number').css(self.settings.animateNumberOut);
  				}
  
  				if ( self.settings.animateNumberActive ) {
  					this.box_skitter.find('.image_number:eq(0)').css(self.settings.animateNumberActive);
  				}
  
  				// this.box_skitter.find('.image_number').css(self.settings.animateNumberOut);
  				// this.box_skitter.find('.image_number:eq(0)').css(self.settings.animateNumberActive);
  				
  				// Preview with dots
  				if (self.settings.preview && self.settings.dots) 
  				{
  					var preview = $('<div class="preview_slide"><ul></ul></div>');
  					
  					for (var i = 0; i < this.settings.images_links.length; i++) {
  						var li = $('<li></li>');
  						var img = $('<img />');
  						img.attr('src', this.settings.images_links[i][0]);
  						li.append(img);
  						preview.find('ul').append(li);
  					}
  					
  					var width_preview_ul = parseInt(this.settings.images_links.length * 100);
  					preview.find('ul').width(width_preview_ul);
  					$(class_info).append(preview);
  					
  					self.box_skitter.find(class_info).find('.image_number').mouseenter(function() {
  						var _left_info = parseFloat(self.box_skitter.find(class_info).offset().left);
  						var _left_image = parseFloat($(this).offset().left);
  						var _left_preview = (_left_image - _left_info) - 43;
  						
  						var rel = parseInt($(this).attr('rel'));
  						var image_current_preview = self.box_skitter.find('.preview_slide_current img').attr('src');
  						var _left_ul = -(rel * 100);
  						
  						self.box_skitter.find('.preview_slide').find('ul').animate({left: _left_ul}, {duration:200, queue: false, easing: 'easeOutSine'});
  						self.box_skitter.find('.preview_slide').fadeTo(1,1).animate({left: _left_preview}, {duration:200, queue: false});
  					});
  					
  					self.box_skitter.find(class_info).mouseleave(function() {
  						$('.preview_slide').animate({opacity: 'hide'}, {duration: 200, queue: false});
  					});
  				}
  			}
  			
  			// Focus
  			if (self.settings.focus) {
  				self.focusSkitter();
  			}
  			
  			// Constrols
  			if (self.settings.controls) {
  				self.setControls();
  			}
  			
  			// Progressbar
  			if (self.settings.progressbar && self.settings.auto_play) {
  				self.addProgressBar();
  			}
  
  			// hideTools
  			if (self.settings.hideTools) {
  				self.hideTools();
  			}
  
  			// Navigation keys
  			if (self.settings.enable_navigation_keys) {
  				self.enableNavigationKeys();
  			}
  			
  			this.loadImages();
  		},
  		
  		/**
  		 * Load images
  		 */
  		loadImages: function () 
  		{
  			var self = this;
  			
  			var loading = $('<div class="loading">Loading</div>');
  			this.box_skitter.append(loading);
  			var total = this.settings.images_links.length;
  			
  			var u = 0;
  			$.each(this.settings.images_links, function(i)
  			{
  				var self_il = this;
  				var loading = $('<span class="image_loading"></span>');
  				loading.css({position:'absolute', top:'-9999em'});
  				self.box_skitter.append(loading);
  				var img = new Image();
  				
  				$(img).load(function () {
  					++u;
  					if (u == total) {
  						self.box_skitter.find('.loading').remove();
  						self.box_skitter.find('.image_loading').remove();
  						self.start();
  					}
  				}).error(function () {
  					self.box_skitter.find('.loading, .image_loading, .image_number, .next_button, .prev_button').remove();
  					self.box_skitter.html('<p style="color:white;background:black;">Error loading images. One or more images were not found.</p>');
  				}).attr('src', self_il[0]);
  			});
  		}, 
  		
  		/**
  		 * Start skitter
  		 */
  		start: function()
  		{
  			var self = this;
  			var init_pause = false;
  
  			if (this.settings.numbers || this.settings.thumbs) this.box_skitter.find('.info_slide').fadeIn(500);
  			if (this.settings.dots) this.box_skitter.find('.info_slide_dots').fadeIn(500);
  			if (this.settings.label) this.box_skitter.find('.label_skitter').show();
  			if (this.settings.navigation) {
  				this.box_skitter.find('.prev_button').fadeIn(500);
  				this.box_skitter.find('.next_button').fadeIn(500);
  			}
  			
  			if (self.settings.auto_play) {
  				self.startTime();
  			}
  
  			self.windowFocusOut();
  			self.windowOnresize();
  			self.setLinkAtual();
  			
  			self.box_skitter.find('.image a img').attr({'src': self.settings.image_atual});
  			img_link = self.box_skitter.find('.image a');
  			img_link = self.resizeImage(img_link);
  			img_link.find('img').fadeIn(1500);
  			
  			self.setValueBoxText();
  			self.showBoxText();
  			
  			if (self.settings.auto_play) {
  				self.stopOnMouseOver();
  			}
  
  			var mouseOverInit = function() {
  				if (self.settings.stop_over) {
  					init_pause = true;
  					self.settings.is_hover_box_skitter = true;
  					self.clearTimer(true);
  					self.pauseProgressBar();
  				}
  			};
  
  			self.box_skitter.mouseover(mouseOverInit);
  			self.box_skitter.find('.next_button').mouseover(mouseOverInit);
  			
  			if (self.settings.images_links.length > 1 && !init_pause) {
  				if (self.settings.auto_play) {
  					self.timer = setTimeout(function() { self.nextImage(); }, self.settings.interval);
  				}
  			} 
  			else {
  				self.box_skitter.find('.loading, .image_loading, .image_number, .next_button, .prev_button').remove();
  			}
  			
  			if ($.isFunction(self.settings.onLoad)) self.settings.onLoad(self);
  		},
  		
  		/**
  		 * Jump to image
  		 */
  		jumpToImage: function(imageNumber) 
  		{
  			if (this.settings.is_animating == false) {
  				this.settings.elapsedTime = 0;
  				this.box_skitter.find('.box_clone').stop();
  				this.clearTimer(true);
  				this.settings.image_i = Math.floor(imageNumber);
  				
  				this.box_skitter.find('.image a').attr({'href': this.settings.link_atual});
  				this.box_skitter.find('.image_main').attr({'src': this.settings.image_atual});
  				this.box_skitter.find('.box_clone').remove();
  
  				this.nextImage();
  			}
  		},
  		
  		/**
  		 * Next image
  		 */
  		nextImage: function() 
  		{
  			var self = this;
  			
  			animations_functions = [
  				'cube', 
  				'cubeRandom', 
  				'block', 
  				'cubeStop', 
  				'cubeStopRandom', 
  				'cubeHide', 
  				'cubeSize', 
  				'horizontal', 
  				'showBars', 
  				'showBarsRandom', 
  				'tube',
  				'fade',
  				'fadeFour',
  				'paralell',
  				'blind',
  				'blindHeight',
  				'blindWidth',
  				'directionTop',
  				'directionBottom',
  				'directionRight',
  				'directionLeft',
  				'cubeSpread',
  				'glassCube',
  				'glassBlock',
  				'circles',
  				'circlesInside',
  				'circlesRotate',
  				'cubeShow',
  				'upBars', 
  				'downBars', 
  				'hideBars', 
  				'swapBars', 
  				'swapBarsBack', 
  				'swapBlocks',
  				'cut'
  			];
  						
  			if (self.settings.progressbar) self.hideProgressBar();
  			
  			animation_type = (this.settings.animation == '' && this.settings.images_links[this.settings.image_i][2]) ? 
  				this.settings.images_links[this.settings.image_i][2] : (this.settings.animation == '' ? 'default' : this.settings.animation);
  			
  			// RandomUnique
  			if (animation_type == 'randomSmart') 
  			{
  				if (!this.settings.random_ia) {
  					animations_functions.sort(function() {
  						return 0.5 - Math.random();
  					});
  					this.settings.random_ia = animations_functions;
  				}
  				animation_type = this.settings.random_ia[this.settings.image_i];
  			}
  			// Random
  			else if (animation_type == 'random') 
  			{
  				var random_id = parseInt(Math.random() * animations_functions.length);
  				animation_type = animations_functions[random_id];
  			}
  			// Specific animations
  			else if (self.settings.with_animations.length > 0)
  			{
  				var total_with_animations = self.settings.with_animations.length;
  				if (this.settings._i_animation == undefined) {
  					this.settings._i_animation = 0;
  				}
  				animation_type = self.settings.with_animations[this.settings._i_animation];
  				++this.settings._i_animation;
  				if (this.settings._i_animation >= total_with_animations) this.settings._i_animation = 0;
  			}
  			
  			switch (animation_type) 
  			{
  				case 'cube' : 
  					this.animationCube();
  					break;
  				case 'cubeRandom' : 
  					this.animationCube({random:true});
  					break;
  				case 'block' : 
  					this.animationBlock();
  					break;
  				case 'cubeStop' : 
  					this.animationCubeStop();
  					break;
  				case 'cubeStopRandom' : 
  					this.animationCubeStop({random:true});
  					break;
  				case 'cubeHide' : 
  					this.animationCubeHide();
  					break;
  				case 'cubeSize' : 
  					this.animationCubeSize();
  					break;
  				case 'horizontal' : 
  					this.animationHorizontal();
  					break;
  				case 'showBars' : 
  					this.animationShowBars();
  					break;
  				case 'showBarsRandom' : 
  					this.animationShowBars({random:true});
  					break;
  				case 'tube' : 
  					this.animationTube();
  					break;
  				case 'fade' : 
  					this.animationFade();
  					break;
  				case 'fadeFour' : 
  					this.animationFadeFour();
  					break;
  				case 'paralell' : 
  					this.animationParalell();
  					break;
  				case 'blind' : 
  					this.animationBlind();
  					break;
  				case 'blindHeight' : 
  					this.animationBlindDimension({height:true});
  					break;
  				case 'blindWidth' : 
  					this.animationBlindDimension({height:false, time_animate:400, delay:50});
  					break;
  				case 'directionTop' : 
  					this.animationDirection({direction:'top'});
  					break;
  				case 'directionBottom' : 
  					this.animationDirection({direction:'bottom'});
  					break;
  				case 'directionRight' : 
  					this.animationDirection({direction:'right', total:5});
  					break;
  				case 'directionLeft' : 
  					this.animationDirection({direction:'left', total:5});
  					break;
  				case 'cubeSpread' : 
  					this.animationCubeSpread();
  					break;
  				case 'cubeJelly' : 
  					this.animationCubeJelly();
  					break;
  				case 'glassCube' : 
  					this.animationGlassCube();
  					break;
  				case 'glassBlock' : 
  					this.animationGlassBlock();
  					break;
  				case 'circles' : 
  					this.animationCircles();
  					break;
  				case 'circlesInside' : 
  					this.animationCirclesInside();
  					break;
  				case 'circlesRotate' : 
  					this.animationCirclesRotate();
  					break;
  				case 'cubeShow' : 
  					this.animationCubeShow();
  					break;
  				case 'upBars' : 
  					this.animationDirectionBars({direction: 'top'});
  					break;
  				case 'downBars' : 
  					this.animationDirectionBars({direction: 'bottom'});
  					break;
  				case 'hideBars' : 
  					this.animationHideBars();
  					break;
  				case 'swapBars' : 
  					this.animationSwapBars();
  					break;
  				case 'swapBarsBack' : 
  					this.animationSwapBars({easing: 'easeOutBack'});
  					break;
  				case 'swapBlocks' : 
  					this.animationSwapBlocks();
  					break;
  				case 'cut' : 
  					this.animationCut();
  					break;
  				default : 
  					this.animationTube();
  					break;
  			}
  		},
  		
  		animationCube: function (options)
  		{
  			var self = this;
  			
  			var options = $.extend({}, {random: false}, options || {});
  			
  			this.settings.is_animating = true;
  			var easing = (this.settings.easing_default == '') ? 'easeOutExpo' : this.settings.easing_default;
  			var time_animate = 700 / this.settings.velocity;
  			
  			this.setActualLevel();
  			
  			var division_w 	= Math.ceil(this.settings.width_skitter / (this.settings.width_skitter / 8));
  			var division_h 	= Math.ceil(this.settings.height_skitter / (this.settings.height_skitter / 3));
  			var total		= division_w * division_h;
  			
  			var width_box 	= Math.ceil(this.settings.width_skitter / division_w);
  			var height_box 	= Math.ceil(this.settings.height_skitter / division_h);
  			
  			var init_top 	= this.settings.height_skitter + 200;
  			var init_left 	= this.settings.height_skitter + 200;
  			
  			var col_t = 0;
  			var col = 0;
  			
  			for (i = 0; i < total; i++) {
  				
  				init_top 			= (i % 2 == 0) ? init_top : -init_top;
  				init_left 			= (i % 2 == 0) ? init_left : -init_left;
  
  				var _vtop 			= init_top + (height_box * col_t) + (col_t * 150);
  				var _vleft 			= -self.settings.width_skitter;
  				//var _vleft 			= (init_left + (width_box * col)) + (col * 50);
  				
  				var _vtop_image 	= -(height_box * col_t);
  				
  				var _vleft_image 	= -(width_box * col);
  				var _btop 			= (height_box * col_t);
  				var _bleft 			= (width_box * col);
  				
  				var box_clone 		= this.getBoxClone();
  				box_clone.hide();
  				
  				var delay_time = 50 * (i);
  				
  				if (options.random) {
  					delay_time = 40 * (col);
  					box_clone.css({left:_vleft+'px', top:_vtop+'px', width:width_box, height:height_box});
  				} 
  				else {
  					time_animate = 500;
  					//box_clone.css({left:(this.settings.width_skitter / 2), top:this.settings.height_skitter + 50, width:width_box, height:height_box});
  					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});
  				}
  				
  				//box_clone.find('img').css({left:_vleft_image, top:_vtop_image});
  				//box_clone.find('img').css({left:_vleft_image+100, top:_vtop_image});
  				
  				this.addBoxClone(box_clone);
  				
  				var callback = (i == (total - 1)) ? function() { self.finishAnimation(); } : '';
  				box_clone.show().delay(delay_time).animate({top:_btop+'px', left:_bleft+'px'}, time_animate, easing, callback);
  				
  				if (options.random) {
  					box_clone.find('img').css({left:_vleft_image+100, top:_vtop_image+50});
  					box_clone.find('img').delay(delay_time+(time_animate/2)).animate({left:_vleft_image, top:_vtop_image}, 1000, 'easeOutBack');
  				}
  				else {
  					box_clone.find('img').css({left:_vleft_image, top:_vtop_image});
  					box_clone.find('img').delay(delay_time+(time_animate/2)).fadeTo(100, 0.5).fadeTo(300, 1);
  				}
  				
  				col_t++;
  				if (col_t == division_h) {
  					col_t = 0;
  					col++;
  				}
  			}
  		},
  		
  		animationBlock: function(options)
  		{
  			var self = this;
  			
  			this.settings.is_animating = true;
  			var easing = (this.settings.easing_default == '') ? 'easeOutQuad' : this.settings.easing_default;
  			var time_animate = 500 / this.settings.velocity;
  			
  			this.setActualLevel();
  			
  			var total 		= Math.ceil(this.settings.width_skitter / (this.settings.width_skitter / 15));
  			var width_box 	= Math.ceil(this.settings.width_skitter / total);
  			var height_box 	= (this.settings.height_skitter);
  			
  			for (i = 0; i < total; i++) {
  				
  				var _bleft = (width_box * (i));
  				var _btop = 0;
  				
  				var box_clone = this.getBoxClone();
  				box_clone.css({left: this.settings.width_skitter + 100, top:0, width:width_box, height:height_box});
  				box_clone.find('img').css({left:-(width_box * i)});
  				
  				this.addBoxClone(box_clone);
  				
  				var delay_time = 80 * (i);
  				var callback = (i == (total - 1)) ? function() { self.finishAnimation(); } : '';
  				//box_clone.delay(delay_time).animate({top:_btop, left:_bleft, opacity:'show'}, time_animate, easing, callback);
  				
  				box_clone.show().delay(delay_time).animate({top:_btop, left:_bleft}, time_animate, easing);
  				box_clone.find('img').hide().delay(delay_time+100).animate({opacity:'show'}, time_animate+300, easing, callback);
  			}
  			
  		},
  		
  		animationCubeStop: function(options)
  		{
  			var self = this;
  
  			var options = $.extend({}, {random: false}, options || {});
  
  			this.settings.is_animating = true;
  			var easing = (this.settings.easing_default == '') ? 'easeInQuad' : this.settings.easing_default;
  			var time_animate = 300 / this.settings.velocity;
  
  			var image_old = this.box_skitter.find('.image_main').attr('src');
  
  			this.setActualLevel();
  
  			this.setLinkAtual();
  			this.box_skitter.find('.image_main').attr({'src':this.settings.image_atual});
  
  			var division_w = Math.ceil(this.settings.width_skitter / (this.settings.width_skitter / 8));
  			var division_h = Math.ceil(this.settings.height_skitter / (this.settings.width_skitter / 8));
  			var total = division_w * division_h;
  
  			var width_box = Math.ceil(this.settings.width_skitter / division_w);
  			var height_box = Math.ceil(this.settings.height_skitter / division_h);
  
  			var init_top = 0;
  			var init_left = 0;
  
  			var col_t = 0;
  			var col = 0;
  			var _ftop = this.settings.width_skitter / 16;
  
  			for (i = 0; i < total; i++) {
  				init_top = (i % 2 == 0) ? init_top : -init_top;
  				init_left = (i % 2 == 0) ? init_left : -init_left;
  
  				var _vtop = init_top + (height_box * col_t);
  				// var _vleft = (init_left + (width_box * col));
  				var _vtop_image = -(height_box * col_t);
  
  				// var _vleft_image = -(width_box * col);
  				var _btop = _vtop - _ftop;
  				var _bleft = _vleft - _ftop;
  
  				if($(window).width() > 1920){
  					var _vleft 			= (init_left + (width_box * col)) + (this.settings.width_skitter - this.box_skitter.find('.image_main').width() ) / 2;
  					var _vleft_image 	= -(width_box * col);
  				}else{
  					var _vleft 			= (init_left + (width_box * col));
  					var _vleft_image 	= -(width_box * col) + (this.settings.width_skitter - this.box_skitter.find('.image_main').width() ) / 2;
  				}
  
  				var box_clone = this.getBoxCloneImgOld(image_old);
  				box_clone.css({left:_vleft+'px', top:_vtop+'px', width:width_box, height:height_box});
  				box_clone.find('img').css({left:_vleft_image, top:_vtop_image});
  
  				this.addBoxClone(box_clone);
  				box_clone.show();
  
  				var delay_time = 50 * i;
  
  				if (options.random) {
  					time_animate = (400 * (self.getRandom(2) + 1)) / this.settings.velocity;
  					_btop = _vtop;
  					_bleft = _vleft;
  					delay_time = Math.ceil( 30 * self.getRandom(30) );
  				}
  				
  				if (options.random && i == (total - 1)) {
  					time_animate = 400 * 3;
  					delay_time = 30 * 30;
  				}
  
  				var callback = (i == (total - 1)) ? function() { self.finishAnimation(); } : '';
  				box_clone.delay(delay_time).animate({opacity:'hide', top:_btop+'px', left:_bleft+'px'}, time_animate, easing, callback);
  
  				col_t++;
  				if (col_t == division_h) {
  					col_t = 0;
  					col++;
  				}
  			}
  		},
  		
  		animationCubeHide: function(options)
  		{
  			var self = this;
  			
  			this.settings.is_animating = true;
  			var easing = (this.settings.easing_default == '') ? 'easeOutQuad' : this.settings.easing_default;
  			var time_animate = 500 / this.settings.velocity;
  			
  			var image_old = this.box_skitter.find('.image_main').attr('src');
  			
  			this.setActualLevel();
  			
  			this.setLinkAtual();
  			this.box_skitter.find('.image_main').attr({'src':this.settings.image_atual});
  			
  			var division_w 	= Math.ceil(this.settings.width_skitter / (this.settings.width_skitter / 8));
  			var division_h 	= Math.ceil(this.settings.height_skitter / (this.settings.height_skitter / 3));
  			var total		= division_w * division_h;
  			
  			var width_box 	= Math.ceil(this.settings.width_skitter / division_w);
  			var height_box 	= Math.ceil(this.settings.height_skitter / division_h);
  			
  			var init_top 	= 0;
  			var init_left 	= 0;
  			
  			var col_t 		= 0;
  			var col 		= 0;
  			
  			for (i = 0; i < total; i++) {
  				
  				init_top 			= (i % 2 == 0) ? init_top : -init_top;
  				init_left 			= (i % 2 == 0) ? init_left : -init_left;
  
  				var _vtop 			= init_top + (height_box * col_t);
  				// var _vleft 			= (init_left + (width_box * col));
  				var _vtop_image 	= -(height_box * col_t);
  				
  				// var _vleft_image 	= -(width_box * col);
  				var _btop 			= _vtop - 50;
  				var _bleft 			= _vleft - 50;
  
  				if($(window).width() > 1920){
  					var _vleft 			= (init_left + (width_box * col)) + (this.settings.width_skitter - this.box_skitter.find('.image_main').width() ) / 2;
  					var _vleft_image 	= -(width_box * col);
  				}else{
  					var _vleft 			= (init_left + (width_box * col));
  					var _vleft_image 	= -(width_box * col) + (this.settings.width_skitter - this.box_skitter.find('.image_main').width() ) / 2;
  				}
  				
  				var box_clone = this.getBoxCloneImgOld(image_old);
  				box_clone.css({left:_vleft+'px', top:_vtop+'px', width:width_box, height:height_box});
  				box_clone.find('img').css({left:_vleft_image, top:_vtop_image});
  				
  				this.addBoxClone(box_clone);
  				box_clone.show();
  				
  				var delay_time = 50 * i;
  				delay_time = (i == (total - 1)) ? (total * 50) : delay_time;
  				var callback = (i == (total - 1)) ? function() { self.finishAnimation(); } : '';
  				
  				box_clone.delay(delay_time).animate({opacity:'hide'}, time_animate, easing, callback);
  				
  				col_t++;
  				if (col_t == division_h) {
  					col_t = 0;
  					col++;
  				}
  			}
  			
  		},
  		
  		animationCubeJelly: function(options)
  		{
  			var self = this;
  			
  			this.settings.is_animating = true;
  			var easing = (this.settings.easing_default == '') ? 'easeInBack' : this.settings.easing_default;
  			var time_animate = 300 / this.settings.velocity;
  			
  			var image_old = this.box_skitter.find('.image_main').attr('src');
  			
  			this.setActualLevel();
  			
  			this.setLinkAtual();
  			this.box_skitter.find('.image_main').attr({'src':this.settings.image_atual});
  			
  			var division_w 	= Math.ceil(this.settings.width_skitter / (this.settings.width_skitter / 8));
  			var division_h 	= Math.ceil(this.settings.height_skitter / (this.settings.height_skitter / 3));
  			var total		= division_w * division_h;
  			
  			var width_box 	= Math.ceil(this.settings.width_skitter / division_w);
  			var height_box 	= Math.ceil(this.settings.height_skitter / division_h);
  			
  			var init_top 	= 0;
  			var init_left 	= 0;
  			
  			var col_t 		= 0;
  			var col 		= 0;
  			var u			= -1;
  			
  			for (i = 0; i < total; i++) {
  			
  				if (col % 2 != 0) {
  					if (col_t == 0) {
  						u = u + division_h + 1;
  					}
  					u--;
  				} 
  				else {
  					if (col > 0 && col_t == 0) {
  						u = u + 2;
  					}
  					u++;
  				}
  			
  				init_top 			= (i % 2 == 0) ? init_top : -init_top;
  				init_left 			= (i % 2 == 0) ? init_left : -init_left;
  
  				var _vtop 			= init_top + (height_box * col_t);
  				if($(window).width() > 1920){
  					var _vleft 			= (init_left + (width_box * col)) + (this.settings.width_skitter - this.box_skitter.find('.image_main').width() ) / 2;
  					var _vleft_image 	= -(width_box * col);
  				}else{
  					var _vleft 			= (init_left + (width_box * col));
  					var _vleft_image 	= -(width_box * col) + (this.settings.width_skitter - this.box_skitter.find('.image_main').width() ) / 2;
  				}
  				
  				var _vtop_image 	= -(height_box * col_t);
  				var _btop 			= _vtop - 50;
  				var _bleft 			= _vleft - 50;
  				
  				var box_clone = this.getBoxCloneImgOld(image_old);
  				box_clone.css({left:_vleft+'px', top:_vtop+'px', width:width_box, height:height_box});
  				box_clone.find('img').css({left:_vleft_image, top:_vtop_image});
  				
  				this.addBoxClone(box_clone);
  				box_clone.show();
  				
  				var delay_time = (50 * i);
  				var callback = (i == (total - 1)) ? function() { self.finishAnimation(); } : '';
  				
  				box_clone.delay(delay_time).animate({width:'+=100px', height:'+=100px', top:'-=20px',  left: '-=20px', opacity:'hide'}, time_animate, easing, callback);
  				col_t++;
  				
  				if (col_t == division_h) {
  					col_t = 0;
  					col++;
  				}
  				
  			}
  		},
  		
  		animationCubeSize: function(options)
  		{
  			var self = this;
  			
  			this.settings.is_animating = true;
  			var easing = (this.settings.easing_default == '') ? 'easeInOutQuad' : this.settings.easing_default;
  			var time_animate = 600 / this.settings.velocity;
  			
  			var image_old = this.box_skitter.find('.image_main').attr('src');
  			
  			this.setActualLevel();
  			
  			this.setLinkAtual();
  			this.box_skitter.find('.image_main').attr({'src':this.settings.image_atual});
  			
  			var division_w 	= Math.ceil(this.settings.width_skitter / (this.settings.width_skitter / 8));
  			var division_h 	= Math.ceil(this.settings.height_skitter / (this.settings.height_skitter / 3));
  			var total		= division_w * division_h;
  			
  			var width_box 	= Math.ceil(this.settings.width_skitter / division_w);
  			var height_box 	= Math.ceil(this.settings.height_skitter / division_h);
  			
  			var init_top 	= 0;
  			var init_left 	= 0;
  			
  			var col_t 		= 0;
  			var col 		= 0;
  			var _ftop		= Math.ceil(this.settings.width_skitter / 6);
  			
  			for (i = 0; i < total; i++) {
  				
  				init_top 			= (i % 2 == 0) ? init_top : -init_top;
  				init_left 			= (i % 2 == 0) ? init_left : -init_left;
  
  
  
  				var _vtop_image 	= -(height_box * col_t);
  				var _btop 			= _vtop - _ftop;
  				var _bleft 			= _vleft - _ftop;
  
  				var _vtop 			= init_top + (height_box * col_t);
  				if($(window).width() > 1920){
  					var _vleft 			= (init_left + (width_box * col)) + (this.settings.width_skitter - this.box_skitter.find('.image_main').width() ) / 2;
  					var _vleft_image 	= -(width_box * col);
  				}else{
  					var _vleft 			= (init_left + (width_box * col));
  					var _vleft_image 	= -(width_box * col) + (this.settings.width_skitter - this.box_skitter.find('.image_main').width() ) / 2;
  				}
  				
  				var box_clone = this.getBoxCloneImgOld(image_old);
  				box_clone.css({left:_vleft, top:_vtop, width:width_box, height:height_box});
  				box_clone.find('img').css({left:_vleft_image, top:_vtop_image});
  				
  				this.addBoxClone(box_clone);
  				box_clone.show();
  				
  				var delay_time = 50 * i;
  				var callback = (i == (total - 1)) ? function() { self.finishAnimation(); } : '';
  				box_clone.delay(delay_time).animate({
  					opacity:'hide',width:'hide',height:'hide',top:_vtop+(width_box*1.5),left:_vleft+(height_box*1.5)
  				}, time_animate, easing, callback);
  				
  				col_t++;
  				if (col_t == division_h) {
  					col_t = 0;
  					col++;
  				}
  			}
  			
  		},
  		
  		animationHorizontal: function(options)
  		{
  			var self = this;
  			
  			this.settings.is_animating = true;
  			var easing = (this.settings.easing_default == '') ? 'easeOutExpo' : this.settings.easing_default;
  			var time_animate = 700 / this.settings.velocity;
  			
  			this.setActualLevel();
  			
  			var total 		= Math.ceil(this.settings.width_skitter / (this.settings.width_skitter / 7));
  			var width_box 	= (this.settings.width_skitter);
  			var height_box 	= Math.ceil(this.settings.height_skitter / total);
  			
  			for (i = 0; i < total; i++) {
  				var _bleft = (i % 2 == 0 ? '' : '') + width_box;
  				var _btop = (i * height_box);
  				
  				var box_clone = this.getBoxClone();
  				
  				box_clone.css({left:_bleft+'px', top:_btop+'px', width:width_box, height:height_box});
  				box_clone.find('img').css({left:0, top:-_btop});
  				
  				this.addBoxClone(box_clone);
  				
  				var delay_time = 90 * i;
  				var callback = (i == (total - 1)) ? function() { self.finishAnimation(); } : '';
  				box_clone.delay(delay_time).animate({opacity:'show', top:_btop, left:0}, time_animate, easing, callback);
  			}
  		},
  		
  		animationShowBars: function(options)
  		{
  			var self = this;
  			
  			var options = $.extend({}, {random: false}, options || {});
  			
  			this.settings.is_animating = true;
  			var easing = (this.settings.easing_default == '') ? 'easeOutQuad' : this.settings.easing_default;
  			var time_animate = 400 / this.settings.velocity;
  			
  			this.setActualLevel();
  			
  			var total 		= Math.ceil(this.settings.width_skitter / (this.settings.width_skitter / 10));
  			var width_box 	= Math.ceil(this.settings.width_skitter / total);
  			var height_box 	= (this.settings.height_skitter);
  			
  			for (i = 0; i < total; i++) {
  				
  				var _bleft = (width_box * (i));
  				var _btop = 0;
  				
  				var box_clone = this.getBoxClone();
  				
  				box_clone.css({left:_bleft, top:_btop - 50, width:width_box, height:height_box});
  				box_clone.find('img').css({left:-(width_box * i), top:0});
  				
  				this.addBoxClone(box_clone);
  				
  				if (options.random) {
  					var random = this.getRandom(total);
  					var delay_time = 50 * random;
  					delay_time = (i == (total - 1)) ? (50 * total) : delay_time;
  				}
  				else {
  					var delay_time = 70 * (i);
  					time_animate = time_animate - (i * 2);
  				}
  				
  				var callback = (i == (total - 1)) ? function() { self.finishAnimation(); } : '';
  				box_clone.delay(delay_time).animate({
  					opacity:'show', top:_btop+'px', left:_bleft+'px'
  				}, time_animate, easing, callback);
  			}
  			
  		},
  		
  		animationTube: function(options)
  		{
  			var self = this;
  			
  			this.settings.is_animating = true;
  			var easing = (this.settings.easing_default == '') ? 'easeOutElastic' : this.settings.easing_default;
  			var time_animate = 600 / this.settings.velocity;
  			
  			this.setActualLevel();
  			
  			var total 		= Math.ceil(this.settings.width_skitter / (this.settings.width_skitter / 10));
  			var width_box 	= Math.ceil(this.settings.width_skitter / total);
  			var height_box 	= this.settings.height_skitter;
  			
  			for (i = 0;i<total;i++) {
  				var _btop = 0;
  				var _vtop = height_box;
  				var vleft = width_box * i;
  			
  				var box_clone = this.getBoxClone();
  				
  				box_clone.css({left:vleft,top: _vtop, height:height_box, width: width_box});
  				box_clone.find('img').css({left:-(vleft)});
  				
  				this.addBoxClone(box_clone);
  				
  				var random = this.getRandom(total);
  				var delay_time = 30 * random;
  				var callback = (i == (total - 1)) ? function() { self.finishAnimation(); } : '';
  				box_clone.show().delay(delay_time).animate({top:_btop}, time_animate, easing, callback);
  			}
  		},
  		
  		animationFade: function(options)
  		{
  			var self = this;
  			
  			this.settings.is_animating = true;
  			var easing = (this.settings.easing_default == '') ? 'easeOutQuad' : this.settings.easing_default;
  			var time_animate = 800 / this.settings.velocity;
  			
  			this.setActualLevel();
  			
  			var width_box 	= this.settings.width_skitter;
  			var height_box 	= this.settings.height_skitter;
  			var total 		= 2;
  			
  			for (i = 0;i<total;i++) {
  				var _vtop = 0;
  				var _vleft = 0;
  			
  				var box_clone = this.getBoxClone();
  				box_clone.css({left:_vleft, top:_vtop, width:width_box, height:height_box});
  				this.addBoxClone(box_clone);
  
  				var callback = (i == (total - 1)) ? function() { self.finishAnimation(); } : '';
  				box_clone.animate({opacity:'show', left:0, top:0}, time_animate, easing, callback);
  			}
  		},
  		
  		animationFadeFour: function(options)
  		{
  			var self = this;
  			
  			this.settings.is_animating = true;
  			var easing = (this.settings.easing_default == '') ? 'easeOutQuad' : this.settings.easing_default;
  			var time_animate = 500 / this.settings.velocity;
  			
  			this.setActualLevel();
  			
  			var width_box 	= this.settings.width_skitter;
  			var height_box 	= this.settings.height_skitter;
  			var total 		= 4;
  			
  			for (i = 0;i<total;i++) {
  				
  				if (i == 0) {
  					var _vtop = '-100px';
  					var _vleft = '-100px';
  				} else if (i == 1) {
  					var _vtop = '-100px';
  					var _vleft = '100px';
  				} else if (i == 2) {
  					var _vtop = '100px';
  					var _vleft = '-100px';
  				} else if (i == 3) {
  					var _vtop = '100px';
  					var _vleft = '100px';
  				}
  			
  				var box_clone = this.getBoxClone();
  				box_clone.css({left:_vleft, top:_vtop, width:width_box, height:height_box});
  				this.addBoxClone(box_clone);
  				
  				var callback = (i == (total - 1)) ? function() { self.finishAnimation(); } : '';
  				box_clone.animate({opacity:'show', left:0, top:0}, time_animate, easing, callback);
  			}
  		},
  		
  		animationParalell: function(options)
  		{
  			var self = this;
  			
  			this.settings.is_animating = true;
  			var easing = (this.settings.easing_default == '') ? 'easeOutQuad' : this.settings.easing_default;
  			var time_animate = 400 / this.settings.velocity;
  			
  			this.setActualLevel();
  			
  			var total 		= Math.ceil(this.settings.width_skitter / (this.settings.width_skitter / 16));
  			var width_box 	= Math.ceil(this.settings.width_skitter / total);
  			var height_box 	= this.settings.height_skitter;
  			
  			for (i = 0; i < total; i++) {
  				
  				var _bleft = (width_box * (i));
  				var _btop = 0;
  				
  				var box_clone = this.getBoxClone();
  				
  				box_clone.css({left:_bleft, top:_btop - this.settings.height_skitter, width:width_box, height:height_box});
  				box_clone.find('img').css({left:-(width_box * i), top:0});
  				
  				this.addBoxClone(box_clone);
  				
  				var delay_time;
  				if (i <= ((total / 2) - 1)) {
  					delay_time = 1400 - (i * 200);
  				}
  				else if (i > ((total / 2) - 1)) {
  					delay_time = ((i - (total / 2)) * 200);
  				}
  				delay_time = delay_time / 2.5;
  				
  				var callback = (i == (total - 1)) ? function() { self.finishAnimation(); } : '';
  				box_clone.delay(delay_time).animate({
  					top:_btop+'px', left:_bleft+'px', opacity: 'show'
  				}, time_animate, easing, callback);
  			}
  			
  		},
  		
  		animationBlind: function(options)
  		{
  			var self = this;
  			
  			var options = $.extend({}, {height: false}, options || {});
  			
  			this.settings.is_animating = true;
  			var easing = (this.settings.easing_default == '') ? 'easeOutQuad' : this.settings.easing_default;
  			var time_animate = 400 / this.settings.velocity;
  			
  			this.setActualLevel();
  			
  			var total 		= Math.ceil(this.settings.width_skitter / (this.settings.width_skitter / 16));
  			var width_box 	= Math.ceil(this.settings.width_skitter / total);
  			var height_box 	= this.settings.height_skitter;
  			
  			for (i = 0; i < total; i++) {
  				
  				var _bleft = (width_box * (i));
  				var _btop = 0;
  				
  				var box_clone = this.getBoxClone();
  				
  				box_clone.css({left:_bleft, top:_btop, width:width_box, height:height_box});
  				box_clone.find('img').css({left:-(width_box * i), top:0});
  				
  				this.addBoxClone(box_clone);
  				
  				var delay_time;
  				
  				if (!options.height) {
  					if (i <= ((total / 2) - 1)) {
  						delay_time = 1400 - (i * 200);
  					}
  					else if (i > ((total / 2) - 1)) {
  						delay_time = ((i - (total / 2)) * 200);
  					}
  					var callback = (i == (total - 1)) ? function() { self.finishAnimation(); } : '';
  				}
  				else {
  					if (i <= ((total / 2) - 1)) {
  						delay_time = 200 + (i * 200);
  					}
  					else if (i > ((total / 2) - 1)) {
  						delay_time = (((total / 2) - i) * 200) + (total * 100);
  					}
  					var callback = (i == (total / 2)) ? function() { self.finishAnimation(); } : '';
  				}
  				
  				delay_time = delay_time / 2.5;
  				
  				if (!options.height) {
  					box_clone.delay(delay_time).animate({
  						opacity:'show',top:_btop+'px', left:_bleft+'px', width:'show'
  					}, time_animate, easing, callback);
  				}
  				else {
  					time_animate = time_animate + (i * 2);
  					var easing = 'easeOutQuad';
  					box_clone.delay(delay_time).animate({
  						opacity:'show',top:_btop+'px', left:_bleft+'px', height:'show'
  					}, time_animate, easing, callback);
  				}
  			}
  			
  		},
  		
  		animationBlindDimension: function(options)
  		{
  			var self = this;
  			
  			var options = $.extend({}, {height: true, time_animate: 500, delay: 100}, options || {});
  			
  			this.settings.is_animating = true;
  			var easing = (this.settings.easing_default == '') ? 'easeOutQuad' : this.settings.easing_default;
  			var time_animate = options.time_animate / this.settings.velocity;
  			
  			this.setActualLevel();
  			
  			var total 		= Math.ceil(this.settings.width_skitter / (this.settings.width_skitter / 16));
  			var width_box 	= Math.ceil(this.settings.width_skitter / total);
  			var height_box 	= this.settings.height_skitter;
  			
  			for (i = 0; i < total; i++) {
  				
  				var _bleft = (width_box * (i));
  				var _btop = 0;
  				
  				var box_clone = this.getBoxClone();
  				
  				box_clone.css({left:_bleft, top:_btop, width:width_box, height:height_box});
  				box_clone.find('img').css({left:-(width_box * i), top:0});
  				
  				this.addBoxClone(box_clone);
  				
  				var delay_time = options.delay * i;
  				var callback = (i == (total - 1)) ? function() { self.finishAnimation(); } : '';
  				
  				if (!options.height) {
  					box_clone.delay(delay_time).animate({
  						opacity:'show',top:_btop+'px', left:_bleft+'px', width:'show'
  					}, time_animate, easing, callback);
  				}
  				else {
  					var easing = 'easeOutQuad';
  					box_clone.delay(delay_time).animate({
  						opacity:'show',top:_btop+'px', left:_bleft+'px', height:'show'
  					}, time_animate, easing, callback);
  				}
  			}
  			
  		},
  		
  		animationDirection: function(options)
  		{
  			var self = this;
  			
  			var options = $.extend({}, {direction: 'top', delay_type: 'sequence', total: 7}, options || {});
  			
  			this.settings.is_animating = true;
  			var easing = (this.settings.easing_default == '') ? 'easeInOutExpo' : this.settings.easing_default;
  			var time_animate = 1200 / this.settings.velocity;
  			
  			var image_old = this.box_skitter.find('.image_main').attr('src');
  			
  			this.setActualLevel();
  			
  			this.setLinkAtual();
  			this.box_skitter.find('.image_main').attr({'src':this.settings.image_atual});
  			this.box_skitter.find('.image_main').hide();
  			
  			var total 		= options.total;
  			
  			for (i = 0; i < total; i++) {
  				
  				switch (options.direction)
  				{
  					default : case 'top' : 
  						
  						var width_box 		= Math.ceil(this.settings.width_skitter / total);
  						var height_box 		= this.settings.height_skitter;
  						
  						var _itopc 			= 0;
  						var _ileftc 		= (width_box * i);
  						var _ftopc 			= -height_box;
  						var _fleftc 		= _ileftc;
  						
  						var _itopn			= height_box;
  						var _ileftn			= _ileftc;
  						var _ftopn			= 0;
  						var _fleftn			= _ileftc;
  						
  						var _vtop_image 	= 0;
  						var _vleft_image 	= -_ileftc;
  						
  						break;
  						
  					case 'bottom' : 
  					
  						var width_box 		= Math.ceil(this.settings.width_skitter / total);
  						var height_box 		= this.settings.height_skitter;
  						
  						var _itopc 			= 0;
  						var _ileftc 		= (width_box * i);
  						var _ftopc 			= height_box;
  						var _fleftc 		= _ileftc;
  						
  						var _itopn			= -height_box;
  						var _ileftn			= _ileftc;
  						var _ftopn			= 0;
  						var _fleftn			= _ileftc;
  						
  						var _vtop_image 	= 0;
  						var _vleft_image 	= -_ileftc;
  						
  						break;
  						
  					case 'right' : 
  					
  						var width_box 		= this.settings.width_skitter;
  						var height_box 		= Math.ceil(this.settings.height_skitter / total);
  						
  						var _itopc 			= (height_box * i);
  						var _ileftc 		= 0;
  						var _ftopc 			= _itopc;
  						var _fleftc 		= width_box;
  						
  						var _itopn			= _itopc;
  						var _ileftn			= -_fleftc;
  						var _ftopn			= _itopc;
  						var _fleftn			= 0;
  						
  						var _vtop_image 	= -_itopc;
  						var _vleft_image 	= 0;
  						
  						break;
  						
  					case 'left' : 
  					
  						var width_box 		= this.settings.width_skitter;
  						var height_box 		= Math.ceil(this.settings.height_skitter / total);
  						
  						var _itopc 			= (height_box * i);
  						var _ileftc 		= 0;
  						var _ftopc 			= _itopc;
  						var _fleftc 		= -width_box;
  						
  						var _itopn			= _itopc;
  						var _ileftn			= -_fleftc;
  						var _ftopn			= _itopc;
  						var _fleftn			= 0;
  						
  						var _vtop_image 	= -_itopc;
  						var _vleft_image 	= 0;
  						
  						break;
  						
  				}
  				
  				switch (options.delay_type) 
  				{
  					case 'zebra' : default : var delay_time = (i % 2 == 0) ? 0 : 150; break;
  					case 'random' : var delay_time = 30 * (Math.random() * 30); break;
  					case 'sequence' : var delay_time = i * 100; break;
  				}
  				
  				var box_clone = this.getBoxCloneImgOld(image_old);
  				box_clone.find('img').css({left:_vleft_image, top:_vtop_image});
  				
  				box_clone.css({top:_itopc, left:_ileftc, width:width_box, height:height_box});
  				
  				this.addBoxClone(box_clone);
  				box_clone.show();
  				box_clone.delay(delay_time).animate({ top:_ftopc, left:_fleftc }, time_animate, easing);
  				
  				// Next image
  				var box_clone_next = this.getBoxClone();
  				box_clone_next.find('img').css({left:_vleft_image, top:_vtop_image});
  				
  				box_clone_next.css({top:_itopn, left:_ileftn, width:width_box, height:height_box});
  				
  				this.addBoxClone(box_clone_next);
  				box_clone_next.show();
  				
  				var callback = (i == (total - 1)) ? function() { self.finishAnimation(); } : '';
  				box_clone_next.delay(delay_time).animate({ top:_ftopn, left:_fleftn }, time_animate, easing, callback);
  				
  			}
  		},
  		
  		animationCubeSpread: function(options)
  		{
  			var self = this;
  			
  			this.settings.is_animating = true;
  			var easing = (this.settings.easing_default == '') ? 'easeOutQuad' : this.settings.easing_default;
  			var time_animate = 700 / this.settings.velocity;
  			
  			this.setActualLevel();
  			
  			var division_w 	= Math.ceil(this.settings.width_skitter / (this.settings.width_skitter / 8));
  			var division_h 	= Math.ceil(this.settings.height_skitter / (this.settings.width_skitter / 8));
  			var total		= division_w * division_h;
  			
  			var width_box 	= Math.ceil(this.settings.width_skitter / division_w);
  			var height_box 	= Math.ceil(this.settings.height_skitter / division_h);
  			
  			var init_top 	= 0;
  			var init_left 	= 0;
  			
  			var col_t 		= 0;
  			var col 		= 0;
  			var order 		= new Array;
  			var spread 		= new Array;
  			
  			// Make order
  			for (i = 0; i < total; i++) {
  				init_top 			= (i % 2 == 0) ? init_top : -init_top;
  				init_left 			= (i % 2 == 0) ? init_left : -init_left;
  
  				var _vtop 			= init_top + (height_box * col_t);
  				var _vleft 			= (init_left + (width_box * col));
  				
  				order[i] = [_vtop, _vleft];
  				
  				col_t++;
  				if (col_t == division_h) {
  					col_t = 0;
  					col++;
  				}
  			}
  			
  			// Reset col and col_t
  			col_t = 0;
  			col = 0;
  			
  			// Make array for spread
  			for (i = 0; i < total; i++) {
  				spread[i] = i;
  			};
  			
  			// Shuffle array
  			var spread = self.shuffleArray(spread);
  			
  			for (i = 0; i < total; i++) {
  				init_top 			= (i % 2 == 0) ? init_top : -init_top;
  				init_left 			= (i % 2 == 0) ? init_left : -init_left;
  
                 
  				var _vtop 			= init_top + (height_box * col_t);
  				var _vtop_image 	= -(height_box * col_t);
  				
  				if($(window).width() > 1920){
                      var _vleft          = (init_left + (width_box * col)) + (this.settings.width_skitter - this.box_skitter.find('.image_main').width() ) / 2;
                      var _vleft_image    = -(width_box * col);
                  }else{
                      var _vleft          = (init_left + (width_box * col));
                      var _vleft_image    = -(width_box * col) + (this.settings.width_skitter - this.box_skitter.find('.image_main').width() ) / 2;
                  }
  
  				var _btop 			= _vtop;
  				var _bleft 			= _vleft;
  				
  				_vtop 				= order[spread[i]][0];
  				_vleft 				= order[spread[i]][1];
  				
  				var box_clone 		= this.getBoxClone();
  				
  				box_clone.css({left:_vleft+'px', top:_vtop+'px', width:width_box, height:height_box});
  				box_clone.find('img').css({left:_vleft_image, top:_vtop_image});
  				
  				this.addBoxClone(box_clone);
  				
  				var delay_time = 30 * (Math.random() * 30);
  				if (i == (total-1)) delay_time = 30 * 30;
  				var callback = (i == (total - 1)) ? function() { self.finishAnimation(); } : '';
  				box_clone.delay(delay_time).animate({opacity:'show',top:_btop+'px', left:_bleft+'px'}, time_animate, easing, callback);
  				
  				col_t++;
  				if (col_t == division_h) {
  					col_t = 0;
  					col++;
  				}
  			}
  		}, 
  		
  		animationGlassCube: function(options)
  		{
  			var self = this;
  			
  			this.settings.is_animating = true;
  			var easing = (this.settings.easing_default == '') ? 'easeOutExpo' : this.settings.easing_default;
  			var time_animate = 500 / this.settings.velocity;
  			
  			this.setActualLevel();
  			
  			var total 		= Math.ceil(this.settings.width_skitter / (this.settings.width_skitter / 10)) * 2;
  			var width_box 	= Math.ceil(this.settings.width_skitter / total) * 2;
  			var height_box 	= (this.settings.height_skitter) / 2;
  			var col			= 0;
  			
  			for (i = 0; i < total; i++) {
  				mod = (i % 2) == 0 ? true : false;
  				
  				var _ileft = (width_box * (col));
  				var _itop = (mod) ? -self.settings.height_skitter : self.settings.height_skitter;
  				
  				var _fleft = (width_box * (col));
  				var _ftop = (mod) ? 0 : (height_box);
  				
  				var _bleft = -(width_box * col);
  				var _btop = (mod) ? 0 : -(height_box);
  				
  				var delay_time = 120 * col;
  				
  				var box_clone = this.getBoxClone();
  				box_clone.css({left: _ileft, top:_itop, width:width_box, height:height_box});
  				
  				box_clone
  					.find('img')
  					.css({left: _bleft + (width_box / 1.5), top: _btop})
  					.delay(delay_time)
  					.animate({left: _bleft, top: _btop}, (time_animate * 1.9), 'easeOutQuad');
  				
  				this.addBoxClone(box_clone);
  				
  				var callback = (i == (total - 1)) ? function() { self.finishAnimation(); } : '';
  				box_clone.show().delay(delay_time).animate({top:_ftop, left:_fleft}, time_animate, easing, callback);
  				
  				if ((i % 2) != 0) col++;
  			}
  		},
  		
  		animationGlassBlock: function(options)
  		{
  			var self = this;
  			
  			this.settings.is_animating = true;
  			var easing = (this.settings.easing_default == '') ? 'easeOutExpo' : this.settings.easing_default;
  			var time_animate = 700 / this.settings.velocity;
  			
  			this.setActualLevel();
  			
  			var total 		= Math.ceil(this.settings.width_skitter / (this.settings.width_skitter / 10));
  			var width_box 	= Math.ceil(this.settings.width_skitter / total);
  			var height_box 	= (this.settings.height_skitter);
  			
  			for (i = 0; i < total; i++) {
  				var _ileft = (width_box * (i));
  				var _itop = 0;
  				
  				var _fleft = (width_box * (i));
  				var _ftop = 0;
  				
  				var _bleft = -(width_box * (i));
  				var _btop = 0;
  				
  				var delay_time = 100 * i;
  				
  				var box_clone = this.getBoxClone();
  				box_clone.css({left: _ileft, top:_itop, width:width_box, height:height_box});
  				
  				box_clone
  					.find('img')
  					.css({left: _bleft + (width_box / 1.5), top: _btop})
  					.delay(delay_time)
  					.animate({left: _bleft, top: _btop}, (time_animate * 1.1), 'easeInOutQuad');
  				
  				this.addBoxClone(box_clone);
  				
  				var callback = (i == (total - 1)) ? function() { self.finishAnimation(); } : '';
  				box_clone.delay(delay_time).animate({top:_ftop, left:_fleft, opacity: 'show'}, time_animate, easing, callback);
  				
  			}
  		},
  		
  		animationCircles: function(options)
  		{
  			var self = this;
  			
  			this.settings.is_animating = true;
  			var easing = (this.settings.easing_default == '') ? 'easeInQuad' : this.settings.easing_default;
  			var time_animate = 500 / this.settings.velocity;
  			
  			this.setActualLevel();
  			
  			var total 		= Math.ceil(this.settings.width_skitter / (this.settings.width_skitter / 10));
  			var size_box	= 100;
  			
  			var radius		= Math.sqrt(Math.pow((this.settings.width_skitter), 2) + Math.pow((this.settings.height_skitter), 2));
  			var radius		= Math.ceil(radius);
  			
  			for (i = 0; i < total; i++) {
  				var _ileft = (self.settings.width_skitter / 2) - (size_box / 2);
  				var _itop = (self.settings.height_skitter / 2) - (size_box / 2);
  				
  				var _fleft = _ileft; 
  				var _ftop = _itop; 
  				var box_clone = null;
  
  				// if ($.browser.mozilla) {
  				// 	box_clone = this.getBoxClone();
  				// 	box_clone.css({left: _ileft, top:_itop, width:size_box, height:size_box}).css3({
  				// 		'border-radius': radius+'px'
  				// 	});
  				// 	box_clone.find('img').css({left: -_ileft, top: -_itop});
  				// }
  				// else {
  					box_clone = this.getBoxCloneBackground({
  						image: 		self.settings.image_atual,
  						left: 		_ileft, 
  						top: 		_itop, 
  						width: 		size_box, 
  						height: 	size_box,
  						position: {
  							top:  	-_itop, 
  							left:  	-_ileft
  						}
  					}).css3({
  						'border-radius': radius+'px'
  					});
  				// }
  				
  
  				// var box_clone = this.getBoxClone();
  				// box_clone.css({left: _ileft, top:_itop, width:size_box, height:size_box}).css3({
  				// 	'border-radius': radius+'px'
  				// });
  				// box_clone.find('img').css({left: -_ileft, top: -_itop});
  				
  				size_box += 100;
  				
  				this.addBoxClone(box_clone);
  				
  				var delay_time = 70 * i;
  				var callback = (i == (total - 1)) ? function() { self.finishAnimation(); } : '';
  				box_clone.delay(delay_time).animate({top: _ftop, left: _fleft, opacity: 'show'}, time_animate, easing, callback);
  				
  			}
  		},
  		
  		animationCirclesInside: function(options)
  		{
  			var self = this;
  			
  			this.settings.is_animating = true;
  			var easing = (this.settings.easing_default == '') ? 'easeInQuad' : this.settings.easing_default;
  			var time_animate = 500 / this.settings.velocity;
  			
  			var image_old = this.box_skitter.find('.image_main').attr('src');
  			
  			this.setActualLevel();
  			
  			this.setLinkAtual();
  			this.box_skitter.find('.image_main').attr({'src':this.settings.image_atual});
  			
  			var total 		= Math.ceil(this.settings.width_skitter / (this.settings.width_skitter / 10));
  			
  			var radius		= Math.sqrt(Math.pow((this.settings.width_skitter), 2) + Math.pow((this.settings.height_skitter), 2));
  			var radius		= Math.ceil(radius);
  			var size_box	= radius;
  			
  			for (i = 0; i < total; i++) {
  				var _ileft = (self.settings.width_skitter / 2) - (size_box / 2);
  				var _itop = (self.settings.height_skitter / 2) - (size_box / 2);
  				
  				var _fleft = _ileft; 
  				var _ftop = _itop; 
  				var box_clone = null;
  
  				// if ($.browser.mozilla) {
  				// 	box_clone = this.getBoxCloneImgOld(image_old);
  				// 	box_clone.css({left: _ileft, top:_itop, width:size_box, height:size_box}).css3({
  				// 		'border-radius': radius+'px'
  				// 	});
  				// 	box_clone.find('img').css({left: -_ileft, top: -_itop});
  				// }
  				// else {
  					box_clone = this.getBoxCloneBackground({
  						image: 		image_old,
  						left: 		_ileft, 
  						top: 		_itop, 
  						width: 		size_box, 
  						height: 	size_box,
  						position: {
  							top:  	-_itop, 
  							left:  	-_ileft
  						}
  					}).css3({
  						'border-radius': radius+'px'
  					});
  				// }
  				
  				// var box_clone = this.getBoxCloneImgOld(image_old);
  				// box_clone.css({left: _ileft, top:_itop, width:size_box, height:size_box}).css3({
  				// 	'border-radius': radius+'px'
  				// });
  				// box_clone.find('img').css({left: -_ileft, top: -_itop});
  				
  				size_box -= 100;
  				
  				this.addBoxClone(box_clone);
  				box_clone.show();
  				
  				var delay_time = 70 * i;
  				var callback = (i == (total - 1)) ? function() { self.finishAnimation(); } : '';
  				box_clone.delay(delay_time).animate({top: _ftop, left: _fleft, opacity: 'hide'}, time_animate, easing, callback);
  				
  			}
  		},
  
  		animationCirclesRotate: function(options)
  		{
  			var self = this;
  			
  			this.settings.is_animating = true;
  			var easing = (this.settings.easing_default == '') ? 'easeOutQuad' : this.settings.easing_default;
  			var time_animate = 500 / this.settings.velocity;
  			
  			var image_old = this.box_skitter.find('.image_main').attr('src');
  			
  			this.setActualLevel();
  			
  			this.setLinkAtual();
  			this.box_skitter.find('.image_main').attr({'src':this.settings.image_atual});
  			
  			var total 		= Math.ceil(this.settings.width_skitter / (this.settings.width_skitter / 10));
  			
  			var radius		= Math.sqrt(Math.pow((this.settings.width_skitter), 2) + Math.pow((this.settings.height_skitter), 2));
  			var radius		= Math.ceil(radius);
  			var size_box	= radius;
  			
  			for (i = 0; i < total; i++) {
  				var _ileft = (self.settings.width_skitter / 2) - (size_box / 2);
  				var _itop = (self.settings.height_skitter / 2) - (size_box / 2);
  				
  				var _fleft = _ileft; 
  				var _ftop = _itop; 
  				var box_clone = null;
  
  				if ($.browser.mozilla) {
  					box_clone = this.getBoxCloneImgOld(image_old);
  					box_clone.css({left: _ileft, top:_itop, width:size_box, height:size_box}).css3({
  						'border-radius': radius+'px'
  					});
  					box_clone.find('img').css({left: -_ileft, top: -_itop});
  				}
  				else {
  					box_clone = this.getBoxCloneBackground({
  						image: 		image_old,
  						left: 		_ileft, 
  						top: 		_itop, 
  						width: 		size_box, 
  						height: 	size_box,
  						position: {
  							top:  	-_itop, 
  							left:  	-_ileft
  						}
  					}).css3({
  						'border-radius': radius+'px'
  					});
  				}
  				
  				size_box -= 100;
  				
  				this.addBoxClone(box_clone);
  				box_clone.show();
  				
  				var delay_time = 100 * i;
  				var callback = (i == (total - 1)) ? function() { self.finishAnimation(); } : '';
  				var _rotate = (i % 2 == 0) ? '20deg' : '-20deg';
  				box_clone.delay(delay_time).animate({top: _ftop, left: _fleft, opacity: 'hide', rotate: _rotate}, time_animate, easing, callback);
  			}
  		},
  		
  		animationCubeShow: function(options)
  		{
  			var self = this;
  			
  			this.settings.is_animating = true;
  			var easing = (this.settings.easing_default == '') ? 'easeOutQuad' : this.settings.easing_default;
  			var time_animate = 400 / this.settings.velocity;
  			
  			this.setActualLevel();
  			
  			var division_w 		= Math.ceil(this.settings.width_skitter / (this.settings.width_skitter / 8));
  			var division_h 		= Math.ceil(this.settings.height_skitter / (this.settings.height_skitter / 4));
  			var total			= division_w * division_h;
  			
  			var width_box 		= Math.ceil(this.settings.width_skitter / division_w);
  			var height_box 		= Math.ceil(this.settings.height_skitter / division_h);
  			
  			var last 			= false;
  			
  			var _btop 			= 0;
  			var _bleft 			= 0;
  			var line			= 0;
  			var col				= 0;
  			
  			for (i = 0; i < total; i++) {
  				
  				_btop = height_box * line;
  				_bleft = width_box * col;
  				
  				var delay_time = 30 * (i);
  				
  				var box_clone 		= this.getBoxClone();
  				box_clone.css({left:_bleft, top:_btop, width:width_box, height:height_box}).hide();
  				box_clone.find('img').css({left:-_bleft, top:-_btop});
  				this.addBoxClone(box_clone);
  				
  				var callback = (i == (total - 1)) ? function() { self.finishAnimation(); } : '';
  				box_clone.delay(delay_time).animate({width:'show', height:'show'}, time_animate, easing, callback);
  				
  				line++;
  				if (line == division_h) {
  					line = 0;
  					col++;
  				}
  			}
  		},
  		
  		animationDirectionBars: function(options)
  		{
  			var self = this;
  			
  			var options = $.extend({}, {direction: 'top'}, options || {});
  			
  			this.settings.is_animating = true;
  			var easing = (this.settings.easing_default == '') ? 'easeInOutQuad' : this.settings.easing_default;
  			var time_animate = 400 / this.settings.velocity;
  			
  			var image_old = this.box_skitter.find('.image_main').attr('src');
  			
  			this.setActualLevel();
  			
  			this.setLinkAtual();
  			this.box_skitter.find('.image_main').attr({'src':this.settings.image_atual});
  			
  			var total		= 12;
  			var width_box 	= Math.ceil(this.settings.width_skitter / total);
  			var height_box 	= this.settings.height_skitter;
  			var _ftop		= (options.direction == 'top') ? -height_box : height_box;
  			
  			for (i = 0; i < total; i++) {
  				var _vtop 			= 0;
  				var _vleft 			= (width_box * i);
  				var _vtop_image 	= 0;
  				var _vleft_image 	= -(width_box * i);
  
  				var box_clone = this.getBoxCloneImgOld(image_old);
  				box_clone.css({left:_vleft+'px', top:_vtop+'px', width:width_box, height:height_box});
  				box_clone.find('img').css({left:_vleft_image, top:_vtop_image});
  				
  				this.addBoxClone(box_clone);
  				box_clone.show();
  				
  				var delay_time = 70 * i;
  				var callback = (i == (total - 1)) ? function() { self.finishAnimation(); } : '';
  				
  				box_clone.delay(delay_time).animate({top:_ftop}, time_animate, easing, callback);
  			}
  			
  		},
  
  		animationHideBars: function(options)
  		{
  			var self = this;
  
  			var options = $.extend({}, {random: false}, options || {});
  
  			this.settings.is_animating = true;
  			var easing = (this.settings.easing_default == '') ? 'easeOutCirc' : this.settings.easing_default;
  			var time_animate = 700 / this.settings.velocity;
  
  			var image_old = this.box_skitter.find('.image_main').attr('src');
  
  			this.setActualLevel();
  
  			this.setLinkAtual();
  			this.box_skitter.find('.image_main').attr({'src':this.settings.image_atual});
  
  			var division_w = Math.ceil(this.settings.width_skitter / (this.settings.width_skitter / 10));
  			var total = division_w;
  
  			var width_box = Math.ceil(this.settings.width_skitter / division_w);
  			var height_box = this.settings.height_skitter;
  
  			for (i = 0; i < total; i++) {
  				var _vtop = 0;
  				var _vtop_image = 0;
  
  				// var _vleft = width_box * i;				
  				// var _vleft_image = -(width_box * i);
  				if($(window).width() > 1920){
                      var _vleft       = width_box * i + (this.settings.width_skitter - this.box_skitter.find('.image_main').width() ) / 2;
                      var _vleft_image = - width_box * i;
                  }else{
                      var _vleft       = width_box * i;
                      var _vleft_image = - width_box * i + (this.settings.width_skitter - this.box_skitter.find('.image_main').width() ) / 2;
                  }
  
  				var _fleft = '+='+width_box;
  
  				var box_clone = this.getBoxCloneImgOld(image_old);
  				box_clone.css({left:0, top:0, width:width_box, height:height_box});
  				box_clone.find('img').css({left:_vleft_image, top:_vtop_image});
  
  				var box_clone_main = this.getBoxCloneImgOld(image_old);
  				box_clone_main.css({left:_vleft+'px', top:_vtop+'px', width:width_box, height:height_box});
  				box_clone_main.html(box_clone);
  
  				this.addBoxClone(box_clone_main);
  				box_clone.show();
  				box_clone_main.show();
  
  				var delay_time = 50 * i;
  				var callback = (i == (total - 1)) ? function() { self.finishAnimation(); } : '';
  				
  				box_clone.delay(delay_time).animate({left:_fleft}, time_animate, easing, callback);
  			}
  		},
  
  		animationSwapBars: function(options)
  		{
  			var self = this;
  			
  			var options = $.extend({}, {direction: 'top', delay_type: 'sequence', total: 7, easing: 'easeOutCirc'}, options || {});
  			
  			this.settings.is_animating = true;
  			var easing = (this.settings.easing_default == '') ? options.easing : this.settings.easing_default;
  			var time_animate = 500 / this.settings.velocity;
  			
  			var image_old = this.box_skitter.find('.image_main').attr('src');
  			
  			this.setActualLevel();
  			
  			this.setLinkAtual();
  			this.box_skitter.find('.image_main').attr({'src':this.settings.image_atual});
  			this.box_skitter.find('.image_main').hide();
  			
  			var total 		= options.total;
  			
  			for (i = 0; i < total; i++) {
  
  				var width_box 		= Math.ceil(this.settings.width_skitter / total);
  				var height_box 		= this.settings.height_skitter;
  				
  				var _itopc 			= 0;
  				var _ileftc 		= (width_box * i);
  				var _ftopc 			= -height_box;
  				var _fleftc 		= _ileftc + width_box ;
  				
  				var _itopn			= height_box;
  				var _ileftn			= _ileftc;
  				var _ftopn			= 0;
  				var _fleftn			= _ileftc;
  				
  				var _vtop_image 	= 0;
  				var _vleft_image 	= -_ileftc;
  				
  				switch (options.delay_type) 
  				{
  					case 'zebra' : default : var delay_time = (i % 2 == 0) ? 0 : 150; break;
  					case 'random' : var delay_time = 30 * (Math.random() * 30); break;
  					case 'sequence' : var delay_time = i * 100; break;
  				}
  
  				// Old image
  				var box_clone = this.getBoxCloneImgOld(image_old);
  				box_clone.find('img').css({left:_vleft_image, top:0});
  				box_clone.css({top:0, left:0, width:width_box, height:height_box});
  
  				// Next image
  				var box_clone_next = this.getBoxClone();
  				box_clone_next.find('img').css({left:_vleft_image, top:0});
  				box_clone_next.css({top:0, left:-width_box, width:width_box, height:height_box});
  				
  				// Container box images
  				var box_clone_container = this.getBoxClone();
  				box_clone_container.html('').append(box_clone).append(box_clone_next);
  				box_clone_container.css({top:0, left:_ileftc, width:width_box, height:height_box});
  				
  				// Add containuer
  				this.addBoxClone(box_clone_container);
  
  				// Show boxes
  				box_clone_container.show();
  				box_clone.show();
  				box_clone_next.show();
  				
  				// Callback
  				var callback = (i == (total - 1)) ? function() { self.finishAnimation(); } : '';
  
  				// Animations
  				box_clone.delay(delay_time).animate({ left: width_box }, time_animate, easing);
  				box_clone_next.delay(delay_time).animate({ left:0 }, time_animate, easing, callback);
  			}
  		},
  
  		animationSwapBlocks: function(options)
  		{
  			var self = this;
  			
  			var options = $.extend({}, {easing_old: 'easeInOutQuad', easing_new: 'easeOutQuad'}, options || {});
  			
  			this.settings.is_animating = true;
  			var easing_old = (this.settings.easing_default == '') ? options.easing_old : this.settings.easing_default;
  			var easing_new = (this.settings.easing_default == '') ? options.easing_new : this.settings.easing_default;
  			var time_animate = 800 / this.settings.velocity;
  			
  			var image_old = this.box_skitter.find('.image_main').attr('src');
  			
  			this.setActualLevel();
  			
  			this.setLinkAtual();
  			this.box_skitter.find('.image_main').attr({'src':this.settings.image_atual});
  			this.box_skitter.find('.image_main').hide();
  			
  			var total 			= 2;
  			var width_box 		= this.settings.width_skitter;
  			var height_box 		= Math.ceil(this.settings.height_skitter / total);
  
  			// Old image
  			var box_clone1 = this.getBoxCloneImgOld(image_old), box_clone2 = this.getBoxCloneImgOld(image_old);
  			box_clone1.find('img').css({left:0, top:0});
  			box_clone1.css({top:0, left:0, width:width_box, height:height_box});
  
  			box_clone2.find('img').css({left:0, top:-height_box});
  			box_clone2.css({top:height_box, left:0, width:width_box, height:height_box});
  
  			// Next image
  			var box_clone_next1 = this.getBoxClone(), box_clone_next2 = this.getBoxClone();
  			box_clone_next1.find('img').css({left:0, top:height_box});
  			box_clone_next1.css({top:0, left:0, width:width_box, height:height_box});
  
  			box_clone_next2.find('img').css({left:0, top: -(height_box * total) });
  			box_clone_next2.css({top:height_box, left:0, width:width_box, height:height_box});
  
  			// Add boxes
  			this.addBoxClone(box_clone_next1);
  			this.addBoxClone(box_clone_next2);
  			this.addBoxClone(box_clone1);
  			this.addBoxClone(box_clone2);
  
  			// Show boxes
  			box_clone1.show();
  			box_clone2.show();
  			box_clone_next1.show();
  			box_clone_next2.show();
  
  			// Callback
  			var callback = function() { self.finishAnimation(); };
  
  			// Animations
  			box_clone1.find('img').animate({ top: height_box }, time_animate, easing_old, function() {
  				box_clone1.remove();
  			});
  			box_clone2.find('img').animate({ top: -(height_box * total) }, time_animate, easing_old, function() {
  				box_clone2.remove();
  			});
  			box_clone_next1.find('img').animate({ top: 0 }, time_animate, easing_new);
  			box_clone_next2.find('img').animate({ top: -height_box }, time_animate, easing_new, callback);
  		},
  
  		animationCut: function(options)
  		{
  			var self = this;
  			
  			var options = $.extend({}, {easing_old: 'easeInOutExpo', easing_new: 'easeInOutExpo'}, options || {});
  			
  			this.settings.is_animating = true;
  			var easing_old = (this.settings.easing_default == '') ? options.easing_old : this.settings.easing_default;
  			var easing_new = (this.settings.easing_default == '') ? options.easing_new : this.settings.easing_default;
  			var time_animate = 900 / this.settings.velocity;
  			
  			var image_old = this.box_skitter.find('.image_main').attr('src');
  			
  			this.setActualLevel();
  			
  			this.setLinkAtual();
  			this.box_skitter.find('.image_main').attr({'src':this.settings.image_atual});
  			this.box_skitter.find('.image_main').hide();
  			
  			var total 			= 2;
  			var width_box 		= this.settings.width_skitter;
  			var height_box 		= Math.ceil(this.settings.height_skitter / total);
  
  			// Old image
  			var box_clone1 = this.getBoxCloneImgOld(image_old), box_clone2 = this.getBoxCloneImgOld(image_old);
  			box_clone1.find('img').css({left:0, top:0});
  			box_clone1.css({top:0, left:0, width:width_box, height:height_box});
  
  			box_clone2.find('img').css({left:0, top:-height_box});
  			box_clone2.css({top:height_box, left:0, width:width_box, height:height_box});
  
  			// Next image
  			var box_clone_next1 = this.getBoxClone(), box_clone_next2 = this.getBoxClone();
  			//box_clone_next1.find('img').css({left:0, top:height_box});
  			box_clone_next1.find('img').css({left:0, top:0});
  			box_clone_next1.css({top:0, left:width_box, width:width_box, height:height_box});
  
  			//box_clone_next2.find('img').css({left:0, top: -(height_box * total) });
  			box_clone_next2.find('img').css({left:0, top: -height_box });
  			box_clone_next2.css({top:height_box, left:-width_box, width:width_box, height:height_box});
  
  			// Add boxes
  			this.addBoxClone(box_clone_next1);
  			this.addBoxClone(box_clone_next2);
  			this.addBoxClone(box_clone1);
  			this.addBoxClone(box_clone2);
  
  			// Show boxes
  			box_clone1.show();
  			box_clone2.show();
  			box_clone_next1.show();
  			box_clone_next2.show();
  
  			// Callback
  			var callback = function() { self.finishAnimation(); };
  
  			// Animations
  			box_clone1.animate({ left: -width_box }, time_animate, easing_old, function() {
  				box_clone1.remove();
  			});
  			box_clone2.animate({ left: width_box }, time_animate, easing_old, function() {
  				box_clone2.remove();
  			});
  			box_clone_next1.animate({ left: 0 }, time_animate, easing_new);
  			box_clone_next2.animate({ left: 0 }, time_animate, easing_new, callback);
  		},
  		
  		// End animations ----------------------
  		
  		// Finish animation
  		finishAnimation: function (options) 
  		{
  			var self = this;
  			this.box_skitter.find('.image_main').show();
  			this.showBoxText();
  			this.settings.is_animating = false;
  			this.box_skitter.find('.image_main').attr({'src': this.settings.image_atual});
  			this.box_skitter.find('.image a').attr({'href': this.settings.link_atual});
  			
  			if (!this.settings.is_hover_box_skitter && !this.settings.is_paused && !this.settings.is_blur) {
  				this.timer = setTimeout(function() { self.completeMove(); }, this.settings.interval);
  			}
  			
  			self.startTime();
  		},
  
  		// Complete move
  		completeMove: function () 
  		{
  			this.clearTimer(true);
  			this.box_skitter.find('.box_clone').remove();
  			if (!this.settings.is_paused && !this.settings.is_blur) this.nextImage();
  		},
  
  		// Actual config for animation
  		setActualLevel: function() {
  			if ($.isFunction(this.settings.imageSwitched)) this.settings.imageSwitched(this.settings.image_i, this);
  			this.setImageLink();
  			this.addClassNumber();
  			this.hideBoxText();
  			this.increasingImage();
  		},
  
  		// Set image and link
  		setImageLink: function()
  		{
  			var name_image = this.settings.images_links[this.settings.image_i][0];
  			var link_image = this.settings.images_links[this.settings.image_i][1];
  			var label_image = this.settings.images_links[this.settings.image_i][3];
  			var target_link = this.settings.images_links[this.settings.image_i][4];
  			
  			this.settings.image_atual = name_image;
  			this.settings.link_atual = link_image;
  			this.settings.label_atual = label_image;
  			this.settings.target_atual = target_link;
  		},
  
  		// Add class for number
  		addClassNumber: function () 
  		{
  			var self = this;
  			// this.box_skitter.find('.image_number_select').animate(self.settings.animateNumberOut, 500).removeClass('image_number_select');
  			// $('#image_n_'+(this.settings.image_i+1)+'_'+self.number_skitter).animate(self.settings.animateNumberActive, 700).addClass('image_number_select');
  			this.box_skitter.find('.image_number_select').removeClass('image_number_select');
  			$('#image_n_'+(this.settings.image_i+1)+'_'+self.number_skitter).addClass('image_number_select');
  		},
  
  		// Increment image_i
  		increasingImage: function()
  		{
  			this.settings.image_i++;
  			if (this.settings.image_i == this.settings.images_links.length) {
  				this.settings.image_i = 0;
  			}
  		},
  		
  		// Get box clone
  		getBoxClone: function()
  		{
  			if (this.settings.link_atual != '#') {
  				var img_clone = $('<a href="'+this.settings.link_atual+'"><img src="'+this.settings.image_atual+'" /></a>');
  				img_clone.attr({ 'target': this.settings.target_atual });
  			} 
  			else {
  				var img_clone = $('<img src="'+this.settings.image_atual+'" />');
  			}
  			
  			img_clone = this.resizeImage(img_clone);
  			var box_clone = $('<div class="box_clone"></div>');
  			box_clone.append(img_clone);
  			return box_clone;
  		},
  		
  		// Get box clone
  		getBoxCloneImgOld: function(image_old)
  		{
  			if (this.settings.link_atual != '#') {
  				var img_clone = $('<a href="'+this.settings.link_atual+'"><img src="'+image_old+'" /></a>');
  				img_clone.attr({ 'target': this.settings.target_atual });
  			} 
  			else {
  				var img_clone = $('<img src="'+image_old+'" />');
  			}
  			
  			img_clone = this.resizeImage(img_clone);
  			var box_clone = $('<div class="box_clone"></div>');
  			box_clone.append(img_clone);
  			return box_clone;
  		},
  		
  		// Redimensiona imagem
  		resizeImage: function(img_clone) 
  		{
  			if (this.settings.fullscreen) {
  				img_clone.find('img').height(this.settings.height_skitter);
  			}
  			return img_clone;
  		}, 
  
  		// Add box clone in box_skitter
  		addBoxClone: function(box_clone)
  		{
  			this.box_skitter.find('.container_skitter').append(box_clone);
  		},
  		
  		// Get accepts easing 
  		getEasing: function(easing)
  		{
  			var easing_accepts = [
  				'easeInQuad', 		'easeOutQuad', 		'easeInOutQuad', 
  				'easeInCubic', 		'easeOutCubic', 	'easeInOutCubic', 
  				'easeInQuart', 		'easeOutQuart', 	'easeInOutQuart', 
  				'easeInQuint', 		'easeOutQuint', 	'easeInOutQuint', 
  				'easeInSine', 		'easeOutSine', 		'easeInOutSine', 
  				'easeInExpo',		'easeOutExpo', 		'easeInOutExpo', 
  				'easeInCirc', 		'easeOutCirc', 		'easeInOutCirc', 
  				'easeInElastic', 	'easeOutElastic', 	'easeInOutElastic', 
  				'easeInBack', 		'easeOutBack', 		'easeInOutBack', 
  				'easeInBounce', 	'easeOutBounce', 	'easeInOutBounce', 
  			];
  			
  			if (jQuery.inArray(easing, easing_accepts) > 0) {
  				return easing;
  			}
  			else {
  				return '';
  			}
  		},
  		
  		// Get random number
  		getRandom: function (i) 
  		{
  			return Math.floor(Math.random() * i);
  		},
  
  		// Set value for text
  		setValueBoxText: function () 
  		{
  			this.box_skitter.find('.label_skitter').html(this.settings.label_atual);
  		},
  		
  		// Show box text
  		showBoxText: function () 
  		{
  			var self = this;
  
  			if ( this.settings.label_atual != undefined && this.settings.label_atual != '' && self.settings.label ) {
  
  				switch ( self.settings.labelAnimation ) {
  
  					case 'slideUp' : default : 
  						self.box_skitter.find('.label_skitter').slideDown(400);
  						break;
  
  					case 'left' : case 'right' : 
  						self.box_skitter.find('.label_skitter').animate({ left: 0 }, 400, 'easeInOutQuad');
  						break;
  
  					case 'fixed' : 
  						// null
  						break;
  				}
  			}
  		},
  		
  		// Hide box text
  		hideBoxText: function () 
  		{
  			var self = this;
  
  			switch ( self.settings.labelAnimation ) {
  
  				case 'slideUp' : default : 
  					this.box_skitter.find('.label_skitter').slideUp(200, function() {
  						self.setValueBoxText();
  					});
  					break;
  
  				case 'left' : case 'right' : 
  					var _left = ( self.settings.labelAnimation == 'left' ) ? -(self.box_skitter.find('.label_skitter').width()) : (self.box_skitter.find('.label_skitter').width());
  					self.box_skitter.find('.label_skitter').animate({ left: _left }, 400, 'easeInOutQuad', function() {
  						self.setValueBoxText();
  					});
  					break;
  
  				case 'fixed' : 
  					self.setValueBoxText();
  					break;
  			}
  		},
  		
  		// Stop time to get over box_skitter
  		stopOnMouseOver: function () 
  		{
  			var self = this;
  
  			if ( self.settings.stop_over ) 
  			{
  				self.box_skitter.hover(function() {
  					
  					if (self.settings.stop_over) self.settings.is_hover_box_skitter = true;
  					
  					if (!self.settings.is_paused_time) {
  						self.pauseTime();
  					}
  					
  					self.setHideTools('hover');
  					self.clearTimer(true);
  					
  				}, function() {
  					if (self.settings.stop_over) self.settings.is_hover_box_skitter = false;
  					
  					if (self.settings.elapsedTime == 0 && !self.settings.is_animating && !self.settings.is_paused) {
  						self.startTime();
  					}
  					else if (!self.settings.is_paused) {
  						self.resumeTime();
  					}
  					
  					self.setHideTools('out');
  					self.clearTimer(true);
  					
  					if (!self.settings.is_animating && self.settings.images_links.length > 1) {
  						self.timer = setTimeout(function() { self.completeMove(); }, self.settings.interval - self.settings.elapsedTime);
  						self.box_skitter.find('.image_main').attr({'src': self.settings.image_atual});
  						self.box_skitter.find('.image a').attr({'href': self.settings.link_atual});
  					}
  				});
  			}
  			else
  			{
  				self.box_skitter.hover(function() {
  					self.setHideTools('hover');
  				}, function() {
  					self.setHideTools('out');
  				});
  			}
  		}, 
  
  		// Hover/out hideTools
  		setHideTools: function( type ) {
  			var self = this;
  			var opacity_elements = self.settings.opacity_elements;
  			var interval_in_elements = self.settings.interval_in_elements;
  			var interval_out_elements = self.settings.interval_out_elements;
  
  			if ( type == 'hover' ) {
  				if (self.settings.hideTools) {
  					if (self.settings.numbers) {
  						self.box_skitter
  							.find('.info_slide')
  							.show()
  							.css({opacity:0})
  							.animate({opacity: opacity_elements}, interval_in_elements);
  					}
  					
  					if (self.settings.navigation) {
  						self.box_skitter
  							.find('.prev_button, .next_button')
  							.show()
  							.css({opacity:0})
  							.animate({opacity: opacity_elements}, interval_in_elements);
  					}
  
  					if (self.settings.focus && !self.settings.foucs_active) {
  						self.box_skitter
  							.find('.focus_button')
  							.stop()
  							.show().css({opacity:0})
  							.animate({opacity:opacity_elements}, interval_in_elements);
  					}
  					
  					if (self.settings.controls) {
  						self.box_skitter
  						.find('.play_pause_button')
  						.stop()
  						.show().css({opacity:0})
  						.animate({opacity:opacity_elements}, interval_in_elements);
  					}
  				}
  
  				if (self.settings.focus && !self.settings.foucs_active && !self.settings.hideTools) {
  					self.box_skitter
  						.find('.focus_button')
  						.stop()
  						.animate({opacity:1}, interval_in_elements);
  				}
  				
  				if (self.settings.controls && !self.settings.hideTools) {
  					self.box_skitter
  						.find('.play_pause_button')
  						.stop()
  						.animate({opacity:1}, interval_in_elements);
  				}
  			}
  			else {
  				if (self.settings.hideTools) {
  					if (self.settings.numbers) {
  						self.box_skitter
  							.find('.info_slide')
  							.queue("fx", [])
  							.show()
  							.css({opacity: opacity_elements})
  							.animate({opacity:0}, interval_out_elements);
  					}
  					
  					if (self.settings.navigation) {
  						self.box_skitter
  							.find('.prev_button, .next_button')
  							.queue("fx", [])
  							.show()
  							.css({opacity: opacity_elements})
  							.animate({opacity:0}, interval_out_elements);
  					}
  
  					if (self.settings.focus && !self.settings.foucs_active) {
  						self.box_skitter
  							.find('.focus_button')
  							.stop()
  							.css({opacity: opacity_elements})
  							.animate({opacity:0}, interval_out_elements);
  					}
  
  					if (self.settings.controls) {
  						self.box_skitter
  							.find('.play_pause_button')
  							.stop()
  							.css({opacity: opacity_elements})
  							.animate({opacity:0}, interval_out_elements);
  					}
  				}
  				
  				if (self.settings.focus && !self.settings.foucs_active && !self.settings.hideTools) {
  					self.box_skitter
  						.find('.focus_button')
  						.stop()
  						.animate({opacity:0.3}, interval_out_elements);
  				}
  				
  				if (self.settings.controls && !self.settings.hideTools) {
  					self.box_skitter
  						.find('.play_pause_button')
  						.stop()
  						.animate({opacity:0.3}, interval_out_elements);
  				}
  			}
  		},
  		
  		// Stop timer
  		clearTimer: function (force) {
  			var self = this;
  			clearInterval(self.timer);
  		},
  		
  		// Set link atual
  		setLinkAtual: function() {
  			if (this.settings.link_atual != '#' && this.settings.link_atual != '') {
  				this.box_skitter.find('.image a').attr({'href': this.settings.link_atual, 'target': this.settings.target_atual});
  			}
  			else {
  				this.box_skitter.find('.image a').removeAttr('href');
  			}
  		},
  		
  		// Hide tools
  		hideTools: function() {
  			this.box_skitter.find('.info_slide').fadeTo(0, 0);
  			this.box_skitter.find('.prev_button').fadeTo(0, 0);
  			this.box_skitter.find('.next_button').fadeTo(0, 0);
  			this.box_skitter.find('.focus_button').fadeTo(0, 0);
  			this.box_skitter.find('.play_pause_button').fadeTo(0, 0);
  		}, 
  		
  		// Focus Skitter
  		focusSkitter: function() {
  			var self = this;
  			
  			var focus_button = $('<a href="#" class="focus_button">focus</a>');
  			self.box_skitter.append(focus_button);
  			
  			var _left = (self.settings.width_skitter - focus_button.width()) / 2;
  			var _space = 0;
  			
  			if (self.settings.controls) _left -= 25;
  			if (self.settings.controls_position == self.settings.focus_position) _space = focus_button.width() + 5;
  			
  			var cssPosition = {left: _left};
  			
  			switch (self.settings.focus_position)
  			{
  				case 'leftTop' 		: cssPosition = {left: 5 + _space, top: 30}; break;
  				case 'rightTop' 	: cssPosition = {right: 5 + _space, top: 30}; break;
  				case 'leftBottom' 	: cssPosition = {left: 5 + _space, bottom: 5, top: 'auto'}; break;
  				case 'rightBottom' 	: cssPosition = {right: 5 + _space, bottom: 5, top: 'auto'}; break;
  			}
  			
  			focus_button
  				.css(cssPosition)
  				.animate({opacity:0.3}, self.settings.interval_in_elements);
  			
  			$(document).keypress(function(e) {
  				var code = (e.keyCode ? e.keyCode : e.which);
  				if (code == 27) $('#overlay_skitter').trigger('click');
  			});
  
  			var _top = $('.box_skitter').offset().top;
  			var _left = $('.box_skitter').offset().left;
  			
  			self.box_skitter.find('.focus_button').click(function() {
  				if ( self.settings.foucs_active ) return false;
  				self.settings.foucs_active = true;
  				
  				$(this).stop().animate({opacity:0}, self.settings.interval_out_elements);
  				
  				var div = $('<div id="overlay_skitter"></div>')
  					.height( $(document).height() )
  					.hide()
  					.fadeTo(self.settings.interval_in_elements, 0.98);
  					
  				var _topFinal = (($(window).height() - $('.box_skitter').height()) / 2) + $(document).scrollTop();
  				var _leftFinal = ($(window).width() - $('.box_skitter').width()) / 2;
  				
  				self.box_skitter.before('<div id="mark_position"></div>');
  				$('body').prepend(div);
  				$('body').prepend(self.box_skitter);
  				self.box_skitter
  					.css({'top':_top, 'left':_left, 'position':'absolute', 'z-index':9999})
  					.animate({'top':_topFinal, 'left':_leftFinal}, 2000, 'easeOutExpo');
  				
  				$('#mark_position')	
  					.width($('.box_skitter').width())
  					.height($('.box_skitter').height())
  					.css({'background':'none'})
  					.fadeTo(300,0.3);
  				
  				return false;
  			});
  
  			$('#overlay_skitter').live('click', function() {
  				if ( $(this).hasClass('finish_overlay_skitter') ) return false;
  				
  				self.settings.foucs_active = false;
  				$(this).addClass('finish_overlay_skitter');
  				
  				if (!self.settings.hideTools) self.box_skitter.find('.focus_button').animate({opacity:0.3}, 200);
  				
  				self.box_skitter
  					.stop()
  					.animate({'top':_top, 'left':_left}, 200, 'easeOutExpo', function() {
  						$('#mark_position').before(self.box_skitter);
  						$(this).css({'position':'relative', 'top':0, 'left': 0});
  						$('#mark_position').remove();
  					});
  				
  				$('#overlay_skitter').fadeTo(self.settings.interval_out_elements, 0, function() {
  					$(this).remove();
  				});
  				
  				return false;
  			});
  		},
  		
  		/**
  		 * Controls: play and stop
  		 */
  		setControls: function() {
  			var self = this;
  			
  			var play_pause_button = $('<a href="#" class="play_pause_button">pause</a>');
  			self.box_skitter.append(play_pause_button);
  			
  			var _left = (self.settings.width_skitter - play_pause_button.width()) / 2;
  			
  			if (self.settings.focus) _left += 25;
  			
  			var cssPosition = {left: _left};
  			
  			switch (self.settings.controls_position)
  			{
  				case 'leftTop' 		: cssPosition = {left: 5, top: 30}; break;
  				case 'rightTop' 	: cssPosition = {right: 5, top: 30}; break;
  				case 'leftBottom' 	: cssPosition = {left: 5, bottom: 5, top: 'auto'}; break;
  				case 'rightBottom' 	: cssPosition = {right: 5, bottom: 5, top: 'auto'}; break;
  			}
  			
  			play_pause_button
  				.css(cssPosition)
  				.animate({opacity:0.3}, self.settings.interval_in_elements);
  			
  			play_pause_button.click(function() {
  				if (!self.settings.is_paused) {
  					$(this).html('play');
  					$(this).fadeTo(100, 0.5).fadeTo(100, 1);
  					
  					$(this).addClass('play_button');
  					self.pauseTime();
  					self.settings.is_paused = true;
  					self.clearTimer(true);
  				}
  				else {
  					if (!self.settings.is_animating && !self.box_skitter.find('.progressbar').is(':visible')) {
  						self.settings.elapsedTime = 0;
  					}
  					else {
  						self.resumeTime();
  					}
  					
  					if (!self.settings.progressbar) self.resumeTime();
  					
  					self.settings.is_paused = false;
  					
  					$(this).html('pause');
  					$(this).fadeTo(100, 0.5).fadeTo(100, 1);
  					$(this).removeClass('play_button');
  					
  					if (!self.settings.stop_over) { 
  						self.clearTimer(true);
  						if (!self.settings.is_animating && self.settings.images_links.length > 1) {
  							self.timer = setTimeout(function() { self.completeMove(); }, self.settings.interval - self.settings.elapsedTime);
  							self.box_skitter.find('.image_main').attr({'src': self.settings.image_atual});
  							self.box_skitter.find('.image a').attr({'href': self.settings.link_atual});
  						}
  					}
  				}
  				
  				return false;
  			});
  		},
  				
  		/**
  		 * Object size
  		 */
  		objectSize: function(obj) {
  			var size = 0, key;
  			for (key in obj) { if (obj.hasOwnProperty(key)) size++; }
  			return size;
  		},
  		
  		/**
  		 * Add progress bar
  		 */
  		addProgressBar: function() {
  			var self = this;
  			
  			var progressbar = $('<div class="progressbar"></div>');
  			self.box_skitter.append(progressbar);
  			
  			if (self.objectSize(self.settings.progressbar_css) == 0)  {
  				if (parseInt(progressbar.css('width')) > 0) {
  					self.settings.progressbar_css.width = parseInt(progressbar.css('width'));
  				}
  				else {
  					self.settings.progressbar_css = {width: self.settings.width_skitter, height:5};
  				}
  			}
  			if (self.objectSize(self.settings.progressbar_css) > 0 && self.settings.progressbar_css.width == undefined) {
  				self.settings.progressbar_css.width = self.settings.width_skitter;
  			}
  			
  			progressbar.css(self.settings.progressbar_css).hide();
  		},
  		
  		/**
  		 * Start progress bar
  		 */
  		startProgressBar: function() {
  			var self = this;
  			if (self.settings.is_hover_box_skitter || self.settings.is_paused || self.settings.is_blur || !self.settings.progressbar) return false;
  			self.box_skitter.find('.progressbar')
  				.hide()
  				.dequeue()
  				.width(self.settings.progressbar_css.width)
  				.animate({width:'show'}, self.settings.interval, 'linear');
  		},
  		
  		/**
  		 * Pause progress bar
  		 */
  		pauseProgressBar: function() {
  			var self = this;
  			if (!self.settings.is_animating) {
  				self.box_skitter.find('.progressbar').stop();
  			}
  		},
  		
  		/**
  		 * Resume progress bar
  		 */
  		resumeProgressBar: function() {
  			var self = this;
  			
  			if (self.settings.is_hover_box_skitter || self.settings.is_paused || !self.settings.progressbar) return false;
  			
  			self.box_skitter.find('.progressbar').dequeue().animate({width: self.settings.progressbar_css.width}, (self.settings.interval - self.settings.elapsedTime), 'linear');
  		},
  		
  		/**
  		 * Hide progress bar
  		 */
  		hideProgressBar: function() {
  			var self = this;
  			
  			if (!self.settings.progressbar) return false;
  			
  			self.box_skitter.find('.progressbar').stop().fadeOut(300, function() {
  				$(this).width(self.settings.progressbar_css.width);
  			});
  		},
  
  		/**
  		 * Start time
  		 */
  		startTime: function() {
  			var self = this;
  			
  			self.settings.is_paused_time = false;
  			
  			var date = new Date();
  			self.settings.elapsedTime = 0;
  			self.settings.timeStart = date.getTime();
  			
  			// Start progress bar
  			self.startProgressBar();
  		}, 
  		
  		/**
  		 * Pause time
  		 */
  		pauseTime: function() {
  			var self = this;
  			
  			if (self.settings.is_paused_time) return false;
  			self.settings.is_paused_time = true;
  			
  			var date = new Date();
  			self.settings.elapsedTime += date.getTime() - self.settings.timeStart;
  			
  			// Pause progress bar
  			self.pauseProgressBar();
  		}, 
  		
  		/**
  		 * Resume time
  		 */
  		resumeTime: function() {
  			var self = this;
  			
  			self.settings.is_paused_time = false;
  			
  			var date = new Date();
  			self.settings.timeStart = date.getTime();
  			
  			// Resume progress bar
  			self.resumeProgressBar();
  		}, 
  
  		/**
  		 * Enable navigation keys
  		 */
  		enableNavigationKeys: function() {
  			var self = this;
  			$(window).keydown(function(e) {
  				// Next
  				if (e.keyCode == 39 || e.keyCode == 40) {
  					self.box_skitter.find('.next_button').trigger('click');
  				}
  				// Prev
  				else if (e.keyCode == 37 || e.keyCode == 38) {
  					self.box_skitter.find('.prev_button').trigger('click');
  				}
  			});
  		},
  		
  		/**
  		 * Get box clone with background image
  		 */
  		getBoxCloneBackground: function(options)
  		{
  			var box_clone = $('<div class="box_clone"></div>');
  
  			box_clone.css({
  				'left': 				options.left, 
  				'top': 					options.top, 
  				'width': 				options.width, 
  				'height': 				options.height,
  				'background-image': 	'url('+options.image+')', 
  				'background-position': 	options.position.left+'px '+options.position.top+'px'
  			});
  
  			return box_clone;
  		}, 
  
  		/**
  		 * Shuffle array
  		 * @author Daniel Castro Machado <daniel@cdt.unb.br>
  		 */
  		shuffleArray: function (arrayOrigem) {
  			var self = this;
  			var arrayDestino = new Array();
  			var indice;
  			while (arrayOrigem.length > 0) {
  				indice = self.randomUnique(0, arrayOrigem.length - 1);
  				arrayDestino[arrayDestino.length] = arrayOrigem[indice];
  				arrayOrigem.splice(indice, 1);
  			}
  			return arrayDestino;
  		}, 
  		
  		/**
  		 * Gera números aleatórios inteiros entre um intervalo
  		 * @author Daniel Castro Machado <daniel@cdt.unb.br>
  		 */
  		randomUnique: function (valorIni, valorFim) {
  			var numRandom;
  			do numRandom = Math.random(); while (numRandom == 1); // Evita gerar o número valorFim + 1
  			return (numRandom * (valorFim - valorIni + 1) + valorIni) | 0;
  		},
  		
  		/** 
  		 * Stop on window focus out
  		 * @author Dan Partac (http://thiagosf.net/projects/jquery/skitter/#comment-355473307)
  		 */
  		windowFocusOut: function () {
  			var self = this;
  			$(window).bind('blur', function(){
  				self.settings.is_blur = true;
  				self.pauseTime();
  				self.clearTimer(true);
  			});
  			$(window).bind('focus', function(){
  				if ( self.settings.images_links.length > 1 ) {
  					self.settings.is_blur = false;	
  					
  					if  (self.settings.elapsedTime == 0) {
  						self.startTime();
  					}
  					else {
  						self.resumeTime();
  					}
  					
  					if (self.settings.elapsedTime <= self.settings.interval) {
  						self.clearTimer(true); // Fix bug IE: double next
  						self.timer = setTimeout(function() { self.completeMove(); }, self.settings.interval - self.settings.elapsedTime);
  						self.box_skitter.find('.image_main').attr({'src': self.settings.image_atual});
  						self.box_skitter.find('.image a').attr({'href': self.settings.link_atual});
  					}
  				}
  			});
  		},
  
  		// window Chage
  		windowOnresize : function(){
  			var self = this,
  				timeout;
  			window.onresize = function(){
  				self.settings.is_blur = true;
  				self.pauseTime();
  				self.clearTimer(true);
  				if(timeout){
  					clearTimeout(timeout);
  				}
  				var $Ul = $(".box_skitter ul");
  				$Ul.siblings().hide()
  
  				timeout = setTimeout(function(){
  					$Ul.siblings().remove()
  					self.setup();
  					$Ul.siblings().hide();
  					setTimeout(function(){
  						$Ul.siblings().show();
  						self.settings.is_blur = false;	
  						self.resumeTime();
  					}, 2)
  				}, 1)
  			}
  			setTimeout(function(){
  				if(timeout){
  					clearTimeout(timeout);
  				}
  			}, 30)
  		}
  		
  	});
  	
  	/**
  	 * Helper function for cross-browser CSS3 support, prepends all possible prefixes to all properties passed in
  	 * @param {Object} props Ker/value pairs of CSS3 properties
  	 */
  	$.fn.css3 = function(props) {
  		var css = {};
  		var prefixes = ['moz', 'ms', 'o', 'webkit'];
  		for(var prop in props) {
  			// Add the vendor specific versions
  			for(var i=0; i<prefixes.length; i++)
  				css['-'+prefixes[i]+'-'+prop] = props[prop];
  			// Add the actual version	
  			css[prop] = props[prop];
  		}
  		this.css(css);
  		return this;
  	};
  	
  	// Monkey patch jQuery 1.3.1+ to add support for setting or animating CSS
  	// scale and rotation independently.
  	// 2009-2010 Zachary Johnson www.zachstronaut.com
  	// Updated 2010.11.06
  	var rotateUnits = 'deg';
  	
  	$.fn.rotate = function (val) {
  		var style = $(this).css('transform') || 'none';
  		if (typeof val == 'undefined') {
  			if (style) {
  				var m = style.match(/rotate\(([^)]+)\)/);
  				if (m && m[1]) {
  					return m[1];
  				}
  			}
  			return 0;
  		}
  		var m = val.toString().match(/^(-?\d+(\.\d+)?)(.+)?$/);
  		if (m) {
  			if (m[3]) rotateUnits = m[3];
  			$(this).css('transform',
  				style.replace(/none|rotate\([^)]*\)/, '') + 'rotate(' + m[1] + rotateUnits + ')'
  			);
  		}
  		
  		return this;
  	};
  	
  	// Note that scale is unitless.
  	$.fn.scale = function (val, duration, options) {
  		var style = $(this).css('transform');
  		if (typeof val == 'undefined') {
  			if (style) {
  				var m = style.match(/scale\(([^)]+)\)/);
  				if (m && m[1]) {
  					return m[1];
  				}
  			}
  			return 1;
  		}
  		$(this).css('transform',
  			style.replace(/none|scale\([^)]*\)/, '') + 'scale(' + val + ')'
  		);
  		return this;
  	};
  
  	// fx.cur() must be monkey patched because otherwise it would always
  	// return 0 for current rotate and scale values
  	var curProxied = $.fx.prototype.cur;
  	$.fx.prototype.cur = function () {
  		if (this.prop == 'rotate') {
  			return parseFloat($(this.elem).rotate());
  		}
  		else if (this.prop == 'scale') {
  			return parseFloat($(this.elem).scale());
  		}
  		return curProxied.apply(this, arguments);
  	};
  	
  	$.fx.step.rotate = function (fx) {
  		$(fx.elem).rotate(fx.now + rotateUnits);
  	};
  	
  	$.fx.step.scale = function (fx) {
  		$(fx.elem).scale(fx.now);
  	};
  	
  	var animateProxied = $.fn.animate;
  	$.fn.animate = function (prop) {
  		if (typeof prop['rotate'] != 'undefined') {
  			var m = prop['rotate'].toString().match(/^(([+-]=)?(-?\d+(\.\d+)?))(.+)?$/);
  			if (m && m[5]) {
  				rotateUnits = m[5];
  			}
  			prop['rotate'] = m[1];
  		}
  		
  		return animateProxied.apply(this, arguments);
  	};
  	
  	// Monkey patch jQuery 1.3.1+ css() method to support CSS 'transform'
  	// property uniformly across Safari/Chrome/Webkit, Firefox 3.5+, IE 9+, and Opera 11+.
  	// 2009-2011 Zachary Johnson www.zachstronaut.com
  	// Updated 2011.05.04 (May the fourth be with you!)
  	function getTransformProperty(element) {
  		var properties = ['transform', 'WebkitTransform', 'msTransform', 'MozTransform', 'OTransform'];
  		var p;
  		while (p = properties.shift()) {
  			if (typeof element.style[p] != 'undefined') {
  				return p;
  			}
  		}
  		return 'transform';
  	};
  	
  	var _propsObj = null;
  	
  	var proxied = $.fn.css;
  	$.fn.css = function (arg, val) {
  		if (_propsObj === null) {
  			if (typeof $.cssProps != 'undefined') {
  				_propsObj = $.cssProps;
  			}
  			else if (typeof $.props != 'undefined') {
  				_propsObj = $.props;
  			}
  			else {
  				_propsObj = {};
  			}
  		}
  		if
  		(
  			typeof _propsObj['transform'] == 'undefined'
  			&&
  			(
  				arg == 'transform'
  				||
  				(
  					typeof arg == 'object'
  					&& typeof arg['transform'] != 'undefined'
  				)
  			)
  		) {
  			_propsObj['transform'] = getTransformProperty(this.get(0));
  		}
  		if (_propsObj['transform'] != 'transform') {
  			// Call in form of css('transform' ...)
  			if (arg == 'transform') {
  				arg = _propsObj['transform'];
  				if (typeof val == 'undefined' && jQuery.style) {
  					return jQuery.style(this.get(0), arg);
  				}
  			}
  			// Call in form of css({'transform': ...})
  			else if
  			(
  				typeof arg == 'object'
  				&& typeof arg['transform'] != 'undefined'
  			) {
  				arg[_propsObj['transform']] = arg['transform'];
  				delete arg['transform'];
  			}
  		}
  		return proxied.apply(this, arguments);
  	};
  
  })(jQuery);