// 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

var divs=new Array('main','sidebar');
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);
};

