/*
Supersized - Fullscreen Slideshow jQuery Plugin
By Sam Dunn (www.buildinternet.com // www.onemightyroar.com)
Version: supersized.2.0.js // Relase Date: 5/7/09
Website: www.buildinternet.com/project/supersized
Thanks to Aen for preloading, fade effect, & vertical centering

Modified by: Wes Moberly
Last Updated on: 2010-12-14
*/

var supersize;

(function($){
	var slideshow_interval = null;
	var wrapper;
	var header;
	var footer;
	var slideshowContainer;
	var navArrows;
	var prevSlideButton;
	var nextSlideButton;
	var windowHeightOffset;
	var windowWidthOffset;
	
	//Resize image on ready or resize
	$.fn.supersized = function() {
		var options = $.extend($.fn.supersized.defaults, $.fn.supersized.options);
				
		wrapper = $('#wrapper');
		header = $('#header', wrapper);
		footer = $('#footer', wrapper);
		slideshowContainer = $('#slideshow-container', wrapper);
		supersize = $('#supersize', slideshowContainer);
		slidecounter = $('#slidecounter');
		navArrows = $('a.arrow', slideshowContainer);
		prevSlideButton = $('#arrow-left', slideshowContainer);
		nextSlideButton = $('#arrow-right', slideshowContainer);
		windowHeightOffset = header.height() + footer.height() + 1;
		windowWidthOffset = prevSlideButton.width() + nextSlideButton.width();
		
		$.inAnimation = false;
		firstImageLoaded = false;
		paused = true;
		
		if (supersize.attr('paused') == 'false') {
			paused = false;
		}
		
		if ($('a.activeslide', supersize).length == 0) $('a:first', supersize).addClass('activeslide');
		if (options.slide_captions == 1) $('#slidecaption').html($('a.activeslide', supersize).find('img').attr('title'));
		
		//Slideshow
		if (options.slideshow == 1){
			if (options.slide_counter == 1){ //Initiate slide counter if active
				$('.slidenumber', slidecounter).html(1);
				$('.totalslides', slidecounter).html($("*", supersize).size());
			}
			if (!paused) {
				slideshow_interval = setInterval("nextslide()", options.slide_interval);
			}
			if (options.navigation == 1) {
				//Slide navigation
				nextSlideButton.click(function(event) {
					event.preventDefault();
					nextslide();
				});
				prevSlideButton.click(function(event) {
					event.preventDefault();
					prevslide();
				});
			}
		}
		
		$(window).bind('resize', function(){
			supersize.resizenow(); 
		});
		
		if (sgitin.isMobileDevice) {
			window.addEventListener('orientationchange', function() {
				supersize.resizenow();
			}, false);
		}
		
		$(document).bind('updateSlideshow', function() {
			windowHeightOffset = header.height() + footer.height() + 1;
			supersize.resizenow();
		});
		
		supersize.resizenow();
		
		//Pause when hover on image
		$('a', supersize).hover(function() {
			if (options.slideshow == 1 && options.pause_hover == 1) {
				if(!paused && options.navigation == 1){
					$.pauseplay.find('img').attr("src", "http://sashagitin.com/sasha/robertgrant/images/pause_dull.gif"); 
					clearInterval(slideshow_interval);
				}
			}
			original_title = $(this).find('img').attr("title");
			if($.inAnimation) return false; else $(this).find('img').attr("title","");
		}, function() {
			if (options.slideshow == 1 && options.pause_hover == 1){
				if(!(paused) && options.navigation == 1){
					$.pauseplay.find('img').attr("src", "http://sashagitin.com/sasha/robertgrant/images/pause_dull.gif");
					slideshow_interval = setInterval("nextslide()", options.slide_interval);
				} 
			}
			$(this).find('img').attr("title", original_title);	
	   	});
	};
	
	//Adjust image size
	$.fn.resizenow = function() {
		var self = $(this);
		var imgContainer = $('a.activeslide', self);
		if (!imgContainer.length) imgContainer = $('a:first', self);
		var img = imgContainer.find('img');
		var windowHeight = $(window).height();
		var windowWidth = $(window).width();
		var maxImgHeight = windowHeight - windowHeightOffset;
		var maxImgWidth = windowWidth - windowWidthOffset;
		var imgHeight = 0;
		var imgWidth = 0;
		var delay = 0;
				
		// Without the setTimeout the image width is sometimes
		// read before the image is "ready", which causes the width
		// to be incorrectly reported
		setTimeout(function() {
			if (img.data('loaded')) {
				imgWidth = img.data('width');
				imgHeight = img.data('height');
				imgRatioWide = imgWidth / imgHeight;
				imgRatioTall = imgHeight / imgWidth;
				
				if (imgRatioTall > imgRatioWide) {
					imgHeight = maxImgHeight;
					imgWidth = Math.floor(maxImgHeight / imgRatioTall);
					
					if (imgWidth > maxImgWidth) {						
						imgWidth = maxImgWidth
						imgHeight = Math.floor(maxImgWidth * imgRatioTall);
					}
				} else {
					imgWidth = maxImgWidth;
					imgHeight = Math.floor(maxImgWidth / imgRatioWide);
					
					if (imgHeight > maxImgHeight) {
						imgHeight = maxImgHeight;
						imgWidth = Math.floor(maxImgHeight * imgRatioWide);
					}
				}
				
				imgContainer.css({'width' : imgWidth, 'height' : imgHeight});			
				slideshowContainer.width(imgWidth + windowWidthOffset + 1);
				navArrows.height(imgHeight);
				
				if (!firstImageLoaded) {
					firstImageLoaded = true;
					$('#loading').hide();
					supersize.css({'visibility' : 'visible'}).fadeIn('fast');
					navArrows.fadeIn('fast');
					$('#footer').css('position', 'static');
				}
				
				
				var wrapperHeight = slideshowContainer.height() + windowHeightOffset;
				
				if (windowHeight > wrapperHeight) {
					wrapper.css('margin-top', Math.floor((windowHeight - wrapperHeight) / 2));
				} else {
					wrapper.css('margin-top', '0px');
				}
			} else {
				var loading = $('#loading');
				
				if (window.console) console.log('Image loading');
				imgContainer.hide();
				loading.show();
				
				img.load(function() {
					setTimeout(function() {
						if (window.console) console.log('Image loaded');
						loading.hide();
						imgContainer.fadeIn(750);
						self.resizenow();
					}, 0);
				});
			}
		}, delay);
				
		return false;
	};
		
	$.fn.supersized.defaults = { 
			startwidth: 4,  
			startheight: 3,
			vertical_center: 1,
			slideshow: 1,
			navigation:1,
			transition: 1, //0-None, 1-Fade, 2-slide top, 3-slide right, 4-slide bottom, 5-slide left
			pause_hover: 0,
			slide_counter: 1,
			slide_captions: 1,
			slide_interval: 5000
	};
	
})(jQuery);



	//Slideshow Next Slide
	function nextslide() {
		if ($.inAnimation) return false;
		else $.inAnimation = true;
		var options = $.extend($.fn.supersized.defaults, $.fn.supersized.options);
		var currentslide = $('a.activeslide', supersize);
		
		if (currentslide.length == 0) currentslide = $('a:last', supersize);
			
		var nextslide =  currentslide.next().length ? currentslide.next() : $('a:first', supersize);
		var prevslide =  nextslide.prev().length ? nextslide.prev() : $('a:last', supersize);
		var nextslideImg = nextslide.find('img');
		
		nextslideImg.trigger("show");
		currentslide.removeClass('activeslide');
		
		
		//Display slide counter
		if (options.slide_counter == 1){
			var slidecount = $('.slidenumber', slidecounter).html();
			currentslide.next().length ? slidecount++ : slidecount = 1;
			$('.slidenumber', slidecounter).html(slidecount);
		}
		
		$('a.prevslide', supersize).removeClass('prevslide');
		prevslide.addClass('prevslide');
		
		//Captions require img in <a>
		if (options.slide_captions == 1) $('#slidecaption').html($(nextslide).find('img').attr('title'));
		
		nextslide.hide().addClass('activeslide');
		if (options.transition == 0){
			nextslide.show(); $.inAnimation = false;
		}
		if (options.transition == 1){
			nextslide.fadeIn(750, function(){ $.inAnimation = false; });
		}
		if (options.transition == 2){
			nextslide.show("slide", { direction: "up" }, 'slow', function(){ $.inAnimation = false; });
		}
		if (options.transition == 3){
			nextslide.show("slide", { direction: "right" }, 'slow', function(){ $.inAnimation = false; });
		}
		if (options.transition == 4){
			nextslide.show("slide", { direction: "down" }, 'slow', function(){ $.inAnimation = false; });
		}
		if (options.transition == 5){
			nextslide.show("slide", { direction: "left" }, 'slow', function(){ $.inAnimation = false; });
		}
			
		supersize.resizenow(); //Fix for resize mid-transition	
	}
	
	//Slideshow Previous Slide
	function prevslide() {
		if ($.inAnimation) return false;
		else $.inAnimation = true;
		var options = $.extend($.fn.supersized.defaults, $.fn.supersized.options);
		var currentslide = $('a.activeslide', supersize);

		currentslide.prev().find("img").trigger("show");
		currentslide.removeClass('activeslide');
		
		if (currentslide.length == 0) currentslide = $('a:first', supersize);
			
		var nextslide =  currentslide.prev().length ? currentslide.prev() : $('a:last', supersize);
		var prevslide =  nextslide.next().length ? nextslide.next() : $('a:first', supersize);
		
		//Display slide counter
		if (options.slide_counter == 1){
			var slidecount = $('.slidenumber', slidecounter).html();
			currentslide.prev().length ? slidecount-- : slidecount = $("#supersize > *").size();
			$('.slidenumber', slidecounter).html(slidecount);
		}
		
		$('a.prevslide', supersize).removeClass('prevslide');
		prevslide.addClass('prevslide');
		
		//Captions require img in <a>
		if (options.slide_captions == 1) $('#slidecaption').html($(nextslide).find('img').attr('title'));
		
		nextslide.hide().addClass('activeslide');
		if (options.transition == 0){
			nextslide.show(); $.inAnimation = false;
		}
		if (options.transition == 1){
			nextslide.fadeIn(750, function(){$.inAnimation = false;});
		}
		if (options.transition == 2){
			nextslide.show("slide", { direction: "down" }, 'slow', function(){$.inAnimation = false;});
		}
		if (options.transition == 3){
			nextslide.show("slide", { direction: "left" }, 'slow', function(){$.inAnimation = false;});
		}
		if (options.transition == 4){
			nextslide.show("slide", { direction: "up" }, 'slow', function(){$.inAnimation = false;});
		}
		if (options.transition == 5){
			nextslide.show("slide", { direction: "right" }, 'slow', function(){$.inAnimation = false;});
		}
		
		supersize.resizenow();//Fix for resize mid-transition
	}
