/*
 http://www.paulbellows.com/getsmart/balance_columns/
 by Paul@YellowPencil.com and Scott@YellowPencil.com
 includes TextResizeDetector by Lawrence Carvalho <carvalho@uk.yahoo-inc.com>
 feel free to delete all comments except for the above credit
 */
// Replace with the ID names of the columns you want to balance.
var divs = new Array('contentcolumn', 'leftcolumn');
function scriptInit() {
	if (!document.getElementById) {
		return;
	}
}
function addEvent(elm, evType, fn, useCapture) {
	if (elm.addEventListener) {
		elm.addEventListener(evType, fn, useCapture);
		return true;
	} else if (elm.attachEvent) {
		var r = elm.attachEvent('on' + evType, fn);
		return r;
	} else {
		elm['on' + evType] = fn;
	}
}
function setTall() {
	if (document.getElementById) {
		var maxHeight = 0;
		for ( var i = 0; i < divs.length; i++) {
			if (document.getElementById(divs[i]) != null) {
				var div = document.getElementById(divs[i]);
				div.style.height = null;
				if (div.offsetHeight > maxHeight)
					maxHeight = div.offsetHeight;
			}
		}
		for ( var i = 0; i < divs.length; i++) {
			if (document.getElementById(divs[i]) != null) {
				var div = document.getElementById(divs[i]);
				div.style.height = maxHeight + 'px';
				if (div.offsetHeight > maxHeight) {
					div.style.height = (maxHeight - (div.offsetHeight - maxHeight)) + 'px';
				}
			}
		}
	}
}
function initTall() {
	if (document.getElementById) {
		for ( var i = 0; i < divs.length; i++) {
			if (document.getElementById(divs[i]) != null) {
				TextResizeDetector.TARGET_ELEMENT_ID = divs[i];
				break;
			}
		}
		setTall();
	}
}
addEvent(window, 'load', initTall, false);
addEvent(window, 'resize', setTall, false);
TextResizeDetector = function() {
	var el = null;
	var iIntervalDelay = 200;
	var iInterval = null;
	var iCurrSize = -1;
	var iBase = -1;
	var aListeners = [];
	var createControlElement = function() {
		el = document.createElement('span');
		el.id = 'textResizeControl';
		el.innerHTML = '&nbsp;';
		el.style.position = "absolute";
		el.style.left = "-9999px";
		var elC = document.getElementById(TextResizeDetector.TARGET_ELEMENT_ID);
		if (elC)
			elC.insertBefore(el, elC.firstChild);
		iBase = iCurrSize = TextResizeDetector.getSize();
	};
	function _stopDetector() {
		window.clearInterval(iInterval);
		iInterval = null;
	}
	;
	function _startDetector() {
		if (!iInterval) {
			iInterval = window.setInterval('TextResizeDetector.detect()',
					iIntervalDelay);
		}
	}
	;
	function _detect() {
		var iNewSize = TextResizeDetector.getSize();
		if (iNewSize !== iCurrSize) {
			for ( var i = 0; i < aListeners.length; i++) {
				aListnr = aListeners[i];
				var oArgs = {
					iBase :iBase,
					iDelta :((iCurrSize != -1) ? iNewSize - iCurrSize + 'px'
							: "0px"),
					iSize :iCurrSize = iNewSize
				};
				if (!aListnr.obj) {
					aListnr.fn('textSizeChanged', [ oArgs ]);
				} else {
					aListnr.fn.apply(aListnr.obj, [ 'textSizeChanged',
							[ oArgs ] ]);
				}
			}
		}
		return iCurrSize;
	}
	;
	var onAvailable = function() {
		if (!TextResizeDetector.onAvailableCount_i) {
			TextResizeDetector.onAvailableCount_i = 0;
		}
		if (document.getElementById(TextResizeDetector.TARGET_ELEMENT_ID)) {
			TextResizeDetector.init();
			if (TextResizeDetector.USER_INIT_FUNC) {
				TextResizeDetector.USER_INIT_FUNC();
			}
			TextResizeDetector.onAvailableCount_i = null;
		} else {
			if (TextResizeDetector.onAvailableCount_i < 600) {
				TextResizeDetector.onAvailableCount_i++;
				setTimeout(onAvailable, 200)
			}
		}
	};
	setTimeout(onAvailable, 500);
	return {
		init : function() {
			createControlElement();
			_startDetector();
		},
		addEventListener : function(fn, obj, bScope) {
			aListeners[aListeners.length] = {
				fn :fn,
				obj :obj
			}
			return iBase;
		},
		detect : function() {
			return _detect();
		},
		getSize : function() {
			var iSize;
			return el.offsetHeight;
		},
		stopDetector : function() {
			return _stopDetector();
		},
		startDetector : function() {
			return _startDetector();
		}
	}
}();
TextResizeDetector.TARGET_ELEMENT_ID = 'doc';
TextResizeDetector.USER_INIT_FUNC = function() {
	var iBase = TextResizeDetector.addEventListener(setTall, null);
};
