/* Fonctions JavaScript pour site Arcana Percipio
Sources:	JavaScript - MicroApplication
			Site de Erik Bosrup (www.bosrup.com/web/overlib)
*/	

// Variables globales
var dxSouris = 15; // Décalage entre le pointeur de la souris et la boîte message
var widthMess = 250; // Largeur de la boîte message (serait-il possible de la calculer dynamiquement ?)
var y0 = 153; // Ordonnée zéro des boutons de côté
var K_COULEUR_FOND_MESSAGE = "#6E07F1"; // Couleur de fond de la boîte message
// Détection des navigateurs
var ns4 = (document.layers) ? true: false; // Netscape 4.0
var nav6 = (document.getElementById) ? true: false; // Navigateurs compatibles w3c
var ieX = (document.all) ? true: false; // Internet Explorer 4+
var ie5 = ieX && ((navigator.userAgent.indexOf('MSIE 5') > 0) || (navigator.userAgent.indexOf('MSIE 6') > 0)); // IE5+
var minuterie = 0;
var minuterieFeedback = 0;
var divMess = null;

function lancerMinuterie() {
	if (minuterie) {window.clearInterval(minuterie);}
	minuterie = window.setInterval("scrollingBtns()", 100);
}

function afficherFeedback() {
	var posX = 0;
	if (minuterieFeedback) {window.clearInterval(minuterieFeedback);}
	if (nav6) {posX = parseInt(document.getElementById("feedback").style.right);}
	else if (ieX) {posX = document.all["feedback"].style.right;}
	else if (ns4) {posX = document.layers["feedback"].right;}
	if (! posX) {return;}
	minuterieFeedback = window.setInterval("scrollingFeedback(10)", 50);
}

function masquerFeedback() {
	if (minuterieFeedback) {window.clearInterval(minuterieFeedback);}
	minuterieFeedback = window.setInterval("scrollingFeedback(-10)", 50);
}

function scrollingFeedback(delta) {
	var posX = 0;
	if (nav6) {
		document.getElementById("feedback").style.right = parseInt(document.getElementById("feedback").style.right) + delta + "px";
		posX = parseInt(document.getElementById("feedback").style.right);
		}
	else if (ieX) {
		document.all["feedback"].style.right += delta;
		posX = document.all["feedback"].style.right;
		}
	else if (ns4) {
		document.layers["feedback"].right += delta;
		posX = document.layers["feedback"].right;
		}
	if (((delta < 0) && (posX == -250)) || ((delta > 0) && (posX == 0))) {window.clearInterval(minuterieFeedback);}	
}

function scrollingBtns() {
	var posYCalque = 0;
	if (nav6) {posYCalque = parseInt(document.getElementById("btns").style.top);}
		else if (ieX) {posYCalque = parseInt(document.all["btns"].style.top);}
		else if (ns4) {posYCalque = parseInt(document.layers["btns"].top + 0) + 0;}
	var posYFenetre = 0;
	if (self.pageYOffset) {posYFenetre = parseInt(window.pageYOffset);}
		else if (document.documentElement && document.documentElement.scrollTop)
			{posYFenetre = document.documentElement.scrollTop;}
		else if (document.body) {posYFenetre = document.body.scrollTop;}
	var delta, correction = 0;
	posYCalque = posYCalque - y0;
	if (posYFenetre < 0) {delta = posYCalque;} else {delta = posYCalque - posYFenetre;}
	if ((Math.abs(delta) > 200) || (Math.abs(delta) < 2)) {correction = - delta;}
		else if (delta < 0) {correction = 2;}
		else if (delta > 0) {correction = -2;}
	if (nav6) {
		document.getElementById("btns").style.top = parseInt(document.getElementById("btns").style.top) + correction + "px";
		document.getElementById("feedback").style.top = parseInt(document.getElementById("feedback").style.top) + correction + "px";
		}
	else if (ieX) {
		document.all["btns"].style.top += correction;
		document.all["feedback"].style.top += correction;
		}
	else if (ns4) {
		document.layers["btns"].top += correction;
		document.layers["feedback"].top += correction;
		}
}

function affMess(titre, texte, couleur) {
/* 
Fonction permettant l'affichage contextuel d'un message dans le conteneur <DIV id="message">
Utilise la feuille de style ap-gen.css
fermer: booleen indiquant la présence du bouton fermeture
*/
	// divMess: objet permettant de manipuler le calque DIV
	// Ecoute du mouvement de la souris afin de suivre son déplacement
	if (ns4) {
		divMess = document.layers["message"];
		document.captureEvents(Event.MOUSEMOVE);
		if (couleur != undefined) {divMess.bgColor = couleur;} else {divMess.bgColor = K_COULEUR_FOND_MESSAGE;}
	}
	else if (nav6) {
		divMess = document.getElementById("message");
		if (! ieX) {document.addEventListener("mousemove", document.onmousemove, true);}
		if (couleur != undefined) {divMess.style.backgroundColor = couleur;} 
			else {divMess.style.backgroundColor = K_COULEUR_FOND_MESSAGE;}
	}
	else if (ieX) {
		divMess = document.all["message"];
		if (couleur != undefined) {divMess.style.backgroundColor = couleur;} 
			else {divMess.style.backgroundColor = K_COULEUR_FOND_MESSAGE;}
	}
	document.onmousemove = traquerSouris;
	// Formatage du message
	var html = "";
	if (titre != "") {html = "<p class=\"titre\">" + titre + "</p>";}
	html += texte;
	// Affectation du message au calque et affichage
	if (ns4) {
		with (divMess.document) {write(html); close();}
		divMess.visibility = "show";
	}
	else if (ieX) {
		divMess.innerHTML = html;
		divMess.style.visibility = "visible";
	}
	else if (nav6) {
		if (divMess.innerHTML) {divMess.innerHTML = html;}
		else { // Navigateurs strictement WC3 (ne supportant pas innerHTML)
			range = document.createRange();
			range.setStartBefore(divMess);
			domFrag = range.createContextualFragment(html);
			while (divMess.hasChildNodes()) {divMess.removeChild(divMess.lastChild)}
			divMess.appendChild(domFrag);			
		}
		divMess.style.visibility = "visible";
	}
}

function effMess() {
// Fonction effaçant le message
	// Effacement du calque message et annulation du traçage souris
	if (divMess == null) {return;}
	if (ns4) {
		document.releaseEvents(Event.MOUSEMOVE);
		divMess.document.write("");
		divMess.document.close();
		divMess.visibility = "hide";
		}
	else if (ieX) {
		document.onmousemove = null;
		divMess.style.visibility = "hidden";
		}
	else if (nav6) {
		document.removeEventListener("mousemove", document.onmousemove, true);
		document.onmousemove = null;
		divMess.style.visibility = "hidden";
		} 
}

function traquerSouris(e) {
// Fonction traquant le pointeur de la souris 
	// Détermination des coordonnées de la souris
	if (ieX) {var x = event.clientX + document.body.scrollLeft; var y = event.clientY + document.body.scrollTop;}
	else if (ns4 || nav6) {var x = e.pageX; var y = e.pageY;}
	// Détermination du scrolling
//	xScroll = (ieX) ? document.body.scrollLeft : window.pageXOffset;
//	yScroll = (ieX) ? document.body.scrollTop : window.pageYOffset;
	// Détermination de la position du message
	var widthFenetre = (ieX) ? document.body.offsetWidth : window.innerWidth;
	x = (x + dxSouris + widthMess + 50> widthFenetre) ? x - dxSouris - widthMess: x + dxSouris;
	y = y + 10;
	// Repositionnement du calque
	if (nav6) {divMess.style.left = x + "px"; divMess.style.top = y + "px";}
	else if (ns4 || ieX) {divMess.left = x; divMess.top = y;}
}