/******************************************************
*
*	Full page slideshow
*
******************************************************/
jQuery.fn.espresslide = function(opts) {
	
	var defaults = {
		navElem			: null,
		navCont		: 'li',
		prev		: null,
		next		: null,
		time		: 7000,    //lunghezza della transizione
		fadeperiod	: 1000    //lunghezza della transizione
    };
	
	
	var opts = jQuery.extend({}, defaults, opts);
	
	var h = jQuery(window).height();    //altezza della pagina
	var w = jQuery(window).width();    //larghezza della pagina
	
	var elem = this;    //elemento trigger
	
if(elem.length!=0){
	jQuery('body').prepend(elem);
	
	var allSrc = new Array();    //creo l'array vuoto
	var amountSlide = elem.find('a').length;    //il numero di immagine della slideshow
	
	elem.find('a').each(function() {    //lo riempio con gli 'a' contenuti nell'elemento selezionato
		allSrc.push(jQuery(this));
	});
	var nav;

	jQuery.each(allSrc, function(index, value) { 
		jQuery(opts.nav).append('<'+opts.navCont+' id="espress'+opts.navCont+'_'+index+'" class="espress'+opts.navCont+'">'+(index+1)+'</li>');
		jQuery('.espress'+opts.navCont).hover(function(){
			jQuery(this).addClass('espresshover');
		},function(){
			jQuery(this).removeClass('espresshover');
		});
		if(!jQuery(opts.nav).hasClass('.espressliding')){
			jQuery('.espress'+opts.navCont).click(function(){
				var idNum = parseFloat(jQuery(this).attr('id').replace('espress'+opts.navCont+'_','')); 
				var vis = parseFloat(jQuery('.espr_block:visible').attr('id').replace('espr_block_',''));    //la variabile è il numero del div partendo da 0
				if(idNum!=vis){
					clearInterval(set);
					nextSlide(idNum+1);
				}
			});
		}
	});

	nextSlide();    //faccio partire l'effetto
	var set = setInterval(function() { nextSlide(); }, opts.time);    //faccio partire l'effetto
	
}




/*************************** FUNZIONE nextSlide() ***************************/

	function nextSlide(nav){    //funzione per il fading delle immagini
		if(jQuery('.espr_block:visible').length!=0){    //se ho creato almeno un div con un'immagine
			var vis = parseFloat(jQuery('.espr_block:visible').attr('id').replace('espr_block_',''));    //la variabile è il numero del div partendo da 0
		} else {
			var vis = 'undefined';
		}
 
		if(vis == amountSlide-1 || vis=='undefined'){    //se siamo all'ultimo div o se ancora non ho creato nessun div
			var i = 0;
		} else if (nav>0) { 
			var i = nav-1;
		} else {    //altrimenti l'indice è l'id corrent più uno, quindi il div successivo
			var i = vis+1;
		}
		if(jQuery('#espr_block_'+i).length==0){    //se ancora non esiste il div con quell'id
			elem.append('<div class="espr_block" id="espr_block_'+i+'"><img src="'+allSrc[i].attr('href')+'"></div>');    //creo il div e gli appendo l'immagine
		}
		jQuery('#espr_block_'+i).css({    //imposto i css per i contenitori di immagini
			'display':'none',
			'height':h,
			'left':0,
			'overflow':'hidden',
			'position':'absolute',
			'top':0,
			'width':w,
			'z-index':'-1'
		});
		var img2 = jQuery('#espr_block_'+i).find('img');    //cerco l'immagine all'interno del div corrente
		jQuery(opts.nav).addClass('espressliding').fadeOut(400);
		if(img2.parents('.espr_block').hasClass('espr_loaded')){    //se l'immagine è già stata caricata
			jQuery('#espr_block_'+(vis)).css({'z-index':'-2'});    //il div visibile viene portato a z-index 1, quindi sotto
			jQuery('#espr_block_'+i).fadeIn(opts.fadeperiod,function(){    //imposto il timeout che mi fa apparire il div successivo
				if(jQuery('.espr_block').length!=0){    //se esiste almeno un div, quindi la slide non parte ora per la prima volta
					jQuery('#espr_block_'+(vis)).css({'display':'none'});    //nascondo il div corrente
				}
				clearInterval(set);
				jQuery(opts.nav).removeClass('espressliding').fadeIn(400);
				set = setInterval(function() { nextSlide(); }, opts.time);    //faccio ripartire l'effetto
			});    //chiudo il timeout
		} else {
			img2.load(function(){    //la prima volta che carica l'immagine all'interno del div
				if((jQuery.browser.msie)) {
					jQuery('#espr_block_'+i).css({    //imposto i css per i contenitori di immagini solo per IE perché altrimenti non becca la grandezza delle immagini
						'display':'block',
						'visibility':'hidden'
					});
				}
				var hI = img2.attr('height');
				var wI = img2.attr('width');
				if((wI/hI)<(w/h)) {
					var r = w / wI;
					var d = (Math.abs(h - (hI*r)))*0.5;
						img2.css({
							'height' : hI*r,
							'margin-left' : '0',
							'margin-top' : '-'+d+'px',
							'position' : 'absolute',
							'width' : w
						});
				}
				else {
					var r = h / hI;
					var d = (Math.abs(w - (wI*r)))*0.5;
						img2.css({
							'height' : h,
							'margin-left' : '-'+d+'px',
							'margin-top' : '0',
							'position' : 'absolute',
							'width' : wI*r
						});
				}
				if((jQuery.browser.msie)) {
					jQuery('#espr_block_'+i).css({    //imposto i css per i contenitori di immagini solo per IE perché altrimenti non becca la grandezza delle immagini
						'display':'none',
						'visibility':'visible'
					});
				}
				jQuery('#espr_block_'+(vis)).css({'z-index':'-2'});    //il div visibile viene portato a z-index 1, quindi sotto
				jQuery('#espr_block_'+i).fadeIn(opts.fadeperiod,function(){    //imposto il timeout che mi fa apparire il div successivo
					if(jQuery('.espr_block').length!=0){    //se esiste almeno un div, quindi la slide non parte ora per la prima volta
						jQuery('#espr_block_'+(vis)).css({'display':'none'});    //nascondo il div corrente
					}
					clearInterval(set);
					jQuery(opts.nav).removeClass('espressliding').fadeIn(400);
					set = setInterval(function() { nextSlide(); }, opts.time);    //faccio ripartire l'effetto
				}).addClass('espr_loaded');    //chiudo il timeout
			});
		}

			jQuery('.espress'+opts.navCont).removeClass('espresscurrent');
			jQuery('#espress'+opts.navCont+'_'+i).addClass('espresscurrent');
	}




/*************************** FUNZIONE per il RESIZE ***************************/

	jQuery(window).bind('load resize',function(){
		h = jQuery(window).height();    //altezza della pagina
		w = jQuery(window).width();    //larghezza della pagina
		jQuery('.espr_block').css({    //imposto i css per i contenitori di immagini
			'height':h,
			'width':w
		});
		jQuery('.espr_block').find('img').each(function(){
			var img2 = jQuery(this);
			var hI = img2.attr('height');
			var wI = img2.attr('width');
			if((wI/hI)<(w/h)) {
				var r = w / wI;
				var d = (Math.abs(h - (hI*r)))*0.5;
				img2.css({
					'height' : hI*r,
					'margin-left' : '0',
					'margin-top' : '-'+d+'px',
					'position' : 'absolute',
					'width' : w
				});
			}
			else {
				var r = h / hI;
				var d = (Math.abs(w - (wI*r)))*0.5;
				img2.css({
					'height' : h,
					'margin-left' : '-'+d+'px',
					'margin-top' : '0',
					'position' : 'absolute',
					'width' : wI*r
				});
			}
		});
	});
	
}



