
/*****************************************************************************************************
		Affiche ou masque un élément
	*****************************************************************************************************/
	function displayornot(obj) {
		if (document.layers) {
			d1=document.layers[obj];
			dl.visibility = (d1.visibility=="hide") ? "show" : "hide";
		}
		else{
			if (document.getElementById) { d1=document.getElementById(obj); }
			else if (document.all) { d1=document.all[obj]; } else { return }
			dl.style.display = (d1.style.display=="none") ? "block" : "none";
		}
	}

	/*****************************************************************************************************
		Donne le focus à un éléménet
	*****************************************************************************************************/
	function giveFocus(i) {
		var elt;
		if(elt = document.getElementById(i)) {
			elt.focus();
		}
	}

	/*****************************************************************************************************
		Cache les sous-éléments d'un conteneur
	*****************************************************************************************************/
	function hideChildren(bloc, tag) {
		var contener = document.getElementById(bloc);
		var children = contener.getElementsByTagName(tag);
		for(var i=0, n=children.length; i<n; i++) {
			children[i].style.display = "none";
		}
	}

	/*****************************************************************************************************
		Affiche le premier enfant d'un conteneur
	*****************************************************************************************************/
	function displayOnlyFirstChild(bloc, tag) {
		var contener = document.getElementById(bloc);
		var children = contener.getElementsByTagName(tag);
		if(children.length > 0) {
			for(var i=0, n=children.length; i<n; i++) {
				children[i].style.display = "none";
			}
			children[0].style.display = "block";
		}
	}
	
	/*****************************************************************************************************
		Affiche l'élément i d'un conteneur
	*****************************************************************************************************/
	function displayChildNum(bloc, tag, x) {
		var contener = document.getElementById(bloc);
		var children = contener.getElementsByTagName(tag);
		for(var i=0, n=children.length; i<n; i++) {
			if(i == x) {
				children[i].style.display = "block";
			}
		}
	}

	/*****************************************************************************************************
		Affecte une fonction à l'évènement onclick des balises tabName ayant pour classe className
	*****************************************************************************************************/
	function getVisibleBlock(contener) {
		var bloc = document.getElementById(contener); 
		var blocs = bloc.getElementsByTagName("div");

		for(var i=0, n=blocs.length; i<n; i++) {
			if(blocs[i].style.display != "none") { //alert("Current visible : "+blocs[i].getAttribute("id"));
				return blocs[i]; 
			}
		}
		return false;
	}
	
	
	/*****************************************************************************************************
		Affiche le prochain enfant d'un conteneur
	*****************************************************************************************************/
	function showNextChild(bloc, tag) {
		var contener = document.getElementById(bloc);
		var children = contener.getElementsByTagName(tag);
		var currentVisible = getVisibleBlock(bloc);
		for(var i=0, n=children.length; i<n; i++) {
			if(children[i].getAttribute("id") == currentVisible.getAttribute("id")) {
				
			}
		}
	}
	
	/*****************************************************************************************************
		Affiche le prochain bloc d'un contener 
	*****************************************************************************************************/
	function switchContent(bloc, tag, delai, firsttime) {
		delai = delai ? delai : 5000; 
		var currentVisible = getVisibleBlock(bloc); 
		var contener       = document.getElementById(bloc);
		var children       = contener.getElementsByTagName(tag);
		
		if(!firsttime) { 
		
			for(var i=0, n=children.length; i<n; i++) {
				if(children[i].getAttribute("id") == currentVisible.getAttribute("id")) {
					var nextVisible = (i==(n-1)) ? 0 : i+1;
				}
				children[i].style.display = "none";
			}
			children[nextVisible].style.display = "block";
		//contener.onclick = "switchContent("+idcontener+", "+delai+");";
		}
		else {
			displayOnlyFirstChild(bloc, tag);
		}
		var timer = window.setTimeout(function() { switchContent(bloc,tag, delai, false); }, delai);
	}
	
	/*****************************************************************************************************
		Décryptage des emails de la forme mail at domain dot com
	*****************************************************************************************************/
	function uncryptEmails(mailto) {
		var emails = document.getElementsByTagName("address");
		for(var i=0, n=emails.length; i<n; i++) {
			email = emails[i].innerHTML;
			while(email.match(" dot ")) { email = email.replace(" dot ", "."); }
			while(email.match(" at "))  { email = email.replace(" at ", "@"); }
			if(mailto) { email = '<a href="mailto:'+email+'">'+email+'</a>'; }
			emails[i].innerHTML = email;
		}
	}
	function uncryptEmail(elt, mailto) {
		email = elt.innerHTML;
		while(email.match(" dot ")) { email = email.replace(" dot ", "."); }
		while(email.match(" at "))  { email = email.replace(" at ", "@"); }
		if(mailto) { email = '<a href="mailto:'+email+'">'+email+'</a>'; }
		elt.innerHTML = email;
	}
	
	/*****************************************************************************************************
		Affiche un message lors de la validation des formulaires
	*****************************************************************************************************/
	function formLoading(msg, container, callback) {
		var bloc = false;
		var forms = document.getElementsByTagName("form");
		var nb    = forms.length;
		if(nb > 0) {
			
		// Message par défaut
		if(!msg) {  msg = "Chargement en cours...";  }
		
		// Création du masque
		var overlay = document.createElement('div');
		overlay.setAttribute('id', 'overlay');
		overlay.style.width = '100%';
		overlay.style.height = '100%';
		overlay.style.backgroundColor = '#FFFFFF';
		overlay.style.position = 'absolute';
		overlay.style.zIndex = '1000';
		overlay.style.top = '0';
		overlay.style.left = '0';
		overlay.style.display = 'none';
		document.body.appendChild(overlay);
		
		// Création du message d'attente
		var c;
		var bloc        = document.createElement("div");
		var blocContent = document.createElement("span");
		var message     = document.createTextNode(msg);
		
		bloc.appendChild(blocContent);
		blocContent.appendChild(message);
		
		bloc.setAttribute('id', 'formLoading');
		bloc.style.display = "none";
		if(container && (c = $(container))) {
			c.appendChild(bloc);
		}
		else { 
			document.body.appendChild(bloc);
			if(bloc = $("formLoading")) {
				bloc.style.display = "none";
			}
		}
		bloc.style.width = '300px';
		bloc.style.position = 'absolute';
		bloc.style.zIndex = '1001';
		bloc.style.top='50%';
		bloc.style.left = '50%';
		bloc.style.marginTop = '-20px';
		bloc.style.marginLeft = '-150px';
			
		// Balayage des formulaires de la page
		for(var i=0; i<nb; i++) {
			forms[i].onsubmit = function() {
				overlay.style.display = 'block';
				bloc.style.display = "block";
				new Effect.Opacity(overlay, { from:0, to:0.80, duration:0.3 });
				new Effect.Opacity(bloc, { from:0, to:1, duration:0.1 });
				if(callback != false && callback) { 
					callback();
				}
			} // eof_form_onsubmit
		} // eof_foreach_forms
			
		} // eof_if_forms
	}// eof_function_loadingForm
	
	
	
	function fixPseudoClasses(tags) {	
		var tags = new Array("input", "textarea","select");
		for(var i=0, n=tags.length; i<n; i++) {
			var elts = document.getElementsByTagName(tags[i]);
			for(var j=0, nb=elts.length; j<nb; j++) {
				//elts[j].onmouseover = function() { this.className = this.className + ' hover'; }
				//elts[j].onmouseout  = function() { this.className = this.className.replace('hover', ''); }
				elts[j].onfocus     = function() { this.className = this.className + ' focus'; }
				elts[j].onblur      = function() { this.className = this.className.replace('focus', ''); }
			}
		}
	}
	
	
	function popupImage(img) {
		var titre; titre="Photo";
		w=window.open("",'image','width=400,height=400,toolbar=no,scrollbars=no,resizable=yes');	
		w.document.write("<html><head><title>"+titre+"</title></head>\n");
		w.document.write("<style type=\"text/css\">\n");
		w.document.write("body { margin:0; padding:0; }");
		w.document.write("");
		w.document.write("</style>");
		w.document.write("<script type=\"text/javascript\">\n");
		w.document.write("\n var left,top;");
		w.document.write("\n function checkPosition() {");
		w.document.write("\n    var w, h, left, top;");
		w.document.write("\n    w = document.getElementById(\'photo').width;");
		w.document.write("\n    h = document.getElementById(\'photo').height;");
		w.document.write("\n    left = (window.screen.availWidth/2)-w/2;");
		w.document.write("\n    top  = (window.screen.availHeight/2)-h/2;");
		w.document.write("\n    window.moveTo(left, top);");
		w.document.write("\n    ");
		w.document.write("\n }");
		w.document.write("\n ");
		w.document.write("\n function checksize() { ");
		w.document.write("\n    var image = document.getElementById('photo');");
		w.document.write("\n    if (image.complete) {  window.resizeTo(image.width+12,image.height+30);");
		w.document.write("\n    window.focus();");
		w.document.write("\n }");
		w.document.write("\n else \n{ \nsetTimeout('check()',250) \n} \n}");
		w.document.write("\n window.onload = function() { checksize(); checkPosition(); }");
		w.document.write("\n window.onblur = function() { self.close(); }");
		w.document.write("\n ");
		w.document.write("\n </script>");
		w.document.write("\n<body>");
		w.document.write("\n<img id='photo' src='"+img+"'  alt=\"Photo\" /> ");
		w.document.write("\n<script>window.moveTo(left,top);</"+"SCRIPT>");
		w.document.write("\n</body></html>");
		w.document.close();
		return false;
	}
	
	function makePopupLinks(className) {
		var links = document.getElementsByTagName('a');
		for(var i=0, n=links.length; i<n; i++) {
			if(links[i].className.search(className) != -1) {
				links[i].onclick = function() { 
					popupImage(this);
					return false;
				}
			}
		}
	}
	
	
	function buildTooltips(tag, className) {
		var tags = document.getElementsByTagName(tag);
		for(var i=0, n=tags.length; i<n; i++) {
			if(tags[i].className.search(className) != -1) {
				
				var tooltip = document.createElement('span');
				tooltip.innerHTML = tags[i].getAttribute('title');
				
				tags[i].style.position = "relative";
				tooltip.style.display = "none";
				
				tooltip.className = className;
				tooltip.style.position = "absolute";
				tooltip.style.zIndex = "-1";
				tooltip.style.bottom = "0";
				tooltip.style.right = "-20px";
				
				tags[i].appendChild(tooltip);
				
				tags[i].onmouseover = function() {
					tooltip.style.display = "block";
					var dimensions = Element.getDimensions(tooltip);
					tooltip.style.right = "-"+(dimensions.width+5)+"px;";
					tooltip.style.bottom = "-"+(dimensions.height-18)+"px;";
					tooltip.innerHTML = tooltip.innerHTML + " " + "-"+dimensions.width+"px; " + dimensions.height;
					
				}
				tags[i].onmouseout = function() {
					tooltip.style.display = "none";
				}
				//tags[i].className.onmouseo
				
			}
		}
	}
	
	
	/********************************************************************************************************************/
	/********************************************************************************************************************/
	/********************************************************************************************************************/
	/********************************************************************************************************************/
	/********************************************************************************************************************/
	/********************************************************************************************************************/
	/********************************************************************************************************************/
	/********************************************************************************************************************/
	/**************************************************************************************************************
	*******  COOKIES
	**************************************************************************************************************/
	function setcookie(name, value, expire){
		var timestamp=new Date(expire);
		document.cookie=name + "=" + escape(value) + "; expires=" + timestamp.toGMTString(); 
	}
	
	function getcookie(name){ 
		var cookies = document.cookie.split('; '); //alert(document.cookie);
		for(var i=0, n=cookies.length; i < n; i++){ 
			var cook = cookies[i].split('=');
			var ok = (cook[0] == name); 
			//alert(name + ' => '+cook[0] + (ok ? '  ok' : '  pas ok'));
			if(ok) {
				return unescape(cook[1]);
			}
		}
		return false;
	}	
	
	function persistentDraggable(e, params) {
		new Draggable($(e), params);
		saveElementPosition(e); 
		loadElementPosition(e);
	}
	
	/**
	 * Sauvegarde et chargement automatique de la position d'un élément
	 */
	function saveAndLoadPosition(e) {
		saveElementPosition(e); 
		loadElementPosition(e);
	}
	
	
	/**
	 * Stocke la position d'un élément en cookie
	 */
	function saveElementPosition(e) { 
		$(e).onmouseup = function() {
			$(e).removeClassName("dragging");
			var element = $(e);
			var x = element.style.left;
			var y = element.style.top; 
			var pos = x+','+y;
			setcookie(e+"-position", pos, (new Date(2010, 12).getTime())); 
		}
		$(e).onmousedown = function() { $(e).className = $(e).className + " dragging"; }

}
	
	/**
	 * Récupère le cookie contenant la position d'un élément
	 */
	function loadElementPosition(e) {// alert("try to load : "+e+'-position \n\n '+document.cookie);
		var pos = false;
		if(pos = getcookie(e+'-position')) { //alert(pos);
			pos = pos.split(','); 
			var x = pos[0]; 
			var y = pos[1]; 
			//alert(pos);alert('x : '+x+' - y : '+y); 
			$(e).style.left = x; 
			$(e).style.top  = y; 
		}
	}
	
	/********************************************************************************************************************/
	/********************************************************************************************************************/
	/********************************************************************************************************************/
	
	
	function positionX(r){ return calculeOffset(r,"offsetLeft") }
	
	function positionY(r){ return calculeOffset(r,"offsetTop") }
	
	function calculeOffset(element,attr){ 
		var offset=0;
		while(element){ offset+=element[attr]; element=element.offsetParent }
		return offset
	}	
	
	/*****************************************************************************************************
		Réupération d'éléments à partir d'un attribut
	*****************************************************************************************************/
	document.getElementsByAttribute = function (attribute, value) {
		var objs = new Array(); objs = document.getElementsByTagName("*");
		var tab = new Array();
		for (var i in objs) {
			if (objs[i]) {
				if (objs[i][attribute]) {
				if (!value) tab[tab.length] = objs[i];
				else if (objs[i][attribute].toLowerCase() == value.toLowerCase()) tab[tab.length] = objs[i];
				}
			}
		}
		return tab;
	}

	/*****************************************************************************************************
		Retourne un objet de cookies : objet.get(cookie)
	*****************************************************************************************************/
	function getCookies () {
		var tab = document.cookie.split(";"); var t = new Object(); var n = 0;
		for (var i=0; i < tab.length; i++) {
			var x = tab[i].split("="); t[x[0]]=x[1]; t[i]=tab[i]; n++;
		}
		t.length = n;
		t.get = function (name) { if (t[name]) return t[name]; else return null; }
		return t;
	}

	/*****************************************************************************************************
		Retourne un cookie
	*****************************************************************************************************/
	function getCookie (name) {
		var t = getCookies(); return t.get(name);
	}

	/*****************************************************************************************************
		Crée un cookie
	*****************************************************************************************************/
	function setCookie (name, value, expires) {
		var date=new Date(); 
		date  = date.getTime(); 
		date += expires;
		date  = new Date(date); var expdate=date.toGMTString(); 
		document.cookie=name+"="+value+";expires="+expdate+";";
	}

	/*****************************************************************************************************
		Crée une chaine de type QUERY STRING
	*****************************************************************************************************/
	function createParameters () {
		eval(document.location.search.substring(1).split("&").join("; ").replace(new RegExp("=([^=;]*)", "g"), "=\"$1\"").replace(new RegExp("=\"([0-9]+(\\.[0-9]+){0,1})\"", "g"), "=$1"));
	}

	/*****************************************************************************************************
		Retourne un objet à partir de la QUERY STRING : objet.get(param)
	*****************************************************************************************************/
	function getParameters () {
		var tab = document.location.search.substring(1).split("&"); var t = new Object(); var n =0;
		for (var i=0; i < tab.length; i++) {
			n++; var x = tab[i].split("="); if (!isNaN(x[1])) x[1] = parseFloat(x[1]); t[x[0]]=x[1]; t[i]=tab[i];
		}
		t.length = n;
		t.get = function (name) { if (t[name]) return t[name]; else return null; }
		return t;
	}


function fnLoadPngs()
{
	var rslt = navigator.appVersion.match(/MSIE (\d+\.\d+)/, '');
	var itsAllGood = (rslt != null && Number(rslt[1]) >= 5.5);

	for (var i = document.images.length - 1, img = null; (img = document.images[i]); i--)
	{
		if (itsAllGood && img.src.match(/\.png$/i) != null)
		{
			var src = img.src;
			var div = document.createElement("DIV");
			div.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizing='scale')"
			div.style.width = img.width + "px";
			div.style.height = img.height + "px";
			img.replaceNode(div);
		}
		img.style.visibility = "visible";
	}
}


function alphaBackgrounds(mediaDir){
	var rslt = navigator.appVersion.match(/MSIE (\d+\.\d+)/, '');
	var itsAllGood = (rslt != null && Number(rslt[1]) >= 5.5);
	for (i=0; i<document.all.length; i++){
		var bg = document.all[i].currentStyle.backgroundImage;
		if (itsAllGood && bg){
			if (bg.match(/\.png/i) != null){ 
				var mypng = bg.substring(5,bg.length-2);
				document.all[i].style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mypng+"', sizingMethod='scale')";
				document.all[i].style.backgroundImage = "url('"+mediaDir+"/empty.gif')";
			}
		}
	}
}

function alphaInputImages(mediaDir) { 
	var rslt = navigator.appVersion.match(/MSIE (\d+\.\d+)/, '');
	var itsAllGood = (rslt != null && Number(rslt[1]) >= 5.5);
	var inputs = document.getElementsByTagName('input');
	if(itsAllGood) {
		for(var i=0, n=inputs.length; i<n; i++) {
			if(inputs[i].getAttribute('type') == 'image') {
				var mypng = inputs[i].getAttribute('src');
				inputs[i].style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mypng+"', sizingMethod='scale')";
				inputs[i].style.backgroundImage = "none";
				inputs[i].setAttribute('src', mediaDir+'/empty.gif');
			}
		}
	}
	else {
		//alert('its not good');
	}
}
