/* Sublinet 2008 
** Ce script appartient à Sublinet et ne peut
** en aucun cas être modifié ou publié sans 
** son accord.
** Nous contacter : contact@sublinet.com
*/

/* Permet d'obtenir les valeurs top, left, width
** et height courantes d'un objet.
*/

function getOffsetValues(myObjectId)
{
	if(document.all)
	{
		getOffsetTree(document.all(myObjectId));
		document.all(myObjectId).trueWidth 					= parseInt(document.all(myObjectId).offsetWidth);
		document.all(myObjectId).trueHeight 				= parseInt(document.all(myObjectId).offsetHeight);

	}
	else
	{
		document.getElementById(myObjectId).trueLeft 		= parseInt(document.getElementById(myObjectId).offsetLeft);
		document.getElementById(myObjectId).trueTop			= parseInt(document.getElementById(myObjectId).offsetTop);
		document.getElementById(myObjectId).trueWidth 		= parseInt(document.getElementById(myObjectId).offsetWidth);
		document.getElementById(myObjectId).trueHeight 		= parseInt(document.getElementById(myObjectId).offsetHeight);
	}	
}

function getOffsetTree(myObject)
{
	parentObject = myObject;
	objectLeft = 0;
	objectTop = 0;
	while (myObject.tagName.toLowerCase() != 'body')
	{
		var get = new Array;
		objectLeft 	+= 	myObject.offsetLeft;
		if(myObject.style.borderLeftWidth)
		{
			get = getStyleValues(myObject.style.borderLeftWidth);
			objectLeft += parseInt(get[0]);
		}
		objectTop 	+= 	myObject.offsetTop;
		if(myObject.style.borderTopWidth)
		{
			get = getStyleValues(myObject.style.borderTopWidth);
			objectTop += parseInt(get[0]);
		}
		myObject 	= 	myObject.offsetParent;
	}
	parentObject.trueLeft = objectLeft;
	parentObject.trueTop = objectTop;
}

/* Permet d'obtenir la résolution utile de la 
** fenêtre.
*/

var trueHeight = 0;
var trueWidth = 0;

function GetScreenDim()
{
  if (document.all)
  {
    trueHeight = document.documentElement.clientHeight;
    trueWidth = document.documentElement.clientWidth;
    if(trueHeight == 0 || trueWidth == 0)
    {
    	trueHeight = document.body.clientHeight;
    	trueWidth = document.body.clientWidth;
    }
  }
  else
  {
    trueHeight = window.innerHeight;
    trueWidth = window.innerWidth;
  }
}

/* Permet de positionner des éléments absolute en relatif
** par rapport à un autre élément.
*/

function setRelativePosition(refererId, elementId, left, top)
{
	var referer = document.getElementById(refererId);
	getOffsetValues(refererId);
	document.getElementById(elementId).style.left = parseInt(referer.trueLeft) + left + 'px';
	document.getElementById(elementId).style.top = parseInt(referer.trueTop) + top + 'px';
}

var relativePositionSets = new Array;

function setRelativePositions(tagType, elementName, elementId)
{
	var setId = relativePositionSets.length;
	var newSet = 1;
	if(setId)
	{
		for(i = 0; i < setId; i ++)
		{
			if(relativePositionSets[i].groupName == elementName)
			{
				newSet = 0;
				break;
			}
		}
	}
	if(newSet)
	{
		relativePositionSets[setId] = new Array;
		relativePositionSets[setId].refererId = elementId;
		relativePositionSets[setId].groupName = elementName;
		relativePositionSets[setId].visibility = 1;
		relativePositionSets[setId].setElements = new Array;
		
		var elemTable = myGetElementsByName(tagType, elementName);
		var referer = document.getElementById(elementId);
		getOffsetValues(elementId);
		for(var i = 0; i < elemTable.length; i ++)
		{
			relativePositionSets[setId].setElements[i] = new Array;
			relativePositionSets[setId].setElements[i].object = elemTable[i];
			relativePositionSets[setId].setElements[i].leftValue = parseInt(getStyleValues(elemTable[i].style.left));
			relativePositionSets[setId].setElements[i].topValue = parseInt(getStyleValues(elemTable[i].style.top));
		}
	}
	else
	{
		relativePositionSets[i].visibility = 1;
	}
	keepRelativePositions();
}

function keepRelativePositions()
{
	var referer;
	for(var i = 0; i < relativePositionSets.length; i++)
	{
		referer = document.getElementById(relativePositionSets[i].refererId);
		getOffsetValues(relativePositionSets[i].refererId);
		for(var j = 0; j < relativePositionSets[i].setElements.length; j ++)
		{
			relativePositionSets[i].setElements[j].object.style.left = parseInt(referer.trueLeft) + relativePositionSets[i].setElements[j].leftValue + 'px';
			relativePositionSets[i].setElements[j].object.style.top = parseInt(referer.trueTop) + relativePositionSets[i].setElements[j].topValue + 'px';
			relativePositionSets[i].setElements[j].object.style.position = 'absolute';
			if(relativePositionSets[i].visibility) display(relativePositionSets[i].setElements[j].object.id);
		}
	}
	//setTimeout('keepRelativePositions()', 10);
}

function hideRelativePositionSet(elementName)
{
	var setId = relativePositionSets.length;
	if(setId)
	{
		for(i = 0; i < setId; i ++)
		{
			if(relativePositionSets[i].groupName == elementName)
			{
				relativePositionSets[i].visibility = 0;
				break;
			}
		}
	}
}

/* CENTER OBJECT */

var saveDiv;
var saveDelay;

function centerObject(myDiv, repeat, delay)
{
	GetScreenDim();
	allWidth = document.getElementById(myDiv).offsetWidth;
	allHeight = document.getElementById(myDiv).offsetHeight;
	
	allTop = Math.abs(Math.floor(trueHeight / 2) - Math.floor(allHeight / 2)) + 'px';
	allLeft = Math.abs(Math.floor(trueWidth / 2) - Math.floor(allWidth / 2)) + 'px';
	
	document.getElementById(myDiv).style.top = allTop;
  document.getElementById(myDiv).style.left = allLeft;
  if(repeat == 1)
  {
  	saveDiv = myDiv;
  	saveDelay = delay;
  	setTimeout('centerObject(saveDiv, 1, saveDelay);', delay);
  }
}

var mouseX = 0;
var mouseY = 0;

function getMousePosition(e)
{
	if(document.all)
	{
		mouseX = window.event.clientX;
		mouseY = window.event.clientY;
	}
	else
	{
		mouseX = e.pageX;
		mouseY = e.pageY;
	}
}