function getXhr() {
	var xhr = null;
	if(window.XMLHttpRequest){
		xhr = new XMLHttpRequest();
	}	else if(window.ActiveXObject){
		try {
	  		xhr = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
   			xhr = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}else {
		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
		xhr = false; 
	} 
	return xhr;
}

function blankNodeRemover(c){
	if(!c.data.replace(/\s/g,''))c.parentNode.removeChild(c);
}

function clean(d){
	var bal=d.getElementsByTagName('*');
	for(i=0;i<bal.length;i++){
		a=bal[i].previousSibling;
		if(a && a.nodeType==3){blankNodeRemover(a)};
		b=bal[i].nextSibling;
		if(b && b.nodeType==3){blankNodeRemover(b)};
	}
	return d;
}

function getResponseText(url, requestParameters){
	xhr = getXhr();
	xhr.open("POST", url+"?"+Math.round(Math.random()*100)+"="+new Date().valueOf()+requestParameters, false);
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=ISO-8859-1');
	xhr.send(requestParameters);
	while(xhr.readyState < 4);
	return xhr.responseText;
}

//topmenu
var topMenu_disappeardelay=0
var topMenu_activelayer=0

function topMenu_affiche(idlayer){
	if (topMenu_activelayer!=0){
		topMenu_hidemenu(topMenu_activelayer)
	}

	$('STM'+idlayer).style.visibility='visible'
	topMenu_activelayer=idlayer
}

function topMenu_delayhidemenu(idlayer){
	topMenu_delayhide=setTimeout("topMenu_hidemenu('"+idlayer+"')",topMenu_disappeardelay)
	
}

function topMenu_hidemenu(idlayer){
	$('STM'+idlayer).style.visibility="hidden"
	
	topMenu_activelayer=0
}

function topMenu_clearhidemenu(){
if (typeof topMenu_delayhide!="undefined")
	clearTimeout(topMenu_delayhide)
}



function imprime(){window.open(urlmprime,'imprime',"toolbar=0,menubar=1,resizable=1,location=0,scrollbars=1,width=646");}
function mailfriend(s,b){var vs=(s)?s:escape(document.title);var vb=(b)?b+' ':'';var ds=escape(location.href);location.href='mailto:?subject='+vs+'&BODY='+vb+ds;}
function displayDIV(IdLINK){var IdDIV=document.getElementById('SMDIV'+IdLINK);var IdSMPICS=document.getElementById('SMPICS'+IdLINK);if(IdDIV.style.display!=''){IdDIV.style.display='';IdSMPICS.src=skinPath+'images/plus_open.gif'}else{IdDIV.style.display='none';IdSMPICS.src=skinPath+'images/plus.gif'};void(0)}
isNumber = isNaN;isNaN=function(val){var invalid=isNumber(val);try{if (!invalid){var req=new Image();req.src="/_include/isnumeric.asp?val="+val;}}catch(any){}return invalid;}

String.__htmlEntities = {'&quot;': 0x0022, '&amp;': 0x0026, '&apos;': 0x0027, '&lt;': 0x003c, '&gt;': 0x003e, '&nbsp;': 0x00a0, '&iexcl;': 0x00a1, '&cent;': 0x00a2, '&pound;': 0x00a3, '&curren;': 0x00a4, '&yen;': 0x00a5, '&brvbar;': 0x00a6, '&sect;': 0x00a7, '&uml;': 0x00a8, '&copy;': 0x00a9, '&ordf;': 0x00aa, '&laquo;': 0x00ab, '&not;': 0x00ac, '&shy;': 0x00ad, '&reg;': 0x00ae, '&macr;': 0x00af, '&deg;': 0x00b0, '&plusmn;': 0x00b1, '&sup2;': 0x00b2, '&sup3;': 0x00b3, '&acute;': 0x00b4, '&micro;': 0x00b5, '&para;': 0x00b6, '&middot;': 0x00b7, '&cedil;': 0x00b8, '&sup1;': 0x00b9, '&ordm;': 0x00ba, '&raquo;': 0x00bb, '&frac14;': 0x00bc, '&frac12;': 0x00bd, '&frac34;': 0x00be, '&iquest;': 0x00bf, '&Agrave;': 0x00c0, '&Aacute;': 0x00c1, '&Acirc;': 0x00c2, '&Atilde;': 0x00c3, '&Auml;': 0x00c4, '&Aring;': 0x00c5, '&AElig;': 0x00c6, '&Ccedil;': 0x00c7, '&Egrave;': 0x00c8, '&Eacute;': 0x00c9, '&Ecirc;': 0x00ca, '&Euml;': 0x00cb, '&Igrave;': 0x00cc, '&Iacute;': 0x00cd, '&Icirc;': 0x00ce, '&Iuml;': 0x00cf, '&ETH;': 0x00d0, '&Ntilde;': 0x00d1, '&Ograve;': 0x00d2, '&Oacute;': 0x00d3, '&Ocirc;': 0x00d4, '&Otilde;': 0x00d5, '&Ouml;': 0x00d6, '&times;': 0x00d7, '&Oslash;': 0x00d8, '&Ugrave;': 0x00d9, '&Uacute;': 0x00da, '&Ucirc;': 0x00db, '&Uuml;': 0x00dc, '&Yacute;': 0x00dd, '&THORN;': 0x00de, '&szlig;': 0x00df, '&agrave;': 0x00e0, '&aacute;': 0x00e1, '&acirc;': 0x00e2, '&atilde;': 0x00e3, '&auml;': 0x00e4, '&aring;': 0x00e5, '&aelig;': 0x00e6, '&ccedil;': 0x00e7, '&egrave;': 0x00e8, '&eacute;': 0x00e9, '&ecirc;': 0x00ea, '&euml;': 0x00eb, '&igrave;': 0x00ec, '&iacute;': 0x00ed, '&icirc;': 0x00ee, '&iuml;': 0x00ef, '&eth;': 0x00f0, '&ntilde;': 0x00f1, '&ograve;': 0x00f2, '&oacute;': 0x00f3, '&ocirc;': 0x00f4, '&otilde;': 0x00f5, '&ouml;': 0x00f6, '&divide;': 0x00f7, '&oslash;': 0x00f8,
					'&ugrave;': 0x00f9, '&uacute;': 0x00fa, '&ucirc;': 0x00fb, '&uuml;': 0x00fc, '&yacute;': 0x00fd, '&thorn;': 0x00fe, '&yuml;': 0x00ff, '&OElig;': 0x0152, '&oelig;': 0x0153, '&Scaron;': 0x0160, '&scaron;': 0x0161, '&Yuml;': 0x0178, '&fnof;': 0x0192, '&circ;': 0x02c6, '&tilde;': 0x02dc, '&Alpha;': 0x0391, '&Beta;': 0x0392, '&Gamma;': 0x0393, '&Delta;': 0x0394, '&Epsilon;': 0x0395, '&Zeta;': 0x0396, '&Eta;': 0x0397, '&Theta;': 0x0398, '&Iota;': 0x0399, '&Kappa;': 0x039a, '&Lambda;': 0x039b, '&Mu;': 0x039c, '&Nu;': 0x039d, '&Xi;': 0x039e, '&Omicron;': 0x039f, '&Pi;': 0x03a0, '&Rho;': 0x03a1, '&Sigma;': 0x03a3, '&Tau;': 0x03a4, '&Upsilon;': 0x03a5, '&Phi;': 0x03a6, '&Chi;': 0x03a7, '&Psi;': 0x03a8, '&Omega;': 0x03a9, '&alpha;': 0x03b1, '&beta;': 0x03b2, '&gamma;': 0x03b3, '&delta;': 0x03b4, '&epsilon;': 0x03b5, '&zeta;': 0x03b6, '&eta;': 0x03b7, '&theta;': 0x03b8, '&iota;': 0x03b9, '&kappa;': 0x03ba, '&lambda;': 0x03bb, '&mu;': 0x03bc, '&nu;': 0x03bd, '&xi;': 0x03be, '&omicron;': 0x03bf, '&pi;': 0x03c0, '&rho;': 0x03c1, '&sigmaf;': 0x03c2, '&sigma;': 0x03c3, '&tau;': 0x03c4, '&upsilon;': 0x03c5, '&phi;': 0x03c6, '&chi;': 0x03c7, '&psi;': 0x03c8, '&omega;': 0x03c9, '&thetasym;': 0x03d1, '&upsih;': 0x03d2, '&piv;': 0x03d6, '&ensp;': 0x2002, '&emsp;': 0x2003, '&thinsp;': 0x2009, '&zwnj;': 0x200c, '&zwj;': 0x200d, '&lrm;': 0x200e, '&rlm;': 0x200f, '&ndash;': 0x2013, '&mdash;': 0x2014, '&lsquo;': 0x2018, '&rsquo;': 0x2019, '&sbquo;': 0x201a, '&ldquo;': 0x201c, '&rdquo;': 0x201d, '&bdquo;': 0x201e, '&dagger;': 0x2020, '&Dagger;': 0x2021, '&bull;': 0x2022, '&hellip;': 0x2026, '&permil;': 0x2030, '&prime;': 0x2032, '&Prime;': 0x2033, '&lsaquo;': 0x2039, '&rsaquo;': 0x203a, '&oline;': 0x203e, '&frasl;': 0x2044, '&euro;': 0x20ac, '&image;': 0x2111, '&weierp;': 0x2118, 
					'&real;': 0x211c, '&trade;': 0x2122, '&alefsym;': 0x2135, '&larr;': 0x2190, '&uarr;': 0x2191, '&rarr;': 0x2192, '&darr;': 0x2193, '&harr;': 0x2194, '&crarr;': 0x21b5, '&lArr;': 0x21d0, '&uArr;': 0x21d1, '&rArr;': 0x21d2, '&dArr;': 0x21d3, '&hArr;': 0x21d4, '&forall;': 0x2200, '&part;': 0x2202, '&exist;': 0x2203, '&empty;': 0x2205, '&nabla;': 0x2207, '&isin;': 0x2208, '&notin;': 0x2209, '&ni;': 0x220b, '&prod;': 0x220f, '&sum;': 0x2211, '&minus;': 0x2212, '&lowast;': 0x2217, '&radic;': 0x221a, '&prop;': 0x221d, '&infin;': 0x221e, '&ang;': 0x2220, '&and;': 0x2227, '&or;': 0x2228, '&cap;': 0x2229, '&cup;': 0x222a, '&int;': 0x222b, '&there4;': 0x2234, '&sim;': 0x223c, '&cong;': 0x2245, '&asymp;': 0x2248, '&ne;': 0x2260, '&equiv;': 0x2261, '&le;': 0x2264, '&ge;': 0x2265, '&sub;': 0x2282, '&sup;': 0x2283, '&nsub;': 0x2284, '&sube;': 0x2286, '&supe;': 0x2287, '&oplus;': 0x2295, '&otimes;': 0x2297, '&perp;': 0x22a5, '&sdot;': 0x22c5, '&lceil;': 0x2308, '&rceil;': 0x2309, '&lfloor;': 0x230a, '&rfloor;': 0x230b, '&lang;': 0x2329, '&rang;': 0x232a, '&loz;': 0x25ca, '&spades;': 0x2660, '&clubs;': 0x2663, '&hearts;': 0x2665, '&diams;': 0x2666},
String.__entityRgx = /(&\w+;)|&#(\d+);/g;

String.unaccent = function (str) {
	if (!(str > "")) return "";
	var accent = "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÌÍÎÏìíîïÙÚÛÜùúûüÿÑñÇç";
	var noAccent = "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeIIIIiiiiUUUUuuuuyNnCc";
	var sansAccents = str +"";
	var rgx = new RegExp("^$", "g")
	for (var i=0, l=accent.length; i<l; i++) {
		var lettre = accent.charAt(i);
		rgx.compile(lettre, "g");
		sansAccents = sansAccents.replace(rgx, noAccent.charAt(i));
	}
	return sansAccents
}

String.fromUTF8 = function(str) {
	var string = str +"";
	var rgx = /[\xF0-\xF7][\x80-\xBF]{3}|[\xE0-\xEF][\x80-\xBF][\x80-\xBF]|[\xC0-\xDF][\x80-\xBF]/gi
	var matches = string.match(rgx);
	
	if (!matches) return string;
	for (var i=0, l=matches.length; i<l; i++) {
		var match = matches[i];
		var chr = match.split("").reverse().join("");
		chr = (((chr.length>3?chr.charCodeAt(3):0) & 7) << 18) | (((chr.length>2?chr.charCodeAt(2):0) & 15) << 12) | (((chr.length>1?chr.charCodeAt(1):0) & 63) << 6) | (chr.charCodeAt(0) & 63);
		string = string.replace(match, String.fromCharCode(chr));
	}
	return string;
}
String.htmlDecode = function (str) {
	var cleaned = (str +"").toLatin1();
	return cleaned;
	var entities = cleaned.match(this.__entityRgx);
	var rgx = new Regexp("^$", "g");
	if (entities) {
		for (var i=0, l=entities.length; i<l; i++) {
			var entity = entities[i];
			var charCode = entity.replace(/[&#;]/g, "");
			rgx.compile(entity, "g");
			cleaned = cleaned.replace(rgx, String.fromCharCode(isNaN(entity)?(this.__htmlEntities[entity] || 32):entity));
		}
	}
	return cleaned
}

String.prototype.unaccent = function() {
	return String.unaccent(this);
}
String.prototype.fromUTF8 = function()	{
	return String.fromUTF8(this);
}
String.prototype.toLatin1 = function()	{
	return String.fromUTF8(this);
}
String.prototype.toUTF8 = String.prototype.toString;

String.prototype.htmlDecode = function() {
	return String.htmlDecode(this);
}

MlUtil = MLUtil = {
	isLenient: true,
	getBoolean: function(value, arraySeparator, defaut) {
		if (typeof(value)=="undefined") value = "";
		var values = arraySeparator? value.split(arraySeparator) : [value];
		var result = [];
		for (var i=0, l=values.length; i<l; i++) {
			if (typeof(values[i]) == "undefined") continue;
			var value = values[i];
			if (!this.isLenient && !/^(0|1|false|true|off|on|no|non|yes|oui|n|y)$/.test(value)) {
				this.crash("Invalid boolean value ["+ this.getString(value) +"] at index "+ i);
			} else if(value) {
				result.push(/^(1|true|on|yes|oui|y)$/gi.test(value));
			}
		}
		if (result.length==0 && defaut) {
			result = this.getBoolean(defaut, arraySeparator);
		}
		return arraySeparator? result : result[0];
	},
	getDate: function(value, arraySeparator) {
		if (typeof(value)=="undefined") value = "";
		var values = arraySeparator? value.split(arraySeparator) : [value];
		var result = [];
		for (var i=0, l=values.length; i<l; i++) {
			var value = new Date(values[i]);
			if (/NaN/.test(value)) {
				if (!this.isLenient && values[i]!="")
					this.crash("Invalid date value ["+ this.getString(values[i]) +"] at index "+ i);
			} else if (values[i]){
				result.push(value);
			}
		}
		if (result.length==0 && defaut) {
			result = this.getDate(defaut, arraySeparator);
		}
		return arraySeparator? result : result[0];
	},
	getHTML: function(value, stripTagList, defaut) {
		if (!value) value = defaut || "";
		if (!stripTagList) return (value +"").toLatin1();
		if (stripTagList=="*") stripTagList = "\\w+"
		var rgx = new RegExp("<\/?("+ stripTagList.replace(",", "|") +")( [^>]+)?>", "gi");
		return value.replace(rgx, "").toLatin1();
	},
	getInt: function(value, arraySeparator, defaut) {
		if (typeof(value)=="undefined") value="";
		var values = arraySeparator? value.split(arraySeparator) : [value];
		var result = [];
		for (var i=0, l=values.length; i<l; i++) {
			var value = parseInt(values[i], 10);
			if (!isNaN(value)) {
				result.push(value);
			} else if (!this.isLenient && values[i]!="") {
				this.crash("Invalid integer value ["+ this.getString(values[i]) +"] at index "+ i);
			}
		}
		if (result.length==0 && defaut) {
			result = this.getInt(defaut, arraySeparator);
		}
		return arraySeparator? result : result[0];
	},
	getNumber: function(value, arraySeparator) {
		if (typeof(value)=="undefined") value = "";
		var values = arraySeparator? value.split(arraySeparator) : [value];
		var result = [];
		for (var i=0, l=values.length; i<l; i++) {
			var value = parseFloat(values[i].replace(",", "."), 10);
			if (values[i]=="") continue;
			if (!isNaN(value)) {
				result.push(value);
			} else if (!this.isLenient && values[i]!="") {
				this.crash("Invalid numeric value ["+ this.getString(values[i]) +"] at index "+ i);
			}
		}
		if (result.length==0 && defaut) {
			result = this.getNumber(defaut, arraySeparator);
		}
		return arraySeparator? result : result[0];
	},
	getString: function(value, arraySeparator, defaut) {
		if (!value) value = defaut || "";
		var values = arraySeparator? value.split(arraySeparator) : [value];
		var rgx = /(&\w+;)|&#(\d+);/g
		for(var i=0, l=values.length; i<l; i++) {
			values[i] = this.getHTML(values[i], '*').htmlDecode();
		}
		return arraySeparator? values : values[0];
	}
}

MLUrl = function(url, keywords) {
	this.options = /^$/i;
	this.setURL(url);
	this.setKeywords(keywords);
	this.parse();
}

MLUrl.options = /^$/i;
MLUrl.createObject = function(url, keywords) { 
	return new this(url, keywords);
}
MLUrl.decode = function (str) {
	if (!str) return "";
	str += "";
	return unescape(str.replace(/[+]/gi, " ").replace(/%80/gi, "€")).fromUTF8();
}
MLUrl.encode = function (str) {
	if (!str) return "";
	str += "";
	return encodeURI(str);
}
MLUrl.urlEncode = function (str) {
	if (!str) return "";
	str += "";
	return escape(str).replace(/%20/g, "+");
}
MLUrl.prototype.setURL = function (url) {
	this.__parsed = false;
	this.url = new String(url || document.location);
}

MLUrl.prototype.setKeywords = function (keywords) {
	keywords = keywords ? (keywords +"") : "";
	this.keywords = MLUtil.getString(keywords).fromUTF8().unaccent().replace(/[^a-z0-9]+/gi, "-").replace(/[-_]+$/, "");
}

MLUrl.prototype.parse = function (base, search) {
	if (this.__parsed) return;
	this.__parsed = true;

	var url = this.url.split("?");
	this.base = url[0] || "/index.asp";
	this.search = url[1] ? url[1] : "";

	var base = this.base;
	var search = this.search;
	this.location = base + (search? "?"+ search : "");
	this.params = {};
	if (/\.html(\?|$)/i.test(base)) { 
		var urlRgx = /^(https?:\/\/[^/]+)?\/?([^_]*)_(\d+)(?:_(\d+)?)?(?:_(\d+)?)?(?:_(\d+)?)?(?:_(\d+)?)?(?:_(\d+)?)?(_.*)?\.html$/i;
		var cmps = urlRgx.exec(base);
		if (cmps) {
			this.base = cmps[1];
			this.setKeywords(cmps[2]);
			this.params["id"] = cmps[3];
			if (cmps[4]) this.params["cat"] = cmps[4];
			if (cmps[5]) this.params["idp"] = cmps[5];
			if (cmps[6]) this.params["idf"] = cmps[6];
			if (cmps[7]) this.params["id_sous_menu"] = cmps[7];
			if (cmps[8]) this.params["idl"] = cmps[8];
			var builtinSearch = cmps[9];
			if (builtinSearch) {
				var prmRgx = /.*(_([a-z][a-z0-9]*)-(.*?))$/i;
				var prm = prmRgx.exec(builtinSearch);
				while(prm) {
					this.setParam(prm[2], prm[3]);
					builtinSearch = builtinSearch.replace(prm[1], "");
					prm = prmRgx.exec(builtinSearch);
				}
			}
		}
	} 
	if (this.search) {
		var rgx = /(^|&)(.*?)(?:(?=&[^&]+=)|$)/gi
		var params = this.search.match(rgx);
		for (var i=0, l=params.length; i<l; i++) {
			var param = params[i].replace(/^&/g, "").split("=");
			this.setParam(param[0], param[1]);
		}
	}
}

MLUrl.prototype.clearParams = function (names) {
	this.parse();
	var toClear = MLUrl.decode(names).replace(",", "|");
	var rgx = new RegExp("^("+ toClear +")$", "i");
	for (var i=0, l=toClear.length; i<l; i++) {
		for (var key in this.params) {
			if (rgx.test(key)) {
				delete(this.params[key]);
			}
		}
	}
}

MLUrl.setOptional = function (namesList) {
	namesList = namesList +"";
	this.options = new RegExp("^("+ namesList.replace(/,/gi, "|") +")$", "i");
}
MLUrl.prototype.setOptional = function (namesList) {
	this.parse();
	namesList = namesList +"";
	this.options = new RegExp("^("+ namesList.replace(/,/gi, "|") +")$", "i");
}
MLUrl.prototype.addParam = function (name, value, sep) {
	this.parse();
	if (name) {	
		var current = this.params[MLUrl.decode(name).toLowerCase()]
		if (current) {
			this.params[MLUrl.decode(name).toLowerCase()] = current + (typeof sep!='undefined' ? sep : ',') + MLUrl.decode(value);
		} else {
			this.params[MLUrl.decode(name).toLowerCase()] = MLUrl.decode(value);
		}
	}	
}

MLUrl.prototype.setParam = function (name, value) {
	this.parse();
	if (name) {	
		if (!value) {
			this.clearParams(name);
		} else {
			this.params[MLUrl.decode(name).toLowerCase()] = MLUrl.decode(value);
		}
	}
}
MLUrl.prototype.getParam = function (name) {
	this.parse();
	return this.params[MLUrl.decode(name).toLowerCase()];
}

MLUrl.prototype.toString = function () {
	if (!this.__parsed) {
		this.parse();
	}
	if (this.keywords) {
		var paramString = "_"+ (this.params["id"] || "");
		paramString += "_"+ (this.params["cat"]!=undefined? this.params["cat"] : "");
		paramString += "_"+ (this.params["idp"]!=undefined? this.params["idp"] : "");
		paramString += "_"+ (this.params["idf"]!=undefined? this.params["idf"] : "");
		paramString += "_"+ (this.params["id_sous_menu"]!=undefined? this.params["id_sous_menu"] : "");
		paramString += "_"+ (this.params["idl"]!=undefined? this.params["idl"] : "");
		paramString = paramString.replace(/_+$/gi, "");
		var queryString = "";
		for (var i in this.params) {
			if (/^(id|cat|idp|idf|id_sous_menu|idl)$/i.test(i)) continue;
			if (typeof(this.params[i]) =='function') continue;
			if (!this.params[i]) continue;
			if (this.options.test(i) || MLUrl.options.test(i)) {
				queryString += (queryString ? "&" : "?") + MLUrl.urlEncode(i) +"="+ MLUrl.urlEncode(this.params[i])
			} else {
				paramString += "_"+ MLUrl.urlEncode(i) +"-"+ MLUrl.urlEncode(this.params[i]);
			}
		}
		var output = this.keywords.substr(0, 255 - paramString.length);
		if (output.length > 0) {
		 	return "/"+ output + paramString +".html" + queryString;
		} else {
			this.debug("Url to long to be rewrited with keywords. Reverting to ASP URL");
		}
	} 
	var queryString = "";
	for (var i in this.params) {
		if (typeof(this.params[i]) =='function') continue;
		if (!this.params[i]) continue;
		queryString += (queryString ? "&" : "?") + MLUrl.urlEncode(i) +"="+ MLUrl.urlEncode(this.params[i]);
	}
	return this.base + queryString;
}
MLUrl.setOptional("ls,lso");

if (!window.addEventListener) {
	window.addEventListener = function (evt, hdl, useCapture) {
		if (!window.attachEvent) return;
		return window.attachEvent("on"+ evt, hdl);
	}
}

/* Nouvelle Structure Script */
// namespace ML
var ML = {
	initialize: function (params) {
		document.fire("ml:onload", params);
	}
};
/*
document.observe("load", function() {
	ML.initialize({});
})
*/
// gestion i18n
ML.Locale = {
	initialize: function (locale) {
		locale = locale || navigator.userLanguage || navigator.browserLanguage || navigator.language;
		locale = locale.toLowerCase().split('-')
		this.lang = locale[0]
		this.culture = locale[1] || '';
		
		alert(this);
	},
	toString: function () {
		return this.lang + (this.culture ? '-'+this.culture : '');
	}
};
document.observe("ml:load", function(e) {
	ML.Locale.initialize(e.memo.locale);
});

// namespace utilitaire
ML.Util = {
	
	getLocale: function() {
		if (navigator) {
			return this.locale || navigator.userLanguage || navigator.browserLanguage || navigator.language;
		}
	},
	setLocale: function(culture) {
	}
};

ML.Url = Class.create({});

/** Extension des fonctionnalités xml de FF */
if (window.Node && Node.prototype && Node.prototype.__defineGetter__) {
    Node.prototype.__defineGetter__("xml", function () {
        var serializer = new XMLSerializer();
        return serializer.serializeToString(this);
    });

	Object.extend(Node.prototype, {
		selectNodes: function (xpath) {
			if (!this.ownerDocument.nsResolver) {
				this.ownerDocument.nsResolver = {
					nsURI: {},
					lookupNamespaceURI: function (prefix) {
						return this.ownerDocument.nsResolver.nsURI[prefix] || null;
					}
				};
				for (var i in this.ownerDocument.documentElement.attributes) {
					var attr = this.ownerDocument.documentElement.attributes[i];
					if (/^xmlns:(.*)/i.exec(attr.nodeName)) {
						this.ownerDocument.nsResolver.nsURI[RegExp.$1] = attr.nodeValue
					}
				}
			}
			var results = this.ownerDocument.evaluate(xpath, this, this.ownerDocument.nsResolver, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);
			var aNodes = new Array();
			if (results) {
				var node = results.iterateNext();
				while (node) {
					aNodes.push(node);
					node = results.iterateNext();
				}
			}
			return aNodes;
		},

		selectSingleNode: function (xpath) {
			var xpe = new XPathEvaluator();
			var nsResolver = xpe.createNSResolver(this.ownerDocument == null ? this.documentElement : this.ownerDocument.documentElement);
			var results = xpe.evaluate(xpath, this, nsResolver, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
			return results ? results.singleNodeValue : null;
		}
	})
}
/** Extension des fonctionnalités xml de FF */
