var Util = {
	setScrollTop: function(scrollTop)
	{
		if ( document.documentElement )
		{
			document.documentElement.scrollTop = scrollTop;
		}
		else
		{
			document.body.scrollTop = scrollTop;
		}
	},
	
	getScrollTop: function()
	{
		return document.documentElement ? document.documentElement.scrollTop : document.body.scrollTop;
	},
	
	addCssClass: function(element, cssClass)
	{
		element.className += ' ' + cssClass;
	},
	
	removeCssClass: function(element, cssClass)
	{
		element.className = element.className.replace(cssClass, '');
	},
	
	hasCssClass: function(element, cssClass)
	{
		return element.className.indexOf(cssClass) != -1;
	},
	
	isDescendantOf: function(parent, descendant)
	{
		if ( parent == descendant )
		{
			return false;
		}
		if ( parent.contains )
		{
			return parent.contains(descendant);
		}
		var children = parent.childNodes;
		for ( var i = 0; i < children.length; i++ )
		{
			var child = children[i];
			if ( child == descendant || this.isDescendantOf(child, descendant) )
			{
				return true;	
			}
		}
		return false;
	},
	
	isOwnMouseOutEventOf: function(element, event)
	{
		var from = event.target || event.fromElement;
		var to = event.relatedTarget || event.toElement;
		return element != to
			&& !this.isDescendantOf(element, to)
			&& ( element == from || this.isDescendantOf(element, from) );
	},
	
	isOwnMouseOverEventOf: function(element, event)
	{
		var from = event.relatedTarget || event.fromElement;
		var to = event.target || event.toElement;
		return element != from
			&& !this.isDescendantOf(element, from)
			&& ( element == to || this.isDescendantOf(element, to) );
	}
};

