/*
 * Julien Duranleau
 * 
 * Dernière mise à jour : 12 juillet 2010
 * 
 * 
 * Fichier de contrôle des sliders personalisés dans le html.
 * 
 * Pour l'utiliser:
 * 		- avoir un div.slider contenant un div.scroll. (C'est l'intérieur de ces div qui scrollera)
 * 		- après le contenu, appelé la fonction initSlide() afin d'initialiser le tout
 */
 

var blocs_slide; // referance au bloc ayant la classe .slider
var clientX; // souris sur l'axe des x
var clientY; // souris sur l'axe des y

var mouvement;

function initSlide(vitesseSlide, vitesse_mouvement){

	if(!(vitesse_mouvement > 0)){
		vitesse_mouvement = 12;
	}
	
	if(!(vitesseSlide > 0)){
		vitesseSlide = 20;
	}
	
	$(".slide").remove();
	$(".scroll").css("top", "0px");
	$("body").mousemove(function(event){
		clientX = event.clientX;
		clientY = event.clientY;
	});
	blocs_slide = $(".slider");
	
	blocs_slide.append(' \
		<div class="slide"> \
			<div class="barre_slide"></div> \
			<div class="balle_slide"></div> \
			<img class="haut_slide" src="slide/flecheHaut.png" alt=""/> \
			<img class="bas_slide" src="slide/flecheBas.png" alt=""/> \
		</div> \
	');

	//alert($(".slider").height() +" < "+ $(".scroll").height())
	if($(".slider").height()  < $(".scroll").height()){ // si le contenu est trop grand (nécessite bien un slide)
		$(".balle_slide").disableSelection();
		
		$("div.scroll").parent().mousewheel(function(event, delta){
			var balle = $(".balle_slide");
			if(delta == -1){ // down
				forceDrag(parseInt(balle.css("top")) + vitesseSlide)
			}else if(delta == 1){
				forceDrag(parseInt(balle.css("top")) - vitesseSlide)
			}
		});
		$(".balle_slide").mousedown(function(event){
			var balle = $(this);
			var barre = $(".barre_slide")
			var scroll = $(".scroll");
			var barreOffset = barre.offset().top; // absolute top depuis haut page complète
			var intervalDrag = setInterval(function(){ // lors du drag du slider
				
				var position = clientY - barreOffset;
				if(position < 0){ // limite haut
					position = 0;
				}else if(position > barre.height() - balle.height()){ // limite bas
					position = barre.height() - balle.height();
				}
				$(".balle_slide").css("top", position); // actualise la position de la balle (drag)

				forceDrag(parseInt(balle.css("top")))
				
			}, 1000/24);
			$("body").mouseup(function(){ // stop drag
				clearInterval(intervalDrag);
			});
			return false; // désactive la sélection de texte
		});

		var enterframe;

		$(".haut_slide").mousedown(function(event){
			mouvement = -vitesse_mouvement;
			enterframe = setInterval(move, 1000/24);
			event.preventDefault();
		})
		$(".bas_slide").mousedown(function(event){
			mouvement = vitesse_mouvement;
			enterframe = setInterval(move, 1000/24);
			event.preventDefault();
		})
		$(document.body).mouseup(function(){
			mouvement = 0;
			clearInterval(enterframe);
		})

	}else{ // le contenu n'a pas de besoin de slider
		$(".slide").remove(); // supression du html dynamique précédement ajouté car pas de slide
	}
	function forceDrag(position){
		var balle = $(".balle");
		var barre = $(".barre_slide")
		var scroll = $(".scroll");
		//var barreOffset = barre.offset().top; // absolute top depuis haut page complète
			
		if(position < 0){ // limite haut
			position = 0;
		}else if(position > barre.height() - balle.height() - 5){ // limite bas
			position = barre.height() - balle.height() - 5;
		}
		$(".balle_slide").css("top", position); // actualise la position de la balle (drag)
				
		var ratio = position / barre.height(); // ratio qu'a la balle par rapport à la barre (0 à 1)
		
		scroll.css("top", -(ratio * (scroll.height() - barre.height() + balle.height()))); // scroll le texte selon le ratio
				
	}
	function move(){
		forceDrag(parseInt($(".balle_slide").css("top"))+mouvement);
	}
}

