// ************************************
// *** Code appartenant à evoweb.fr ***
// ************************************

var browserName = navigator.appName;
var browserVer = parseInt(navigator.appVersion);
var sauve_contenu = new Array();


/* ------------------------------
	--- Gestion des évènements ---
	------------------------------ */

// Ajoute un évènement à un élement
function addListener(element, baseName, handler) {
	if (element.addEventListener)
		element.addEventListener(baseName, handler, false);
	else if (element.attachEvent)
		element.attachEvent('on'+baseName, handler);
}

// Enlève un évènement à un élement
function removeListener(element,baseName, handler) {
	if(element.removeEventListener)
		element.removeEventListener(baseName,handler,false);
	else if (element.detachEvent) {
		element.detachEvent('on'+baseName, handler);
	}
}

//Rercherche dans le DOM pour moteur Mozilla
function containsDOM (container, containee) {
	var isParent = false;
	do {
		if ((isParent = container == containee))
			break;
		containee = containee.parentNode;
	}
	while (containee != null);
	return isParent;
}

// On cherche si l'élément envoyé à l'entrée est enfant d'un élément.
function checkMouseEnter (element, evt) {
	if (element.contains && evt.fromElement) {
		return !element.contains(evt.fromElement);
	}
	else if (evt.relatedTarget) {
		return !containsDOM(element, evt.relatedTarget);
	}
}

//On cherche si l'élément envoyé à la sortie est enfant d'un élément.
function checkMouseLeave (element, evt) {
	if (element.contains && evt.toElement) {
		return !element.contains(evt.toElement);
	}
	else if (evt.relatedTarget) {
		return !containsDOM(element, evt.relatedTarget);
	}
}

// On récupère l'élement qui a fait l'action
function getTarget(e) {
	if (e.currentTarget)
		return e.currentTarget;
	else if (e.srcElement)
		return e.srcElement;
	else
		return null;
}

// On annule la propagation de l'évènement
function cancelBubble(e) {
	if (!e) e = window.event;
	if (browserName == "Microsoft Internet Explorer" & browserVer >= 4) {
		window.event.returnValue= false;
	} else {
		e.preventDefault();
	}
}

// Remplacement de la fonction getElementsByName pour IE
document.getElementsByName = function(tag, name) {
		var elem = document.getElementsByTagName(tag);
		var arr = new Array();
		for(i = 0,iarr = 0; i < elem.length; i++) {
				att = elem[i].getAttribute("name");
				if(att == name) {
							arr[iarr] = elem[i];
							iarr++;
				}
		}
		return arr;
}

// Recherche des éléments qui ont une class spécifique
function getElementsByStyleClass (className) {
	var all = document.all ? document.all : document.getElementsByTagName('*');
	var elements = new Array();
	for (var e = 0; e < all.length; e++)
		if (all[e].className == className)
			elements[elements.length] = all[e];
	return elements;
}

/* --------------------------
	--- Diverses fonctions ---
	-------------------------- */

// Ajout d'une page en favoris
function ajoutFavoris(e){
	if (browserName == "Microsoft Internet Explorer" & browserVer >= 4) {
		window.external.AddFavorite(url_lien_favoris, nom_lien_favoris);
	} else if (browserName == "Netscape") {
		window.sidebar.addPanel(nom_lien_favoris,url_lien_favoris,"");
	}
	//cancelBubble(e); // On peut supprimer l'affichage du lien si besoin.
}

// Affiche les propriétés d'un élément
function showProp(obj,type) {
	var props=[];
	for (var prop in obj)
		props.push(prop+' : '+obj[prop]);
	if (type == '')
		alert (props.join('\n'));
	else
		return props.join('<br>');
}

// opacité à 100%
function elementOpacity100(e) {
	if (!e) e = window.event;
	var lequel = getTarget(e);

	if (lequel) {
		lequel.style.opacity=1;
		lequel.style.filter = 'alpha\(opacity=100\)';
	}
}

// opacité à xx %
function elementOpacity(e,opacite) {
	if (!e.style) {
		if (!e) e = window.event;
		var lequel = getTarget(e);
	} else {
		var lequel = e;
	}
	if (lequel) {
		lequel.style.opacity=opacite/100;
		lequel.style.filter = 'alpha\(opacity='+opacite+'\)';
	}
}

function CheckRadio(name) {
	//recupere tous les objets qui ont le nom "name"
	var objs=document.getElementsByName('input',name);
	//Pour chaques objets....
	for(i=0;i<objs.length;i++) {
		//Si l'objet en cours en coché on renvoie l'objet
		if (objs[i].checked==true)
			return objs[i];
	}
	//Si on arrive ici, aucun radio-bouton n'est coché, on renvoie false
	return false;
}

/* ----------------------------------------------
	--- Gestion du positionnement des élèments ---
	---------------------------------------------- */

// On récupère la position absolue d'un élément dans la page
function whereIs(myNode,type){
	originalNode = myNode;
	var x = 0;
	var y = 0;
	while ((myNode.tagName != 'BODY') && (myNode.tagName != 'HTML')){
		var local_x = myNode.offsetLeft;
		var local_y = myNode.offsetTop;
		x += local_x;
		y += local_y;
		myNode = myNode.offsetParent;
		if (type != undefined ) alert(originalNode.id+"\n"+myNode.tagName+" "+myNode.className+' : X = '+x+' ('+local_x+') -- Y = '+y+'('+local_y+')');

	}
	originalNode.magicPositionX = x;
	originalNode.magicPositionY = y;
}

/* ---------------------------
	--- Gestion des valeurs ---
	--------------------------- */

//On vérifie si la valeur est un flottant
function isValidNumber(text,intsOnly) {
	text = text.replace(/^\s+|\s+$/g, '');
	var value = intsOnly ? parseInt(text,10) : parseFloat(text);
	return String(value) === text;
} // End isValudNumber


function decToHex(dec) {
	var hexa="0123456789ABCDEF";
	var hex="";
	while (dec>15) {
		tmp=dec-(Math.floor(dec/16))*16;
		hex=hexa.charAt(tmp)+hex;
		dec=Math.floor(dec/16);
	}
	hex=hexa.charAt(dec)+hex;
	hex=(hex.length==1)?"0"+hex:hex;
	return(hex);
}

function hexToDec(hex) {
	return parseInt(hex,16);
}

function couleur_complementaire(couleur) {
	couleur = (couleur.substr(0,1)=="#")?couleur.substr(1,6):couleur;
	var rouge = 255 - hexToDec(couleur.substr(0,2));
	var vert = 255 - hexToDec(couleur.substr(2,2));
	var bleu = 255 - hexToDec(couleur.substr(4,2));
	return "rgb("+rouge+","+vert+","+bleu+")";
}

function in_array (needle, haystack, argStrict) {
	var key = '', strict = !!argStrict;
	if (strict) {
		for (key in haystack) {
			if (haystack[key] === needle) {
				return true;
			}
		}
	} else {
		for (key in haystack) {
			if (haystack[key] == needle) {
				return true;
			}
		}
	}
	return false;
}

/* -------------------------
	--- Gestion du popup  ---
	------------------------- */

// On déplace le popup
function movepopup(e) {
	var pop = document.getElementById('popup');
	if (pop.style.display != 'none') {
		var x, y, right, bottom;
		var xoffset = 20;
		var yoffset = -75;
			var posx = 0;
		var posy = 0;
		var event;
		if (!e) evt = window.event; else evt=e;
		if (evt.pageX || evt.pageY) 	{
			posx = evt.pageX;
			posy = evt.pageY;
		} else if (evt.clientX || evt.clientY) 	{
			posx = evt.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
			posy = evt.clientY + document.body.scrollTop + document.documentElement.scrollTop;
		}
			posx += xoffset;
			posy += yoffset;
			pop.style.top = posy+'px';
			pop.style.left = posx+'px';
	}
}

// On change le contenu du popup
function popup(text) {
	var pop = document.getElementById('popup');
		pop.innerHTML = text;
		pop.style.display = 'block';
}

// On efface le popup
function popout() {
	var pop = document.getElementById('popup');
		pop.style.display = 'none';
}

/* ------------------------------
	--- Gestion de l'etiquette ---
	------------------------------ */

// On déplace l'étiquette
function moveEtiquette(e) {
	if (!e) evt = window.event; else evt=e;
	var etiquette = document.getElementById('etiquette');
	if (etiquette) {
		if (etiquette.style.display != 'none') {
			var x, y, right, bottom;
			var xoffset = parseInt(etiquette.offsetWidth / 2);
			var yoffset = 140;
			var posx = 0;
			var posy = 0;
			var event;
			if (evt.pageX || evt.pageY) 	{
				posx = evt.pageX;
				posy = evt.pageY;
			} else if (evt.clientX || evt.clientY) 	{
				posx = evt.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
				posy = evt.clientY + document.body.scrollTop + document.documentElement.scrollTop;
			}
				posx -= xoffset;
				posy -= yoffset;
				etiquette.style.top = posy+'px';
				etiquette.style.left = posx+'px';
		}
	}
}

// On change le contenu de l'etiquette et on l'affiche
function etiquetteOn(text) {
	var etiquette = document.getElementById('etiquette');
	if (etiquette) {
			etiquette.innerHTML = text;
			etiquette.style.display = 'block';
	}
}

// On efface l'etiquette
function etiquetteOff() {
	var etiquette = document.getElementById('etiquette');
	if (etiquette) {
		if (etiquette.style.display != 'none')
				etiquette.style.display = 'none';
	}
}

/* ---------------------------------------------------
	--- Gestion de l'affichage d'une photo en DHTML ---
	--------------------------------------------------- */

// Ajout des popup DHTML détectés dans la page, il faut que l'élément soit un lien <a> ou une image <img> et ai le nom ImageToShow
function addDHTMLPopup(){
	//var ImgsToShow = document.getElementsByName('a','ImageToShow');
	var ImgsToShow = document.getElementsByTagName('A');
	for (var index = 0; index < ImgsToShow.length; ++index) {
		var ImgToShow = ImgsToShow[index];
		if (ImgToShow.id.substr(0,11)=="ImageToShow") {
			addListener(ImgToShow,'click',function(e){
				var LaCible = getTarget(e);
				if (LaCible.tagName != "A") LaCible = LaCible.parentElement;
				showImage(LaCible,e);
			});
		} else if (ImgToShow.id.substr(0,11)=="videoToShow") {
			addListener(ImgToShow,'click',function(e){
				var LaCible = getTarget(e);
				if (LaCible.tagName != "A") LaCible = LaCible.parentElement;
				if (LaCible.href.substr((LaCible.href.length-1),1) != "#") showVideo(LaCible,e);
			});
		}
	}
}

// Fonction qui envoi une demande d'affichage vidéo en Ajax
function showVideo(contenu,e) {
	var popimage = document.getElementById("VideoShowFloat");
	var popimagef = document.getElementById("FondImageShow");
	var legende_image;
	if (contenu.title) legende_image = escape(contenu.title);
	ajoute_element_fade("VideoShowFloat",1,1);
	popimage.style.zIndex = 220;
	ajoute_element_fade("FondImageShow",1,.5);
	popimagef.style.zIndex=219;
	addListener(window,'resize',RepositionFloatDiv);
	addListener(window,'scroll',RepositionFloatDiv);
	//addListener(popimage,'click',HideFloatDiv);
	addListener(popimagef,'click',HideFloatDiv);
	xhr_call("produits_aj001",contenu.id.substr(11,(contenu.id.length-11)),legende_image);
	cancelBubble(e);
}

// Fonction d'affichage de l'image d'un produit en DHTML
function showImage(contenu,e) {
	var popimage = document.getElementById("ImageShow");
	var popimagef = document.getElementById("FondImageShow");
	var legende_image;
	if (contenu.title) legende_image = contenu.title;
	popimage.style.zIndex = 220;
	popimage.innerHTML= "<img id='ImageAttente' src='images/attente.gif' /><img id='TheImageShowed' src='"+contenu+"' alt='Cliquez pour fermer'><div id='CommentOfImage'>"+legende_image+"</div>";
	popimagef.style.zIndex=219;
	ajoute_element_fade("FondImageShow",1,.5);
	ajoute_element_fade("ImageShow",1,1);
	setTimeout('RepositionFloatDiv();',100);
	addListener(window,'resize',RepositionFloatDiv);
	addListener(window,'scroll',RepositionFloatDiv);
	addListener(popimage,'click',HideFloatDiv);
	addListener(popimagef,'click',HideFloatDiv);
	var TheImageShowed = document.getElementById("TheImageShowed");
	if (browserName == "Opera")
		setTimeout("ShowTheImageShowed();",2000);
	else
		addListener(TheImageShowed,'load',ShowTheImageShowed);
	cancelBubble(e);
}

// Affiche l'image une fois chargée
function ShowTheImageShowed() {
	var TheImageShowed = document.getElementById("TheImageShowed");
	var ImageAttente = document.getElementById("ImageAttente");
	ImageAttente.style.display="none";
	ajoute_element_fade("TheImageShowed",1,1);
	ajoute_element_fade("CommentOfImage",1,1);
	RepositionFloatDiv();
	removeListener(TheImageShowed,'load',ShowTheImageShowed);
}

//Affichage d'un message en PoPup DHTML
function showMessage (message,noclick,noscroll,noresize) {
	var popimage = document.getElementById("ContenuShow");
	var popimagef = document.getElementById("FondImageShow");
	popimage.style.zIndex = 220;
	if (message) popimage.innerHTML= message;
	popimagef.style.zIndex=219;
	ajoute_element_fade("FondImageShow",1,.5);
	ajoute_element_fade("ContenuShow",1,1);
	setTimeout("RepositionFloatDiv();",100);
	if (noresize != true) addListener(window,"resize",RepositionFloatDiv);
	if (noscroll != true) addListener(window,"scroll",RepositionFloatDiv);
	if (noclick != true) addListener(popimage,"click",HideFloatDiv);
	if (noclick != true) addListener(popimagef,"click",HideFloatDiv);
}

// Repositionnement en fonction de la taille du document
function RepositionFloatDiv(){
	var popimage;
	var pop_image = document.getElementById("ImageShow");
	var pop_video = document.getElementById("VideoShowFloat");
	var pop_contenu = document.getElementById("ContenuShow");
	if (pop_image.style.display == "block")
		popimage = pop_image;
	else if (pop_video.style.display == "block")
		popimage = pop_video;
	else if (pop_contenu.style.display == "block")
		popimage = pop_contenu;
	if (popimage) {
		var popimagef = document.getElementById("FondImageShow");
		if (popimage.style.display == "block") {
			var larg = document.documentElement.clientWidth;
			var haut = document.documentElement.clientHeight;
			var total_larg = document.documentElement.scrollWidth;
			var total_haut = document.documentElement.scrollHeight;
			var total_scroll = document.documentElement.scrollTop;
			var theimg_larg = popimage.clientWidth;
			var theimg_haut = popimage.clientHeight;
			popimage.style.left = ((larg - theimg_larg) /2)-14+"px";
			popimage.style.top = (((haut - theimg_haut) /2)-14 + total_scroll)+"px";
			popimagef.style.left=0+"px";
			popimagef.style.top=0+"px";
			popimagef.style.width = total_larg+"px";
			popimagef.style.height = total_haut+"px";
		}
	}
}

// Cache le contenu DHTML et le fond
function HideFloatDiv() {
	var popimage;
	var pop_image = document.getElementById("ImageShow");
	var pop_video = document.getElementById("VideoShowFloat");
	var pop_contenu = document.getElementById("ContenuShow");
	if (pop_image.style.display == "block")
		popimage = pop_image;
	else if (pop_video.style.display == "block")
		popimage = pop_video;
	else if (pop_contenu.style.display == "block")
		popimage = pop_contenu;
	if (popimage) {
		var popimagef = document.getElementById("FondImageShow");
		ajoute_element_fade(popimage.id,-1,0,"viderCacher","");
		ajoute_element_fade("FondImageShow",-1,0,"display","none");
		removeListener(popimage,'click',HideFloatDiv);
		removeListener(popimagef,'click',HideFloatDiv);
		removeListener(window,'resize',RepositionFloatDiv);
		removeListener(window,'scroll',RepositionFloatDiv);
	}
}

// Gestion des contenu DIV pour Ajax
function SauveInnerHTML(elementASauvegarder) {
	var traitementElement = document.getElementById(elementASauvegarder);
	if (traitementElement) {
		sauve_contenu[elementASauvegarder] = traitementElement.innerHTML;
		traitementElement.innerHTML = "<center><img src='images/attente.gif' alt='Veuillez patienter.' /></center>";
	}
}

function RestaureInnerHTML(elementASauvegarder) {
	var traitementElement = document.getElementById(elementASauvegarder);
	if ((traitementElement) && (sauve_contenu[elementASauvegarder])) {
		traitementElement.innerHTML = sauve_contenu[elementASauvegarder];
	}
}

function GestionAttente(elementEnAttente,type,contenu) {
	var traitementElement = document.getElementById(elementEnAttente);
	if (traitementElement) {
		if (type == 'on') {
			var body = document.getElementsByTagName('body').item(0);
			var element_attente = document.createElement('div');
			body.insertBefore(element_attente,body.firstChild);
			element_attente.id='attente_'+elementEnAttente;
			element_attente.style.position='absolute';
			element_attente.style.zIndex='200';
			whereIs(traitementElement);
			element_attente.style.top=traitementElement.magicPositionY+'px';
			element_attente.style.left=traitementElement.magicPositionX+'px';
			element_attente.style.width = traitementElement.offsetWidth+'px';
			element_attente.style.height = traitementElement.offsetHeight+'px';
			element_attente.style.textAlign = 'center';
			if (!contenu) {
				element_attente.style.filter = 'alpha\(opacity=30\)';
				element_attente.style.MozOpacity = .3;
				element_attente.style.opacity = .3;
				element_attente.style.backgroundColor='#000000';
				var message_attente = document.createElement('img');
				message_attente.src='images/attente.gif';
				element_attente.appendChild(message_attente);
				var calcul_paddingTop = ((traitementElement.offsetHeight/2)-(14 + message_attente.offsetTop));
				if (calcul_paddingTop < 0 ) calcul_paddingTop = 0;
				message_attente.style.paddingTop=calcul_paddingTop+'px';
			} else {
				element_attente.innerHTML = contenu;
			}
		} else if (type == 'off') {
			var body = document.getElementsByTagName('body').item(0);
			var traitementElement = document.getElementById('attente_'+elementEnAttente);
			body.removeChild(traitementElement);
		}
	}
}

// Supprime tous les tags HTML d'un texte
function strip_tags(str, allowed_tags) {
		var key = '', allowed = false;
		var matches = [];
		var allowed_array = [];
		var allowed_tag = '';
		var i = 0;
		var k = '';
		var html = '';
		var replacer = function(search, replace, str) {
				return str.split(search).join(replace);
		};
		if (allowed_tags) {
				allowed_array = allowed_tags.match(/([a-zA-Z]+)/gi);
		}
		str += '';
		matches = str.match(/(<\/?[^>]+>)/gi);
		for (key in matches) {
				if (isNaN(key)) {
						continue;
				}
				html = matches[key].toString();
				allowed = false;
				for (k in allowed_array) {
						allowed_tag = allowed_array[k];
						i = -1;
						if (i != 0) { i = html.toLowerCase().indexOf('<'+allowed_tag+'>');}
						if (i != 0) { i = html.toLowerCase().indexOf('<'+allowed_tag+' ');}
						if (i != 0) { i = html.toLowerCase().indexOf('</'+allowed_tag)   ;}
						if (i == 0) {
								allowed = true;
								break;
						}
				}
				if (!allowed) {
						str = replacer(html, "", str);
				}
		}
		return str;
}

function html_entity_decode( string, quote_style ) {
		var histogram = {}, symbol = '', tmp_str = '', entity = '';
		tmp_str = string.toString();

		if (false === (histogram = this.get_html_translation_table('HTML_ENTITIES', quote_style))) {
				return false;
		}

		for (symbol in histogram) {
				entity = histogram[symbol];
				tmp_str = tmp_str.split(entity).join(symbol);
		}
		tmp_str = tmp_str.split('&#039;').join("'");

		return tmp_str;
}

function get_html_translation_table(table, quote_style) {
		var entities = {}, histogram = {}, decimal = 0, symbol = '';
		var constMappingTable = {}, constMappingQuoteStyle = {};
		var useTable = {}, useQuoteStyle = {};

		// Translate arguments
		constMappingTable[0]      = 'HTML_SPECIALCHARS';
		constMappingTable[1]      = 'HTML_ENTITIES';
		constMappingQuoteStyle[0] = 'ENT_NOQUOTES';
		constMappingQuoteStyle[2] = 'ENT_COMPAT';
		constMappingQuoteStyle[3] = 'ENT_QUOTES';

		useTable       = !isNaN(table) ? constMappingTable[table] : table ? table.toUpperCase() : 'HTML_SPECIALCHARS';
		useQuoteStyle = !isNaN(quote_style) ? constMappingQuoteStyle[quote_style] : quote_style ? quote_style.toUpperCase() : 'ENT_COMPAT';

		if (useTable !== 'HTML_SPECIALCHARS' && useTable !== 'HTML_ENTITIES') {
				throw new Error("Table: "+useTable+' not supported');
				// return false;
		}

		if (useTable === 'HTML_ENTITIES') {
				entities['160'] = '&nbsp;';
				entities['161'] = '&iexcl;';
				entities['162'] = '&cent;';
				entities['163'] = '&pound;';
				entities['164'] = '&curren;';
				entities['165'] = '&yen;';
				entities['166'] = '&brvbar;';
				entities['167'] = '&sect;';
				entities['168'] = '&uml;';
				entities['169'] = '&copy;';
				entities['170'] = '&ordf;';
				entities['171'] = '&laquo;';
				entities['172'] = '&not;';
				entities['173'] = '&shy;';
				entities['174'] = '&reg;';
				entities['175'] = '&macr;';
				entities['176'] = '&deg;';
				entities['177'] = '&plusmn;';
				entities['178'] = '&sup2;';
				entities['179'] = '&sup3;';
				entities['180'] = '&acute;';
				entities['181'] = '&micro;';
				entities['182'] = '&para;';
				entities['183'] = '&middot;';
				entities['184'] = '&cedil;';
				entities['185'] = '&sup1;';
				entities['186'] = '&ordm;';
				entities['187'] = '&raquo;';
				entities['188'] = '&frac14;';
				entities['189'] = '&frac12;';
				entities['190'] = '&frac34;';
				entities['191'] = '&iquest;';
				entities['192'] = '&Agrave;';
				entities['193'] = '&Aacute;';
				entities['194'] = '&Acirc;';
				entities['195'] = '&Atilde;';
				entities['196'] = '&Auml;';
				entities['197'] = '&Aring;';
				entities['198'] = '&AElig;';
				entities['199'] = '&Ccedil;';
				entities['200'] = '&Egrave;';
				entities['201'] = '&Eacute;';
				entities['202'] = '&Ecirc;';
				entities['203'] = '&Euml;';
				entities['204'] = '&Igrave;';
				entities['205'] = '&Iacute;';
				entities['206'] = '&Icirc;';
				entities['207'] = '&Iuml;';
				entities['208'] = '&ETH;';
				entities['209'] = '&Ntilde;';
				entities['210'] = '&Ograve;';
				entities['211'] = '&Oacute;';
				entities['212'] = '&Ocirc;';
				entities['213'] = '&Otilde;';
				entities['214'] = '&Ouml;';
				entities['215'] = '&times;';
				entities['216'] = '&Oslash;';
				entities['217'] = '&Ugrave;';
				entities['218'] = '&Uacute;';
				entities['219'] = '&Ucirc;';
				entities['220'] = '&Uuml;';
				entities['221'] = '&Yacute;';
				entities['222'] = '&THORN;';
				entities['223'] = '&szlig;';
				entities['224'] = '&agrave;';
				entities['225'] = '&aacute;';
				entities['226'] = '&acirc;';
				entities['227'] = '&atilde;';
				entities['228'] = '&auml;';
				entities['229'] = '&aring;';
				entities['230'] = '&aelig;';
				entities['231'] = '&ccedil;';
				entities['232'] = '&egrave;';
				entities['233'] = '&eacute;';
				entities['234'] = '&ecirc;';
				entities['235'] = '&euml;';
				entities['236'] = '&igrave;';
				entities['237'] = '&iacute;';
				entities['238'] = '&icirc;';
				entities['239'] = '&iuml;';
				entities['240'] = '&eth;';
				entities['241'] = '&ntilde;';
				entities['242'] = '&ograve;';
				entities['243'] = '&oacute;';
				entities['244'] = '&ocirc;';
				entities['245'] = '&otilde;';
				entities['246'] = '&ouml;';
				entities['247'] = '&divide;';
				entities['248'] = '&oslash;';
				entities['249'] = '&ugrave;';
				entities['250'] = '&uacute;';
				entities['251'] = '&ucirc;';
				entities['252'] = '&uuml;';
				entities['253'] = '&yacute;';
				entities['254'] = '&thorn;';
				entities['255'] = '&yuml;';
		}

		if (useQuoteStyle !== 'ENT_NOQUOTES') {
				entities['34'] = '&quot;';
		}
		if (useQuoteStyle === 'ENT_QUOTES') {
				entities['39'] = '&#39;';
		}
		entities['60'] = '&lt;';
		entities['62'] = '&gt;';

		// ascii decimals for better compatibility
		entities['38'] = '&amp;';

		// ascii decimals to real symbols
		for (decimal in entities) {
				symbol = String.fromCharCode(decimal);
				histogram[symbol] = entities[decimal];
		}

		return histogram;
}

function Br_2_Crlf(dataStr) {
		return dataStr.replace('<br />','\r\n');
}

function Insertion_texte(input,repdeb, repfin) {
	input.focus();
	/* pour l'Explorer Internet */
	if (browserName == "Microsoft Internet Explorer" & browserVer >= 4) {
		/* Insertion du code de formatage */
		var range = document.selection.createRange();
		var insText = range.text;
		range.text = repdeb + insText + repfin;
		/* Ajustement de la position du curseur */
		range = document.selection.createRange();
		if (insText.length == 0) {
			range.move('character', -repfin.length);
		} else {
			range.moveStart('character', repdeb.length + insText.length + repfin.length);
		}
		range.select();
	}
	/* pour navigateurs plus récents basés sur Gecko*/
	else if(typeof input.selectionStart != 'undefined') {
		/* Insertion du code de formatage */
		var start = input.selectionStart;
		var end = input.selectionEnd;
		var insText = input.value.substring(start, end);
		input.value = input.value.substr(0, start) + repdeb + insText + repfin + input.value.substr(end);
		/* Ajustement de la position du curseur */
		var pos;
		if (insText.length == 0) {
			pos = start + repdeb.length;
		} else {
			pos = start + repdeb.length + insText.length + repfin.length;
		}
		input.selectionStart = pos;
		input.selectionEnd = pos;
	}
	/* pour les autres navigateurs */
	else {
		/* requête de la position d'insertion */
		var pos;
		var re = new RegExp('^[0-9]{0,3}$');
		while(!re.test(pos)) {
			pos = prompt("Insertion à la position (0.." + input.value.length + "):", "0");
		}
		if (pos > input.value.length) {
			pos = input.value.length;
		}
		/* Insertion du code de formatage */
		var insText = prompt("Veuillez entrer le texte à formater:");
		input.value = input.value.substr(0, pos) + repdeb + insText + repfin + input.value.substr(pos);
	}
}


/*	------------------------ */
/*	--- Gestion du fade  --- */
/*	------------------------ */
var table_element_fade = new Array();
var duree_fade = 30;
var iteration_fade = 0.1;

function element_fade (sens,element,change_contenu,contenu,change_retour,retour,iterateur,valeur,valeur_cible) {
	this.sens = sens;
	this.change_contenu = change_contenu;
	this.contenu = contenu;
	this.change_retour = change_retour;
	this.retour = retour;
	this.iterateur = iterateur;
	this.valeur = valeur;
	this.valeur_cible = valeur_cible;
}

function ajoute_element_fade(element,sens,valeur_cible,change_contenu,contenu,change_retour,retour) {
	var TheElement = document.getElementById(element);
	if ((TheElement) && (browserName == "Microsoft Internet Explorer")) {
		if (TheElement.currentStyle.hasLayout == false)  {
			TheElement.style.height="1%"; // On force le Layout pour Ie < 8
		}
	}
	var trouve=false;
	if (typeof(table_element_fade[element]) != "undefined") {
		table_element_fade[element].sens = sens;
	} else {
		if (sens == "1") {
			var valeur = 0;
		} else {
			var valeur = 1;
		}
		table_element_fade[element] = new element_fade(sens,element,change_contenu,contenu,change_retour,retour,iteration_fade,valeur,valeur_cible);
	}
	genere_length(table_element_fade);
	if (table_element_fade.length !=0 ) {
		timer_fade = setTimeout('genere_fade();',duree_fade);
	}
}

function genere_fade() {
	if (timer_fade) clearTimeout(timer_fade);
	var table_delete=new Array();
	if (table_element_fade.length != 0) {
		for (local_element in table_element_fade) {
			var efade = document.getElementById(local_element);
			if (efade) {
				var valeur_fade = table_element_fade[local_element].valeur + (table_element_fade[local_element].iterateur * table_element_fade[local_element].sens);
				if (efade.style.display == "" || efade.style.display == "none")
					efade.style.display="block";
				if (browserName == "Microsoft Internet Explorer"){
					efade.style.filter = 'alpha(opacity='+(Math.round(valeur_fade * 100))+');';
				} else {
					efade.style.opacity = valeur_fade;
				}
				table_element_fade[local_element].valeur = valeur_fade;

				if ((table_element_fade[local_element].sens == "1") && (valeur_fade >= table_element_fade[local_element].valeur_cible)) {
					if (typeof(table_element_fade[local_element].change_contenu) != "undefined") {
						switch (table_element_fade[local_element].change_retour) {
							case "title":efade.title = table_element_fade[local_element].retour;break;
							case "alt":efade.alt = table_element_fade[local_element].retour;break;
						}
					}
					table_delete.push(local_element);
				} else if ((table_element_fade[local_element].sens == "-1") && (valeur_fade <= table_element_fade[local_element].valeur_cible)) {
					if (typeof(table_element_fade[local_element].change_contenu) != "undefined") {
						switch (table_element_fade[local_element].change_contenu) {
							case "src":
								efade.src = table_element_fade[local_element].contenu;
								table_element_fade[local_element].sens = 1;
								table_element_fade[local_element].valeur = 0;
								table_element_fade[local_element].valeur_cible = (1 - table_element_fade[local_element].valeur_cible);
							break;
							case "innerHTML":
								efade.innerHTML = table_element_fade[local_element].contenu;
								table_element_fade[local_element].sens = 1;
								table_element_fade[local_element].valeur = 0;
								table_element_fade[local_element].valeur_cible = (1 - table_element_fade[local_element].valeur_cible);
							break;
							case "display":
								efade.style.display = table_element_fade[local_element].contenu;
								table_delete.push(local_element);
							break;
							case "viderCacher":
								efade.innerHTML = "";
								efade.style.display="none";
								table_delete.push(local_element);
							break;
						}
					} else {
						table_delete.push(local_element);
					}
				}
			}
		}
	}
	if (table_delete.length != 0) {
		for (boucle=0;boucle<table_delete.length;boucle++) {
			delete table_element_fade[table_delete[boucle]];
		}
	}
	genere_length(table_element_fade);
	if (table_element_fade.length !=0) {
		timer_fade = setTimeout('genere_fade();',duree_fade);
	}
}

function genere_length(objet){
	var nombre = 0;
	for (element in objet) nombre++;
	objet.length = nombre;
}
/* --------------------
* --- Commentaires ---
* -------------------- */

function commentaire_modification(id_com) {
	GestionAttente('commentaire_'+id_com,'on');
	var modif_texte_commentaire = document.getElementById('modif_texte_commentaire_'+id_com);
	var modif_titre_commentaire = document.getElementById('modif_titre_commentaire_'+id_com);
	xhr_call('admin_adminaj002',id_com,modif_titre_commentaire.value,modif_texte_commentaire.value);
}

function commentaire_afficher() {
	var date_debut=document.getElementById("date_debut");
	var date_fin=document.getElementById("date_fin");
	var id_user=document.getElementById("id_user");
	var id_validateur=document.getElementById("id_validateur");
	var contenu_titre=document.getElementById("contenu_titre");
	var contenu_texte=document.getElementById("contenu_texte");
	var fok = true;
	if ((date_debut.value) && (date_fin.value)) {
		var poids_date_debut = parseInt(date_debut.value.substr(6,4)+date_debut.value.substr(3,2)+date_debut.value.substr(0,2));
		var poids_date_fin = parseInt(date_fin.value.substr(6,4)+date_fin.value.substr(3,2)+date_fin.value.substr(0,2));
		if (poids_date_fin < poids_date_debut) {
			alert('La date de début est postérieure à la date de fin');
			fok=false;
		}
	}
	if (fok == true){
		GestionAttente('affiche_liste_com','on');
		xhr_call('admin_aj003',date_debut.value,date_fin.value,id_user.value,id_validateur.value,contenu_titre.value,contenu_texte.value);
	}
}

/* --------------------
 * --- Calendriers  ---
 * -------------------- */

function calendrier_choix_jour(e) {
	if (!e) e = window.event;
	var lequel = getTarget(e);
	if (lequel) {
		var dernierslash = lequel.id.lastIndexOf("_");
		var jour = lequel.id.substr(dernierslash+1,lequel.id.length - dernierslash);
		var nom_calendrier = lequel.id.substr(16,(dernierslash-16));
		var date_actuelle = document.getElementById("sauve_"+nom_calendrier);
		var jour_actuel = date_actuelle.value.substr(0,2);
		jour_actuel = (jour_actuel.substr(0,1)=='0')?jour_actuel.substr(1,1):jour_actuel;
		var anciennecellule = document.getElementById("calendrier_jour_"+nom_calendrier+"_"+jour_actuel);
		anciennecellule.className='calendrier_td_off';
		var nouvellecellule = document.getElementById("calendrier_jour_"+nom_calendrier+"_"+jour);
		nouvellecellule.className='calendrier_td_on';
		jour=(jour.length==1)?'0'+jour:jour;
		var nouvelledate = jour+date_actuelle.value.substr(2,8);
		var affiche_date = document.getElementById("calendrier_affiche_date_"+nom_calendrier);
		affiche_date.innerHTML = nouvelledate;
		date_actuelle.value=nouvelledate;
	}
}

function calendrier_action_valider(e){
	if (!e) e = window.event;
	var lequel = getTarget(e);
	if (lequel) {
		var nom_calendrier = lequel.id.substr(19,lequel.id.length-19);
		var div_a_effacer=document.getElementById("calendrier_"+nom_calendrier);
		var parent_div_a_effacer = div_a_effacer.parentNode;
		var input_form = document.getElementById(nom_calendrier);
		var affiche_date = document.getElementById("sauve_"+nom_calendrier);
		input_form.value=affiche_date.value;
		parent_div_a_effacer.removeChild(div_a_effacer);
	}
}

function calendrier_action_annuler(e) {
	if (!e) e = window.event;
	var lequel = getTarget(e);
	if (lequel) {
		var nom_calendrier = lequel.id.substr(19,lequel.id.length-19);
		var div_a_effacer=document.getElementById("calendrier_"+nom_calendrier);
		var parent_div_a_effacer = div_a_effacer.parentNode;
		parent_div_a_effacer.removeChild(div_a_effacer);
	}
}
/*  --------------------
	--- Les sliders  ---
	-------------------- */

var table_slider = new Array();
var slider_en_cours = "";

function slider(positionx,positiony,valeur_min,valeur_max,taille,taille_curseur,handle) {
	this.positionx = positionx;
	this.positiony = positiony;
	this.valeur_min = parseInt(valeur_min);
	this.valeur_max = parseInt(valeur_max);
	this.taille = parseInt(taille)-parseInt(taille_curseur);
	var difference = valeur_max-valeur_min;
	var division = parseFloat(this.taille / difference);
	this.division = division;
	this.taille_curseur = taille_curseur;
	this.handle = handle;
}

function gestion_start_slide (e){
	start_slide(e)
}

function start_slide(e) {
	if (!e) e = window.event;
	var lequel = getTarget(e);
	if (lequel) {
		slider_en_cours = lequel.id.substr(8,(lequel.id.length-8));
		addListener(document,"mousemove",function(e){make_slide(e)});
		cancelBubble(e);
	}
}

function make_slide(e) {
	if (slider_en_cours != "") {
		if (!e) e = window.event;
		var slide_curseur = document.getElementById("curseur_"+slider_en_cours);
		var affiche_valeur = document.getElementById("valeur_"+slider_en_cours);
		if (e.pageX) {
			posx = e.pageX;
		} else if (e.clientX) {
			posx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
		}
		var curseur_x;
		if (posx < table_slider[slider_en_cours]["positionx"]) curseur_x = table_slider[slider_en_cours]["positionx"];
		else if (posx > (table_slider[slider_en_cours]["positionx"]+table_slider[slider_en_cours]["taille"])) curseur_x = table_slider[slider_en_cours]["positionx"]+table_slider[slider_en_cours]["taille"];
		else curseur_x = posx;
		var decalage = (curseur_x-table_slider[slider_en_cours]["positionx"]);
		valeur_slide=Math.round(decalage/table_slider[slider_en_cours]["division"]);
		affiche_valeur.value=valeur_slide;
		eval(table_slider[slider_en_cours]["handle"]+"();");
		if (decalage == 1) new_margin=0;
		else if (decalage > table_slider[slider_en_cours]["taille"]) new_margin = table_slider[slider_en_cours]["taille"];
		else new_margin = decalage;
		slide_curseur.style.marginLeft = new_margin+"px";
	}
}

function update_slide(slider,valeur) {
	if (table_slider[slider]) {
		if ((valeur >= table_slider[slider]["valeur_min"]) && (valeur <= table_slider[slider]["valeur_max"])) {
			var decalage = Math.round(valeur * table_slider[slider]["division"]);
			var slide_curseur = document.getElementById("curseur_"+slider);
			slide_curseur.style.marginLeft = decalage+"px";
			var affiche_valeur = document.getElementById("valeur_"+slider);
			affiche_valeur.value=valeur;
			eval(table_slider[slider]["handle"]+"();");
		}
	}
}

function stop_slide() {
	slider_en_cours = "";
	removeListener(document,"mousemove",gestion_start_slide);
}

/* -----------------
	--- Démarrage ---
	----------------- */

function demarrage_site() {
	var pop = document.getElementById('popup');
	if (pop) {
		addListener(document,'mousemove',movepopup);
		addListener(pop,'mousemove',function(e){cancelBubble(e)});
	}
	var etiquette = document.getElementById('etiquette');
	var bouton_accueil_titre1 = document.getElementById('bouton_accueil_titre1');
	if (etiquette && bouton_accueil_titre1) {
		addListener(document,'mousemove',moveEtiquette);
		addListener(etiquette,'mousemove',moveEtiquette);
	}
	if (typeof(div_lien_favoris) != "undefined") var favoris = document.getElementById(div_lien_favoris);
	if (favoris) addListener(favoris,'click',function(e){ajoutFavoris(e)});
	var bloc_chat = document.getElementById('bloc_chat');
	if (bloc_chat) {
		GestionAttente("bloc_chat","on");
		xhr_call("admin_aj005");
	}
}

function demarrage_calendrier(nom_calendrier) {
	var date_en_cours = document.getElementById("sauve_"+nom_calendrier);
	var calendrier_annee_moins = document.getElementById("calendrier_annee_moins_"+nom_calendrier);
	addListener(calendrier_annee_moins,'click',function(){GestionAttente('calendrier_'+nom_calendrier,'on');xhr_call('admin_aj001',nom_calendrier,'anneemoins',date_en_cours.value)});
	var calendrier_annee_plus = document.getElementById("calendrier_annee_plus_"+nom_calendrier);
	addListener(calendrier_annee_plus,'click',function(){GestionAttente('calendrier_'+nom_calendrier,'on');xhr_call('admin_aj001',nom_calendrier,'anneeplus',date_en_cours.value)});
	var calendrier_mois_moins = document.getElementById("calendrier_mois_moins_"+nom_calendrier);
	addListener(calendrier_mois_moins,'click',function(){GestionAttente('calendrier_'+nom_calendrier,'on');xhr_call('admin_aj001',nom_calendrier,'moismoins',date_en_cours.value)});
	var calendrier_mois_plus = document.getElementById("calendrier_mois_plus_"+nom_calendrier);
	addListener(calendrier_mois_plus,'click',function(){GestionAttente('calendrier_'+nom_calendrier,'on');xhr_call('admin_aj001',nom_calendrier,'moisplus',date_en_cours.value)});
	for (var index_jour=1;index_jour<=31;index_jour++) {
		var lien_jour=document.getElementById("calendrier_jour_"+nom_calendrier+"_"+index_jour);
		if (lien_jour) addListener(lien_jour,'click',function(e) {calendrier_choix_jour(e);});
	}
	var calendrier_valider = document.getElementById("calendrier_valider_"+nom_calendrier);
	addListener(calendrier_valider,'click',function(e){calendrier_action_valider(e);});
	var calendrier_annuler = document.getElementById("calendrier_annuler_"+nom_calendrier);
	addListener(calendrier_annuler,'click',function(e){calendrier_action_annuler(e);});
}

// Les sliders
function demarrage_sliders () {
	var liste_slider = getElementsByStyleClass("slider");
	if (liste_slider) {
		for (boucle=0;boucle<liste_slider.length;boucle++) {
			var nom_slider = liste_slider[boucle].id.substr(7,(liste_slider[boucle].id.length-7));
			whereIs(liste_slider[boucle]);
			var curseur_slider = document.getElementById("curseur_"+nom_slider);
			table_slider[nom_slider] = new slider(liste_slider[boucle].magicPositionX,liste_slider[boucle].magicPositionY,liste_slider[boucle].getAttribute("slidemin"),liste_slider[boucle].getAttribute("slidemax"),liste_slider[boucle].clientWidth,curseur_slider.clientWidth,liste_slider[boucle].getAttribute("handle"));
			addListener(curseur_slider,"mousedown",gestion_start_slide);
			addListener(curseur_slider,"mouseup",stop_slide);
		}
		addListener(document,"mouseup",stop_slide);
	}
}

addListener(window,'load',function () {demarrage_site();addDHTMLPopup();demarrage_sliders();});
