$(document).ready(function() {
  // posiziono gli sfondi
  $(window).resize(function() { calcolaAltezze() });
  checkLoadImmagini('img', function() { calcolaAltezze() });

  // faccio lo slide delle immagini
  slideSfondi();

  // setto il menu di secondo livello
  $('#menuCollezioni, #sottoMenuCollezioni').hover(function() {
    $('#sottoMenuCollezioni').stopTime("hide").slideDown('fast');
  }, function() {
    $('#sottoMenuCollezioni').oneTime(500, "hide", function() {
      $('#sottoMenuCollezioni').slideUp('fast');
    });
  });
  
  // precarico gli sfondi
  $.preload(window.listaSfondi);
});

// funzione che controlla se tutte le immagini sono state caricate ed allora esegue la funzione
function checkLoadImmagini(selettore,funzione) {
  var immagine = $(selettore);
  var done = true;
  immagine.each(function() {
     done = done && this.complete;
     return done;
  });
  if(done) {
    funzione.call();
  } else {
    $('#contenitore').oneTime(100, function() {
		checkLoadImmagini(selettore, funzione);
	});
  }
}

// aggiusto la posizione delle immagini
function calcolaAltezze() {
  // calcolo l'altezza del contenitore
  var contenitore = $('#contenitore');
  var altezzaPagina = $('#pagina').outerHeight()+110;
  if(altezzaPagina < $(window).height())
    contenitore.height($(window).height() - $('#footer').outerHeight());
  else
    contenitore.height(altezzaPagina);
  // calcolo l'altezza delle immagini di sfondo
  $('.immagineSfondo, #reticolo').each(function() {
    $(this).width($(window).width());
    $(this).height(contenitore.height());
  });
}

function slideSfondi() {
  window.sfondoAttivo = 0;
  if(window.listaSfondi.length > 0) {
    window.listaSfondi = shuffle(window.listaSfondi);
    $('#sfondo1').css('backgroundImage','url('+window.listaSfondi[window.sfondoAttivo]+')').data('active','true');
    $('#sfondo2').data('active','false').hide();
    setInterval('eseguiTransizioneSfondi()', 10000);
  }
}

function eseguiTransizioneSfondi() {
  var $sfondoAttivo = null;
  var $sfondoNonAttivo = null;
  if($('#sfondo1').data('active') == 'true') {
    $sfondoAttivo = $('#sfondo1');
    $sfondoNonAttivo = $('#sfondo2');
  } else {
    $sfondoAttivo = $('#sfondo2');
    $sfondoNonAttivo = $('#sfondo1');
  }

  prossimoSfondo();
  $sfondoAttivo.fadeOut(1500).data('active','false');
  $sfondoNonAttivo.css('backgroundImage','url('+window.listaSfondi[window.sfondoAttivo]+')').fadeIn(1500).data('active','true');
}

function prossimoSfondo() {
  window.sfondoAttivo = window.sfondoAttivo + 1;
  if(window.sfondoAttivo >= window.listaSfondi.length)
    window.sfondoAttivo = 0;
}

// ----------------------------------------------------------
// funzioni per la gestione della pagina index
// ----------------------------------------------------------
function inizializzaHome() {
	$('#sfondo1,#menu,#fraseHome,#logo,#listaEventi').hide();	
	$('#sfondo1,#menu').fadeIn('slow', function() {
		$('#logo').fadeIn('slow', function() {
			$('#fraseHome').fadeIn('slow', function() {
				$('#listaEventi').fadeIn('slow');
				calcolaAltezze();
			});
		});
	});
}

// ----------------------------------------------------------
// funzioni per la gestione della pagina testimonial
// ----------------------------------------------------------
function inizializzaTestimonial() {
	var item = $('#testimonial .item');
  $('#testimonial .items').width(item.length * parseInt(item.first().outerWidth()));
	
	// inserisco il fadeIn ad ogni immagine
	$('#testimonial .contenitoreImmagineItem img').load(function() {
		$(this).fadeIn('slow');
	});
}

function spostaDestraTestimonial() {
  var $items = $('#testimonial .items');
	var $grandezzaItem = parseInt($('#testimonial .item').first().outerWidth());
  if($items.data('activeAnimate') != 'true' && Math.abs(parseInt($items.css('marginLeft'))) < Math.abs(($('#testimonial .item').length-2) * $grandezzaItem)) {
    $items.data('activeAnimate', 'true');
    $items.animate({ marginLeft: '-='+$grandezzaItem.toString() }, 500, function() {
      $items.data('activeAnimate', 'false');
    });
  }
}

function spostaSinistraTestimonial() {
  var $items = $('#testimonial .items');
	var $grandezzaItem = parseInt($('#testimonial .item').first().outerWidth());
  if($items.data('activeAnimate') != 'true' && parseInt($items.css('marginLeft')) < 0) {
    $items.data('activeAnimate', 'true');
    $items.animate({ marginLeft: '+='+$grandezzaItem.toString() }, 500, function() {
      $items.data('activeAnimate', 'false');
    });
  }
}

// ----------------------------------------------------------
// funzioni per la gestione della pagina portfolio
// ----------------------------------------------------------
function inizializzaPortfolio() {
  $('#portfolio .item a').first().trigger('click');
  // inserisco lo slide al passaggio del mouse sulla immagini piccole
  $('#portfolio .item').hover(function() {
    $(this).find('.messaggio').slideDown('fast');
  }, function() {
    $(this).find('.messaggio').slideUp('fast');
  });
}

// funzione che controlla se l'immagine è stata caricata
function checkImagePortfolio() {
  var immagine = $('#fotoGrande img');
  var done = true;
  immagine.each(function() {
     done = done && this.complete;
     return done;
  });
  if(done) {
    var position = immagine.position();
	if(position != null) {
		var messaggio = $('#fotoGrande .messaggio');
		messaggio.width(immagine.width()-parseInt(messaggio.css('paddingLeft'))-parseInt(messaggio.css('paddingRight')))
		  .css('left', position.left)
		  .css('bottom', position.top);
	}
  } else {
    setTimeout(checkImagePortfolio,100); // wait at least 100 ms and check again
  }
}


function caricaPortfolio(id) {
  $('#contenitoreFotoGrande').load('partials/portfolioFotoGrande.php?id='+id, function() {
    // carico la prima foto
    $('#paginatore a:first').trigger('click');
    // inserisco lo slide al passaggio del mouse sull'immagine grande
    $('#fotoGrande td').hover(function() {
      $(this).find('.messaggio').slideDown('fast');
    }, function() {
      $(this).find('.messaggio').slideUp('fast');
    });
  });
}

function caricaFotoPortfolio(sender, immagine, testo) {
  $('#fotoGrande td')
    .find('img').remove().end()
    .append('<img src="'+immagine+'" />');
  $('#fotoGrande .messaggio').html(unescape(testo));
  $('#paginatore a').removeClass('active');
  $(sender).addClass('active');
  checkImagePortfolio();
}

function portfolioUp() {
  var $items = $('#portfolio .items');
	var $item = $('#portfolio .item');
	var $grandezza = parseInt($item.outerHeight()) + parseInt($item.css('marginBottom'));
  if($items.data('activeAnimate') != 'true' && parseInt($items.css('marginTop')) < 0) {
    $items.data('activeAnimate', 'true');
    $items.animate({ marginTop: '+='+$grandezza.toString() }, 500, function() {
      $items.data('activeAnimate', 'false');
    });
  }
}

function portfolioDown() {
  var $items = $('#portfolio .items');
	var $item = $('#portfolio .item');
	var $grandezza = parseInt($item.outerHeight()) + parseInt($item.css('marginBottom'));
  if($items.data('activeAnimate') != 'true' && Math.abs(parseInt($items.css('marginTop'))) < Math.abs(($items.select('item').length-2) * $grandezza)) {
    $items.data('activeAnimate', 'true');
    $items.animate({ marginTop: '-='+$grandezza.toString() }, 500, function() {
      $items.data('activeAnimate', 'false');
    });
  }
}

// ----------------------------------------------------------
// funzioni per la gestione della pagina video
// ----------------------------------------------------------
function inizializzaVideo() {
  $('#video .item a').first().trigger('click');
  // inserisco lo slide al passaggio del mouse sulla immagini piccole
  $('#video .item').hover(function() {
    $(this).find('.messaggio').slideDown('fast');
  }, function() {
    $(this).find('.messaggio').slideUp('fast');
  });
}

function caricaVideo(titolo, codice, testo) {
  $('#video')
    .find('.titolo').html(titolo).end()
    .find('.box').html(unescape(testo)).end()
    .find('.video').html('<iframe title="YouTube video player" class="youtube-player" type="text/html" width="640" height="390" src="http://www.youtube.com/embed/'+codice+'?autoplay=1&rel=0&autohide=1" frameborder="0" allowFullScreen></iframe>');
}

function videoUp() {
  var $items = $('#video .items');
	var $item = $('#video .item');
	var $grandezza = parseInt($item.outerHeight()) + parseInt($item.css('marginBottom'));
  if($items.data('activeAnimate') != 'true' && parseInt($items.css('marginTop')) < 0) {
    $items.data('activeAnimate', 'true');
    $items.animate({ marginTop: '+='+$grandezza.toString() }, 500, function() {
      $items.data('activeAnimate', 'false');
    });
  }
}

function videoDown() {
  var $items = $('#video .items');
	var $item = $('#video .item');
	var $grandezza = parseInt($item.outerHeight()) + parseInt($item.css('marginBottom'));
  if($items.data('activeAnimate') != 'true' && Math.abs(parseInt($items.css('marginTop'))) < Math.abs(($items.select('item').length-2) * 136)) {
    $items.data('activeAnimate', 'true');
    $items.animate({ marginTop: '-='+$grandezza.toString() }, 500, function() {
      $items.data('activeAnimate', 'false');
    });
  }
}

// ----------------------------------------------------------
// funzioni per la gestione della pagina evento
// ----------------------------------------------------------
function inizializzaEvento() {
  // se non ci sono almeno 2 foto, nascondo la sezione foto
  if( $('#listaFoto img').length == 0)
    $('#sezioneFoto').hide();
  // se c'è almeno 1 foto, visualizzo la prima foto
  if($('#contenitoreFoto img').length == 0)
    $('#contenitoreFoto').hide();
	// aggiungo il fancybox
	$('a.fancybox').fancybox();
}

// ----------------------------------------------------------
// funzioni per la gestione della pagina Collezione
// ----------------------------------------------------------
function inizializzaCollezione() {
	// setto la larghezza del contenitore delle immagini
	var $item = $('#collezione .item');
	var $grandezzaItem = ($item.first().outerWidth() + parseInt($item.first().css('marginRight')));
  $('#collezione .items').width($item.length * $grandezzaItem);
	
	// inserisco l'animazione all'entrata delle immagini
	$('#collezione .contenitoreImmagineItem img').load(function() {
		$(this).fadeIn('slow');
	});
	
	// aspetto che i titoli siano caricati (sono immagini verticali, e ci metto l'animazione
	checkTitoliCollezione();
	$('#collezione .item')
		.hover(function() {
			var titolo = $(this).find('.titolo');
			titolo.find('img').show().end()
				.animate({ width: titolo.data('larghezza') }, 500);
		}, function() {
			var titolo = $(this).find('.titolo');
			titolo.animate({ width: 0 }, 500, function() {
				$(this).find('img').hide();
			});
		});
}

// funzione che controlla se l'immagine è stata caricata
function checkTitoliCollezione() {
  var immagini = $('#collezione .titolo img');
  var done = true;
  immagini.each(function() {
     done = done && this.complete;
     return done;
  });
  if(done) {
		$('#collezione .titolo').each(function() {
			$(this).data('larghezza', $(this).width()).width(0)
				.find('img').hide();
		});
  } else {
    setTimeout(checkTitoliCollezione,100); // wait at least 100 ms and check again
  }
}

function spostaDestraCollezione() {
  var $items = $('#collezione .items');
	var $item = $('#collezione .item');
	var $grandezzaItem = ($item.first().outerWidth() + parseInt($item.first().css('marginRight')));
  if($items.data('activeAnimate') != 'true' && Math.abs(parseInt($items.css('marginLeft'))) < Math.abs(($('#collezione .item').length-3) * $grandezzaItem)) {
    $items.data('activeAnimate', 'true');
    $items.animate({ marginLeft: '-='+$grandezzaItem.toString() }, 500, function() {
      $items.data('activeAnimate', 'false');
    });
  }
}

function spostaSinistraCollezione() {
  var $items = $('#collezione .items');
	var $item = $('#collezione .item');
	var $grandezzaItem = ($item.first().outerWidth() + parseInt($item.first().css('marginRight')));
  if($items.data('activeAnimate') != 'true' && parseInt($items.css('marginLeft')) < 0) {
    $items.data('activeAnimate', 'true');
    $items.animate({ marginLeft: '+='+$grandezzaItem.toString() }, 500, function() {
      $items.data('activeAnimate', 'false');
    });
  }
}

// ----------------------------------------------------------
// funzioni per la gestione della pagina Info
// ----------------------------------------------------------
function inizializzaInfo() {
	// tolgo il valore predefinito nei campi, al focus
	$("form input[name!='invia'], form textarea")
		.data('cambiato','0')
		.focus(function() {
			if($(this).data('cambiato') == '0') {
				$(this).val('').data('cambiato', '1');
			}
		});
		
	// validazione del form
	$('form').submit(function() {
		if($(this).find('#email').val() == '') {
			alert('l\'email deve essere inserita');
			return false;
		}
		if(!$(this).find('#privacy_si').is(':checked')) {
			alert('la privacy deve essere accettata');
			return false;
		}
		$.post($(this).attr('action'), $(this).serialize(), function(data) {
			alert(data);
		});
		return false;
	});
}
