/*

	Supersized - Fullscreen Slideshow jQuery Plugin
	Version : 3.2.6
	Site	: www.buildinternet.com/project/supersized

	Theme 	: stanstudio 1.0
	Author	: Stuart McCoy
	Company : Monderer Design (monderer.com)
	License : MIT License / GPL License

*/

(function($){

	/* Theme Specific Options
	------------------------------*/
	$.supersized.themeOptions = {

		progress_bar		:	1,		// Timer for each slide [ shows progress bar when slideshow is playing ]
		mouse_scrub			:	0,		// Thumbnails move with mouse [ doesn't work well, recommended to not change this value ]
		slidelinks			:	0,		// Turn off slide links [ permantly disabled, do not change this value ]
		fit_always			:	0,		// Scale photos to fit the screen [ switch to 1 to fit images to screen ]
		autoplay			:	0,		// Do not autolplay slideshows
		slide_interval		:	5000,	// Interval between slide transitions [ time is in milliseconds ]
		transition			:	'fade',	// transition between images [ options are: 'fade','slideRight','carouselRight' ]
		transition_speed	:	125,	// Speed at which the transition occurs [ time is in milliseconds ]
		image_protect		:	1		// Protect images from being dragged to the dsktop and disables right-click menu
	};

	/* Theme Specific Variables
	------------------------------*/
	$.supersized.themeVars = {

		// Internal Variables
		progress_delay		:	true,						// Delay after resize before resuming slideshow
		thumb_page			:	true,						// Thumbnail page
		thumb_interval		:	false,						// Thumbnail interval
		image_path			:	'/library/theme/images/',	// Default image path

		// General Elements
		play_button			:	'#pauseplay',				// Play/Pause button
		next_slide			:	'#nextslide',				// Next slide button
		prev_slide			:	'#prevslide',				// Prev slide button
		next_thumb			:	'#nextthumb',				// Next slide thumb button
		prev_thumb			:	'#prevthumb',				// Prev slide thumb button

		slide_caption		:	'#slide_caption',			// Slide caption
		slide_current		:	'.slidenumber',				// Current slide number
		slide_total			:	'.totalslides',				// Total Slides
		slide_list			:	'#slide-list',				// Slide jump list

		thumb_tray			:	'#thumb-tray',				// Thumbnail tray
		thumb_list			:	'#thumb-list',				// Thumbnail list
		thumb_forward		:	'#thumb-forward'		,	// Cycles forward through thumbnail list
		thumb_back			:	'#thumb-back',				// Cycles backwards through thumbnail list
		tray_arrow			:	'#tray-arrow',				// Thumbnail tray button arrow
		tray_button			:	'#tray-button',				// Thumbnail tray button

		progress_bar		:	'#progress-bar'				// Progress bar
	};


	/* Theme Script
	------------------------------*/
	theme = {


		/* Initial Placement
		------------------------------*/
		_init : function(){

			// Center Slide Links
			if (api.options.slide_links) $(vars.slide_list).css('margin-left', -$(vars.slide_list).width()/2);

			// Start progressbar if autoplay enabled
			if (api.options.autoplay){
				if (api.options.progress_bar) theme.progressBar();
			}else{
				if ($(vars.play_button).attr('src')) $(vars.play_button).attr("src", vars.image_path + "play.png");	// If pause play button is image, swap src
				if (api.options.progress_bar) $(vars.progress_bar).stop().animate({left : -$(window).width()}, 0 );	//  Place progress bar
			}


			/* Thumbnail Tray
			------------------------------*/
			// Hide tray off screen
			$(vars.thumb_tray).animate({bottom : -$(vars.thumb_tray).height()}, 0 );
			
			// Thumbnail Tray Toggle
			$(vars.tray_button).toggle(function(){
				$(vars.thumb_tray).stop().animate({bottom : 64, avoidTransforms : true}, 300 );
				if ($(vars.tray_arrow).attr('src')) $(vars.tray_arrow).attr("src", vars.image_path + "button_tray-close.png");
				return false;
			}, function() {
				$(vars.thumb_tray).stop().animate({bottom : -$(vars.thumb_tray).outerHeight(true), avoidTransforms : true}, 300 );
				if ($(vars.tray_arrow).attr('src')) $(vars.tray_arrow).attr("src", vars.image_path + "button_tray-open.png");
				return false;
			});

			// Make thumb tray proper size
			$(vars.thumb_list).width($('> li', vars.thumb_list).length * $('> li', vars.thumb_list).outerWidth(true));	//Adjust to true width of thumb markers
			
			// Display total slides
			if ($(vars.slide_total).length){
				$(vars.slide_total).html(api.options.slides.length);
			}


			/* Thumbnail Tray Navigation
			------------------------------*/	
			if (api.options.thumb_links){
				//Hide thumb arrows if not needed
				if ($(vars.thumb_list).width() <= $(vars.thumb_tray).width()){
					$(vars.thumb_back +','+vars.thumb_forward).fadeOut(0);
				}

			// Thumb Intervals
			vars.thumb_interval = Math.floor($(vars.thumb_tray).width() / $('> li', vars.thumb_list).outerWidth(true)) * $('> li', vars.thumb_list).outerWidth(true);
			vars.thumb_page = 0;
			
			// Cycle thumbs forward
			$(vars.thumb_forward).click(function(){
				if (vars.thumb_page - vars.thumb_interval <= -$(vars.thumb_list).width()){
					vars.thumb_page = 0;
					$(vars.thumb_list).stop().animate({'left': vars.thumb_page}, {duration:250, easing:'easeOutExpo'});
				}else{
					vars.thumb_page = vars.thumb_page - vars.thumb_interval;
					$(vars.thumb_list).stop().animate({'left': vars.thumb_page}, {duration:250, easing:'easeOutExpo'});
				}
			});

			// Cycle thumbs backwards
			$(vars.thumb_back).click(function(){
				if (vars.thumb_page + vars.thumb_interval > 0){
					vars.thumb_page = Math.floor($(vars.thumb_list).width() / vars.thumb_interval) * -vars.thumb_interval;
					if ($(vars.thumb_list).width() <= -vars.thumb_page) vars.thumb_page = vars.thumb_page + vars.thumb_interval;
					$(vars.thumb_list).stop().animate({'left': vars.thumb_page}, {duration:250, easing:'easeOutExpo'});
					}else{
						vars.thumb_page = vars.thumb_page + vars.thumb_interval;
						$(vars.thumb_list).stop().animate({'left': vars.thumb_page}, {duration:250, easing:'easeOutExpo'});
					}
				});
			}


			/* Navigation Items
			------------------------------*/
			$(vars.next_slide).click(function() {
				api.nextSlide();
			});

			$(vars.prev_slide).click(function() {
				api.prevSlide();
			});

			// Full Opacity on Hover
			if(jQuery.support.opacity){
				$(vars.prev_slide +','+vars.next_slide).mouseover(function() {
						$(this).stop().animate({opacity:0.8},100);
					}).mouseout(function(){
						$(this).stop().animate({opacity:0.6},100);
					});
				}

			if (api.options.thumbnail_navigation){
				// Next thumbnail clicked
				$(vars.next_thumb).click(function() {
				api.nextSlide();
				});
				// Previous thumbnail clicked
				$(vars.prev_thumb).click(function() {
				api.prevSlide();
				});
			}

			$(vars.play_button).click(function() {
				api.playToggle();
			});


			/* Thumbnail Mouse Scrub
			------------------------------*/
		if (api.options.mouse_scrub){
				$(vars.thumb_tray).mousemove(function(e) {
					var containerWidth = $(vars.thumb_tray).width(),
						listWidth = $(vars.thumb_list).width();
					if (listWidth > containerWidth){
						var mousePos = 1,
							diff = e.pageX - mousePos;
						if (diff > 10 || diff < -10) {
							mousePos = e.pageX; 
							newX = (containerWidth - listWidth) * (e.pageX/containerWidth);
							diff = parseInt(Math.abs(parseInt($(vars.thumb_list).css('left'))-newX )).toFixed(0);
							$(vars.thumb_list).stop().animate({'left':newX}, {duration:diff*3, easing:'easeOutExpo'});
						}
					}
				});
			}


			/* Window Resize
			------------------------------*/
			$(window).resize(function(){

				// Delay progress bar on resize
				if (api.options.progress_bar && !vars.in_animation){
					if (vars.slideshow_interval) clearInterval(vars.slideshow_interval);
					if (api.options.slides.length - 1 > 0) clearInterval(vars.slideshow_interval);

					$(vars.progress_bar).stop().animate({left : -$(window).width()}, 0 );

					if (!vars.progressDelay && api.options.slideshow){
						// Delay slideshow from resuming so Chrome can refocus images
						vars.progressDelay = setTimeout(function() {
								if (!vars.is_paused){
									theme.progressBar();
									vars.slideshow_interval = setInterval(api.nextSlide, api.options.slide_interval);
								}
								vars.progressDelay = false;
						}, 1000);
					}
				}

				// Thumb Links
				if (api.options.thumb_links && vars.thumb_tray.length){
					// Update Thumb Interval & Page
					vars.thumb_page = 0;	
					vars.thumb_interval = Math.floor($(vars.thumb_tray).width() / $('> li', vars.thumb_list).outerWidth(true)) * $('> li', vars.thumb_list).outerWidth(true);
					
					// Adjust thumbnail markers
					if ($(vars.thumb_list).width() > $(vars.thumb_tray).width()){
						$(vars.thumb_back +','+vars.thumb_forward).fadeIn('fast');
						$(vars.thumb_list).stop().animate({'left':0}, 200);
					}else{
						$(vars.thumb_back +','+vars.thumb_forward).fadeOut('fast');
					}
				}
			});
		},


		/* Go To Slide
		------------------------------*/
		goTo : function(){
			if (api.options.progress_bar && !vars.is_paused){
				$(vars.progress_bar).stop().animate({left : -$(window).width()}, 0 );
				theme.progressBar();
			}
		},

		/* Play & Pause Toggle
		------------------------------*/
		playToggle : function(state){
			
			if (state =='play'){
				// If image, swap to pause
				if ($(vars.play_button).attr('src')) $(vars.play_button).attr("src", vars.image_path + "pause.png");
				if (api.options.progress_bar && !vars.is_paused) theme.progressBar();
			}else if (state == 'pause'){
				// If image, swap to play
				if ($(vars.play_button).attr('src')) $(vars.play_button).attr("src", vars.image_path + "play.png");
			if (api.options.progress_bar && vars.is_paused)$(vars.progress_bar).stop().animate({left : -$(window).width()}, 0 );
			}
			
		},


		/* Before Slide Transition
		------------------------------*/
		beforeAnimation : function(direction){
			if (api.options.progress_bar && !vars.is_paused) $(vars.progress_bar).stop().animate({left : -$(window).width()}, 0 );
			
			/* Update Fields
			------------------------------*/
			// Update slide caption
			if ($(vars.slide_caption).length){
				(api.getField('title')) ? $(vars.slide_caption).html(api.getField('title')) : $(vars.slide_caption).html('');
			}
			// Update slide number
			if (vars.slide_current.length){
				$(vars.slide_current).html(vars.current_slide + 1);
			}


			// Highlight current thumbnail and adjust row position
			if (api.options.thumb_links){
			
				$('.current-thumb').removeClass('current-thumb');
				$('li', vars.thumb_list).eq(vars.current_slide).addClass('current-thumb');
				
				// If thumb out of view
				if ($(vars.thumb_list).width() > $(vars.thumb_tray).width()){
					// If next slide direction
					if (direction == 'next'){
						if (vars.current_slide == 0){
							vars.thumb_page = 0;
							$(vars.thumb_list).stop().animate({'left': vars.thumb_page}, {duration:500, easing:'easeOutExpo'});
						} else if ($('.current-thumb').offset().left - $(vars.thumb_tray).offset().left >= vars.thumb_interval){
						vars.thumb_page = vars.thumb_page - vars.thumb_interval;
						$(vars.thumb_list).stop().animate({'left': vars.thumb_page}, {duration:500, easing:'easeOutExpo'});
						}
					// If previous slide direction
					}else if(direction == 'prev'){
						if (vars.current_slide == api.options.slides.length - 1){
							vars.thumb_page = Math.floor($(vars.thumb_list).width() / vars.thumb_interval) * -vars.thumb_interval;
							if ($(vars.thumb_list).width() <= -vars.thumb_page) vars.thumb_page = vars.thumb_page + vars.thumb_interval;
							$(vars.thumb_list).stop().animate({'left': vars.thumb_page}, {duration:500, easing:'easeOutExpo'});
						} else if ($('.current-thumb').offset().left - $(vars.thumb_tray).offset().left < 0){
							if (vars.thumb_page + vars.thumb_interval > 0) return false;
						vars.thumb_page = vars.thumb_page + vars.thumb_interval;
						$(vars.thumb_list).stop().animate({'left': vars.thumb_page}, {duration:500, easing:'easeOutExpo'});
						}
					}
				}
				
				
			}
			
		},


		/* After Slide Transition
		------------------------------*/
		afterAnimation : function(){
			if (api.options.progress_bar && !vars.is_paused) theme.progressBar();	//  Start progress bar
		},


		/* Progress Bar
		------------------------------*/
		progressBar : function(){
		$(vars.progress_bar).stop().animate({left : -$(window).width()}, 0 ).animate({ left:0 }, api.options.slide_interval);
		}
	};

})(jQuery);
