/*========================================*\
	Fonction lancée au démarrage :
	X_LANG contient la langue courante
\*========================================*/
// Langue
var fr_i18n = {	
	'1'		:	'Rechercher sur le site',
	'2'		:	'Veuillez verifier les champs',
	'3'		:	'Merci'
};
var en_i18n = {	
	'1'		:	'Search Site',
	'2'		:	'Please check the fields',
	'3'		:	'Thank you'
};
var es_i18n = {	
	'1'		:	'Búsqueda en el sitio',
	'2'		:	'Por favor, compruebe los campos',
	'3'		:	'Gracias'
};
var ca_i18n = {	
	'1'		:	'Cerca al lloc',
	'2'		:	'Si us plau, comproveu els camps',
	'3'		:	'Gràcies'
};

var i18n = {'fr':fr_i18n, 'en':en_i18n, 'es':es_i18n, 'ca':ca_i18n};

var obj;
var startPageLoad = function(){
	// Exple pour les fonctions spécifiques à un type d'écran... 
	/*
	if(cssQuery('body')[0].className == 'c13'){
		alert('ok');
	}
	*/
	if(cssQuery('body')[0].className == 'c64'){
		//filterTable('voies', 2, 10);
		//filterTable('voies', condition);
		//filterTable('voies', 'cols[2] == 10');
		//filterTable('voies', 'a = cols["2"]');
		//filterTable('voies', 'true');
	}
	// classes Paire(/Impaire) sur les ul li ul li pour l'alternance du grimpeur au survol
	if(cssQuery('#nav ul li')){
		var obj = cssQuery('#nav ul li ul li');
		for(var i = 0; i < obj.length; i++){
			var node = obj[i];
			if(i%2 == 1){
				node.className = node.className+' paire';
			}
		}
	}
	// Survol des tableaux (classe : tr.over)
	if(cssQuery('div#corps tr')){
		var obj = cssQuery('div#corps tr');
		for(var i = 0; i < obj.length; i++){
			var node = obj[i];
			node.onmouseover = function(){
				this.className += ' over';
			}
			node.onmouseout = function(){
				this.className = this.className.replace('over','');
			}
		}
	}
	// Liens externes
	if(cssQuery('body a')){
		obj = cssQuery('body a');
		for(var i = 0; i < obj.length; i++){
			var node = obj[i];
			var test = node.href.replace('http://'+window.location.hostname,'');
			if(test.search('http://') != -1 || test.search('https://') != -1 || test.search('go-liens-') != -1){
				node.onclick = function(){
					window.open(this.href,'','');
					return false;
				}
			}
		}
	}
	// Champ rechercher
	if($('rechercher_input')){
		var obj = $('rechercher_input');
		obj.onfocus = function(){
			if(this.value == i18n[X_LANG][1]){this.value='';}
		}
		obj.onblur = function(){
			if(this.value == ''){this.value = i18n[X_LANG][1];}
		}
		if(obj.value == ''){obj.value = i18n[X_LANG][1];}
		$('evitement').lastChild.lastChild.onclick = function(){$('rechercher_input').focus();return false;};
	}
	// DEBUG
	if($('debug1') && $('debug2')){
		sw('debug1');
		sw('debug2');
		$('bt_debug1').onclick = function(){	sw('debug1');	sw('bt_debug2');	};
		$('bt_debug2').onclick = function(){	sw('debug2');	sw('bt_debug1');	};
		$('debug1').style.opacity = '0.7';
		$('debug2').style.opacity = '0.7';
		$('bt_debug1').style.opacity = '0.8';
		$('bt_debug2').style.opacity = '0.8';
		var debugs = new Array(cssQuery('div#debug1 li'),cssQuery('div#debug2 li'));
		for(var i = 0; i < debugs.length; i++){
			var LIs = debugs[i];
			for(var j = 0; j < LIs.length; j++){
				var node = LIs[j];
				if(node.lastChild && node.lastChild.nodeName == 'UL'){
					node.lastChild.style.display = 'none';
					var aEtiquette = node.firstChild;
					var newA = document.createElement('A');
					var newAText = document.createTextNode('[*] ');
					newA.appendChild(newAText);
					newA.setAttribute('href','#');
					node.insertBefore(newA, aEtiquette);
					newA.onclick = function(){
						if(this.parentNode.lastChild.style.display != 'none'){
							this.parentNode.lastChild.style.display = 'none'
						}
						else if(this.parentNode.lastChild.style.display != 'block'){
							this.parentNode.lastChild.style.display = 'block';
						}
						return false;
					};
					newA.onfocus = function(){	this.blur();	}
				}
			}
		}
	}
}
window.onload = startPageLoad;
/*========================================*\
	Filtrage d'un tableau
	Ajouter reset de l'affichage
\*========================================*/
var condition = new Array();
function filterTable(target_id, condition){
	if($(target_id)){
		condition = condition.replace(']','].firstChild.firstChild.data');
		var obj_tr = $(target_id).getElementsByTagName('TR');
		for(i in obj_tr){
			if(isNaN(i)){	continue;	}
			var node_TR = obj_tr[i];
			if(node_TR && node_TR.getElementsByTagName('TD')){
				var cols = node_TR.getElementsByTagName('TD');
				if(cols.length > 0){
					var classe = ' '+node_TR.className+' ';
					node_TR.className = classe.replace(' c ','');
//alert(condition+':'+eval(condition));
					if(!eval(condition)){
						node_TR.className += ' c';
					}
				}
			}
		}
	}
}
/*========================================*\
	Pointeur simple sur l'id
\*========================================*/
function $(obj){
    if(typeof obj == 'string' && document.getElementById(obj))
        return document.getElementById(obj);
    else{
        return false;
	}
}
/*========================================*\
	Fonctions Afficher / Masquer
\*========================================*/
function sw(qui){
	var obj = $(qui);
	if(obj.style.display != 'none'){
		obj.style.display = 'none';
	}
	else if(obj.style.display != 'block'){
		obj.style.display = 'block';
	}
	return false;
}
/*========================================*\
	Fonctions Afficher / Masquer
	### !!! ### Gestion des cases à cocher et radios !!
	### !!! ### Si fac le motif doit aussi etre pris en compte
\*========================================*/
function verifForm(champs, motifs, noms, conseils){
	var mess = '';
	if(champs.length > 0){
		for(i in champs){
			var n = champs[i];
			var id = 'ch_'+n;
			var label = 'label_'+n;
			var motif = motifs[n];
			var nom = noms[n];
			var conseil = conseils[n];
			$(label).className = $(label).className.replace('a_verifier','');
			if($(id).type == 'text' || $(id).type == 'textarea' || $(id).type == 'select-one'){
				if($(id).value.length < 1){
					$(label).className += ' a_verifier';
					if(conseil.length > 0){
						mess += '- '+nom+' : '+conseil+'\n';
					}
					else{
						mess += '- '+nom+'\n';
					}
				}
				else if(motif.length > 0){
					if($(id).value.search(motif) == -1){
						$(label).className += ' a_verifier';
						if(conseil.length > 0){
							mess += '- '+nom+' : '+conseil+'\n';
						}
						else{
							mess += '- '+nom+'\n';
						}
					}
				}
			}
			else if($(id).type == 'checkbox' && $(id).checked == false){
				$(label).className += ' a_verifier';
				if(conseil.length > 0){
					mess += '- '+nom+' : '+conseil+'\n';
				}
				else{
					mess += '- '+nom+'\n';
				}
			}
		}
		if(mess!=''){
			var mess2 = i18n[X_LANG][2]+' :\n\n'+mess + '\n'+i18n[X_LANG][3];
			window.alert(mess2);
			mess2='';
			var result = false;
		}
		else {
			var result = true;
		}
	}
	return result;
}




			/*========================================*\
				Fonction Afficher / Masquer MENU
			\*========================================*/
			function swm(qui){
				var class1 = '';
				var class2 = '';
				var obj1 = document.getElementById('sm'+qui);
				var obj2 = document.getElementById('m'+qui);
				var tab = smenus.split(',');
				var tab2 = menus.split(',')
				// Referme tous les autres menus
				for(i in tab){
					var obj = document.getElementById(tab[i]);
					var class_sw = ' '+obj.className+' ';
					class_sw = class_sw.replace(' v ',' ');
					class_sw = class_sw+' c ';
					obj.className = trim(class_sw);
				}
				if(obj1 != null){
					class1 = ' '+obj1.className+' ';
				}
				if(obj2 != null){
					class2 = ' '+obj2.className+' ';
				}
				// Desactive le style actif pour le menu selectionné
				for(i in tab2){
					obj = document.getElementById(tab2[i]);
					class_sw = ' '+obj.className+' ';
					class_sw = class_sw.replace(' actif ',' ');
					obj.className = trim(class_sw);
				}
				// Switch le sous menu
				if(class1 && class2 && class1.indexOf(' c ') >= 0){
					class1 = class1.replace(' c ',' ');
					class1 = class1+' v ';
					class2 = class2+' actif ';
				}
				else if(class1 && class2){
					alert('a');
					class1 = class1.replace(' v ',' ');
					class1 = class1+' c ';
					class2 = class2.replace(' actif ',' ');
				}
				if(obj1){
					obj1.className = class1;
				}
				if(obj2){
					obj2.className = class2;
				}
				return false;
			}
			/*========================================*\
				Demande de confirmation
			\*========================================*/
			function conf2(){
				if(window.confirm('Etes vous sûr ?')){
					return true;
				}
				else{
					return false;
				}
			}
			/*========================================*\
				Verification des champs
			\*========================================*/
			function verif(champs){
				var mess = 'Veuillez verifier les champs :\n\n';
				var tab = champs.split(",")
				for(i in tab){
					if(document.getElementById(tab[i]).value.length < 1){
						mess+='- '+tab[i]+'\n';
					}
				}
				if(mess!='Veuillez verifier les champs :\n\n'){
					var mess2 = mess + '\nMerci';
					window.alert(mess2);mess2='';
					var test = false;
				}
				else {
					var test = true;
				}
				return test;
			}
			/*========================================*\
				Function masquer tout - afficher 1
			\*========================================*/
			function sw2(qui){
				// Masque tout
				for(i in tabAll){
					var obj1 = document.getElementById(tabAll[i]);
					var classe = ' '+obj1.className+' ';
					classe = classe.replace(' v ','');
					classe = classe.replace(' c ','');
					classe += ' c ';
					classe = trim(classe);
					obj1.className = classe;
				}
				// Affiche le bon bloc
				var obj = document.getElementById(qui);
				classe = ' '+obj.className+' ';
				classe = classe.replace(' c ','');
				classe += ' v ';
				classe = trim(classe);
				obj.className = classe;
			}
			/*========================================*\
				Function trim
			\*========================================*/
			function trim(str){
				while(''+str.charAt(0)==' '){
					str=str.substring(1,str.length);
				}
				while(''+str.charAt(str.length-1)==' '){
					str=str.substring(0,str.length-1);
				}
				return str;
			}




/*========================================*\
	cssQuery, version 2.0.2 (2005-08-19)
	Copyright: 2004-2005, Dean Edwards (http://dean.edwards.name/)
	License: http://creativecommons.org/licenses/LGPL/2.1/
	
	Syntax : var tags = cssQuery("body > p");
	Selectors :
	- *						- E						- E F
	- E > F					- E + F					- E ~ F
	- E.warning				- E#myid				- E:link
	- E:first-child			- E:last-child			- E:nth-child(n)
	- E:nth-last-child(n)	- E:only-child			- E:root
	- E:lang(fr)			- E:target				- E:enabled
	- E:disabled			- E:checked				- E:contains("foo")
	- E:not(s)				- E[foo]				- E[foo="bar"]
	- E[foo~="bar"]			- E[foo^="bar"]			- E[foo$="bar"]
	- E[foo*="bar"]			- E[foo|="bar"]
\*========================================*/
eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('7 x=6(){7 1D="2.0.2";7 C=/\\s*,\\s*/;7 x=6(s,A){33{7 m=[];7 u=1z.32.2c&&!A;7 b=(A)?(A.31==22)?A:[A]:[1g];7 1E=18(s).1l(C),i;9(i=0;i<1E.y;i++){s=1y(1E[i]);8(U&&s.Z(0,3).2b("")==" *#"){s=s.Z(2);A=24([],b,s[1])}1A A=b;7 j=0,t,f,a,c="";H(j<s.y){t=s[j++];f=s[j++];c+=t+f;a="";8(s[j]=="("){H(s[j++]!=")")a+=s[j];a=a.Z(0,-1);c+="("+a+")"}A=(u&&V[c])?V[c]:21(A,t,f,a);8(u)V[c]=A}m=m.30(A)}2a x.2d;5 m}2Z(e){x.2d=e;5[]}};x.1Z=6(){5"6 x() {\\n  [1D "+1D+"]\\n}"};7 V={};x.2c=L;x.2Y=6(s){8(s){s=1y(s).2b("");2a V[s]}1A V={}};7 29={};7 19=L;x.15=6(n,s){8(19)1i("s="+1U(s));29[n]=12 s()};x.2X=6(c){5 c?1i(c):o};7 D={};7 h={};7 q={P:/\\[([\\w-]+(\\|[\\w-]+)?)\\s*(\\W?=)?\\s*([^\\]]*)\\]/};7 T=[];D[" "]=6(r,f,t,n){7 e,i,j;9(i=0;i<f.y;i++){7 s=X(f[i],t,n);9(j=0;(e=s[j]);j++){8(M(e)&&14(e,n))r.z(e)}}};D["#"]=6(r,f,i){7 e,j;9(j=0;(e=f[j]);j++)8(e.B==i)r.z(e)};D["."]=6(r,f,c){c=12 1t("(^|\\\\s)"+c+"(\\\\s|$)");7 e,i;9(i=0;(e=f[i]);i++)8(c.l(e.1V))r.z(e)};D[":"]=6(r,f,p,a){7 t=h[p],e,i;8(t)9(i=0;(e=f[i]);i++)8(t(e,a))r.z(e)};h["2W"]=6(e){7 d=Q(e);8(d.1C)9(7 i=0;i<d.1C.y;i++){8(d.1C[i]==e)5 K}};h["2V"]=6(e){};7 M=6(e){5(e&&e.1c==1&&e.1f!="!")?e:23};7 16=6(e){H(e&&(e=e.2U)&&!M(e))28;5 e};7 G=6(e){H(e&&(e=e.2T)&&!M(e))28;5 e};7 1r=6(e){5 M(e.27)||G(e.27)};7 1P=6(e){5 M(e.26)||16(e.26)};7 1o=6(e){7 c=[];e=1r(e);H(e){c.z(e);e=G(e)}5 c};7 U=K;7 1h=6(e){7 d=Q(e);5(2S d.25=="2R")?/\\.1J$/i.l(d.2Q):2P(d.25=="2O 2N")};7 Q=6(e){5 e.2M||e.1g};7 X=6(e,t){5(t=="*"&&e.1B)?e.1B:e.X(t)};7 17=6(e,t,n){8(t=="*")5 M(e);8(!14(e,n))5 L;8(!1h(e))t=t.2L();5 e.1f==t};7 14=6(e,n){5!n||(n=="*")||(e.2K==n)};7 1e=6(e){5 e.1G};6 24(r,f,B){7 m,i,j;9(i=0;i<f.y;i++){8(m=f[i].1B.2J(B)){8(m.B==B)r.z(m);1A 8(m.y!=23){9(j=0;j<m.y;j++){8(m[j].B==B)r.z(m[j])}}}}5 r};8(![].z)22.2I.z=6(){9(7 i=0;i<1z.y;i++){o[o.y]=1z[i]}5 o.y};7 N=/\\|/;6 21(A,t,f,a){8(N.l(f)){f=f.1l(N);a=f[0];f=f[1]}7 r=[];8(D[t]){D[t](r,A,f,a)}5 r};7 S=/^[^\\s>+~]/;7 20=/[\\s#.:>+~()@]|[^\\s#.:>+~()@]+/g;6 1y(s){8(S.l(s))s=" "+s;5 s.P(20)||[]};7 W=/\\s*([\\s>+~(),]|^|$)\\s*/g;7 I=/([\\s>+~,]|[^(]\\+|^)([#.:@])/g;7 18=6(s){5 s.O(W,"$1").O(I,"$1*$2")};7 1u={1Z:6(){5"\'"},P:/^(\'[^\']*\')|("[^"]*")$/,l:6(s){5 o.P.l(s)},1S:6(s){5 o.l(s)?s:o+s+o},1Y:6(s){5 o.l(s)?s.Z(1,-1):s}};7 1s=6(t){5 1u.1Y(t)};7 E=/([\\/()[\\]?{}|*+-])/g;6 R(s){5 s.O(E,"\\\\$1")};x.15("1j-2H",6(){D[">"]=6(r,f,t,n){7 e,i,j;9(i=0;i<f.y;i++){7 s=1o(f[i]);9(j=0;(e=s[j]);j++)8(17(e,t,n))r.z(e)}};D["+"]=6(r,f,t,n){9(7 i=0;i<f.y;i++){7 e=G(f[i]);8(e&&17(e,t,n))r.z(e)}};D["@"]=6(r,f,a){7 t=T[a].l;7 e,i;9(i=0;(e=f[i]);i++)8(t(e))r.z(e)};h["2G-10"]=6(e){5!16(e)};h["1x"]=6(e,c){c=12 1t("^"+c,"i");H(e&&!e.13("1x"))e=e.1n;5 e&&c.l(e.13("1x"))};q.1X=/\\\\:/g;q.1w="@";q.J={};q.O=6(m,a,n,c,v){7 k=o.1w+m;8(!T[k]){a=o.1W(a,c||"",v||"");T[k]=a;T.z(a)}5 T[k].B};q.1Q=6(s){s=s.O(o.1X,"|");7 m;H(m=s.P(o.P)){7 r=o.O(m[0],m[1],m[2],m[3],m[4]);s=s.O(o.P,r)}5 s};q.1W=6(p,t,v){7 a={};a.B=o.1w+T.y;a.2F=p;t=o.J[t];t=t?t(o.13(p),1s(v)):L;a.l=12 2E("e","5 "+t);5 a};q.13=6(n){1d(n.2D()){F"B":5"e.B";F"2C":5"e.1V";F"9":5"e.2B";F"1T":8(U){5"1U((e.2A.P(/1T=\\\\1v?([^\\\\s\\\\1v]*)\\\\1v?/)||[])[1]||\'\')"}}5"e.13(\'"+n.O(N,":")+"\')"};q.J[""]=6(a){5 a};q.J["="]=6(a,v){5 a+"=="+1u.1S(v)};q.J["~="]=6(a,v){5"/(^| )"+R(v)+"( |$)/.l("+a+")"};q.J["|="]=6(a,v){5"/^"+R(v)+"(-|$)/.l("+a+")"};7 1R=18;18=6(s){5 1R(q.1Q(s))}});x.15("1j-2z",6(){D["~"]=6(r,f,t,n){7 e,i;9(i=0;(e=f[i]);i++){H(e=G(e)){8(17(e,t,n))r.z(e)}}};h["2y"]=6(e,t){t=12 1t(R(1s(t)));5 t.l(1e(e))};h["2x"]=6(e){5 e==Q(e).1H};h["2w"]=6(e){7 n,i;9(i=0;(n=e.1F[i]);i++){8(M(n)||n.1c==3)5 L}5 K};h["1N-10"]=6(e){5!G(e)};h["2v-10"]=6(e){e=e.1n;5 1r(e)==1P(e)};h["2u"]=6(e,s){7 n=x(s,Q(e));9(7 i=0;i<n.y;i++){8(n[i]==e)5 L}5 K};h["1O-10"]=6(e,a){5 1p(e,a,16)};h["1O-1N-10"]=6(e,a){5 1p(e,a,G)};h["2t"]=6(e){5 e.B==2s.2r.Z(1)};h["1M"]=6(e){5 e.1M};h["2q"]=6(e){5 e.1q===L};h["1q"]=6(e){5 e.1q};h["1L"]=6(e){5 e.1L};q.J["^="]=6(a,v){5"/^"+R(v)+"/.l("+a+")"};q.J["$="]=6(a,v){5"/"+R(v)+"$/.l("+a+")"};q.J["*="]=6(a,v){5"/"+R(v)+"/.l("+a+")"};6 1p(e,a,t){1d(a){F"n":5 K;F"2p":a="2n";1a;F"2o":a="2n+1"}7 1m=1o(e.1n);6 1k(i){7 i=(t==G)?1m.y-i:i-1;5 1m[i]==e};8(!Y(a))5 1k(a);a=a.1l("n");7 m=1K(a[0]);7 s=1K(a[1]);8((Y(m)||m==1)&&s==0)5 K;8(m==0&&!Y(s))5 1k(s);8(Y(s))s=0;7 c=1;H(e=t(e))c++;8(Y(m)||m==1)5(t==G)?(c<=s):(s>=c);5(c%m)==s}});x.15("1j-2m",6(){U=1i("L;/*@2l@8(@\\2k)U=K@2j@*/");8(!U){X=6(e,t,n){5 n?e.2i("*",t):e.X(t)};14=6(e,n){5!n||(n=="*")||(e.2h==n)};1h=1g.1I?6(e){5/1J/i.l(Q(e).1I)}:6(e){5 Q(e).1H.1f!="2g"};1e=6(e){5 e.2f||e.1G||1b(e)};6 1b(e){7 t="",n,i;9(i=0;(n=e.1F[i]);i++){1d(n.1c){F 11:F 1:t+=1b(n);1a;F 3:t+=n.2e;1a}}5 t}}});19=K;5 x}();',62,190,'|||||return|function|var|if|for||||||||pseudoClasses||||test|||this||AttributeSelector|||||||cssQuery|length|push|fr|id||selectors||case|nextElementSibling|while||tests|true|false|thisElement||replace|match|getDocument|regEscape||attributeSelectors|isMSIE|cache||getElementsByTagName|isNaN|slice|child||new|getAttribute|compareNamespace|addModule|previousElementSibling|compareTagName|parseSelector|loaded|break|_0|nodeType|switch|getTextContent|tagName|document|isXML|eval|css|_1|split|ch|parentNode|childElements|nthChild|disabled|firstElementChild|getText|RegExp|Quote|x22|PREFIX|lang|_2|arguments|else|all|links|version|se|childNodes|innerText|documentElement|contentType|xml|parseInt|indeterminate|checked|last|nth|lastElementChild|parse|_3|add|href|String|className|create|NS_IE|remove|toString|ST|select|Array|null|_4|mimeType|lastChild|firstChild|continue|modules|delete|join|caching|error|nodeValue|textContent|HTML|prefix|getElementsByTagNameNS|end|x5fwin32|cc_on|standard||odd|even|enabled|hash|location|target|not|only|empty|root|contains|level3|outerHTML|htmlFor|class|toLowerCase|Function|name|first|level2|prototype|item|scopeName|toUpperCase|ownerDocument|Document|XML|Boolean|URL|unknown|typeof|nextSibling|previousSibling|visited|link|valueOf|clearCache|catch|concat|constructor|callee|try'.split('|'),0,{}))
/*========================================*\
	XHRConnection	V1.3	20.10.2005
	Thanh Nguyen, http://www.sutekidane.net
	http://creativecommons.org/licenses/by-nc-sa/2.0/fr/deed.fr
\*========================================*/
function XHRConnection() {
	
	// + ----------------------------------------------------------------------------------
	var conn = false;
	var debug = false;
	var datas = new String();
	var areaId = new String();
	// Objet XML
	var xmlObj;
	// Type de comportement au chargement du XML
	var xmlLoad;
	
	// + ----------------------------------------------------------------------------------
	try {
		conn = new XMLHttpRequest();		
	}
	catch (error) {
		if (debug) { alert('Erreur lors de la tentative de création de l\'objet \nnew XMLHttpRequest()\n\n' + error); }
		try {
			conn = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch (error) {
			if (debug) { alert('Erreur lors de la tentative de création de l\'objet \nnew ActiveXObject("Microsoft.XMLHTTP")\n\n' + error); }
			try {
				conn = new ActiveXObject("Msxml2.XMLHTTP");
			}
			catch (error) {
				if (debug) { alert('Erreur lors de la tentative de création de l\'objet \nnew ActiveXObject("Msxml2.XMLHTTP")\n\n' + error); }
				conn = false;
			}
		}
	}

	// + ----------------------------------------------------------------------------------
	// + setDebugOff
	// + Désactive l'affichage des exceptions
	// + ----------------------------------------------------------------------------------
	this.setDebugOff = function() {
		debug = false;
	};

	// + ----------------------------------------------------------------------------------
	// + setDebugOn
	// + Active l'affichage des exceptions
	// + ----------------------------------------------------------------------------------
	this.setDebugOn = function() {
		debug = true;
	};
	
	// + ----------------------------------------------------------------------------------
	// + resetData
	// + Permet de vider la pile des données
	// + ----------------------------------------------------------------------------------
	this.resetData = function() {
		datas = new String();
		datas = '';
	};
	
	// + ----------------------------------------------------------------------------------
	// + appendData
	// + Permet d'empiler des données afin de les envoyer
	// + ----------------------------------------------------------------------------------
	this.appendData = function(pfield, pvalue) {
		datas += (datas.length == 0) ? pfield+ "=" + escape(pvalue) : "&" + pfield + "=" + escape(pvalue);
	};
	
	// + ----------------------------------------------------------------------------------
	// + setRefreshArea
	// + Indique quel elment identifié par id est valorisé lorsque l'objet XHR recoit une réponse
	// + ----------------------------------------------------------------------------------
	this.setRefreshArea = function(id) {
		areaId = id;
	};
	
	// + ----------------------------------------------------------------------------------
	// + createXMLObject
	// + Méthode permettant de créer un objet DOM, retourne la réfrence
	// + Inspiré de: http://www.quirksmode.org/dom/importxml.html
	// + ----------------------------------------------------------------------------------
	this.createXMLObject = function() {
		try {
			 	xmlDoc = document.implementation.createDocument("", "", null);
				xmlLoad = 'onload';
		}
		catch (error) {
			try {
				xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
				xmlLoad = 'onreadystatechange ';
			}
			catch (error) {
				if (debug) { alert('Erreur lors de la tentative de création de l\'objet XML\n\n'); }
				return false;
			}
		}
		return xmlDoc;
	}
	
	// + ----------------------------------------------------------------------------------
	// + Permet de définir l'objet XML qui doit être valorisé lorsque l'objet XHR recoit une réponse
	// + ----------------------------------------------------------------------------------
	this.setXMLObject = function(obj) {
		if (obj == undefined) {
				if (debug) { alert('Paramètre manquant lors de l\'appel de la méthode setXMLObject'); }
				return false;
		}
		try {
			//xmlObj = this.createXMLObject();
			xmlObj = obj;
		}
		catch (error) {
				if (debug) { alert('Erreur lors de l\'affectation de l\'objet XML dans la méthode setXMLObject'); }
		}
	}
	
	// + ----------------------------------------------------------------------------------
	// + loadXML
	// + Charge un fichier XML
	// + Entrées
	// + 	xml			String		Le fichier XML à charger
	// + ----------------------------------------------------------------------------------
	this.loadXML = function(xml, callBack) {
		if (!conn) return false;
		// Chargement pour alimenter un objet DOM
		if (xmlObj && xml) {
			if (typeof callBack == "function") {
				if (xmlLoad == 'onload') {
					xmlObj.onload = function() {
						callBack(xmlObj);
					}
				}
				else {
					xmlObj.onreadystatechange = function() {
						if (xmlObj.readyState == 4) callBack(xmlObj)
					}
				}
			}
			xmlObj.load(xml);
			return;
		}		
	}

	// + ----------------------------------------------------------------------------------
	// + sendAndLoad
	// + Connexion à la page désirée avec envoie des données, puis mise en attente de la réponse
	// + Entrées
	// + 	Url			String		L'url de la page à laquelle l'objet doit se connecter
	// + 	httpMode		String		La méthode de communication HTTP : GET, HEAD ou POST
	// + 	callBack		Objet		Le nom de la fonction de callback
	// + ----------------------------------------------------------------------------------
	this.sendAndLoad = function(Url, httpMode, callBack) {
		httpMode = httpMode.toUpperCase();
		conn.onreadystatechange = function() {
			if (conn.readyState == 4 && conn.status == 200) {
				// Si une fonction de callBack a été définie
				if (typeof callBack == "function") {
					callBack(conn);
					return;
				}
				// Si une zone destinée à récupérer le résultat a été définie
				else if (areaId.length > 0){
					try {
						document.getElementById(areaId).innerHTML = conn.responseText;
					}
					catch(error) {
						if (debug) { alert('Echec, ' + areaId + ' n\'est pas un objet valide'); }
					}
					return;
				}
			}
		};
		switch(httpMode) {
			case "GET":
				try {
					Url = (datas.length > 0) ? Url + "?" + datas : Url;
					conn.open("GET", Url);
					conn.send(null);
				}
				catch(error) {
					if (debug) { alert('Echec lors de la transaction avec ' + Url + ' via la méthode GET'); }
					return false;
				}
			break;
			case "POST":
				try {
					conn.open("POST", Url); 
					conn.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
					conn.send(datas);
				}
				catch(error) {
					if (debug) { alert('Echec lors de la transaction avec ' + Url + ' via la mthode POST'); }
					return false;
				}
			break;
			default :
				return false;
			break;
		}
		return true;
	};
	return this;
}