document.getElementsByClassName = function (className, tagName)
{
	var nodes = [];
	if (tagName == null )
		tagName = "*";
	var pattern = new RegExp ("(^|\\s)" + className + "(\\s|$)");
	var elems = tagName == "*" ? (document.all ? elems = document.all : elems = document.getElementsByTagName ('*')) : document.getElementsByTagName (tagName);
	for (var i = 0; i < elems.length; i++)
	{
		var classes = elems[i].className;
		if (pattern.test (classes))
			nodes.push (elems[i]);
	}
	return nodes;
};


document.isElementImplementClassName = function (element, className)
{
	if (className == null || element == null)
		return false;
	var pattern = new RegExp ("(^|\\s)" + className + "(\\s|$)");
	return pattern.test (element.className);
};


document.getNonTextElement = function (element)
{
	if (element == null)
		return null;
	if (element.nodeType == 3)
		return element.nextSibling;
	else
		return element;
};

document.getClientWidth = function ()
{
  return document.compatMode=='CSS1Compat' && !window.opera?document.documentElement.clientWidth:document.body.clientWidth;
};

document.getClientHeight = function ()
{
  return document.compatMode=='CSS1Compat' && !window.opera?document.documentElement.clientHeight:document.body.clientHeight;
};

