Bw.Util =
{
	findParentElement: function (element, parentNodeName, parentClassName, parentId)
	{
		var e = element.parentNode;
		while (e != null)
		{
			var n = (e.nodeName == parentNodeName);
			var c = (e.className && e.className.indexOf (parentClassName) == 0);
			var i = (e.id == parentId);
			
			if (((parentNodeName != null && n) || (parentNodeName == null && !n)) &&
			((parentClassName != null && c) || (parentClassName == null && !c)) &&
			((parentId != null && i)  || (parentId == null && !i)))
			{
				return e;
			}
			
			e = e.parentNode;
		}
		
		return null;
	},
	
	findContainerWidget: function (element, widgetClass)
	{
		var e = element.parentNode;
		while (e != null)
		{
			if (e.selfclass)
			{
				if (!widgetClass)
				{
					return e;
				}
				else
				{
					if (e.selfclass == widgetClass)
					{
						return e;
					}
				}
			}
	
			e = e.parentNode;
		}
		
		return null;
	},
	
	getElementPosition: function (e)
	{
		var p = {};
		p.x = e.offsetLeft;
		p.y = e.offsetTop;
		
	    var c = e.offsetParent;
	    while (c)
	    {
	        p.x += c.offsetLeft;
	        p.y += c.offsetTop;
	        
	        c = c.offsetParent;
	    }
	    
	    return p;
	},
	
	getElementTopPosition: function (e)
	{
		var t = e.offsetTop;
	    var p = e.offsetParent;
	    while (p) {
	        t += p.offsetTop;
	        p = p.offsetParent;
	    }
	    return t;
	},
	
	getElementLeftPosition: function (e)
	{
		var l = e.offsetLeft;
	    var p = e.offsetParent;
	    while (p) {
	        l += p.offsetLeft;
	        p = p.offsetParent;
	    }
	    return l;
	},
	
	getElementLeftScrollPosition: function (e)
	{
		var l = e.scrollLeft;
	    var p = e.offsetParent;
	    while (p) {
	        l += p.scrollLeft;
	        p = p.offsetParent;
	    }
	    return l;
	},
	
	getElementTopScrollPosition: function (e)
	{
		var l = e.scrollTop;
	    var p = e.offsetParent;
	    while (p) {
	        l += p.scrollTop;
	        p = p.offsetParent;
	    }
	    return l;
	},
	
	forceRedraw: function(el)
	{
		if (!el) el = document.body;
		if (navigator.product == "Gecko")
		{
			el.style.display = "inline";
			setTimeout (function() { el.style.display = "block"; }, 1);
		}
	},
	
	call: function (obj, func)
	{
		if (!obj || !func) return;
		if (typeof func == 'function') return func.call (obj);
		else return eval(func);
	}
};
	

