function addZero(x,n) {
	n = (n > 1) ? n : 1;
	x = parseInt(x);
	if(undefined != x && 0 < x && x < Math.pow(10,n)) {
		z = (x < 10) ? Math.ceil(Math.pow(10,n)/x) : Math.floor(Math.pow(10,n)/x);
		for(i=0;Math.pow(10,i)<=z;i++) {
			x = '0'+x;
		}
	}
	return x;
}

function stopEventPropagation(e) {
	if(e&&e.stopPropagation&&e.preventDefault) {
		e.stopPropagation();
		e.preventDefault();
	}
	else if(e&&window.event) {
		window.event.cancelBubble = true;
		window.event.returnValue = false;
	}
	return false;
}

function extendElementWidth(element,finalWidth,finalLeft) {
	initialWidth = parseInt(element.offsetWidth);
	//window.alert('extendElementWidth\ninitialWidth: ' + initialWidth);
	var timeInterval = window.setInterval(function() {
		if(parseInt(element.offsetWidth)>=finalWidth) {
			clearInterval(timeInterval);
			return false;
		}
		element.style.width	= (parseInt(element.offsetWidth,10)+1)+'px';
		if(finalLeft && parseInt(element.style.left)>finalLeft) {
			element.style.left = (parseInt(element.style.left,10)-1)+'px';
		}
		return true;
	}, 1);
}


function extendElementHeight(element,finalHeight,finalTop) {
	initialHeight = parseInt(element.offsetHeight);
	var timeInterval = window.setInterval(function() {
		if(parseInt(element.offsetHeight)>=finalHeight) {
			clearInterval(timeInterval);
			return false;
		}
		element.style.height = (parseInt(element.offsetHeight,10)+1)+'px';
		/*
		if(finalLeft && parseInt(element.style.left) > finalLeft) {
			element.style.left = (parseInt(element.style.left) - 1) + "px";
		}
		*/
		return true;
	}, 1);
}

function getHTMLElementPosition(element) {
	var posX = 0;
	var posY = 0;
	var HTMLElement = (typeof(element)=='object') ? element : document.getElementById(element);
	if(HTMLElement) { 
		posX = HTMLElement.offsetLeft;
		posY = HTMLElement.offsetTop;
		if(HTMLElement.offsetParent){
			while(HTMLElement = HTMLElement.offsetParent) {
				if(HTMLElement.offsetParent) {
					posX += HTMLElement.offsetLeft;
					posY += HTMLElement.offsetTop;
				}
			}
		}
	}
	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 sortIntegerAsc(x,y) {
	rtn = parseInt(x,10)-parseInt(y,10);
	return (rtn == 0) ? 0 : Math.abs(rtn)/rtn;
}
function sortIntegerDesc(x,y)	{
	rtn = parseInt(y,10)-parseInt(x,10);
	return (rtn == 0) ? 0 : Math.abs(rtn)/rtn;
}

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 getLeft(elt) {
	var offsetLeft = 0;
	while(elt != null) { offsetLeft += elt.offsetLeft; elt = elt.offsetParent; }
	return offsetLeft;
};

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

function cleanWhiteSpace(elt) {
	for(i=0;i<elt.childNodes.length;i++) {
		node = elt.childNodes[i];
		if(node.nodeType == 3 && !/\S/.test(node.nodeValue)) {
			elt.removeChild(node);
		}
	}
};

function getChildrenByTagName(elt,tagName) {
	rtn = new Array();
	for(i=0;i<elt.childNodes.length;i++) {
		child = elt.childNodes[i];
		if(child.nodeType==1&&(tagName=='*'||child.nodeName.toLowerCase()==tagName.toLowerCase())) {
			rtn.push(child);
		}
	}
	return rtn;
};

function addClassName(elt,cN) {
	elt = (typeof(elt)=='string') ? document.getElementById(elt) : elt;
	if('object'==typeof(elt)) {
		if(elt.className == undefined || elt.className.search(RegExp('\\b'+cN+'\\b','gi')) == -1) {
			elt.className += ' ' + cN;
			elt.className.setSpaces();
		}
	}
	return true;
};

function removeClassName(elt,cN) {
	elt = (typeof(elt)=='string') ? document.getElementById(elt) : elt;
	if('object'==typeof(elt)) {
		elt.className = elt.className.replace(RegExp('\\b'+cN+'\\b','gi'),'');
		elt.className.setSpaces();
	}
	return true;
};