// Fonctions Javascript
<!--

// Détection du navigateur
var ie4 = (document.all) ? true : false;
var ns4 = (document.layers) ? true : false;
var ns6 = (document.getElementById && !document.all) ? true : false;

var hexc = new Array('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F')
var timer = new Array();

// Fonction de création d'objet possédant les propriétés largeur et hauteur
function CreerDimensions(largeur,hauteur) {
	this.largeur=largeur;
	this.hauteur=hauteur;
}

// Switch d'affichage pour les menus
function switch_display(param)
{
	var element = document.getElementById(param).style;
	var imgElement = document.getElementById('switch_'+param);

	// Si la visibility de l'élément à switcher est sur visible ou pas définie on le cache lors du clic
	if ((element.visibility=='visible') || element.visibility=='') {
	
		//alert('cache ' + param);
		//alert(document.getElementById(param).innerHTML);
	
		element.visibility ='hidden';
		element.display ='none';
		// Si aucune image n'est associée à l'élément switché, on ne change pas l'image
		if (imgElement) { imgElement.src='/ressources/developper.gif'; }
	// Si la visibility de l'élément est définie et pas à visible on le montre lors du clic
	} else {

		//alert('affiche ' + param);
		//alert(document.getElementById(param).innerHTML);
		
		element.visibility = 'visible';
		element.display = '';
		// Si aucune image n'est associée à l'élément switché, on ne change pas l'image
		if (imgElement) { imgElement.src='/ressources/reduire.gif'; }
	}		
	return false ;
}

/* function switch_display(table_id)
{
	var tbl = window.document.getElementById('tbl'+table_id);
	var img = window.document.getElementById('img'+table_id);
	if (tbl.className=='visible')
	{
		tbl.className='invisible';
		img.src='/img/ico_more.gif';
	}
	else
	{
		tbl.className='visible';
		img.src='/img/ico_less.gif';
	}		
	return false ;
} */

// Fonction de masquage du layer mis en paramètre
// -> lay : layer à cacher
function hidelayer(lay) {
	if (ie4) { document.all[lay].style.visibility = "hidden"; }
	if (ns4) { document.layers[lay].visibility = "hide"; }
	if (ns6) { document.getElementById(lay).style.visibility = "hidden"; }
}

// Affichage d'un layer et positionnement au milieu de la fenêtre
function showlayer(lay) {

	// Récupération de la taille de la fenêtre dans un objet
	fenetre = getWindowSize();
	// Récupération de la position de scroll dans un objet
	position = getScroll();
	// Récupération des dimensions du layer
	layer = getLayerSize(lay);
	// Définition de la marge autour de l'image lorsqu'elle est trop grande
	marge = 20;
	// Calcul de 
	margeLeft = (fenetre.largeur - layer.largeur) / 2;
	margeTop = (fenetre.hauteur - layer.hauteur) / 2;
	
	// Si une des dimension de l'image est plus grande que (la dimension de la fenetre moins deux fois la marge)
/*	if (layer.largeur > (fenetre.largeur - (marge * 2)) || layer.hauteur > (fenetre.hauteur - (marge * 2))) {
		
		facteur = 1;
		facteur1 = (fenetre.largeur - marge * 2) / layer.largeur;
		facteur2 = (fenetre.hauteur - marge * 2) / layer.hauteur;
		
		if (facteur1 > facteur2) {
			facteur = facteur2;
			margeTop = marge;
		} else {
			facteur = facteur1;
			margeLeft = marge;
		}
		resizeLayer("grandeimage",Math.round(layer.largeur*facteur),Math.round(layer.hauteur*facteur));
		layer = getLayerSize(lay);
		margeLeft = Math.round((fenetre.largeur - layer.largeur) / 2 + position.largeur);
		margeTop = Math.round((fenetre.hauteur - layer.hauteur) / 2 + position.hauteur);
	} else {*/
		margeTop = position.hauteur + (fenetre.hauteur-layer.hauteur)/2;
		margeLeft = position.largeur + (fenetre.largeur-layer.largeur)/2;
	//}
	
	
	// Déplacement du layer et affichage
	if (ie4) {
		moveLayer(lay,margeLeft,margeTop);
		document.all[lay].style.visibility = "visible";
	}
	if (ns4) {
		document.layers[lay].visibility = "show";
	}
	if (ns6) {
		moveLayer(lay,margeLeft,margeTop);
		document.getElementById(lay).style.visibility = "visible";
	}
}

// Récupération de la largeur et de la hauteur de la fenêtre
// <- Retourne un objet avec deux propriétés largeur et hauteur
function getWindowSize() {
	var myWidth = 0, myHeight = 0;
	if (typeof(window.innerWidth) == 'number' ) {
		//Non-IE
		myWidth = window.innerWidth;
		myHeight = window.innerHeight;
	} else if (document.documentElement &&	(document.documentElement.clientWidth || document.documentElement.clientHeight )) {
		//IE 6+ in 'standards compliant mode'
		myWidth = document.documentElement.clientWidth;
		myHeight = document.documentElement.clientHeight;
	} else if ( document.body && (document.body.clientWidth || document.body.clientHeight)) {
		//IE 4 compatible
		myWidth = document.body.clientWidth;
		myHeight = document.body.clientHeight;
	}
	var objet=new CreerDimensions(myWidth,myHeight);
	return objet;
}

// Récupération de la position scrollée
// <- Retourne un objet avec deux propriétés largeur et hauteur
function getScroll() {
	var scrOfX = 0, scrOfY = 0;
	if(typeof( window.pageYOffset ) == 'number' ) {
		//Netscape compliant
		scrOfY = window.pageYOffset;
		scrOfX = window.pageXOffset;
	} else if(document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
		//DOM compliant
		scrOfY = document.body.scrollTop;
		scrOfX = document.body.scrollLeft;
	} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
		//IE6 standards compliant mode
		scrOfY = document.documentElement.scrollTop;
		scrOfX = document.documentElement.scrollLeft;
	}
	var objet=new CreerDimensions(scrOfX,scrOfY);
	return objet;
}

// Redimensionnement d'un layer
// -> lay : nom du layer à redimensionner
// -> largeur : largeur à donner
// -> hauteur : hauteur à donner
// <- Aucun retour
function resizeLayer(lay,largeur,hauteur) {
	if (ie4) {
		document.all[lay].style.width = largeur + "px";
		document.all[lay].style.height = hauteur + "px";
	}
	if (ns6) {
		document.getElementById(lay).style.width = largeur + "px";
		document.getElementById(lay).style.height = hauteur + "px";
	}
}

// Déplacement d'un layer
// -> lay : nom du layer à déplacer
// -> largeur : décalage depuis la gauche
// -> hauteur : décalage depuis le haut
// <- Aucun retour
function moveLayer(lay,largeur,hauteur) {
	if (ie4) {
		document.all[lay].style.left = largeur;
		document.all[lay].style.top = hauteur;
	}
	if (ns6) {
		document.getElementById(lay).style.left = margeLeft + "px";
		document.getElementById(lay).style.top = margeTop + "px";
	}
}

// Recherche des dimensions d'un layer
// -> lay : nom du layer dont on cherche les dimensions
// <- Retourne un objet avec les propriétés largeur et hauteur
function getLayerSize(lay) {
	if (ie4) {
		var layWidth = parseInt(document.all[lay].offsetWidth);
		var layHeight = parseInt(document.all[lay].offsetHeight);
	}
	if (ns4) {
		var layWidth = parseInt(document.layers[lay].offsetWidth);
		var layWidth = parseInt(document.layers[lay].offsetHeight);
	}
	if (ns6) {
		var layWidth = parseInt(document.getElementById(lay).offsetWidth);
		var layHeight = parseInt(document.getElementById(lay).offsetHeight);
	}
	var objet = new CreerDimensions(layWidth,layHeight);
	return objet;
}


// Ecriture du contenu de txt dans un layer
// -> lay : nom du layer dans lequel il faut écrire
// -> txt : chaîne de texte à écrire dans lay
// <- Aucun retour
function writetolayer(lay,txt) {
	hidelayer(lay)
	if (ie4) {
		document.all[lay].innerHTML = txt;
	}
	if (ns4) {
		document[lay].document.write(txt);
		document[lay].document.close();
	}
	if (ns6) {
		over = document.getElementById([lay]);
		range = document.createRange();
		range.setStartBefore(over);
		domfrag = range.createContextualFragment(txt);
		while (over.hasChildNodes()) {
			over.removeChild(over.lastChild);
		}
		over.appendChild(domfrag);
	}
	pause(100);
	showlayer(lay);
}

// Effectue une pause
// -> Amount : temps en millisecondes de la pause
// <- Aucun retour
function pause(Amount)
{
	d = new Date() //today's date
	while (1) {
		mill=new Date() // Date Now
		diff = mill-d //difference in milliseconds
		if (diff > Amount) { break; }
	}
}

// Création de l'équivalent de "target=_blank" qui ne doit plus être utilisé
function externalLinks() { 
 if (!document.getElementsByTagName) return; 
 var anchors = document.getElementsByTagName("a"); 
 for (var i=0; i<anchors.length; i++) { 
   var anchor = anchors[i]; 
   if (anchor.getAttribute("href") && 
       anchor.getAttribute("rel") == "external") 
     anchor.target = "_blank"; 
 } 
} 
window.onload = externalLinks;


var tXHR = new Array();
formulaire = document.forms[0];

function connectionChat() {
	if (formulaire.elements['boutonConnection'].value == 'Connection') {
		if (formulaire.elements['pseudo'].value != '') {
			if (formulaire.elements['pseudo'].value.length <= 10) {
				clearTimeout(timer1);
				clearTimeout(timer2);
				tXHR[0].resetRequete();
				tXHR[0].getFichierPost('connection.php5',[['pseudo',formulaire.elements['pseudo'].value]]);
			}
			else {
				alert('Le pseudonyme ne doit comporter au maximum que 10 caractères !');
				formulaire.elements['pseudo'].focus();
			}
		}
		else {
			alert('Le pseudonyme n\'est pas indiqué !');
			formulaire.elements['pseudo'].focus();
		}
	}
	else if (window.confirm('Êtes-vous sûr de vouloir vous déconnecter ?')) {
		clearTimeout(timer1);
		clearTimeout(timer2);
		tXHR[0].resetRequete();
		tXHR[0].getFichierPost('deconnection.php5',[['pseudo',formulaire.elements['pseudo'].value]]);
	}
	return true;
}






// Application d'une couleur à l'élément element
function applyColor(redrgb,greenrgb,bluergb,element) {
	redcol_1 = hexc[Math.floor(redrgb/16)];
	redcol_2 = hexc[redrgb%16];
	greencol_1 = hexc[Math.floor(greenrgb/16)];
	greencol_2 = hexc[greenrgb%16];
	bluecol_1 = hexc[Math.floor(bluergb/16)];
	bluecol_2 = hexc[bluergb%16];
	var backcolor="#"+redcol_1+redcol_2+greencol_1+greencol_2+bluecol_1+bluecol_2;
	document.getElementById(element).style.background = backcolor;
}

// Fond Blanc -> Vert -> Blanc
function highlight(element,sens,rouge,vert,bleu) {
	var rougecible = 210;
	var vertcible = 254;
	var bleucible = 210;
	
	if (typeof(sens) == "undefined") sens = 1;
	if (typeof(rouge) == "undefined") rouge = 254;
	if (typeof(vert) == "undefined") vert = 254;
	if (typeof(bleu) == "undefined") bleu = 254;
	
	
	if (sens == 1) {
		if (rouge > rougecible) rouge = rouge - 1;
		if (vert > vertcible) vert = vert - 1;
		if (bleu > bleucible) bleu = bleu - 1;
		if ((rouge == rougecible) && (vert == vertcible) && (bleu == bleucible)) sens = 2;
	} else {
		if (rouge < 254) rouge = parseInt(rouge) + 1;
		if (vert < 254) vert = parseInt(vert) + 1;
		if (bleu < 254) bleu = parseInt(bleu) + 1;
	}
	applyColor(rouge,vert,bleu,element);
	if ((rouge == 254) && (vert == 254) && (bleu == 254)) {
		clearTimeout(timer[element]);
		sens = 1;
	} else {
		timer[element] = setTimeout("highlight('" + element + "','" + sens + "','" + rouge + "','" + vert + "','" + bleu + "')",40);
	}
}