// Permet de charger des images en avance
jQuery.preloadImages = function()
{
  for(var i = 0; i<arguments.length; i++)
  {
    jQuery("<img>").attr("src", arguments[i]);
  }
}

// Permet d'attacher l'ensemble des évènements à la page portfolio
function preparerElementsPagePortfolio(pCheminImages)
{
	$(document).ready(function()
	{
		programmerSuivantPrecedent(pCheminImages);
	
		//On applique les événements clic et hover à tous les controles                                 
		$("#imagesGal > a").each(function callback(index) {
		
			$(this).click(function() {
				afficherImage(pCheminImages, index + 1);
			});
			
			// On charge les images en avance
			$.preloadImages(pCheminImages + (index + 1) + ".jpg");
		});
		
		assignerFondBrillant();
		afficherImage(pCheminImages, 1);
	});
		
}

// Transforme l'ensemble des carrés rouges du portfolio en carrés jaunes
function retirerCarresRougeDansGallerie()
{
	$("#imagesGal > .bg-rouge").each(function callback(index)
	{
		$(this).removeClass("bg-rouge");
	});
}

// Assigne les évènements click aux boutons suivants et précédents du portfolio
function programmerSuivantPrecedent(pCheminImages)
{
	$("#btnSuivant").click(function() {
		imageGallerieSuivante(pCheminImages);
	});
	
	$("#btnPrecedent").click(function() {
		imageGalleriePrecedente(pCheminImages);
	});
}

// Avance l'image du portfolio à la suivante
function imageGallerieSuivante(pCheminImages)
{
	var positionCourante = positionImageCourante();
	var prochainePosition = positionCourante == positionDerniereImage() ? 1 : positionCourante + 1;

	afficherImage(pCheminImages, prochainePosition);
}

// Recule l'image du portfolio à la précédente
function imageGalleriePrecedente(pCheminImages)
{
	var positionCourante = positionImageCourante();
	var prochainePosition = positionCourante == 1 ? positionDerniereImage() : positionCourante - 1;
		
	afficherImage(pCheminImages, prochainePosition);
}

// Affiche l'image du portfolio à la position passée en paramètre
// position commençant à 1
function afficherImage (pCheminImages, pPositionImage)
{
	if (pPositionImage < 1 || pPositionImage > positionDerniereImage())
		return;

	retirerCarresRougeDansGallerie();
	
	var carreAModifier = $("#imgGal" + pPositionImage);
	carreAModifier.addClass("bg-rouge");
	var cheminImage = pCheminImages + pPositionImage + ".jpg";
	
	deplacerFondBrillantVersCarre(pPositionImage);
	
	// On fait disparaitre l'image, puis réapparaitre la nouvelle image
	$("#colonne-droite > img").fadeOut("fast", function callback() {
		var img = new Image();
		$(img).load(function callback2() {
		    $(this).hide();
		    $("#colonne-droite").empty().append(this);
		    $(this).fadeIn();
		}).attr("src", cheminImage);
	});
}

// Donne la position de la dernière image de la gallerie
function positionDerniereImage()
{
	var idComplet = $("#imagesGal > a:last").attr("id");
	return parseInt(idComplet.substring(6));
}

// Donne la position de l'image courante, en se fiant sur le numéro
// contenu dans l'id du carré actuellement rouge
function positionImageCourante()
{
	var idComplet = $("#imagesGal > .bg-rouge").attr("id");
	return parseInt(idComplet.substring(6));
}

// Déplace le fond brillant vers le carré ayant la position passée
// en paramètres (pour la valeur -1 on fait disparaitre le fond)
function deplacerFondBrillantVersCarre(pPositionCarre) {
	
	if (pPositionCarre == -1) {
		$("#imagesGal").css("background-position", "-50px -50px");
		return;
	}
	
	var position = $("#imgGal" + pPositionCarre).position();
	
	var stringPosition = (position.left - 49) + "px " + (position.top - 7) + "px";
	
	$("#imagesGal").css("background-position", stringPosition);
}

// Assigne l'image de fond brillant au div imagesGal
function assignerFondBrillant() {
	$("#imagesGal").css("background-image", "url(images/brillant.png)");
}