var resizeTimer;

function OnWindowLoad(e)
{
	SetContentHeight();
	AddListener("resize", window, InitResize);
}

function InitResize(e)
{
	if (resizeTimer)
		window.clearTimeout(resizeTimer);
	resizeTimer = window.setTimeout(SetContentHeight, 50);
}

function SetContentHeight()
{
	RemoveListener("resize", window, InitResize);
	var content = document.getElementById("content");
	if (content)
	{
		content.style.height = GetDocumentHeight();
		alert(GetDocumentHeight());
	}
	AddListener("resize", window, InitResize);
}

function GetInnerText(Node)
{
	if (Node.innerText)
		return Node.innerText;
	else if (Node.textContent)
		return Node.textContent;
	else if (Node.text)
		return Node.text;
	else
		return "";
}

function SetInnerText(Node, textdata)
{
	if (Node.innerText != null)
		Node.innerText = textdata;
	else if (Node.textContent != null)
		Node.textContent = textdata;
	else if (Node.text != null)
		Node.text = textdata;
}

function FindParent(sender, attributes/* Object {id, class, tagname, attr} */, allowsender/* Boolean */)
{
	if (!sender)
		return;
	if (allowsender == null || allowsender == undefined)
		allowsender = false;
	var target = null;
	var parent = sender;
	while (parent.parentNode)
	{
		if (!allowsender)
			parent = parent.parentNode;
		allowsender = false;
		if (attributes["id"] && parent.id == attributes["id"])
		{
			target = parent;
			break;
		}
		if (attributes["class"] && parent.className)
		{
			var classes = parent.className.split(/[ ]{1,}/g);
			if (classes)
			{
				for (var i = 0; i < classes.length; i++)
					if (classes[i] == attributes["class"])
					{
						target = parent;
						break;
					}
			}
		}
		if (attributes["tagname"] && parent.tagName && parent.tagName.toLowerCase() == attributes["tagname"].toLowerCase())
		{
			target = parent;
			break;
		}
		if (attributes["attr"] && parent.getAttribute && parent.getAttribute(attributes["attr"]))
		{
			target = parent;
			break;
		}
	}
	return target;
}

function GetVScroll()
{
	if (window.pageYOffset != null)
		return window.pageYOffset;
	else if (document.documentElement && document.documentElement.scrollTop != null)
		return document.documentElement.scrollTop;
	else 
		return document.body.scrollTop;
}

function GetHScroll()
{
	if (window.pageXOffset != null)
		return window.pageXOffset;
	else if (document.documentElement && document.documentElement.scrollLeft != null)
		return document.documentElement.scrollLeft;
	else 
		return document.body.scrollLeft;
}

function GetDocumentHeight()
{
	if (window.innerHeight)
		return window.innerHeight;
	else if (document.documentElement && document.documentElement.clientHeight)
		return document.documentElement.clientHeight;
	else if (document.body)
		return document.body.clientHeight;
	return 0;
}

function GetDocumentWidth()
{
	if (window.innerWidth)
		return window.innerWidth;
	else if (document.documentElement && document.documentElement.clientWidth)
		return document.documentElement.clientWidth;
	else if (document.body)
		return document.body.clientWidth;
	return 0;
}

function GetWindowWidth()
{
	if (document.documentElement && document.documentElement.scrollWidth)
		return document.documentElement.scrollWidth;
	else if (document.body.scrollWidth)
		return document.body.scrollWidth;
}

function GetWindowHeight()
{
	if (document.documentElement && document.documentElement.scrollHeight)
		return document.documentElement.scrollHeight;
	else if (document.body.scrollHeight)
		return document.body.scrollHeight;
}

function AddListener(strEvent/* String */, sender/* Element */, callback/* Function */)
{
	if (!sender)
		return;
	if (sender.addEventListener)
		sender.addEventListener(strEvent, callback, false);
	else if (sender.attachEvent)
		sender.attachEvent("on" + strEvent, callback);
	else
		sender["on" + strEvent] = callback;
}

function RemoveListener(strEvent/* String */, sender/* Element */, callback/* Function */)
{
	if (!sender)
		return;
	if (sender.removeEventListener)
		sender.removeEventListener(strEvent, callback, false);
	else if (sender.detachEvent)
		sender.detachEvent("on" + strEvent, callback);
	else
		sender["on" + strEvent] = null;
}

function GetOffset(s)
{
	if (!s)
		return;
	var o = {"left":0, "top":0};
	while (s.offsetParent)
	{
		o.left += s.offsetLeft;
		o.top += s.offsetTop;
		s = s.offsetParent;
	}
	return o;
}
