if(typeof(Utilities) == "undefined")
	var Utilities = {};

if(typeof(Utilities.DOM) == "undefined"){
	Utilities.DOM = {};

	//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	Utilities.DOM.GetCoordinates = function(oElement, bToNearestPositionedElement, stopAtElement){
		if(typeof(bToNearestPositionedElement) == 'undefined')
			bToNearestPositionedElement = false;
		var X, Y, oParent;
		X = oElement.offsetLeft;
		Y = oElement.offsetTop;
		oParent = oElement;
		while(oParent = oParent.offsetParent){
			if(typeof(stopAtElement) != "undefined" && stopAtElement != null && stopAtElement == oParent) break;
			if(bToNearestPositionedElement && (oParent.style.position == 'absolute' || oParent.style.position == 'relative')) break;
			if(oParent == null)
				break;
			X += oParent.offsetLeft;
			Y += oParent.offsetTop;
		}
		return new Array(X, Y);
	}
	//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	Utilities.DOM.RemoveNode = function(oNode){
		if(document.all)
			oNode.removeNode(true);
		else	
			oNode.parentNode.removeChild(oNode);
	}
	//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	Utilities.DOM.GetParentTag = function(node, tagName){
		while(node = node.parentNode){
			if(node == null)
				return null;
			else if(node.tagName == tagName)
				return node;
		}
	}
	//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	Utilities.DOM.MoveChildren = function(fromNode, toNode){
		var childrenCount = fromNode.childNodes.length;
		if(childrenCount == 0)
			return;
		for(var i = 0; i < childrenCount; i++){
			toNode.appendChild(fromNode.childNodes[0]);
		}
	}
	//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	Utilities.DOM.IsParentOf = function(parent, child){
		if(parent == null || child == null)
			return false;
		if(parent == child){
			return true;
		}else if(document.all){
			return parent.contains(child);
		}else{
			var parentNode = child;
			while((parentNode = parentNode.parentNode) != null){
				if(parentNode == parent)
					return true;
			}
		}
	}
	//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	Utilities.DOM.ChangeComboboxesVisibility = function(visibility){
		var combos = document.getElementsByTagName("select");
		for(var i = 0; i < combos.length; i++){
			combos[i].style.visibility = visibility;
		}
	}
}
