	function getHTMLElementPosition(element) {
		var posX = 0;
		var posY = 0;
		//-- suivant type en parametre
		if(typeof(element) == 'object') { var HTMLElement = element; }
		else { var HTMLElement = document.getElementById(element); }
		//-- Si l'objet existe
		if(HTMLElement) { 
			//-- Recup. Position Objet
			posX = HTMLElement.offsetLeft;
			posY = HTMLElement.offsetTop;
			//-- Si propriete existe
			if(HTMLElement.offsetParent){
				//-- Tant qu'un parent existe
				while(HTMLElement = HTMLElement.offsetParent) {
					if(HTMLElement.offsetParent) { // on ne prend pas le BODY
						//-- Ajout position Parent
						posX += HTMLElement.offsetLeft;
						posY += HTMLElement.offsetTop;
					}
				}
			}
		}
		//-- Retour des positions
		return ({left: posX, top: posY});
	}
	
	function getPageScroll() {
		var Left;
		var Top;
		var DocRef;

		if(window.innerWidth) {
			with(window) {
				Left = pageXOffset;
				Top = pageYOffset;
			}
		}
		else { // Cas Explorer a part
			if(document.documentElement && document.documentElement.clientWidth) { DocRef = document.documentElement; }
			else { DocRef = document.body; }
			with(DocRef) { 
				Left = scrollLeft;
				Top = scrollTop;
			}
		}
		return({top:Top, left:Left});
	}
	
	function addEvent(obj,event,func,mode) {
		if(obj.addEventListener) { obj.addEventListener(event,func,mode?mode:false); }
		else { obj.attachEvent('on'+event,func); }
	}
	
	//	DÉPLACE LA PAGE AUX COORDONNÉES PASSÉES EN PARAMÈTRES
	function Deplace_Doc( x_, y_){
		window.scrollTo( x_, y_);
		return(true);
	}
	
	function addOrRemoveClassName(element,classname) {
		if(arguments.length == 1) { element = this; classname = arguments[0]; }
		else if(typeof(element) == 'string') { element = document.getElementById(element); }
		else if(typeof(element) != 'object') { window.alert(typeof(element)); return false; }
		
		isFound = false;
		elementClass = element.className.split(' ');
		finalClass = '';
		for(i = 0; i < elementClass.length; i++) {
			if(elementClass[i] == classname) {
				isFound = true;
				foundedIndex = i;
			}
			else {
				if(i != 0) { finalClass += ' '; }
				finalClass += elementClass[i];
			}
		}
		
		element.className = finalClass;
		
		if(!isFound) { element.className += ' ' + classname; }
		
		element.className.replace(/^\s+/g,'').replace(/\s+$/g,'');
		return true;
	}
	
	function addClassName(element,classname) {
		if(arguments.length == 1) { element = this; classname = arguments[0]; }
		else if(typeof(element) == 'string') { element = document.getElementById(element); }
		else if(typeof(element) != 'object') { /*window.alert(typeof(element)); */return false; }
		
		elementClass = element.className.split(' ');
		finalClass = '';
		for(i = 0; i < elementClass.length; i++) {
			if(elementClass[i] == classname) { return true; }
			else {
				if(i != 0) { finalClass += ' '; }
				finalClass += elementClass[i];
			}
		}
		element.className = finalClass + ' ' + classname;
		element.className.replace(/^\s+/g,'').replace(/\s+$/g,'');
		return true;
	}
	
	function removeClassName(element,classname) {
		if(arguments.length == 1) { element = this; classname = arguments[0]; }
		else if(typeof(element) == 'string') { element = document.getElementById(element); }
		else if(typeof(element) != 'object') { /*window.alert(typeof(element)); */return false; }
		
		elementClass = element.className.split(' ');
		finalClass = '';
		for(i = 0; i < elementClass.length; i++) {
			if(elementClass[i] !== classname) {
				if(i != 0) { finalClass += ' '; }
				finalClass += elementClass[i];
			}
		}
		element.className = finalClass;
		element.className.replace(/^\s+/g,'').replace(/\s+$/g,'');
		return true;
	}
	
	
	
		//	DÉTERMINE LE NOMBRE DE JOURS EN FONCTION DU MOIS ET DE L'ANNÉE SÉLECTIONNÉS
	function setDaysNumber(select_day_id,select_month_id,select_year_id) {
		select_day		= document.getElementById(select_day_id);
		select_month	= document.getElementById(select_month_id);
		select_year		= document.getElementById(select_year_id);
		option = select_day.lastChild;
		nbOptionCachee = 0;
		switch(select_month.value) {
			case  "1":
			case  "3":
			case  "5":
			case  "7":
			case  "8":
			case "01":
			case "03":
			case "05":
			case "07":
			case "08":
			case "10":
			case "12":
				nbOptionCachee = 0;
				break;
			case  "4":
			case  "6":
			case  "9":
			case "04":
			case "06":
			case "09":
			case "11":
				nbOptionCachee = 1;
				if(select_day.value == 31) { select_day.value = 30; }
				break;
			case  "2":
			case "02":
				if((select_year.value % 4) == 0 && (select_year.value % 100) !== 0 || (select_year.value % 400) == 0) { 
					nbOptionCachee = 2;
					if(select_day.value > 29) { select_day.value = 29; }
				}
				else {
					nbOptionCachee = 3;
					if(select_day.value > 28) { select_day.value = 28; }
				}
		}
		nbOptions = select_day.childNodes.length;
		for(i = 0; i < nbOptions; i++) {
			if(select_day.childNodes[i].value > (31 - nbOptionCachee)) {
				select_day.removeChild(select_day.childNodes[i]);
				i--;
				nbOptions--;
			}
		}
		while(i < (31-nbOptionCachee)) {
			option = document.createElement("option");
			option.value = i+1;
			option.texte = i+1;
			option.innerHTML = i+1;
			select_day.appendChild(option);
			i++;
		}
	}
	
	//	AFFICHE LE RÉSULTAT DE L'OPÉRATION DANS L'ÉLÉMENT PASSÉ EN PARAMÈTRE
	function priceCalculation(product_id) {
		unit_price	= parseInt(document.getElementById('product_row_unit_price_' + product_id).innerHTML);
		quantity	= parseInt(document.getElementById('product_quantity_' + product_id).value);
		total_price	= document.getElementById('product_row_total_price_' + product_id);
		if(isNaN(unit_price * quantity)) { total_price.innerHTML = 0; }
		else { total_price.innerHTML = unit_price * quantity; }
		return true;
	}
	
	//	AFFICHE LE RÉSULTAT DE L'OPÉRATION DANS L'ÉLÉMENT PASSÉ EN PARAMÈTRE
	function returnCalculation(value_1,value_2,element_id) {
		element = document.getElementById(element_id);
		if(element.value) { element.value = value_1 * value_2; }
		else { element.innerHTML = value_1 * value_2; }
		return true;
	}
	
	
	
	function getLeft(el) {
		var offsetLeft = 0;
		while(el != null) { offsetLeft += el.offsetLeft; el = el.offsetParent; }
		return offsetLeft;
	}

	function getTop(el) {
		var offsetTop = 0;
		while(el != null) { offsetTop += el.offsetTop; el = el.offsetParent; }
		return offsetTop;
	}

	function sortIntegerAsc(int1, int2)		{ return int1-int2; }
	function sortIntegerDesc(int1, int2)	{ return int2-int1; }

	function getXhr() {
		var xhr = null; 
		if(window.XMLHttpRequest) { xhr = new XMLHttpRequest(); } // Firefox et autres
		else if(window.ActiveXObject) {	// Internet Explorer 
			try { xhr = new ActiveXObject("Msxml2.XMLHTTP"); }
			catch(e) { xhr = new ActiveXObject("Microsoft.XMLHTTP"); }
		}
		else { // XMLHttpRequest non supporté par le navigateur 
		   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
		   xhr = false; 
		} 
	   return xhr;
	}
	
	function openPopUp(url,name,parameters) {
		newWindow = window.open(url,name,parameters);
		newWindow.focus();
	}
		
	function cleanWhiteSpace(element) {
		for(var i = 0; i < element.childNodes.length; i++) {
			var node = element.childNodes[i];
			if(node.nodeType == 3 && !/\S/.test(node.nodeValue)) {
				element.removeChild(node);
			}
		}
	}