/*
	Supersized - Fullscreen Slideshow jQuery Plugin
	Version 3.1.3
	www.buildinternet.com/project/supersized
	
	By Sam Dunn / One Mighty Roar (www.onemightyroar.com)
	Released under MIT License / GPL License
*/
(function ($)
{

	//Add in Supersized elements
	$(document).ready(function ()
	{
		$('body').prepend('<div id="supersized-loader"></div>').prepend('<div id="supersized"></div>');
	});

	//Resize image on ready or resize
	$.supersized = function (options)
	{

		//Default settings
		var settings = {

			//Functionality
			slideshow: 1,
			//Slideshow on/off
			autoplay: 1,
			//Slideshow starts playing automatically
			start_slide: 1,
			//Start slide (0 is random)
			random: 0,
			//Randomize slide order (Ignores start slide)
			slide_interval: 5000,
			//Length between transitions
			transition: 1,
			//0-None, 1-Fade, 2-Slide Top, 3-Slide Right, 4-Slide Bottom, 5-Slide Left, 6-Carousel Right, 7-Carousel Left
			transition_speed: 750,
			//Speed of transition
			new_window: 1,
			//Image links open in new window/tab
			pause_hover: 0,
			//Pause slideshow on hover
			keyboard_nav: 1,
			//Keyboard navigation on/off
			performance: 1,
			//0-Normal, 1-Hybrid speed/quality, 2-Optimizes image quality, 3-Optimizes transition speed // (Only works for Firefox/IE, not Webkit)
			image_protect: 1,
			//Disables image dragging and right click with Javascript
			image_path: 'img/',
			//Default image path
			//Size & Position
			min_width: 0,
			//Min width allowed (in pixels)
			min_height: 0,
			//Min height allowed (in pixels)
			vertical_center: 1,
			//Vertically center background
			horizontal_center: 1,
			//Horizontally center background
			fit_portrait: 0,
			//Portrait images will not exceed browser height
			fit_landscape: 0,
			//Landscape images will not exceed browser width  
			//Components
			navigation: 1,
			//Slideshow controls on/off
			thumbnail_navigation: 0,
			//Thumbnail navigation
			slide_counter: 1,
			//Display slide numbers
			slide_captions: 1 //Slide caption (Pull from "title" in slides array)
		};

		//Default elements
		var element = $('#supersized'); //Supersized container
		var pauseplay = '#pauseplay'; //Pause/Play
		//Combine options with default settings
		if (options)
		{
			var options = $.extend(settings, options); //Pull from both defaults and supplied options
		}
		else
		{
			var options = $.extend(settings); //Only pull from default settings		
		}

		//General slideshow variables
		var inAnimation = false; //Prevents animations from stacking
		var isPaused = false; //Tracks paused on/off
		var image_path = options.image_path; //Default image path for navigation control buttons
		//Determine starting slide (random or defined)
		if (options.start_slide)
		{
			var currentSlide = options.start_slide - 1; //Default to defined start slide
		}
		else
		{
			var currentSlide = Math.floor(Math.random() * options.slides.length); //Generate random slide number
		}

		//If links should open in new window
		var linkTarget = options.new_window ? ' target="_blank"' : '';

		//Set slideshow quality (Supported only in FF and IE, no Webkit)
		if (options.performance == 3)
		{
			element.addClass('speed'); //Faster transitions
		}
		else if ((options.performance == 1) || (options.performance == 2))
		{
			element.addClass('quality'); //Higher image quality
		}

		//Shuffle slide order if needed		
		if (options.random)
		{
			arr = options.slides;
			for (var j, x, i = arr.length; i; j = parseInt(Math.random() * i), x = arr[--i], arr[i] = arr[j], arr[j] = x); //Fisher-Yates shuffle algorithm (jsfromhell.com/array/shuffle)
			options.slides = arr;
		}

		/***Load initial set of images***/

		if (options.slides.length > 1)
		{
			//Set previous image
			currentSlide - 1 < 0 ? loadPrev = options.slides.length - 1 : loadPrev = currentSlide - 1; //If slide is 1, load last slide as previous
			var imageLink = (options.slides[loadPrev].url) ? "href='" + options.slides[loadPrev].url + "'" : "";
			$("<img/>").attr("src", options.slides[loadPrev].image).appendTo(element).wrap('<a ' + imageLink + linkTarget + '></a>');
		}

		//Set current image
		imageLink = (options.slides[currentSlide].url) ? "href='" + options.slides[currentSlide].url + "'" : "";
		$("<img/>").attr("src", options.slides[currentSlide].image).appendTo(element).wrap('<a class="activeslide" ' + imageLink + linkTarget + '></a>');

		if (options.slides.length > 1)
		{
			//Set next image
			currentSlide == options.slides.length - 1 ? loadNext = 0 : loadNext = currentSlide + 1; //If slide is last, load first slide as next
			imageLink = (options.slides[loadNext].url) ? "href='" + options.slides[loadNext].url + "'" : "";
			$("<img/>").attr("src", options.slides[loadNext].image).appendTo(element).wrap('<a ' + imageLink + linkTarget + '></a>');
		} /***End load initial images***/

		element.hide(); //Hide image to be faded in
		$('#controls-wrapper').hide(); //Hide controls to be displayed
		//Account for loading in IE
		$(document).ready(function ()
		{
			resizenow();
		});

		$(window).load(function ()
		{

			$('#supersized-loader').hide(); //Hide loading animation
			element.fadeIn('fast'); //Fade in background
			$('#controls-wrapper').show(); //Display controls
			//Display thumbnails
			if (options.thumbnail_navigation)
			{

				//Load previous thumbnail
				currentSlide - 1 < 0 ? prevThumb = options.slides.length - 1 : prevThumb = currentSlide - 1;
				$('#prevthumb').show().html($("<img/>").attr("src", options.slides[prevThumb].image));

				//Load next thumbnail
				currentSlide == options.slides.length - 1 ? nextThumb = 0 : nextThumb = currentSlide + 1;
				$('#nextthumb').show().html($("<img/>").attr("src", options.slides[nextThumb].image));

			}

			resizenow(); //Resize background image
			if (options.slide_captions) $('#slidecaption').html(options.slides[currentSlide].title); //Pull caption from array
			if (!(options.navigation)) $('#navigation').hide(); //Display navigation
			//Start slideshow if enabled
			if (options.slideshow && options.slides.length > 1)
			{

				if (options.slide_counter)
				{ //Initiate slide counter if active
					$('#slidecounter .slidenumber').html(currentSlide + 1); //Pull initial slide number from options		
					$('#slidecounter .totalslides').html(options.slides.length); //Pull total from length of array
				}

				slideshow_interval = setInterval(nextslide, options.slide_interval); //Initiate slide interval
				//Prevent slideshow if autoplay disabled
				if (!(options.autoplay))
				{

					clearInterval(slideshow_interval); //Stop slideshow
					isPaused = true; //Mark as paused
					if ($(pauseplay).attr('src')) $(pauseplay).attr("src", image_path + "play_dull.png"); //If pause play button is image, swap src
				}

				//Thumbnail Navigation
				if (options.thumbnail_navigation)
				{

					//Next thumbnail clicked
					$('#nextthumb').click(function ()
					{

						if (inAnimation) return false; //Abort if currently animating
						clearInterval(slideshow_interval); //Stop slideshow
						nextslide(element, options); //Go to next slide
						if (!(isPaused)) slideshow_interval = setInterval(nextslide, options.slide_interval); //If not paused, resume slideshow
						return false;

					});

					//Previous thumbnail clicked
					$('#prevthumb').click(function ()
					{

						if (inAnimation) return false; //Abort if currently animating
						clearInterval(slideshow_interval); //Stop slideshow
						prevslide(element, options); //Go to previous slide
						if (!(isPaused)) slideshow_interval = setInterval(nextslide, options.slide_interval); //If not paused, resume slideshow
						return false;

					});

				}

				//Navigation controls
				if (options.navigation)
				{

					$('#navigation a').click(function ()
					{
						$(this).blur();
						return false;
					});

					//Next button clicked
					$('#nextslide').click(function ()
					{

						if (inAnimation) return false; //Abort if currently animating
						clearInterval(slideshow_interval); //Stop slideshow
						nextslide(); //Go to next slide
						if (!(isPaused)) slideshow_interval = setInterval(nextslide, options.slide_interval); //If not paused, resume slideshow
						return false;

					});

					//If next slide button is image
					if ($('#nextslide').attr('src'))
					{

						$('#nextslide').mousedown(function ()
						{
							$(this).attr("src", image_path + "forward.png");
						});
						$('#nextslide').mouseup(function ()
						{
							$(this).attr("src", image_path + "forward_dull.png");
						});
						$('#nextslide').mouseout(function ()
						{
							$(this).attr("src", image_path + "forward_dull.png");
						});

					}

					//Previous button clicked
					$('#prevslide').click(function ()
					{

						if (inAnimation) return false; //Abort if currently animating
						clearInterval(slideshow_interval); //Stop slideshow
						prevslide(); //Go to previous slide
						if (!(isPaused)) slideshow_interval = setInterval(nextslide, options.slide_interval); //If not paused, resume slideshow
						return false;

					});

					//If previous slide button is image
					if ($('#prevslide').attr('src'))
					{

						$('#prevslide').mousedown(function ()
						{
							$(this).attr("src", image_path + "back.png");
						});
						$('#prevslide').mouseup(function ()
						{
							$(this).attr("src", image_path + "back_dull.png");
						});
						$('#prevslide').mouseout(function ()
						{
							$(this).attr("src", image_path + "back_dull.png");
						});

					}

					//Pause/play element clicked
					$(pauseplay).click(function ()
					{

						if (inAnimation) return false; //Abort if currently animating
						if (isPaused)
						{

							if ($(pauseplay).attr('src')) $(pauseplay).attr("src", image_path + "pause_dull.png"); //If image, swap to pause
							//Resume slideshow
							isPaused = false;
							slideshow_interval = setInterval(nextslide, options.slide_interval);

						}
						else
						{

							if ($(pauseplay).attr('src')) $(pauseplay).attr("src", image_path + "play_dull.png"); //If image, swap to play
							//Stop slideshow
							clearInterval(slideshow_interval);
							isPaused = true;

						}

						return false;

					});

				} //End navigation controls
			} //End slideshow options
		}); //End window load
		//Keyboard Navigation
		if (options.keyboard_nav)
		{

			$(document.documentElement).keydown(function (event)
			{

				if ((event.keyCode == 37) || (event.keyCode == 40))
				{ //Left Arrow or Down Arrow
					if ($('#prevslide').attr('src')) $('#prevslide').attr("src", image_path + "back.png"); //If image, change back button to active
				}
				else if ((event.keyCode == 39) || (event.keyCode == 38))
				{ //Right Arrow or Up Arrow
					if ($('#nextslide').attr('src')) $('#nextslide').attr("src", image_path + "forward.png"); //If image, change next button to active
				}

			});

			$(document.documentElement).keyup(function (event)
			{

				clearInterval(slideshow_interval); //Stop slideshow, prevent buildup
				if ((event.keyCode == 37) || (event.keyCode == 40))
				{ //Left Arrow or Down Arrow
					if ($('#prevslide').attr('src')) $('#prevslide').attr("src", image_path + "back_dull.png"); //If image, change back button to normal
					if (inAnimation) return false; //Abort if currently animating
					clearInterval(slideshow_interval); //Stop slideshow
					prevslide(); //Go to previous slide
					if (!(isPaused)) slideshow_interval = setInterval(nextslide, options.slide_interval); //If not paused, resume slideshow
					return false;

				}
				else if ((event.keyCode == 39) || (event.keyCode == 38))
				{ //Right Arrow or Up Arrow
					if ($('#nextslide').attr('src')) $('#nextslide').attr("src", image_path + "forward_dull.png"); //If image, change next button to normal
					if (inAnimation) return false; //Abort if currently animating
					clearInterval(slideshow_interval); //Stop slideshow
					nextslide(); //Go to next slide
					if (!(isPaused)) slideshow_interval = setInterval(nextslide, options.slide_interval); //If not paused, resume slideshow
					return false;

				}
				else if (event.keyCode == 32)
				{ //Spacebar
					if (inAnimation) return false; //Abort if currently animating
					if (isPaused)
					{
						if ($(pauseplay).attr('src')) $(pauseplay).attr("src", image_path + "pause_dull.png"); //If image, swap to pause
						isPaused = false; //Resume slideshow
						slideshow_interval = setInterval(nextslide, options.slide_interval);
					}
					else
					{
						if ($(pauseplay).attr('src')) $(pauseplay).attr("src", image_path + "play_dull.png"); //If image, swap to play
						isPaused = true; //Mark as paused
					}

					return false;
				}

			});
		}


		//Pause when hover on image
		if (options.slideshow && options.pause_hover)
		{
			$(element).hover(function ()
			{

				if (inAnimation) return false; //Abort if currently animating
				if (!(isPaused) && options.navigation)
				{
					if ($(pauseplay).attr('src')) $(pauseplay).attr("src", image_path + "pause.png"); //If image, swap to pause
					clearInterval(slideshow_interval);
				}

			}, function ()
			{

				if (!(isPaused) && options.navigation)
				{
					if ($(pauseplay).attr('src')) $(pauseplay).attr("src", image_path + "pause_dull.png"); //If image, swap to active
					slideshow_interval = setInterval(nextslide, options.slide_interval);
				}

			});
		}


		//Adjust image when browser is resized
		$(window).resize(function ()
		{
			resizenow();
		});


		//Adjust image size

		function resizenow()
		{
			return element.each(function ()
			{

				var t = $('img', element);

				//Resize each image seperately
				$(t).each(function ()
				{

					var ratio = ($(this).height() / $(this).width()).toFixed(2); //Define image ratio
					thisSlide = $(this);

					//Gather browser size
					var browserwidth = $(window).width();
					var browserheight = $(window).height();
					var offset;

					/**Resize image to proper ratio**/

					if ((browserheight <= options.min_height) && (browserwidth <= options.min_width))
					{ //If window smaller than minimum width and height
						if ((browserheight / browserwidth) > ratio)
						{
							options.fit_landscape && ratio <= 1 ? resizeWidth(true) : resizeHeight(true); //If landscapes are set to fit
						}
						else
						{
							options.fit_portrait && ratio > 1 ? resizeHeight(true) : resizeWidth(true); //If portraits are set to fit
						}

					}
					else if (browserwidth <= options.min_width)
					{ //If window only smaller than minimum width
						if ((browserheight / browserwidth) > ratio)
						{
							options.fit_landscape && ratio <= 1 ? resizeWidth(true) : resizeHeight(); //If landscapes are set to fit
						}
						else
						{
							options.fit_portrait && ratio > 1 ? resizeHeight() : resizeWidth(true); //If portraits are set to fit
						}

					}
					else if (browserheight <= options.min_height)
					{ //If window only smaller than minimum height
						if ((browserheight / browserwidth) > ratio)
						{
							options.fit_landscape && ratio <= 1 ? resizeWidth() : resizeHeight(true); //If landscapes are set to fit
						}
						else
						{
							options.fit_portrait && ratio > 1 ? resizeHeight(true) : resizeWidth(); //If portraits are set to fit
						}

					}
					else
					{ //If larger than minimums
						if ((browserheight / browserwidth) > ratio)
						{
							options.fit_landscape && ratio <= 1 ? resizeWidth() : resizeHeight(); //If landscapes are set to fit
						}
						else
						{
							options.fit_portrait && ratio > 1 ? resizeHeight() : resizeWidth(); //If portraits are set to fit
						}

					}

					/**End Image Resize**/


					/**Resize Functions**/

					function resizeWidth(minimum)
					{
						if (minimum)
						{ //If minimum height needs to be considered
							if (thisSlide.width() < browserwidth || thisSlide.width() < options.min_width)
							{
								if (thisSlide.width() * ratio >= options.min_height)
								{
									thisSlide.width(options.min_width);
									thisSlide.height(thisSlide.width() * ratio);
								}
								else
								{
									resizeHeight();
								}
							}
						}
						else
						{
							if (options.min_height >= browserheight && !options.fit_landscape)
							{ //If minimum height needs to be considered
								if (browserwidth * ratio >= options.min_height || (browserwidth * ratio >= options.min_height && ratio <= 1))
								{ //If resizing would push below minimum height or image is a landscape
									thisSlide.width(browserwidth);
									thisSlide.height(browserwidth * ratio);
								}
								else if (ratio > 1)
								{ //Else the image is portrait
									thisSlide.height(options.min_height);
									thisSlide.width(thisSlide.height() / ratio);
								}
								else if (thisSlide.width() < browserwidth)
								{
									thisSlide.width(browserwidth);
									thisSlide.height(thisSlide.width() * ratio);
								}
							}
							else
							{ //Otherwise, resize as normal
								thisSlide.width(browserwidth);
								thisSlide.height(browserwidth * ratio);
							}
						}
					};

					function resizeHeight(minimum)
					{
						if (minimum)
						{ //If minimum height needs to be considered
							if (thisSlide.height() < browserheight)
							{
								if (thisSlide.height() / ratio >= options.min_width)
								{
									thisSlide.height(options.min_height);
									thisSlide.width(thisSlide.height() / ratio);
								}
								else
								{
									resizeWidth(true);
								}
							}
						}
						else
						{ //Otherwise, resized as normal
							if (options.min_width >= browserwidth)
							{ //If minimum width needs to be considered
								if (browserheight / ratio >= options.min_width || ratio > 1)
								{ //If resizing would push below minimum width or image is a portrait
									thisSlide.height(browserheight);
									thisSlide.width(browserheight / ratio);
								}
								else if (ratio <= 1)
								{ //Else the image is landscape
									thisSlide.width(options.min_width);
									thisSlide.height(thisSlide.width() * ratio);
								}
							}
							else
							{ //Otherwise, resize as normal
								thisSlide.height(browserheight);
								thisSlide.width(browserheight / ratio);
							}
						}
					};

					/**End Resize Functions**/


					//Horizontally Center
					if (options.horizontal_center)
					{
						$(this).css('left', (browserwidth - $(this).width()) / 2);
					}

					//Vertically Center
					if (options.vertical_center)
					{
						$(this).css('top', (browserheight - $(this).height()) / 2);
					}

				});

				//Basic image drag and right click protection
				if (options.image_protect)
				{

					$('img', element).bind("contextmenu", function ()
					{
						return false;
					});
					$('img', element).bind("mousedown", function ()
					{
						return false;
					});

				}

				return false;

			});
		};


		//Next slide

		function nextslide()
		{

			if (inAnimation) return false; //Abort if currently animating
			else inAnimation = true; //Otherwise set animation marker
			var slides = options.slides; //Pull in slides array
			var currentslide = element.find('.activeslide'); //Find active slide
			currentslide.removeClass('activeslide'); //Remove active class
			if (currentslide.length == 0) currentslide = element.find('a:last'); //If end of set, note this is last slide
			var nextslide = currentslide.next().length ? currentslide.next() : element.find('a:first');
			var prevslide = nextslide.prev().length ? nextslide.prev() : element.find('a:last');

			//Update previous slide
			$('.prevslide').removeClass('prevslide');
			prevslide.addClass('prevslide');

			//Get the slide number of new slide
			currentSlide + 1 == slides.length ? currentSlide = 0 : currentSlide++;

			//If hybrid mode is on drop quality for transition
			if (options.performance == 1) element.removeClass('quality').addClass('speed');

			/**** Image Loading ****/

			//Load next image
			loadSlide = false;

			currentSlide == slides.length - 1 ? loadSlide = 0 : loadSlide = currentSlide + 1; //Determine next slide
			imageLink = (options.slides[loadSlide].url) ? "href='" + options.slides[loadSlide].url + "'" : ""; //If link exists, build it
			$("<img/>").attr("src", options.slides[loadSlide].image).appendTo(element).wrap("<a " + imageLink + linkTarget + "></a>"); //Append new image
			//Update thumbnails (if enabled)
			if (options.thumbnail_navigation == 1)
			{

				//Load previous thumbnail
				currentSlide - 1 < 0 ? prevThumb = slides.length - 1 : prevThumb = currentSlide - 1;
				$('#prevthumb').html($("<img/>").attr("src", options.slides[prevThumb].image));

				//Load next thumbnail
				nextThumb = loadSlide;
				$('#nextthumb').html($("<img/>").attr("src", options.slides[nextThumb].image));

			}

			currentslide.prev().remove(); //Remove Old Image
			/**** End Image Loading ****/


			//Update slide number
			if (options.slide_counter)
			{
				$('#slidecounter .slidenumber').html(currentSlide + 1);
			}

			// Stop slideshow if last image is reached
			if (currentSlide == options.slides.length - 1)
			{
				clearInterval(slideshow_interval);
				isPaused = true;
			}

			//Update captions
			if (options.slide_captions)
			{
				(options.slides[currentSlide].title) ? $('#slidecaption').html(options.slides[currentSlide].title) : $('#slidecaption').html('');
			}

			nextslide.hide().addClass('activeslide'); //Update active slide
			switch (options.transition)
			{

			case 0:
				//No transition
				nextslide.show();
				inAnimation = false;
				break;
			case 1:
				//Fade
				nextslide.fadeTo(options.transition_speed, 1, function ()
				{
					afterAnimation();
				});
				break;
			case 2:
				//Slide Top
				nextslide.animate(
				{
					top: -$(window).height()
				}, 0).show().animate(
				{
					top: 0
				}, options.transition_speed, function ()
				{
					afterAnimation();
				});
				break;
			case 3:
				//Slide Right
				nextslide.animate(
				{
					left: $(window).width()
				}, 0).show().animate(
				{
					left: 0
				}, options.transition_speed, function ()
				{
					afterAnimation();
				});
				break;
			case 4:
				//Slide Bottom
				nextslide.animate(
				{
					top: $(window).height()
				}, 0).show().animate(
				{
					top: 0
				}, options.transition_speed, function ()
				{
					afterAnimation();
				});
				break;
			case 5:
				//Slide Left
				nextslide.animate(
				{
					left: -$(window).width()
				}, 0).show().animate(
				{
					left: 0
				}, options.transition_speed, function ()
				{
					afterAnimation();
				});
				break;
			case 6:
				//Carousel Right
				nextslide.animate(
				{
					left: $(window).width()
				}, 0).show().animate(
				{
					left: 0
				}, options.transition_speed, function ()
				{
					afterAnimation();
				});
				currentslide.animate(
				{
					left: -$(window).width()
				}, options.transition_speed);
				break;
			case 7:
				//Carousel Left
				nextslide.animate(
				{
					left: -$(window).width()
				}, 0).show().animate(
				{
					left: 0
				}, options.transition_speed, function ()
				{
					afterAnimation();
				});
				currentslide.animate(
				{
					left: $(window).width()
				}, options.transition_speed);
				break;
			};

		}


		//Previous Slide

		function prevslide()
		{

			if (inAnimation) return false; //Abort if currently animating
			else inAnimation = true; //Otherwise set animation marker
			var slides = options.slides; //Pull in slides array
			var currentslide = element.find('.activeslide'); //Find active slide
			currentslide.removeClass('activeslide'); //Remove active class
			if (currentslide.length == 0) currentslide = $(element).find('a:first'); //If end of set, note this is first slide
			var nextslide = currentslide.prev().length ? currentslide.prev() : $(element).find('a:last');
			var prevslide = nextslide.next().length ? nextslide.next() : $(element).find('a:first');

			//Update previous slide
			$('.prevslide').removeClass('prevslide');
			prevslide.addClass('prevslide');

			//Get current slide number
			currentSlide == 0 ? currentSlide = slides.length - 1 : currentSlide--;

			//If hybrid mode is on drop quality for transition
			if (options.performance == 1) element.removeClass('quality').addClass('speed');

			/**** Image Loading ****/

			//Load next image
			loadSlide = false;
			currentSlide - 1 < 0 ? loadSlide = slides.length - 1 : loadSlide = currentSlide - 1; //Determine next slide
			imageLink = (options.slides[loadSlide].url) ? "href='" + options.slides[loadSlide].url + "'" : ""; //If link exists, build it
			$("<img/>").attr("src", options.slides[loadSlide].image).prependTo(element).wrap("<a " + imageLink + linkTarget + "></a>"); //Append new image
			//Update thumbnails (if enabled)
			if (options.thumbnail_navigation == 1)
			{

				//Load previous thumbnail
				prevThumb = loadSlide;
				$('#prevthumb').html($("<img/>").attr("src", options.slides[prevThumb].image));

				//Load next thumbnail
				currentSlide == slides.length - 1 ? nextThumb = 0 : nextThumb = currentSlide + 1;
				$('#nextthumb').html($("<img/>").attr("src", options.slides[nextThumb].image));
			}

			currentslide.next().remove(); //Remove Old Image
			/**** End Image Loading ****/


			//Update slide counter
			if (options.slide_counter)
			{
				$('#slidecounter .slidenumber').html(currentSlide + 1);
			}

			//Update captions
			if (options.slide_captions)
			{
				(options.slides[currentSlide].title) ? $('#slidecaption').html(options.slides[currentSlide].title) : $('#slidecaption').html('');
			}

			nextslide.hide().addClass('activeslide'); //Update active slide
			switch (options.transition)
			{

			case 0:
				//No transition
				nextslide.show();
				inAnimation = false;
				break;
			case 1:
				//Fade
				nextslide.fadeTo(options.transition_speed, 1, function ()
				{
					afterAnimation();
				});
				break;
			case 2:
				//Slide Top (reverse)
				nextslide.animate(
				{
					top: $(window).height()
				}, 0).show().animate(
				{
					top: 0
				}, options.transition_speed, function ()
				{
					afterAnimation();
				});
				break;
			case 3:
				//Slide Right (reverse)
				nextslide.animate(
				{
					left: -$(window).width()
				}, 0).show().animate(
				{
					left: 0
				}, options.transition_speed, function ()
				{
					afterAnimation();
				});
				break;
			case 4:
				//Slide Bottom (reverse)
				nextslide.animate(
				{
					top: -$(window).height()
				}, 0).show().animate(
				{
					top: 0
				}, options.transition_speed, function ()
				{
					afterAnimation();
				});
				break;
			case 5:
				//Slide Left (reverse)
				nextslide.animate(
				{
					left: $(window).width()
				}, 0).show().animate(
				{
					left: 0
				}, options.transition_speed, function ()
				{
					afterAnimation();
				});
				break;
			case 6:
				//Carousel Right (reverse)
				nextslide.animate(
				{
					left: -$(window).width()
				}, 0).show().animate(
				{
					left: 0
				}, options.transition_speed, function ()
				{
					afterAnimation();
				});
				currentslide.animate(
				{
					left: $(window).width()
				}, options.transition_speed);
				break;
			case 7:
				//Carousel Left (reverse)
				nextslide.animate(
				{
					left: $(window).width()
				}, 0).show().animate(
				{
					left: 0
				}, options.transition_speed, function ()
				{
					afterAnimation();
				});
				currentslide.animate(
				{
					left: -$(window).width()
				}, options.transition_speed);
				break;
			};

		}

		//After slide animation

		function afterAnimation()
		{

			inAnimation = false;

			//If hybrid mode is on swap back to higher image quality
			if (options.performance == 1)
			{
				element.removeClass('speed').addClass('quality');
			}

			resizenow();

		}

	};

})(jQuery);
