/* Exemple OVML : Affichage d'une galerie d'images défilantes */

//Remplace $ par $j afin d'éviter les conflits avec d'autres librairies
var $j = jQuery.noConflict(); //l'appel à $() devient $j()

//Activation/Désactivation du défilement
var scriptsja_galerie_defilementdroite = false;
var scriptsja_galerie_defilementgauche = false;
//Position du curseur dans la page
var scriptsja_galerie_sourisx = 0;
//Position dans la galerie
var scriptsja_galerie_sourisxgal = 0;
//Indique si le curseur est sur la galerie
var scriptsja_galerie_galeriehover = false;
var scriptsja_galerie_partievisiblewidth='100%';

function scriptsja_galerie_calcultaille(larg, haut, largc, hautc) {
	coord=new Array(2);
	ratio=haut/larg;
	if (larg < largc && haut < hautc) { //si l'image réelle est plus petite en largeur et hauteur
		while (larg < largc && haut < hautc) {
			larg++;
			haut=Math.round(larg*ratio);
		}
	} else {
		while (larg > largc || haut > hautc) {
			larg--;
			haut=Math.round(larg*ratio);
		}
	}
	coord[0]=larg;
	coord[1]=haut;
	return(coord);
}

//fonction pour le redimensionnement des images
function scriptsja_galerie_redimimage(obj, larg, haut) {
	if ($j(obj)) {
		width = $j(obj).width();
		height = $j(obj).height();
		if (width == 0) {
			width = larg;
		}
		if (height == 0) {
			height = haut;
		}
		var coord=new Array(2);
		coord = scriptsja_galerie_calcultaille(width,height,larg,haut);
		$j(obj).attr("width",coord[0]);
		$j(obj).attr("height",coord[1]);
	}
}

function scriptsja_galerie_imageprecedente() {
	//Stoppe l'animation en cours
	if (scriptsja_galerie_defilementgauche || scriptsja_galerie_defilementdroite) {
		scriptsja_galerie_stop();
	}
	if (!scriptsja_galerie_defilementgauche) {
		scriptsja_galerie_defilementgauche = true;
		//Longueur de la galerie
		$gallong = $j("#scriptsja_galerie_galerie").width();
		$partielong = $j("#scriptsja_galerie_partievisible").width();
		//Nombre d'images
		$nbimg = $j(document).find("#scriptsja_galerie_galerie img").size();
		$partieoffset = $j("#scriptsja_galerie_partievisible").offset();
		$galoffset = $j("#scriptsja_galerie_galerie").offset();
		$left = $galoffset.left - $partieoffset.left + ($gallong/$nbimg);
		if ($left < (-$gallong+$partielong)) {
			$left = -$gallong+$partielong;
		}
		if ($left > 0) {
			$left = 0;
		}
		$j("#scriptsja_galerie_galerie").animate( { 
	        left: $left
	    }, 700 );
	}
}

function scriptsja_galerie_imagesuivante() {
	//Stoppe l'animation en cours
	if (scriptsja_galerie_defilementgauche || scriptsja_galerie_defilementdroite) {
		scriptsja_galerie_stop();
	}
	if (!scriptsja_galerie_defilementdroite) {
		//Longueur de la galerie
		$gallong = $j("#scriptsja_galerie_galerie").width();
		$partielong = $j("#scriptsja_galerie_partievisible").width();
		//Nombre d'images
		$nbimg = $j(document).find("#scriptsja_galerie_galerie img").size();
		$partieoffset = $j("#scriptsja_galerie_partievisible").offset();
		$galoffset = $j("#scriptsja_galerie_galerie").offset();
		$left = $galoffset.left - $partieoffset.left - ($gallong/$nbimg);
		if ($left < (-$gallong+$partielong)) {
			$left = -$gallong+$partielong;
		}
		if ($left > 0) {
			$left = 0;
		}
		$j("#scriptsja_galerie_galerie").animate( { 
	        left: $left
	    }, 700 );
    }
}

function scriptsja_galerie_droite() {
	if (scriptsja_galerie_defilementgauche) {
		scriptsja_galerie_stop();
	}
	if (!scriptsja_galerie_defilementdroite) {
		//Longueur de la galerie
		$gallong = $j("#scriptsja_galerie_galerie").width();
		$partielong = $j("#scriptsja_galerie_partievisible").width();
		$left = -$gallong+$partielong;
		scriptsja_galerie_defilementdroite = true;
		$j("#scriptsja_galerie_galerie").animate( { 
	        left: $left
	    }, 12000 );
    }
}

function scriptsja_galerie_gauche() {
	if (scriptsja_galerie_defilementdroite) {
		scriptsja_galerie_stop();
	}
	if (!scriptsja_galerie_defilementgauche) {
		scriptsja_galerie_defilementgauche = true;
		$j("#scriptsja_galerie_galerie").animate( { 
	        left: 0
	    }, 12000 );
    }
}

function scriptsja_galerie_stop() {
	if (scriptsja_galerie_defilementdroite || scriptsja_galerie_defilementgauche) {
		$j("#scriptsja_galerie_galerie").stop();
		scriptsja_galerie_defilementgauche = false;
		scriptsja_galerie_defilementdroite = false;
	}

}

function scriptsja_galerie_defilement() {
   	//On découpe la zone de la galerie en longueur en 3
   	//Premier tiers : on fait défiler les images vers la droite
   	//Deuxième tiers : on arrête le défilement
   	//Troisième tiers : on fait défiler les images vers la gauche
	$tierspartielong = $j("#scriptsja_galerie_partievisible").width() / 3;
   	if (scriptsja_galerie_sourisxgal < $tierspartielong) {
   		scriptsja_galerie_gauche();
   	}
   	if (scriptsja_galerie_sourisxgal > $tierspartielong && scriptsja_galerie_sourisxgal < ($tierspartielong*2)) {
   		scriptsja_galerie_stop();
   	}
   	if (scriptsja_galerie_sourisxgal > ($tierspartielong*2)) {
   		scriptsja_galerie_droite();
   	}
}

//Dès que le DOM est chargé
$j(document).ready( function() {
	//Cache les images
	var scriptsja_galerie_partievisiblewidth = $j("#scriptsja_galerie_partievisible").css('width');
	$j("#scriptsja_galerie_partievisible").css('width', 0);
	
	//Ajout des événements sur les boutons
	$j("#scriptsja_galerie_debut").click( function() {
		if (scriptsja_galerie_defilementgauche || scriptsja_galerie_defilementdroite) {
			scriptsja_galerie_stop();
		}
		if (!scriptsja_galerie_defilementgauche) {
			scriptsja_galerie_defilementgauche = true;
			$j("#scriptsja_galerie_galerie").animate( { 
		        left: "0px"
		    }, 1500 );
	    }
		return false;
    });
    $j("#scriptsja_galerie_fin").click( function() {
    	if (scriptsja_galerie_defilementgauche || scriptsja_galerie_defilementdroite) {
			scriptsja_galerie_stop();
		}
		if (!scriptsja_galerie_defilementdroite) {
	    	scriptsja_galerie_defilementdroite = true;
	    	//Longueur de la galerie
			$gallong = $j("#scriptsja_galerie_galerie").width();
			$partielong = $j("#scriptsja_galerie_partievisible").width();
			$j("#scriptsja_galerie_galerie").animate( { 
		        left: -$gallong+$partielong
		    }, 1500 );
		}
	    	return false;
    });
    $j("#scriptsja_galerie_precedent").click( function() {
		scriptsja_galerie_imageprecedente();
		return false;
    });
    $j("#scriptsja_galerie_suivant").click( function() {
   		scriptsja_galerie_imagesuivante();
		return false;
    });
	
	//Sauvegarde la position du curseur dans la page
	$j("#scriptsja_galerie_galerie").mousemove( function(e) {
		//Position du curseur dans la page
    	scriptsja_galerie_sourisx = e.pageX;
    	//Position dans la galerie
    	$offset = $j("#scriptsja_galerie_partievisible").offset();
    	scriptsja_galerie_sourisxgal = scriptsja_galerie_sourisx - $offset.left;
    	if (scriptsja_galerie_galeriehover) {
    		scriptsja_galerie_defilement();
    	}
    });
	
	//Ajout de la possibilité de faire défiler les images en rollover
	$j("#scriptsja_galerie_galerie").hover(
		function() {
			//Over
			scriptsja_galerie_galeriehover = true;
	    },
	    function() {
	    	//Out
	    	scriptsja_galerie_galeriehover = false;
	    	scriptsja_galerie_stop();
	    }
    );
});

//Dès que la page est chargée
$j(window).load( function() {	
	//Redimensionnement
	$j(document).find("#scriptsja_galerie_galerie img").each(function(i) {
		$partiehauteur = $j("#scriptsja_galerie_partievisible").height();
		$partiehauteur -= 4; //longueur des bordures
		scriptsja_galerie_redimimage($j(this), $partiehauteur, $partiehauteur);
	});
	
	//Raffiche les images
	$j("#scriptsja_galerie_partievisible").css('width', scriptsja_galerie_partievisiblewidth);
	$j("#scriptsja_galerie_chargement").css('display', 'none');

	//Longueur de la galerie
	$gallong = $j("#scriptsja_galerie_galerie").width();
	$partielong = $j("#scriptsja_galerie_partievisible").width();
			
	//Placement de la vue au milieu de la galerie
	$j("#scriptsja_galerie_galerie").css('left',(-$gallong+$partielong)/2);
});
