/****************************************************************************************
*	Fichier : panoramic.js
*	Auteur : Ricou47 (www.codes-sources.com)
*	Role : permet le défilement d'une zone <div> dans laquelle on peut afficher tout
*		type de contenu (texte, liens, images,...) en fonction des mouvements 
		de la souris
*	Version : 1.0
*
/***************************************************************************************/

var middle=Math.floor((screen.availWidth) / 2);
var offsetLeft=0;
var dynamicZone=null;
var pitch=0;
var x=middle;
var trigger=false;

// Valeurs à modifier éventuellement :
var resol=1;		// == Résolution du déplacement (doit être >=1)
var hysteresis=200;	// == Distance en pixels entre le centre et les frontières 
			// de la zone morte (zone dans laquelle le curseur ne fait pas déplacer
			// la zone dynamique) (doit être >=0)
var timeOffset=50;	// == Durée entre deux déplacements en ms (doit être >=0)
var width=2200;		// == Largeur de l'objet à déplacer en pixels (doit être >=0)

// Calcule la position du curseur
function position(e){
// On ne s'attache qu'au déplacement horizontal, donc à la coordonnée horizontale
x = (navigator.appName.substring(0,3) == "Net") ? e.pageX : event.x+document.body.scrollLeft;
//var y = (navigator.appName.substring(0,3) == "Net") ? e.pageY : event.y+document.body.scrollTop;
}

// Calcule la nouvelle position et déplace la zone dynamique
function move(){
	if(dynamicZone==null){
		dynamicZone=findDOM('dynamicZone',0);
	}

	// Calcul de l'éventuel mouvement
	if(Math.abs(x-middle)>hysteresis && trigger){
		pitch=((Math.abs(x-middle)-hysteresis)^resol)/1000;
		offsetLeft=Math.max(Math.min(offsetLeft+((-1)^(x-middle))*pitch,0),2*middle-width);
		dynamicZone.style.left=offsetLeft;
	}
	// Appel récursif à la fonction de déplacement
	setTimeout('move()',timeOffset);
}

// Fonction (dés)activant le déplacement
function trigMove(value){
	trigger=value;
}

document.onmousemove = position;
document.onload = move();


