var contenuY, contenuYmin, contenuYmax;
var curseurY, curseurYmin, curseurYmax;
var sliding = false;

function initialiserAscenseur(contenuFixe, contenuGlissant, pas, ascenseur, curseur, margeCurseur)
{
	// Calcul des limites Y du contenu
	marginTop = $(contenuGlissant).css("margin-top");
	marginTop = marginTop.substr(0, marginTop.length-2);
	marginBottom = $(contenuGlissant).css("margin-bottom");
	marginBottom = marginBottom.substr(0, marginBottom.length-2);	
	contenuYmin = -$(contenuGlissant).height() -marginTop -marginBottom;	
	contenuYmin += $(contenuFixe).height();
	contenuYmax = 0;	
	
	if (contenuYmax - contenuYmin <= 0) 
	{
		$(curseur+","+ascenseur).hide();
		return;
	}
	
	// Calcul des limites Y du curseur
	curseurYmin = margeCurseur;
	curseurYmax = $(contenuFixe).height() - $(curseur).height() - margeCurseur;		
	
	// Position initiale du contenu et de l'ascenseur
	contenuY = contenuYmax;
	curseurY = curseurYmin;
	$(contenuGlissant).css("top", contenuY+"px");
	$(ascenseur).css("top", "0px");
	$(curseur).css("top", curseurY+"px");
	
	// Apparence du pointeur sur le curseur 
	$(curseur+","+ascenseur).css("cursor", "pointer");
	
	// Création d'un premier plan invisible, actif pendant le glisser
	$("body").append("<div id='premierPlanInvisible'></div>");
	$("#premierPlanInvisible").hide().css({"position":"absolute", "z-index":"500", "top":"0", "left":"0", "background-color":"black"}).fadeTo(0,0);
		
	// Gestion de la molette de la souris
	$(contenuGlissant+","+ascenseur+","+curseur).mousewheel(function(e, sens){
		contenuY += (sens > 0) ? pas : -pas; 
		if (contenuY > contenuYmax) contenuY = contenuYmax;
		if (contenuY < contenuYmin) contenuY = contenuYmin;
		$(contenuGlissant).css("top", contenuY+"px");
		positionnerCurseur(curseur);
	});
	
	// Gestion du clic sur le rail de l'ascenseur
	$(ascenseur).click(function(e){
		y = e.pageY - $(this).parent().offset().top;
		curseurY = y - ($(curseur).height() >> 1);
		if (curseurY < curseurYmin) curseurY = curseurYmin;
		if (curseurY > curseurYmax) curseurY = curseurYmax;
		$(curseur).css("top", curseurY+"px");
		positionnerContenu(contenuGlissant);
	});
	
	// Gestion du cliqué / glissé sur le curseur
	$(curseur).mousedown(function(e){sliding = true; afficherPremierPlanInvisible();});
		
	$("*").mousemove(function(e){		
		if (sliding) {
			y = e.pageY - $(contenuFixe).offset().top;						
			curseurY = y - ($(curseur).height() >> 1);
			if (curseurY < curseurYmin) curseurY = curseurYmin;
			if (curseurY > curseurYmax) curseurY = curseurYmax;
			$(curseur).css("top", curseurY+"px");
			positionnerContenu(contenuGlissant);		
			$("body").trigger("focus");
		}
	}).mouseup(function(){
		if (sliding) {			
			sliding=false;
			$("#premierPlanInvisible").css({"width":"0px", "height":"0px"}).hide();						
		}
	});
}

// Positionner le curseur en fonction de la position du contenu
function positionnerCurseur(curseur)
{
	p = contenuY / (contenuYmin - contenuYmax);
	curseurY = Math.round(curseurYmin + p*(curseurYmax - curseurYmin));	
	$(curseur).css("top", curseurY+"px");
}

function positionnerContenu(contenuGlissant)
{
	p = (curseurY - curseurYmin) / (curseurYmax - curseurYmin);		
	contenuY = Math.round(contenuYmax + p*(contenuYmin - contenuYmax));
	$(contenuGlissant).css("top", contenuY+"px");
}

function afficherPremierPlanInvisible()
{
	$("#premierPlanInvisible")
	.css({"width":$(window).width()+"px", "height":$(window).height()+"px"})
	.show();
}

