/**
 * Script original provenant de http://www.mysql.fr/
 * @author Main Author : Dups <dups@mysql.com>
 * @author Mod. : Jérémie Haulin <haulin dot jeremie at gmail dot com>
 */

// creation du tableau dans lequel on va mettre les slides
var divContent = new Array();
	action = '';

// initialisation ajax
$(document).ready
(  
	function ()
	{
		$('#slide_precedent').hide();
		
		$.ajax
		(
			{
				// récupération du fichier XML contenant nos slides
				type: "GET", // récupération en méthode GET
				url: "js/pages/accueil/slide.xml", // URL de notre XML
				dataType: "xml", // fichier XML
				success: function(xml) // si récupéré :)
				{
					
					// pour chaque noeud 'slide' dans notre XML
					$(xml).find('slide').each
					(
						function ()
						{
							// récupération de l'id du noeud 'slide'
							var id_slide = $(this).attr('id_slide');
							// parsage de la chaîne de caractères en INTEGER
							id_slide = parseInt(id_slide);
							
							// récupération des champs xml correspondant aux attributs de notre slide
							var nom_slide = $(this).find('nom_slide').text();
							var href = $(this).find('href').text();
							var src = $(this).find('src').text();
							var alt = $(this).find('alt').text();
							
							// on rentre le contenu xml correspondant à la slide dans le tableau 'divContent'
							// chaque ligne de ce tableau contient un slide prêt à être intégré à notre page HTML
							divContent[id_slide] = "<a href=' " + href + "'><img src='" + src + "' alt='" + alt + "' /></a>";
						}
					);
				}
			}
		);
	}
);

// numéro de slide par défaut
var CurrentSlide = 0;

// permet d'afficher les flèches 'suivant' et 'précédent'
// uniquement si elle amènent sur une slide pour éviter de faire une boucle avec les slides
function affiche_fleche()
{
	// on réaffiche nos pitites flèches une fois la slide affichée
	if (CurrentSlide > 0) // si la slide courante n'est pas la 1ère
	{
		$('#slide_precedent').fadeIn(); // on affiche la flèche 'précédent'
	}

	if (CurrentSlide < cnt-1) // si la slide courante n'est pas la dernière
	{
		$('#slide_suivant').fadeIn(); // on affiche la flèche 'suivant'
	}
}

// remise à zéro
function rotateIndexReset()
{
	// on récupère le nombre de lignes dans le tableau des slides
	cnt = divContent.length; 
	
	// on remet à ZERO
	for (i=0; i<cnt; i++)
	{
		// incrémentation de l'index des slides
		ri = 'imageRotateIndex' + i;
		
		// si un élement a un id 'imageRotateIndex+i'
		if (document.getElementById(ri))
		{
			// sa classe devient la classe de slide par défaut
			document.getElementById(ri).className = 'imageRotateIndex';
		}
	}
}

// récupération des appels pour changer de slide
function showSpecificRotateDiv(divid, key)
{
	// on remet les classes de chaque div à ZERO
	rotateIndexReset();

	// si le bouton 'précédent' est passé en param
	if (key == '--')
	{
		// si on n'est pas sur le premier slide
		if (CurrentSlide > 0)
		{
			CurrentSlide--; // on décrémente
			action ="--";
		}
	}
	
	// si le bouton 'suivant' est passé en param
	if (key == '++')
	{
		if (CurrentSlide < cnt-1)
		{
			CurrentSlide++;
			action ="++";
		}
	}
	
	// on récupère la DIV de notre page html passé en param
	rotateLayer = document.getElementById(divid);
	
	// on cache les flèches précédentes et suivantes pour empêcher l'user d'envoyer une requête de changement de slide qui n'aboutira point (voilà ma belle ptite explication v'voyez)
	$('#slide_precedent').fadeOut(200);
	$('#slide_suivant').fadeOut(200);
	
	
	// on sort la slide actuelle en slide de notre DIV rotateLayer
	
	// si slide 'suivant'
	if (action == '++') 
	{
		$(rotateLayer).hide
		(
			"slide", {direction: "left"},
			500,
			function() // fonction callback éxecutée une fois l'effet fadeOut fini
			{
				// arrivée de la nouvelle slide de droite à gauche
				$(rotateLayer).html(divContent[CurrentSlide]).show("slide", {direction: "right"}, 500);
				affiche_fleche();
			}
		);
	}

	// si slide 'précédent'
	if (action == '--') 
	{
		$(rotateLayer).hide
		(
			"slide", {direction: "right"},
			500,
			function() // fonction callback éxecutée une fois l'effet fadeOut fini
			{				
				// arrivée de la nouvelle slide de gauche à droite
				$(rotateLayer).html(divContent[CurrentSlide]).show("slide", {direction: "left"}, 500);
				affiche_fleche();
			}
		);
	}
}

