/*
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
*/

var __slideshow_interval = null;
var __slideshow_options = {};

(function($){

	//Resize image on ready or resize
	$.fn.supersized = function() {
		$.inAnimation = false;
		$.paused = false;
		$.first = true;
		__slideshow_options = $.extend($.fn.supersized.defaults, $.fn.supersized.options);
		
		$(window).bind("load", function(){
			$('#loading').hide();
			$('#supersize').fadeIn('fast');
			$('#content').show();
			if ($('#slideshow .activeslide').length == 0) $('#supersize a:first').addClass('activeslide');
			if (__slideshow_options.slide_captions == 1) $('#slidecaption').html($('#supersize .activeslide').find('img').attr('title'));
			if (__slideshow_options.navigation == 0) $('#navigation').hide();
			//Slideshow
			if (__slideshow_options.slideshow == 1){
				if (__slideshow_options.slide_counter == 1){ //Initiate slide counter if active
					$('#slidecounter .slidenumber').html(1);
	    			$('#slidecounter .totalslides').html($("#supersize > *").size());
	    		}
				__slideshow_interval = setInterval("nextslide()", __slideshow_options.slide_interval);
				if (__slideshow_options.navigation == 1){ //Skip if no navigation
					$('#navigation a').click(function(){  
   						$(this).blur();  
   						return false;  
   					}); 	
					//Slide Navigation
				    $('#nextslide').click(function() {
						if ($.last && !__slideshow_options.click_rotate) return false;
						clearInterval(__slideshow_interval);
						pause();
						queueAction (nextslide);
					    return false;
				    });
				    $('#prevslide').click(function() {
						if ($.first && !__slideshow_options.click_rotate) return false;
						clearInterval(__slideshow_interval);
						pause();
						queueAction (prevslide);
				        return false;
				    });
					$('#nextslide img').hover(function() {
					   	$(this).attr("src", "images-intro/forward.gif");
					}, function(){
					    $(this).attr("src", "images-intro/forward_dull.gif");
					});
					$('#prevslide img').hover(function() {
					    $(this).attr("src", "images-intro/back.gif");
					}, function(){
					    $(this).attr("src", "images-intro/back_dull.gif");
					});
					
				    //Play/Pause Button
				    $('#pauseplay').click(function() {
						queueAction(pause_toggle);
					    return false;
				    });

					// Commented out by alfred fazio.  Poor implementation
					// interfering with correct application behavior
					/*
				    $('#pauseplay').mouseover(function() {
				    	var imagecheck = ($(this).find('img').attr("src") === "images-intro/play_dull.gif");
				    	if (imagecheck){
      						$(this).find('img').attr("src", "images-intro/play.gif"); 
				        }else{
				        	$(this).find('img').attr("src", "images-intro/pause.gif");
				        }
				    });
				    
				    $('#pauseplay').mouseout(function() {
				    	var imagecheck = ($(this).find('img').attr("src") === "images-intro/play.gif");
				    	if (imagecheck){
      						$(this).find('img').attr("src", "images-intro/play_dull.gif"); 
				        }else{
				        	$(this).find('img').attr("src", "images-intro/pause_dull.gif");
				        }
				        return false;
						});
					*/
				}
			}
		});
				
		$(document).ready(function() {
			$('#supersize').resizenow(); 
		});
		
		//Pause when hover on image
		$('#supersize > *').hover(function() {
	   		if (__slideshow_options.slideshow == 1 && __slideshow_options.pause_hover == 1){
	   			if(!($.paused) && __slideshow_options.navigation == 1){
	   				$('#pauseplay > img').attr("src", "images-intro/pause.gif"); 
	   				clearInterval(__slideshow_interval);
	   			}
	   		}
	   		original_title = $(this).find('img').attr("title");
	   		if($.inAnimation) return false; else $(this).find('img').attr("title","");
	   	}, function() {
			if (__slideshow_options.slideshow == 1 && __slideshow_options.pause_hover == 1){
				if(!($.paused) && __slideshow_options.navigation == 1){
					$('#pauseplay > img').attr("src", "images-intro/pause_dull.gif");
					__slideshow_interval = setInterval(nextslide, __slideshow_options.slide_interval);
				} 
			}
			$(this).find('img').attr("title", original_title);	
	   	});
		
		$(window).bind("resize", function(){
    		$('#supersize').resizenow(); 
		});
		
		$('#supersize').hide();
		$('#content').hide();
	};
	
	//Adjust image size
	$.fn.resizenow = function() {
		__slideshow_options = $.extend($.fn.supersized.defaults, $.fn.supersized.options);
	  	return this.each(function() {
			var debug = "";

			//Define image ratio
			var ratio = __slideshow_options.startheight/__slideshow_options.startwidth;
			debug += "ratio: "+ratio+"\n";

			//Gather browser and current image size
			var imagewidth = $(this).width();
			var imageheight = $(this).height();
			var browserwidth = $(window).width();
			var browserheight = $(window).height();
			var offset;
			debug += "imagewidth: "+imagewidth+"\n";
			debug += "imageheight: "+imageheight+"\n";
			debug += "browserwidth: "+browserwidth+"\n";
			debug += "browserheight: "+browserheight+"\n";
			debug += "offset: "+offset+"\n";

			//alert(debug);

			var max_height = __slideshow_options.max_height;
			var max_width = __slideshow_options.max_width;
			var min_height = __slideshow_options.min_height;
			var min_width = __slideshow_options.min_width;

			var use_height = (max_height && max_height < browserheight) ? max_height : (min_height && min_height > browserheight) ? min_height : browserheight;
			var use_width = (max_width && max_width < browserwidth) ? max_width : (min_width && min_width > browserwidth) ? min_width : browserwidth;

			//Resize image to proper ratio
			if ((browserheight/browserwidth) > ratio){
			    $(this).height(use_height);
			    $(this).width(use_height / ratio);
			    $(this).children().height(use_height);
			    $(this).children().width(use_height / ratio);
			} else {
			    $(this).width(use_width);
			    $(this).height(use_width * ratio);
			    $(this).children().width(use_width);
			    $(this).children().height(use_width * ratio);
			}
			if (__slideshow_options.vertical_center == 1){
				$(this).children().css('left', (use_width - $(this).width())/2);
				$(this).children().css('top', (use_height - $(this).height())/2);
			}
			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: 1,
			slide_counter: 1,
			slide_captions: 1,
			slide_interval: 30000
	};
	
})(jQuery);

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

		// alfred fazio
		if (!__slideshow_options.auto_rotate && nextslide[0] == $('#supersize a:last').get(0)) {
			// Don't rotate to the beginning.  Just stop here.
			$.last = true;
			clearInterval(__slideshow_interval);
		}

		// alfred fazio
		// Support our own URL scheme embedded in <img> tags.  (Avoids
		// unnecessary <a> tags)
		var text = $('img', nextslide[0]).attr("text");
		var url = $('img', nextslide[0]).attr("url");
		if (text && url) {
			$('#slideshow_link').html('<a href="'+url+'">'+text+'</a>');
		} else {
			$('#slideshow_link').html('');
		}
	    
	    $('#supersize').resizenow();//Fix for resize mid-transition
	    
	}
	
	//Slideshow Previous Slide
	function prevslide() {
		$.inAnimation = true;
		$.last = false;
		$.first = false;
	    __slideshow_options = $.extend($.fn.supersized.defaults, $.fn.supersized.options);
	    var currentslide = $('#supersize .activeslide');
	    currentslide.removeClass('activeslide');
		
	    if ( currentslide.length == 0 ) currentslide = $('#supersize a:first');
			
	    var nextslide =  currentslide.prev().length ? currentslide.prev() : $('#supersize a:last');
	    var prevslide =  nextslide.next().length ? nextslide.next() : $('#supersize a:first');
		
		//Display slide counter
		if (__slideshow_options.slide_counter == 1){
			var slidecount = $('#slidecounter .slidenumber').html();
			currentslide.prev().length ? slidecount-- : slidecount = $("#supersize > *").size();
		    $('#slidecounter .slidenumber').html(slidecount);
		}
		
		$('.prevslide').removeClass('prevslide');
		prevslide.addClass('prevslide');
		
		//Captions require img in <a>
	    if (__slideshow_options.slide_captions == 1) $('#slidecaption').html($(nextslide).find('img').attr('title'));
		
	    nextslide.hide().addClass('activeslide');
		if (__slideshow_options.transition == 0){
			nextslide.show();  finishAnimation(); ;
		}
		if (__slideshow_options.transition == 1){
			nextslide.fadeIn(300, function(){ finishAnimation(); });
		}
		if (__slideshow_options.transition == 2){
			nextslide.show("slide", { direction: "down" }, 'slow', function(){ finishAnimation(); });
		}
		if (__slideshow_options.transition == 3){
			nextslide.show("slide", { direction: "left" }, 'slow', function(){ finishAnimation(); });
		}
		if (__slideshow_options.transition == 4){
			nextslide.show("slide", { direction: "up" }, 'slow', function(){ finishAnimation(); });
		}
		if (__slideshow_options.transition == 5){
			nextslide.show("slide", { direction: "right" }, 'slow', function(){ finishAnimation(); });
		}
		
		// alfred fazio
		if (nextslide[0] == $('#supersize a:first').get(0)) {
			$.first = true;
		}

		// alfred fazio
		// Support our own URL scheme embedded in <img> tags.  (Avoids
		// unnecessary <a> tags)
		var text = $('img', nextslide[0]).attr("text");
		var url = $('img', nextslide[0]).attr("url");
		if (text && url) {
			$('#slideshow_link').html('<a href="'+url+'">'+text+'</a>');
		} else {
			$('#slideshow_link').html('');
		}
	    
		$('#supersize').resizenow();//Fix for resize mid-transition
	}

// alfred fazio
var __slideshow_action_queue = [];
function queueAction (fn) {
	if (!$.inAnimation)
		fn();
	else
		__slideshow_action_queue.push(fn);
}

// alfred fazio
function finishAnimation() {
	$.inAnimation = false;
	var fn = null;
	while (fn = __slideshow_action_queue.pop())
		fn();
}

// alfred fazio
function pause() {
	clearInterval(__slideshow_interval);
	$.paused = true;
	$('#pauseplay').find('img').attr("src", "images-intro/play.gif");
}

// alfred fazio
function pause_toggle() {
	var t = $('#pauseplay');
	var src = (t.find('img').attr("src") == "images-intro/play.gif") ? "images-intro/pause.gif" : "images-intro/play.gif";
	if (src == "images-intro/pause.gif"){
		t.find('img').attr("src", "images-intro/play.gif");
		$.paused = false;
		__slideshow_interval = setInterval(nextslide, __slideshow_options.slide_interval);  
	} else {
		t.find('img').attr("src", "images-intro/pause.gif");
		clearInterval(__slideshow_interval);
		$.paused = true;
	}
	t.find('img').attr("src", src);
}

// alfred fazio
function unpause() {
	$.paused = false;
	__slideshow_interval = setInterval(nextslide, __slideshow_options.slide_interval);  
	$('#pauseplay').find('img').attr("src", "images-intro/pause.gif");
}

