/*
  File        : dhtml.js
  Author      : DS
  Date        : 2004-08-19
  Description : JavaScript for DHTML functions
*/

/*** Initialization of DHTML elements ***/
var Dhtml_InitFunctions = new Array();
var Dhtml_InitEvents    = new Array();
function InitDhtml()
{
	while (Dhtml_InitFunctions.length)
	{
		var initFunction = Dhtml_InitFunctions.shift();
		initFunction();
	}
	while (Dhtml_InitEvents.length)
	{
		var InitEvent    = Dhtml_InitEvents.shift();
		var id           = InitEvent[0];
		var evt          = InitEvent[1];
		id.control.event(evt);
	}
}

/*** Register a function to be called in InitDhtml() ***/
function RegisterInitFunction(initFunction)
{
	Dhtml_InitFunctions.push(initFunction);
}

/*** Register an event to be called after calling all InitFunctions in InitDhtml() ***/
function RegisterInitEvent(id,evt)
{
	Dhtml_InitEvents.push(new Array(id,evt));
}

/*** Utility functions for absolute position of an element ***/
function GetElementLeft(eElement)
{
	var nLeftPos    = eElement.offsetLeft;          // initialize var to store calculations
	var eParElement = eElement.offsetParent;        // identify first offset parent element  
	while (eParElement != null)
	{                                               // move up through element hierarchy
		nLeftPos    += eParElement.offsetLeft;  // appending left offset of each parent
		eParElement = eParElement.offsetParent; // until no more offset parents exist
	}
	return nLeftPos;                                // return the number calculated
}

function GetElementTop(eElement)
{
	var nTopPos = eElement.offsetTop;
	var eParElement = eElement.offsetParent;
	while (eParElement != null)
	{
		nTopPos += eParElement.offsetTop;
		eParElement = eParElement.offsetParent;
	}
	return nTopPos;
}

/*** Utility function to set the focus ***/
var Dhtml_focusElement = null;
function SetFocus(element)
{
	var workElement = null;
	if (Dhtml_focusElement)
	{
		workElement = Dhtml_focusElement;
		while (workElement.parentNode)
		{
			workElement.style.zIndex -= 1000;
			workElement = workElement.parentNode;
		}
	}
	Dhtml_focusElement = element;
	workElement   = Dhtml_focusElement;
	while (workElement.parentNode)
	{
		workElement.style.zIndex += 1000;
		workElement = workElement.parentNode;
	}
}

