// JavaScript Document

// Gestion du click dans les events move / Réinit sur focus
var boutonEnfonce = false;
document.onmousedown = function() { boutonEnfonce = true; }
document.onmouseup = function() { boutonEnfonce = false; }

// ----------------------------------------------------------
// Fonctions générales
// ----------------------------------------------------------

// Affichage ou non de la communication avec le serveur
function aff_communique(affiche) {
	if (document.getElementById("communique"))
		document.getElementById("communique").style.visibility = (affiche ? "visible" : "hidden");
}

// Création d'un objet XMLHTTPRequest
function creer_XHR(url) {
	aff_communique(1);
	var oXHR = null; 
	if(window.XMLHttpRequest) 			oXHR = new XMLHttpRequest(); 
	else if(window.ActiveXObject)		oXHR = new ActiveXObject("Microsoft.XMLHTTP"); 
	oXHR.open("POST", url, true); 
	return oXHR;
}

// Déplacement d'une fenetre
var offsetX = 0; var offsetY = 0;
function deplace_fenetre(fenetre, e) {
	if (boutonEnfonce) {
		var x = 0; var y = 0;
		if (e.x != null && e.y != null) 			{ x = e.x; 			y = e.y; }
		if (e.clientX != null && e.clientY != null) { x = e.clientX; 	y = e.clientY; }
		if (!offsetX && !offsetY) { 
			offsetX = (x - document.getElementById(fenetre).offsetLeft); 
			offsetY = (y - document.getElementById(fenetre).offsetTop); 
		}
		document.getElementById(fenetre).style.left = (x - offsetX).toString()+"px";
		document.getElementById(fenetre).style.top = (y - offsetY).toString()+"px";
	} else {
		offsetX = 0; offsetY = 0;
	}
}
// Affichage d'une fenetre
function affiche_fenetre(fenetre, e, url, affiche) {
	var opacite = getOpac(fenetre);
	if (affiche == 1 && opacite == 0) {
		var x = 0;
		var y = 0;
		if (e.x != null && e.y != null) { x = e.x; y = e.y; }
		if (e.clientX != null && e.clientY != null) { x = e.clientX; y = e.clientY; }
		document.getElementById(fenetre).style.left = (x>parseFloat(document.getElementById(fenetre).style.width)+20?
														(x-10-parseFloat(document.getElementById(fenetre).style.width)):(x+10)).toString()+"px";
		document.getElementById(fenetre).style.top = (y>parseFloat(document.getElementById(fenetre).style.height)+20?
														(y-10-parseFloat(document.getElementById(fenetre).style.height)):(y+10)).toString()+"px";
	}
	if (!url) {
		if (affiche == 2) {
			opacity(fenetre, opacite, (opacite==100?80:100), 1000);
		} else
			opacity(fenetre, opacite, (affiche?80:0), 1000);
	} else {
		var xhr_object = creer_XHR(url);
		xhr_object.onreadystatechange = function() { 
			if(xhr_object.readyState == 4) {
				document.getElementById(fenetre+"_content").innerHTML = xhr_object.responseText;
				if ((opacite == 0 && affiche) || (opacite > 0 && !affiche))
					opacity(fenetre, (affiche?0:80), (affiche?80:0), 1000);
				aff_communique(0);
			}
		} 
		xhr_object.send(null); 
	}
}
// Enlever les espaces à gauche et à droite
function trim(chaine)
{
	return chaine.replace(/^\s+/g,'').replace(/\s+$/g,'')
}
function zeropad(chaine, longueur) {
	while (chaine.length < longueur) {
		chaine = "0"+chaine;
	}
	return chaine;
}
// Fondu sur un div
function opacity(id, opacStart, opacEnd, millisec) {
	changeOpac(opacStart, id);
	var speed = Math.round(millisec / 100);
    var timer = 0;
    if(opacStart > opacEnd) {
        for(i = opacStart; i >= opacEnd; i--) {
            setTimeout("changeOpac(" + i + ",'" + id + "')", (timer * speed));
            timer++;
        }
    } else if(opacStart < opacEnd) {
        for(i = opacStart; i <= opacEnd; i++) {
            setTimeout("changeOpac(" + i + ",'" + id + "')", (timer * speed));
            timer++;
        }
    }
}
// Changement d'opacity pour les différents browsers web
function changeOpac(opacity, id) {
    var object = document.getElementById(id).style;
    object.opacity = (opacity / 100);
    object.MozOpacity = (opacity / 100);
    object.KhtmlOpacity = (opacity / 100);
    object.filter = "alpha(opacity=" + opacity + ")";
	document.getElementById(id).style.visibility = (opacity == 0?"hidden":"visible");
} 
// Récup de l'opacity courante pour les différents browsers web
function getOpac(id) {
	if (!document.getElementById(id)) alert("Erreur ! getOpac(id) : id n'est pas un identifiant valide (id="+id);
    var object = document.getElementById(id).style;
    if (object.opacity) 			return object.opacity * 100;
    else if (object.MozOpacity) 	return object.MozOpacity * 100;
    else if (object.KhtmlOpacity) 	return object.KhtmlOpacity * 100;
	else 							return 0;
}
