/*
FullScreen 1.0 - Fullscreen Slideshow jQuery Plugin
By Javier Melia (javier_melia@yahoo.es)
Based on Supersized 3.0 By Sam Dunn
Supersized - Fullscreen Slideshow jQuery Plugin
Version: fullscreen.1.0.js
*/

(function($){

	//Resize image on ready or resize
	$.fullscreen = 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)
			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
			navigation		:0,		//navigation controls
			image_protect		:1,
			//Size & Position
			vertical_center         :1,		//Vertically center background
			//div id
			id			:'#fullscreen',
			container		:1

		};
		
		//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		
		}
		
		if (options.container == 1){
			$('body').prepend('<div id='+options.id.replace('#','')+'-loader></div>').prepend('<div id='+options.id.replace('#','')+'></div>');
		}
		
		var element = $(options.id);		

		//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
		}
		var currentId = currentSlide;		

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

		$(window).bind("load", function(){
			
			$(options.id + "-loader").hide();

			element.fadeTo(1250, 1, function(){});
					
			resizenow();
			
			//Slideshow
			if (options.slideshow == 1) {
				if (options.autoplay == 1){
					slideshow_interval = setInterval(nextslide, options.slide_interval);			
				}
				else {
					$('#play').click(function() {
					    slideshow_interval = setInterval(nextslide, options.slide_interval);
					    return false;				    
					});					
				}
			}
			else {
				if (options.navigation == 1){ //Skip if no navigation

				    $('#fullscreen-thumb li img').click(function() {
					showImage(parseInt($(this).attr('name')));
					currentId = parseInt($(this).attr('name'));
				    });
				    
				    $('#next-image').click(function() {
					nextslide();
				    });
				    
				    $('#prev-image').click(function() {
					prevslide();
				    });					    
				    
				}
			}
			
		});
				
		$(document).ready(function() {
			resizenow();
		});
		
		$(window).bind("resize", function(){
			resizenow(); 
		});
		
		function resizenow() {		

			var t = $(options.id + ' a:last');
					
			var imagewidth = t.children().attr("anchura");
			var imageheight = t.children().attr("altura");
			
			var ratio = (imageheight/imagewidth).toFixed(2);	//Define image ratio
			//Gather browser size
			var browserwidth = $(window).width();
			var browserheight = $(window).height();
			var offset;
			
			//Resize image to proper ratio
			if ((browserheight/browserwidth) > ratio){
				t.height(browserheight);
				t.width(browserheight / ratio);
			} else {
			    t.width(browserwidth);
			    t.height(browserwidth * ratio);
			}
			//End dynamic resizing			
			
			if (options.vertical_center == 1){
				t.css('left', (browserwidth - t.width())/2);
				t.css('top', (browserheight - t.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;	
		};	
		
		function nextslide() {

			if (currentId == options.slides.length - 1)
				currentId = 0;
			else
				currentId = currentId + 1;
			
			showImage(currentId);
		}
		
		function prevslide() {

			if (currentId == 0)
				currentId = options.slides.length - 1;
			else
				currentId = currentId - 1;
			
			showImage(currentId);
		}	
			
		function showImage(id) {		
			var currentslide = $(options.id + ' .activeslide');
			
			currentslide.prev().remove();
			currentslide.removeClass('activeslide');
	
			//Set next image
			imageLink = (options.slides[id].url) ? "href='" + options.slides[id].url + "'" : "";
			$("<img/>").attr("src", options.slides[id].image + "?random=" + (new Date()).getTime()).appendTo(options.id).wrap("<a " + imageLink + "></a>");
			
			var nextslide =  $(options.id + ' a:last'); //*******Array
			$(options.id + ' a:last img').attr("anchura", options.slides[id].width);
			$(options.id + ' a:last img').attr("altura", options.slides[id].height);		
			
			nextslide.hide().addClass('activeslide');
	
			if (options.transition == 0){
				$("img").load(function(){
					nextslide.show();
				});			
			}
			if (options.transition == 1){
				$("img").load(function(){
					nextslide.fadeTo(options.transition_speed, 1, function(){});
				});
			}
			if (options.transition == 2){
				$("img").load(function(){
					nextslide.show("slide", { direction: "up" }, 'slow', function(){});
				});			
			}
			if (options.transition == 3){
				$("img").load(function(){
					nextslide.show("slide", { direction: "right" }, 'slow', function(){});
				});				
			}
			if (options.transition == 4){
				$("img").load(function(){
					nextslide.show("slide", { direction: "down" }, 'slow', function(){});
				});			
			}
			if (options.transition == 5){
				$("img").load(function(){
					nextslide.show("slide", { direction: "left" }, 'slow', function(){});
				});			    		
			}
			resizenow();		
		}		
		$(options.id).hide();
	};
})(jQuery);


