
	function ScrollWatcher(element)
	{
		var me = this;
		var element = element;
		var parent = element.parentNode;
		
		var parentRealTop = GetAbsoluteTop(parent)
		var topPadding = getStyle(parent, 'padding-top', true);
		var movementRangeLower = 0;
		var movementRangeUpper = parent.offsetHeight - (element.offsetHeight +
														topPadding +
														getStyle(parent, 'padding-bottom', true) +
														getStyle(parent, 'border-top-width', true) +
														getStyle(parent, 'border-bottom-width', true) +
														getStyle(element, 'margin-top', true) +
														getStyle(element, 'margin-bottom', true));
														
		this.onScrollHandler = function(e)
		{
			var scrollOffset = 0;
			if (window.pageYOffset)
			{
				scrollOffset = window.pageYOffset;
			}
			else if (document.body.parentElement)
			{
				scrollOffset = document.body.parentElement.scrollTop;
			}
			
			var relativeScrollOffset = scrollOffset - parentRealTop;
			
			if (relativeScrollOffset > movementRangeLower)
			{
				if (relativeScrollOffset > movementRangeUpper)
				{
					me.setPosition(movementRangeUpper);
				}
				else
				{
					me.setPosition(relativeScrollOffset);
				}
			}
			else
			{
				me.setPosition(movementRangeLower);
			}
		}
		
		this.setPosition = function(value)
		{
			element.style.top = (value + topPadding) + "px";
		}
	}
