

var delay= 50 ;
var timerID= null ;


/* Lance le défilement du texte vers le haut */
function scroll2Top( id, inc )
{
	cancelScroll();
	timerID= setInterval( "scrollDiv('"+id+"_corps',"+(-inc)+");", delay );
	placeBarre(id);	
}

/* Lance le défilement du texte vers le bas */
function scroll2Bottom( id, inc )
{
	cancelScroll() ;
	
	timerID= setInterval( "scrollDiv('"+id+"_corps',"+inc+");", delay );
	
	placeBarre(id);
}

var ie=document.all;
var nn6=document.getElementById&&!document.all;

var isdrag=false;
var x,y;
var dobj;

function movemouse(e)
{
var mycontent = document.getElementById(dobj.id + "_corps") ;
var mytop = document.getElementById(dobj.id + "_top") ;
var mybottom = document.getElementById(dobj.id + "_bottom") ;
	if (( mycontent != null ) && ( mytop != null ) && ( mybottom != null ))
	{
	minTop = mytop.height;
	maxTop = mycontent.clientHeight - dobj.height - mybottom.height;
	}
	
  if (isdrag)
  {
  	if (nn6) {
	vTop = ty + e.clientY - y;
		if ((vTop >= minTop) && (vTop <= maxTop))
		{
		dobj.style.top = vTop;
		mycontent.scrollTop = (dobj.style.top.replace('px','') - mytop.height) * (mycontent.scrollHeight - mycontent.clientHeight) / (mycontent.clientHeight - mytop.height - mybottom.height - dobj.height);
		}
	} else {
	vTop = ty + event.clientY - y;
		if ((vTop >= minTop) && (vTop <= maxTop))
		{
		dobj.style.top = vTop;
		mycontent.scrollTop = (dobj.style.top.replace('px','') - mytop.height) * (mycontent.scrollHeight - mycontent.clientHeight) / (mycontent.clientHeight - mytop.height - mybottom.height - dobj.height);
		}
	}
    return false;
  }
}

function selectmouse(e) 
{
  var fobj       = nn6 ? e.target : event.srcElement;
  var topelement = nn6 ? "HTML" : "BODY";

  while (fobj.tagName != topelement && fobj.className != "dragme")
  {
    fobj = nn6 ? fobj.parentNode : fobj.parentElement;
  }

  if (fobj.className=="dragme")
  {
    isdrag = true;
    dobj = fobj;
    tx = parseInt(dobj.style.left+0);
    ty = parseInt(dobj.style.top+0);
    x = nn6 ? e.clientX : event.clientX;
    y = nn6 ? e.clientY : event.clientY;
    document.onmousemove=movemouse;
    return false;
  }
}

document.onmousedown=selectmouse;
document.onmouseup=new Function("isdrag=false");

function placeBarre(id)
{
	var mycontent = document.getElementById(id + "_corps") ;
	var mybarre = document.getElementById(id) ;
	var mytop = document.getElementById(id + "_top") ;
	var mybottom = document.getElementById(id + "_bottom") ;
	
	if (( mybarre != null ) && ( mycontent != null ) && ( mytop != null ) && ( mybottom != null ))
	{
	mybarre.style.top = mytop.height + ( mycontent.scrollTop * (mycontent.clientHeight - mytop.height - mybottom.height - mybarre.height) / (mycontent.scrollHeight - mycontent.clientHeight) );
	}
}

/* Fonction qui fait défiler le texte. Elle est appelée toute seule
	toutes les "delay' milli secondes (voir les vars globales au
	début du script) */
function scrollDiv( id, inc )
{
	with ( document.getElementById(id) ) {
		if ( scrollTop+inc > scrollHeight-clientHeight ) {
			scrollTop= scrollHeight-clientHeight ;
			cancelScroll() ;
		}
		else if ( scrollTop+inc < 0 ) {
			scrollTop= 0 ;
			cancelScroll() ;
		}
		else
			scrollTop+= inc ;
	}
}

/* Arrete le défilement du texte */
function cancelScroll( p )
{
	if ( timerID != null ) {
		clearInterval( timerID ) ;
		timerID= null ;
	}
}

/* Cache les boutons si on a assez de place pour voir tout le
	texte sans scroller (à appeler via le onload dans body) */
function initButtons( id )
{
	var mydiv= document.getElementById(id+"_corps") ;
	if ( mydiv != null && mydiv.scrollHeight <= mydiv.clientHeight ) {	// hauteur doc <= hauteur dispo dans le conteneur
		document.getElementById(id+"_top").style.display= "none" ;
		document.getElementById(id).style.display= "none" ;
		document.getElementById(id+"_bottom").style.display= "none" ;
	}
}

var incScrollDivByMouseWheel= 40 ; /* Delta de défilement du calque pour chaque cran de la molette de la souris (on peut
										mettre ce qu'on veut, mais 40 est une valeur correcte (ça fait 3 lignes de sautées
										par cran de molette (ça ressemble aux réglages par défaut des molettes je crois
										(en tous cas moi ça me parait similaires aux autres progs ^^ (oui, faut que j'arrête
										avec les parenthèses imbriquées... (désolé ...)))))) */
var isPersoScrollEnabled= false ; /* false par défaut : ne pas éditer /!\ */

/* Handler pour le hook de l'événement onmousewheel (IE only!) */
function onMouseWheelHandler()
{
	/* mmm, pas terrible comme détection m'enfin à la base cette fonction n'était pas prévue pour appeler scrollDiv
	  (c'est de la récup du site de pimentic)*/
	var div= document.getElementById("monDiv")!=null ? "monDiv" : "liste_agenda2" ;
	if ( isPersoScrollEnabled ) {
		if ( event.wheelDelta >= 120 )
			scrollDiv( div, -incScrollDivByMouseWheel )
		else if ( event.wheelDelta <= -120 )
			scrollDiv( div, incScrollDivByMouseWheel )
		
		event.returnValue= false ;
	}
}