function popup_centree(page,largeur,hauteur,options) {
  var top=(screen.height-hauteur)/2;
  var left=(screen.width-largeur)/2;
  return window.open(page,"popup","top="+top+",left="+left+",width="+largeur+",height="+hauteur+","+options);
}



/* XMLhttpObject */
function getHTTPObject(xml) {
  var xmlhttp;
  /*@cc_on
  @if (@_jscript_version >= 5)
    try {
      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
      } catch (e) {
      try {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (E) {
        xmlhttp = false;
        }
      }
  @else
  xmlhttp = false;
  @end @*/
  if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
    try {
      xmlhttp = new XMLHttpRequest();
         if (xml && xmlhttp.overrideMimeType) {
            xmlhttp.overrideMimeType('text/xml');
         }
      } catch (e) {
      xmlhttp = false;
      }
    }
  return xmlhttp;
}

function getXMLHttpRequest() {
	try { // Firefox
		return new XMLHttpRequest();
		//alert("Firefox");
	} catch (e) { // Internet Explorer
		try {
			return new ActiveXObject("Microsoft.XMLHTTP");
			//alert("Internet Explorer");
		} catch (e) {
			alert('Your browser can\'t handle this script');
			return false;
		}
	}
}




/**
 *   Array convenience method to check for membership.
 *
 *   @param object element
 *   @returns boolean
 */
Array.prototype.in_array = function (element) {
    for (var i = 0; i < this.length; i++) {
        if (this[i] == element) {
            return true;
        }
    }
    return false;
};
/**
 *   Array convenience method to remove duplicates.
 *
 */
Array.prototype.sort_distinct = function () {
	this.sort();
	var idx = 1;
    for (var i=1; i<this.length; i++) {
		if (this[idx-1]!=this[i]) {
			this[idx++] = this[i];
		}
    }
	while (idx<this.length)
		this.pop();
};
/**
 *	String pad
 *	dir : 'right', 'left'
 */
String.prototype.pad = function (str, len, dir) {
	if (this.length<len) {
		var orig_len = this.length;
		var diff_len = len-orig_len;

		if (str.length==0) str = ' ';
		// decalage  droite
		if ( dir.toLowerCase()=='left' )
			for (k=len; k>diff_len; k--)
				this[k] = this[k-diff_len];
		// boucle
		i = 0;
		while ( i<diff_len ) {
			j = 0;
			while ( j<str.length && i<diff_len ) {
				switch ( dir.toLowerCase() ) {
					case 'right' :
						this[this.length] = str[j];
						break;
					case 'left' :
						this[i] = str[j];
						break;
				} // fin switch
				j++;
				i++;
			} // fin while str.length
		} // fin while this.length
	} // fin if
};