var _OP = (typeof(window.opera) != "undefined");
var _MOZ = (!_OP && document.implementation && document.implementation.createDocument);
var _IE = (navigator.userAgent.toLowerCase().indexOf("msie") > -1);

/*************************************************************************************************************
 * Fonctions de contrôle DHTML
 ************************************************************************************************************/
function IEBody() {
	return _IE ? ((document.compatMode && document.compatMode != "BackCompat")
			? document.documentElement
			: document.body) : null;
}

/*
 * function getStyle(element, cssSelector) { var value; if(document.defaultView) { // gecko value =
 * document.defaultView.getComputedStyle(element, "").getPropertyValue(cssSelector); } else
 * if(element.currentStyle) { // ie value = element.currentStyle[dojo.style.toCamelCase(cssSelector)]; } else
 * if(element.style.getPropertyValue) { // dom spec value = element.style.getPropertyValue(cssSelector); }
 * return value; }
 */

function getElmWidth(v) {
	var o = (typeof(v) == "string" ? $(v) : v);
	if (_IE)
		i = (o.style.pixelWidth ? o.style.pixelWidth : o.offsetWidth);
	else if (_MOZ || _OP)
		i = (o.style.width ? o.style.width : o.offsetWidth);
	else
		i = 0;
	return parseInt(i);
}
function getElmHeight(v) {
	var o = (typeof(v) == "string" ? $(v) : v);
	if (_IE)
		i = (o.style.pixelHeight ? o.style.pixelHeight : o.offsetHeight);
	else if (_MOZ || _OP)
		i = o.offsetHeight;
	else
		i = 0;
	return parseInt(i);
}
function getStrictElmLeft(v) {
	var o = (typeof(v) == "string" ? $(v) : v);
	var i = parseInt(o.offsetLeft);
	return i;
}
function getElmLeft(v) {
	var o = (typeof(v) == "string" ? $(v) : v);
	var i = parseInt(o.offsetLeft)
			+ (o.offsetParent && o.offsetParent.tagName != 'BODY' ? getElmLeft(o.offsetParent) : 0);
	return i;
}
function getStrictElmTop(v) {
	var o = (typeof(v) == "string" ? $(v) : v);
	var i = parseInt(o.offsetTop);
	return i;
}
function getElmTop(v) {
	var o = (typeof(v) == "string" ? $(v) : v);
	var i = parseInt(o.offsetTop)
			+ (o.offsetParent && o.offsetParent.tagName != 'BODY' ? getElmTop(o.offsetParent) : 0);
	return i;
}

function getPageWidth() {
	if (_IE)
		i = document.body.clientWidth;
	else if (_MOZ || _OP) /* i = document.body.offsetWidth; */
		i = self.innerWidth;
	else
		i = 0;
	return parseInt(i);
}
function getPageHeight() {
	if (_IE)
		i = document.body.clientHeight;
	else if (_MOZ || _OP) /* i = document.body.offsetHeight; */
		i = self.innerHeight;
	else
		i = 0;
	return parseInt(i);
}

function getMouseX(e) {
	if (_IE)
		i = event.clientX + getPageScrollX();
	else if (_MOZ || _OP)
		i = e.pageX;
	else
		i = 0;
	return parseInt(i);
}
function getMouseY(e) {
	if (_IE)
		i = event.clientY + getPageScrollY();
	else if (_MOZ || _OP)
		i = e.pageY;
	else
		i = 0;
	return parseInt(i);
}

function getPageScrollX() {
	if (_IE)
		i = IEBody().scrollLeft;
	else if (_MOZ || _OP)
		i = window.pageXOffset;
	else
		i = 0;
	return parseInt(i);
}
function getPageScrollY() {
	if (_IE)
		i = IEBody().scrollTop;
	else if (_MOZ || _OP)
		i = window.pageYOffset;
	else
		i = 0;
	return parseInt(i);
}

function moveElm(v, x, y) {
	var o = (typeof(v) == "string" ? $(v) : v);
	o.style.left = x + 'px';
	o.style.top = y + 'px';
}

function fitWinToContentSize() {
	window.scrollTo(9999, 9999);
	window.resizeBy(getPageScrollX(), getPageScrollY());
	window.scrollTo(0, 0);
}

function keepElmInWindow(v, yMargin, xMargin) {
	var scrollbarWidth = 18;
	var o = $(v);
	var vpDim = document.viewport.getDimensions();
	var vpScroll = document.viewport.getScrollOffsets();
	var elmDim = o.getDimensions();
	var elmPos = o.cumulativeOffset();

	var iScrollX = 0;
	if (elmPos.left < vpScroll.left + xMargin) {
		iScrollX += vpScroll.left + xMargin - elmPos.left;
	} else if (elmPos.left + elmDim.width > vpScroll.left + vpDim.width - xMargin) {
		iScrollX -= elmPos.left + elmDim.width - (vpScroll.left + vpDim.width - xMargin) + scrollbarWidth;
	}

	if (iScrollX != 0)
		o.style.left = (elmPos.left + iScrollX) + 'px';

	var iScrollY = 0;
	if (elmPos.top < vpScroll.top + yMargin) {
		iScrollY += vpScroll.top + yMargin - elmPos.top;
	} else if (elmPos.top + elmDim.height > vpScroll.top + vpDim.height - yMargin) {
		iScrollY -= elmPos.top + elmDim.height - (vpScroll.top + vpDim.height - yMargin) + scrollbarWidth;
	}

	if (iScrollY != 0) {
		o.style.top = (elmPos.top + iScrollY) + 'px';
	}
}
/** ************************************************************************** */
