function equalizeElementHeights(smurf) {
  var els = [];
	if (smurf instanceof Array) {
	  els = smurf;
	}
	else {
		for(var i=0; i<arguments.length; i++) {
		  if (typeof(arguments[i]) == 'string') {
			  els.push(document.getElementById(arguments[i]));
			}
			else {
				els.push(arguments[i]);
			}
		}
	}
	if (els.length == 0) {
	  return;
	}
	var h = [], maxH = 0;
	for (var i=0; i<els.length; i++) {
	  h[i] = calcElementSize(els[i])[1];
		if (h[i] > maxH) {
		  maxH = h[i];
		}
	}
	
	//alert("Max: " + maxH + "\n\n" + h.join(','));
	
	for (var i=0; i<els.length; i++) {
		if (h[i] < maxH) {
		  els[i].style.paddingBottom = (calcElementPaddingBottom(els[i])+(maxH-h[i]))+'px';
			//els[i].style.height = maxH + 'px';
		}
	}
}

function equalizeSubcategories() {
  var divs = document.getElementsByTagName('div');
	for (var i=0; i<divs.length; i++) {
	  if (divs[i].className.match(/(^|\s)subcategories($|\s)/)) {
		  var kids = divs[i].childNodes;
			var els = [];
			var maxH = 0;
			var h = [];
			var titles = [];
			for (var j=0; j<kids.length; j++) {
			  if (kids[j].nodeType == 1) {
				  els.push(kids[j]);
					
					var tmp = kids[j].getElementsByTagName('h2');
					if (tmp.length > 0) {
					  titles.push(tmp[0]);
					}
				}
			}
			
			if (titles.length > 0) {
			  equalizeElementHeights(titles);
			}
			
			for (j=0; j<els.length; j++) {
			  h[j] = calcElementSize(els[j])[1];
				if (h[j] > maxH) {
				  maxH = h[j];
				}
			}
			
			//alert(maxH + "\n\n" + h.join(', '));
			
			for (j=0; j<els.length; j++) {
				if (h[j] < maxH) {
				  // Find the element to add the padding on to
					var blobs = els[j].getElementsByTagName('div');
					for (var k=0; k<blobs.length; k++) {
					  if (blobs[k].className.match(/(^|\s)description($|\s)/)) {
						  blobs[k].style.paddingBottom = (calcElementPaddingBottom(blobs[k])+(maxH-h[j]))+'px';
							//blobs[k].style.background = 'yellow';
							k = -1;
							break;
						}
					}
					if (k != -1) {
				    els[i].style.paddingBottom = (calcElementPaddingBottom(els[i])+(maxH-h[j]))+'px';
					}
				}
			}
			
			//divs[i].onresize = equalizeSubcategories;
		}
	}
}

window.ContentLoaded(window, function() { equalizeElementHeights('sidebar', 'main'); setTimeout(equalizeSubcategories, 10); });
