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);
}


/**
 * xmlhttprequest
**/
// IE support
if (window.ActiveXObject && !window.XMLHttpRequest) {
	window.XMLHttpRequest = function() {
		var msxmls = new Array(
			'Msxml2.XMLHTTP.5.0',
			'Msxml2.XMLHTTP.4.0',
			'Msxml2.XMLHTTP.3.0',
			'Msxml2.XMLHTTP',
			'Microsoft.XMLHTTP');
		for (var i = 0; i < msxmls.length; i++) {
			try {
				return new ActiveXObject(msxmls[i]);
			} catch (e) {
			}
		}
		return null;
	};
} 

/**
 *   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.
 *
 *   @param object element
 *   @returns boolean
 */
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
 */
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
};
