// constantes :
var hBTcur = 22;
var hBTup = 17;
var hBTdw = 17;
var IntervalleAvantRepeat = 1000;
var topCadre = 130;

//globales
var Timer1;
var Timer2;
var OnDrag   = false;
var OnRepeat = false;

function clickOn(Sens){
	if (Timer2) clearTimeout(Timer2);
	Timer2 = setTimeout("clickRepeat("+Sens+");", IntervalleAvantRepeat);
}

function clickRepeat(Sens){
	OnRepeat = true;
	if (Timer2) clearTimeout(Timer2);
	Timer2 = setTimeout("moveLayer("+Sens+");", 50);
}

function clickOff(){
	OnRepeat = false;
	if (Timer2) clearTimeout(Timer2);
}

function startDrag(){
	OnDrag = true;
	
}
function endDrag(){
	OnDrag = false;
	// document.onmousemove=null;
}

function moveLayer(Sens) {

	Objet=document.getElementById("contenu_central");
	if(parseInt(Objet.style.top) + Sens > 0)  {
		return;
	} else if(parseInt(Objet.style.top) + Sens < -(Objet.offsetHeight-document.getElementById("cadre_central").offsetHeight)) {
		return;
	} else {
        	Objet.style.top = (parseInt(Objet.style.top) + Sens) + "px";

		var _Y2 = parseInt(document.getElementById("cadre_central").style.height);
		var _h1 = -parseInt(document.getElementById("contenu_central").style.top);
		var _H2 = document.getElementById("contenu_central").offsetHeight;

		_y1 = hBTup + _h1 * (_Y2 - hBTdw - hBTup - hBTcur ) / ( _H2 - _Y2 ) ;
		document.getElementById("curseur").style.top = _y1;

		// calcul barres intérieures :
		document.getElementById("scrollup").style.height = _y1 - hBTup;
		document.getElementById("scrolldw").style.top = _y1 + hBTcur;
		sdh = _Y2 - _y1 -hBTcur - hBTdw;
		if (sdh < 0) sdh = 0;
		document.getElementById("scrolldw").style.height = sdh;

	}
	if (OnRepeat) {
		if (Timer2) clearTimeout(Timer2);
		Timer2 = setTimeout("moveLayer("+Sens+");", 50);
	}
}

function mouse(event) {
	if (!event) event = window.event;
	mouse_x = event.clientX;
	mouse_y = event.clientY;

	text_select = '';
	if (window.getSelection) {
        	text_select = window.getSelection();
   	} else if (document.getSelection) {
        	text_select = document.getSelection();
   	} else if (document.selection) {
		text_select = document.selection.createRange().text;
	}

	// on ne traite les mouvements de selection de texte si la souris reste dans le cadre :
	if ((mouse_y>topCadre) && (mouse_y < topCadre + parseInt(document.getElementById("cadre_central").style.height))){text_select = '';}

	if ( (OnDrag) || (text_select!='') ) {
		if (Timer1) clearTimeout(Timer1);
		
		top_curseur = mouse_y - topCadre - hBTcur/2;
		if (top_curseur < hBTup){
			top_curseur = hBTup;
			endDrag();
		}
		if (top_curseur > parseInt(document.getElementById("cadre_central").style.height) - hBTdw) {
			top_curseur = parseInt(document.getElementById("cadre_central").style.height) - hBTdw;
			endDrag();
		}
		decalage = parseInt(document.getElementById("curseur").style.top) - top_curseur;
		Timer1 = setTimeout('endDrag()', 500);

		if ((text_select == '') && (decalage)) moveLayer(decalage);
		if ((text_select != '') && (decalage>0)) setTimeout("moveLayer(10);", 10);
		if ((text_select != '') && (decalage<0)) setTimeout("moveLayer(-10);", 10);
	}
}

function wheel(event){
	var delta = 0;
	if (!event) event = window.event;
        if (event.wheelDelta) {
		delta = event.wheelDelta/120;
		if (window.opera) delta = -delta;
	} else if (event.detail) {
		delta = -event.detail/3;
        }
	if (delta) moveLayer(20 * delta);
	if (event.preventDefault) event.preventDefault();
	event.returnValue = false;
}