﻿function findDescendant(elem, tagName)
{
	tagName = tagName.toLowerCase();
	if (elem.tagName.toLowerCase() == tagName)
	{
		return elem;
	}

	if (elem.childNodes.length > 0)
	{
		for (var i = 0; i < elem.childNodes.length; i++)
		{
			var result = findDescendant(elem.childNodes[i], tagName);
			if (result != false)
			{
				return result;
			}
		}
	}
	return false;
}

function findDescendantByClass(elem, className)
{
	if (elem.className == undefined)
	{
		return false;
	}
	if (elem.className == className)
	{
		return elem;
	}
	var elemClassName = elem.className.split(' ');
	for (var k = 0; k < elemClassName.length; k++)
	{
		if (elemClassName[k] == className)
		{
			return elem;
		}
	}
	if (elem.childNodes.length > 0)
	{
		for (var i = 0; i < elem.childNodes.length; i++)
		{
			var result = findDescendantByClass(elem.childNodes[i], className);
			if (result != false)
			{
				return result;
			}
		}
	}
	return false;
}

function getElementsByClass(className)
{
	var allPageTags = document.getElementsByTagName("*");
	var elems = new Array();
	var j = 0;
	for (i = 0; i < allPageTags.length; i++)
	{
		var elemClassName = allPageTags[i].className.split(' ');
		for (var k = 0; k < elemClassName.length; k++)
		{
			if (elemClassName[k] == className)
			{
				elems[j++] = allPageTags[i];
			}
		}
	}
	return elems;
}
