

function getElementsByClassName(oElm, strTagName, oClassNames)
{
    var arrElements = (strTagName == "*" && document.all)? document.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    var arrRegExpClassNames = new Array();
    if(typeof oClassNames == "object")
	{
        for(var i=0; i<oClassNames.length; i++)
		{
            arrRegExpClassNames.push(new RegExp("(^|\\s)" + oClassNames[i].replace(/\-/g, "\\-") + "(\\s|$)"));
        }
    }
    else
	{
        arrRegExpClassNames.push(new RegExp("(^|\\s)" + oClassNames.replace(/\-/g, "\\-") + "(\\s|$)"));
    }
    var oElement;
    var bMatchesAll;
    for(var j=0; j<arrElements.length; j++)
	{
        oElement = arrElements[j];
        bMatchesAll = true;
        for(var k=0; k<arrRegExpClassNames.length; k++)
		{
            if(!arrRegExpClassNames[k].test(oElement.className))
			{
                bMatchesAll = false;
                break;                      
            }
        }
        if(bMatchesAll)
		{
            arrReturnElements.push(oElement);
        }
    }
    return (arrReturnElements);
}


function equaliseChildren()
{
	var minHeight = 0;
	var elementHeights = new Array();
	var equalElements = getElementsByClassName(document, "*", "equalise");
	
	for (i=0;i<equalElements.length;i++)
	{
		var tagName = equalElements[i].childNodes[0].nodeName;
		if(tagName == "#text") tagName = equalElements[i].childNodes[1].nodeName;		
		var childElements = equalElements[i].getElementsByTagName(tagName);
		
		for (var j = 0; j < childElements.length; j++)
		{
			//alert(childElements[i].offsetHeight);
			if(childElements[j].offsetHeight > minHeight) minHeight = childElements[j].offsetHeight;
		}
	}
	
	for (i=0;i<equalElements.length;i++)
	{
		var tagName = equalElements[i].childNodes[0].nodeName;
		if(tagName == "#text") tagName = equalElements[i].childNodes[1].nodeName;		
		var childElements = equalElements[i].getElementsByTagName(tagName);
		
		for (var j = 0; j < childElements.length; j++) 
		{
			//alert(minHeight + " - " + (childElements[j].offsetHeight - minHeight) + "?")
			childElements[j].style.height = minHeight + "px";			
			childElements[j].style.height = (minHeight - (childElements[j].offsetHeight - minHeight)) + 'px';
		}
	}
	
	return true;
};

function equaliseElements()
{
	if(document.getElementById('equaliseElements'))
	{
		var minHeight = 0;
		var elementHeights = new Array();
		var equalBase = document.getElementById('equaliseElements'); //getElementsByClassName(document, "*", "equaliseElements");
		var equalElements = getElementsByClassName(equalBase, "*", "equalised");
		equalBase.style.visibility = 'hidden';
		
		for (i=0;i<equalElements.length;i++)
		{
			if(equalElements[i].offsetHeight > minHeight) minHeight = equalElements[i].offsetHeight;
		}
		
		for (i=0;i<equalElements.length;i++)
		{
			equalElements[i].style.height = minHeight + "px";
			equalElements[i].style.height = (minHeight - (equalElements[i].offsetHeight - minHeight)) + 'px';
		}
		
		var alsoEqualElements = getElementsByClassName(equalBase, "*", "equalised2");
		if(alsoEqualElements.length>0)
		{
			minHeight = 0;
			for (i=0;i<alsoEqualElements.length;i++)
			{
				if(alsoEqualElements[i].offsetHeight > minHeight) minHeight = alsoEqualElements[i].offsetHeight;
			}
			
			for (i=0;i<alsoEqualElements.length;i++)
			{
				alsoEqualElements[i].style.height = minHeight + "px";
				alsoEqualElements[i].style.height = (minHeight - (alsoEqualElements[i].offsetHeight - minHeight)) + 'px';
			}
		}
		equalBase.style.visibility = 'visible';
		
		return true;
	}
	else
	{
		return false;
	}
};


//schedule("window", equaliseChildren);
schedule("equaliseElements", equaliseElements);