/**
 * jQuery Skitter Slideshow
 * 
 * @name jquery.skitter.js
 * @description Slideshow
 * @author Thiago Silva Ferreira - http://thiagosf.net
 * @version 3.1
 * @date August 04, 2010
 * @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;
	$.fn.skitter = function(options) {
		return this.each(function() {
			new $sk(this, options, number_skitter);
			++number_skitter
		})
	};
	var defaults = {
		velocity : 1,
		interval : 2500,
		animation : '',
		numbers : true,
		navigation : true,
		label : true,
		easing_default : '',
		box_skitter : null,
		time_interval : null,
		images_links : null,
		image_atual : null,
		link_atual : null,
		label_atual : null,
		width_skitter : null,
		height_skitter : null,
		image_i : 1,
		is_animating : false,
		is_hover_box_skitter : false,
		random_ia : null,
		show_randomly : false,
		thumbs : false,
		animateNumberOut : {
			backgroundColor : '#333',
			color : '#fff'
		},
		animateNumberOver : {
			backgroundColor : '#fff',
			color : '#000'
		},
		animateNumberActive : {
			backgroundColor : '#cc3333',
			color : '#fff'
		},
		hideTools : false,
		fullscreen : false,
		xml : false,
		dots : false,
		width_label : null,
		structure : '<a href="#" class="prev_button">prev</a>'
				+ '<a href="#" class="next_button">next</a>'
				+ '<span class="info_slide"></span>'
				+ '<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()
	};
	var $sk = $.skitter;
	$sk.fn = $sk.prototype = {};
	$sk.fn.extend = $.extend;
	$sk.fn
			.extend({
				setup : function() {
					var self = this;
					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
						});
						$('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
					}
					this.box_skitter.append(this.settings.structure);
					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;
					if (!this.settings.numbers && !this.settings.thumbs
							&& !this.settings.dots)
						this.box_skitter.find('.info_slide').hide();
					if (!this.settings.label)
						this.box_skitter.find('.label_skitter').hide();
					if (!this.settings.navigation) {
						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();
					var addImageLink = function(link, src, animation_type,
							label) {
						self.settings.images_links.push([ src, link,
								animation_type, label ]);
						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 = ''
					};
					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();
											addImageLink(link, src,
													animation_type, label)
										})
							}
						})
					} else if (this.settings.json) {
					} 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();
									addImageLink(link, src, animation_type,
											label)
								})
					}
					if (self.settings.thumbs) {
						self.settings.animateNumberOut = {
							opacity : 0.2,
							width : '70px'
						};
						self.settings.animateNumberOver = {
							opacity : 0.5,
							width : '70px'
						};
						self.settings.animateNumberActive = {
							opacity : 1.0,
							width : '70px'
						};
						self.box_skitter.find('.info_slide').addClass(
								'info_slide_thumb');
						var width_info_slide = u * 55 + 75;
						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() + 5
						});
						self.settings.label = false;
						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).height(50).append(
								copy_info_slide);
						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 = self.box_skitter
								.offset().left, y_value = self.box_skitter
								.offset().top;
						info_slide_thumb.find('.image_number').each(
								function() {
									width_image += $(this).width()
											+ parseInt($(this)
													.css('marginLeft'))
											+ parseInt($(this).css(
													'marginRight'))
											+ parseInt($(this).css(
													'paddingLeft'))
											+ parseInt($(this).css(
													'paddingRight'))
								});
						info_slide_thumb.width(width_image + 'px');
						w_info_slide_thumb = info_slide_thumb.width();
						width_valor = this.settings.width_skitter;
						width_valor = width_skitter - 100;
						x_value += 90;
						if (width_info_slide > self.settings.width_skitter) {
							self.box_skitter.mousemove(function(e) {
								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_valor;
								new_x = -((novo_width * x) / width_valor);
								if (new_x > 0)
									new_x = 0;
								if (new_x < -(w_info_slide_thumb
										- width_skitter - 5))
									new_x = -(w_info_slide_thumb
											- width_skitter - 5);
								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(
									self.settings.width_skitter);
							self.box_skitter.find('.box_scroll_thumbs').hide()
						}
					} else if (self.settings.dots) {
						self.box_skitter.find('.info_slide').addClass(
								'info_slide_dots').removeClass('info_slide');
						var left_info_slide_dots = (self.settings.width_skitter - self.box_skitter
								.find('.info_slide_dots').width()) / 2;
						self.box_skitter.find('.info_slide_dots').css({
							'left' : left_info_slide_dots
						})
					} else {
						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];
					if (this.settings.images_links.length > 1) {
						this.box_skitter
								.find('.prev_button')
								.click(
										function() {
											if (self.settings.is_animating == false) {
												clearInterval(this.timer);
												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.box_skitter
														.find('.image a')
														.attr(
																{
																	'href' : self.settings.link_atual
																});
												self.box_skitter
														.find('.image_main')
														.attr(
																{
																	'src' : self.settings.image_atual
																});
												self.box_skitter.find(
														'.box_clone').remove();
												self.nextImage()
											}
											return false
										});
						this.box_skitter.find('.next_button').click(function() {
							if (self.settings.is_animating == false) {
								clearInterval(self.timer);
								self.box_skitter.find('.image a').attr({
									'href' : self.settings.link_atual
								});
								self.box_skitter.find('.image_main').attr({
									'src' : self.settings.image_atual
								});
								self.box_skitter.find('.box_clone').remove();
								self.nextImage()
							}
							return false
						});
						this.box_skitter.find('.next_button, .prev_button')
								.hover(function() {
									$(this).stop().animate({
										opacity : 0.5
									}, 200)
								}, function() {
									$(this).stop().animate({
										opacity : 1.0
									}, 200)
								});
						this.box_skitter
								.find('.image_number')
								.hover(
										function() {
											if ($(this).attr('class') != 'image_number image_number_select') {
												$(this)
														.stop()
														.animate(
																self.settings.animateNumberOver,
																300)
											}
										},
										function() {
											if ($(this).attr('class') != 'image_number image_number_select') {
												$(this)
														.stop()
														.animate(
																self.settings.animateNumberOut,
																500)
											}
										});
						this.box_skitter
								.find('.image_number')
								.click(
										function() {
											if ($(this).attr('class') != 'image_number image_number_select') {
												if (self.settings.is_animating == false) {
													self.box_skitter.find(
															'.box_clone')
															.stop();
													clearInterval(self.timer);
													var new_i = $(this).attr(
															'rel');
													self.settings.image_i = Math
															.floor(new_i);
													self.box_skitter
															.find('.image a')
															.attr(
																	{
																		'href' : self.settings.link_atual
																	});
													self.box_skitter
															.find('.image_main')
															.attr(
																	{
																		'src' : self.settings.image_atual
																	});
													self.box_skitter.find(
															'.box_clone')
															.remove();
													self.nextImage()
												}
											}
											return false
										});
						this.box_skitter.find('.image_number').css(
								self.settings.animateNumberOut);
						this.box_skitter.find('.image_number:eq(0)').css(
								self.settings.animateNumberActive)
					}
					if (this.settings.hideTools) {
						this.hideTools()
					}
					this.loadImages()
				},
				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;">Error loading images. One or more images were not found.</p>')
														}).attr('src',
														self_il[0])
									})
				},
				start : function() {
					var self = this;
					this.setLinkAtual();
					this.box_skitter.find('.image a img').attr({
						'src' : this.settings.image_atual
					});
					img_link = this.box_skitter.find('.image a');
					img_link = this.resizeImage(img_link);
					img_link.find('img').fadeIn(1500);
					this.setValueBoxText();
					this.showBoxText();
					this.stopOnMouseOver();
					if (this.settings.images_links.length > 1) {
						this.timer = setTimeout(function() {
							self.nextImage()
						}, this.settings.interval)
					} else {
						this.box_skitter
								.find(
										'.loading, .image_loading, .image_number, .next_button, .prev_button')
								.remove()
					}
				},
				nextImage : function() {
					animations_functions = [ 'cube', 'cubeRandom', 'block',
							'cubeStop', 'cubeStopRandom', 'cubeHide',
							'cubeSize', 'horizontal', 'showBars',
							'showBarsRandom', 'tube', 'fade', 'fadeFour',
							'paralell', 'blind', 'blindHeight', 'blindWidth',
							'directionTop', 'directionBottom',
							'directionRight', 'directionLeft', 'cubeSpread' ];
					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);
					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]
					} else if (animation_type == 'random') {
						var random_id = parseInt(Math.random()
								* animations_functions.length);
						animation_type = animations_functions[random_id]
					}
					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;
					default:
						this.animationTube();
						break
					}
				},
				animationCube : function(options) {
					var self = this;
					var options = $.extend({}, {
						random : false
					}, options || {});
					this.settings.is_animating = true;
					easing = (this.settings.easing_default == '') ? 'easeOutBack'
							: 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 * 50);
						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();
						if (options.random) {
							box_clone.css({
								left : _vleft + 'px',
								top : _vtop + 'px',
								width : width_box,
								height : height_box
							})
						} else {
							box_clone.css({
								left : (this.settings.width_skitter / 2),
								top : this.settings.height_skitter + 50,
								width : width_box,
								height : height_box
							})
						}
						box_clone.find('img').css({
							left : _vleft_image,
							top : _vtop_image
						});
						this.addBoxClone(box_clone);
						var delay_time = 40 * (col);
						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);
						col_t++;
						if (col_t == division_h) {
							col_t = 0;
							col++
						}
					}
				},
				animationBlock : function(options) {
					var self = this;
					this.settings.is_animating = true;
					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 / 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 : this.settings.width_skitter,
							top : 0,
							width : width_box,
							height : height_box
						});
						box_clone.find('img').css({
							left : -(width_box * i),
							top : 0
						});
						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)
					}
				},
				animationCubeStop : function(options) {
					var self = this;
					var options = $.extend({}, {
						random : false
					}, options || {});
					this.settings.is_animating = true;
					easing = (this.settings.easing_default == '') ? 'easeOutBack'
							: 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
					});
					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;
						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 = 30 * i;
						if (options.random) {
							time_animate = 1000 / this.settings.velocity;
							_btop = _vtop;
							_bleft = _vleft;
							delay_time = 30 * (Math.random() * 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;
					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;
						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;
					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);
						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;
						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;
					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 = 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;
						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;
					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 / 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 = 70 * 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;
					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;
					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 = 40 * 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;
					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;
					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;
					easing = (this.settings.easing_default == '') ? 'easeOutCirc'
							: 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.show().delay(delay_time).animate({
							top : _btop + 'px',
							left : _bleft + 'px'
						}, time_animate, easing, callback)
					}
				},
				animationBlind : function(options) {
					var self = this;
					var options = $.extend({}, {
						height : false
					}, options || {});
					this.settings.is_animating = true;
					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);
							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;
					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 {
							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;
					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);
						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;
					easing = (this.settings.easing_default == '') ? 'easeInOutQuad'
							: 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;
					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++
						}
					}
					col_t = 0;
					col = 0;
					for (i = 0; i < total; i++) {
						spread[i] = i
					}
					;
					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 _vleft = (init_left + (width_box * col));
						var _vtop_image = -(height_box * col_t);
						var _vleft_image = -(width_box * col);
						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++
						}
					}
				},
				finishAnimation : function(options) {
					var self = this;
					this.box_skitter.find('.image_main').show();
					this.showBoxText();
					this.settings.is_animating = false;
					if (!this.settings.is_hover_box_skitter) {
						this.timer = setTimeout(function() {
							self.completeMove()
						}, this.settings.interval);
						this.box_skitter.find('.image_main').attr({
							'src' : this.settings.image_atual
						});
						this.box_skitter.find('.image a').attr({
							'href' : this.settings.link_atual
						})
					}
				},
				completeMove : function() {
					clearInterval(this.timer);
					this.box_skitter.find('.box_clone').remove();
					this.nextImage()
				},
				setActualLevel : function() {
					this.setImageLink();
					this.addClassNumber();
					this.hideBoxText();
					this.increasingImage()
				},
				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];
					this.settings.image_atual = name_image;
					this.settings.link_atual = link_image;
					this.settings.label_atual = label_image
				},
				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')
				},
				increasingImage : function() {
					this.settings.image_i++;
					if (this.settings.image_i == this.settings.images_links.length) {
						this.settings.image_i = 0
					}
				},
				getBoxClone : function() {
					if (this.settings.link_atual != '#') {
						var img_clone = $('<a href="'
								+ this.settings.link_atual + '"><img src="'
								+ this.settings.image_atual + '" /></a>')
					} 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
				},
				getBoxCloneImgOld : function(image_old) {
					if (this.settings.link_atual != '#') {
						var img_clone = $('<a href="'
								+ this.settings.link_atual + '"><img src="'
								+ image_old + '" /></a>')
					} 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
				},
				resizeImage : function(img_clone) {
					if (this.settings.fullscreen) {
						img_clone.find('img').height(
								this.settings.height_skitter)
					}
					return img_clone
				},
				addBoxClone : function(box_clone) {
					this.box_skitter.find('.container_skitter').append(
							box_clone)
				},
				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 ''
					}
				},
				getRandom : function(i) {
					return Math.floor(Math.random() * i)
				},
				setValueBoxText : function() {
					this.box_skitter.find('.label_skitter').html(
							this.settings.label_atual)
				},
				showBoxText : function() {
					var self = this;
					if (this.settings.label_atual != undefined
							&& this.settings.label_atual != ''
							&& self.settings.label) {
						self.box_skitter.find('.label_skitter').slideDown(400)
					}
				},
				hideBoxText : function() {
					var self = this;
					this.box_skitter.find('.label_skitter').slideUp(200,
							function() {
								self.setValueBoxText()
							})
				},
				stopOnMouseOver : function() {
					var self = this;
					self.box_skitter.hover(function() {
						if (self.settings.hideTools) {
							self.box_skitter.find('.info_slide').show().css({
								opacity : 0
							}).animate({
								opacity : 0.75
							}, 300);
							self.box_skitter.find('.prev_button').show().css({
								opacity : 0
							}).animate({
								opacity : 0.75
							}, 300);
							self.box_skitter.find('.next_button').show().css({
								opacity : 0
							}).animate({
								opacity : 0.75
							}, 300)
						}
						clearInterval(self.timer);
						self.settings.is_hover_box_skitter = true
					}, function() {
						if (self.settings.hideTools) {
							self.box_skitter.find('.info_slide')
									.queue("fx", []).show().css({
										opacity : 0.75
									}).animate({
										opacity : 0
									}, 500);
							self.box_skitter.find('.prev_button').queue("fx",
									[]).show().css({
								opacity : 0.75
							}).animate({
								opacity : 0
							}, 500);
							self.box_skitter.find('.next_button').queue("fx",
									[]).show().css({
								opacity : 0.75
							}).animate({
								opacity : 0
							}, 500)
						}
						clearInterval(self.timer);
						if (!self.settings.is_animating
								&& self.settings.images_links.length > 1) {
							self.timer = setTimeout(function() {
								self.timer = setTimeout(function() {
									self.completeMove()
								}, self.settings.interval);
								self.box_skitter.find('.image_main').attr({
									'src' : self.settings.image_atual
								});
								self.box_skitter.find('.image a').attr({
									'href' : self.settings.link_atual
								})
							}, self.settings.interval)
						}
						self.settings.is_hover_box_skitter = false
					})
				},
				setLinkAtual : function() {
					if (this.settings.link_atual != '#') {
						this.box_skitter.find('.image a').attr({
							'href' : this.settings.link_atual
						})
					} else {
						this.box_skitter.find('.image a').removeAttr('href')
					}
				},
				hideTools : function() {
					this.box_skitter.find('.info_slide').hide();
					this.box_skitter.find('.prev_button').hide();
					this.box_skitter.find('.next_button').hide();
					this.box_skitter.find('.label_skitter').hide()
				},
				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
				},
				randomUnique : function(valorIni, valorFim) {
					var numRandom;
					do
						numRandom = Math.random();
					while (numRandom == 1);
					return (numRandom * (valorFim - valorIni + 1) + valorIni) | 0
				}
			})
})(jQuery)
