addLoadEvent(initfh);
function initfh()	{
	if (document.getElementById("contentArea"))	{
		initFrameholders("contentArea","wrapper");
	}
}

function initFrameholders(masterDivId,wrapperClass)	{
		// get master div
	var allDivs=document.getElementById(masterDivId).getElementsByTagName("div");
	var wrapperWidths=new Array();var onlyWrappers=new Array();
	for (var i=0;i<allDivs.length;i++)	{
		if ((allDivs[i].className).indexOf(wrapperClass)!=-1)	{
			onlyWrappers.push(allDivs[i]);
		}
	}
	for (var i=0;i<onlyWrappers.length;i++)	{
		wrapperWidths[i]="narrow";
		var innerEl=onlyWrappers[i].getElementsByTagName("div")[0];
		if (innerEl.scrollWidth>700)	{
			wrapperWidths[i]="wide";
		}
		/* case-by-case exception-to-rule handlers */
		if (onlyWrappers[i].className.indexOf("article1and2")!=-1)	{
			wrapperWidths[i]="wide";
		}
	}
	/* checks inner content of final module to deal with widths bug */
	var elcontent=fh_getElementsByClassName(onlyWrappers[onlyWrappers.length-1],"div","moduleWide");
	if(elcontent.length>0)	{
		wrapperWidths[onlyWrappers.length-1]="wide";
	}
	assess();
	function insertDiv(obj,locType)	{
		var methodEn=true;
		if(typeof HTMLElement!="undefined" && !
HTMLElement.prototype.insertAdjacentElement) {	
			methodEn=false;
		}
		switch (locType) {
		case "beforeLeftOnly":
			var code='<div class="frameholderTop"><div class="fhLeft"></div></div>';
			if(methodEn) {
				obj.insertAdjacentHTML("afterBegin",code);
			}	else	{
				obj.insertBefore(dcparseNode(obj,code),obj.firstChild);
			}
			break;
		case "before":
			var code='<div class="frameholderTop"><div class="fhRight"></div></div>';
			if(methodEn) {
				obj.insertAdjacentHTML("afterBegin",code);
			} else	{
				obj.insertBefore(dcparseNode(obj,code),obj.firstChild);
			}
			break;
		case "afterBoth":
			var code='<div class="frameholderBottom"><div class="fhLeft"></div><div class="fhRight"></div></div>';
			if(methodEn) {
				obj.insertAdjacentHTML("beforeEnd",code);
			}	else	{
				obj.appendChild(dcparseNode(obj,code));
			}
			break;
		case "finalNarrow":
			var code='<div class="frameholderBottomNarrow"><div class="fhRight"></div></div>';
			if(methodEn) {
				obj.insertAdjacentHTML("beforeEnd",code);
			}	else	{
				obj.appendChild(dcparseNode(obj,code));
			}
			break;
		default:
			var code='<div class="frameholderBottom"><div class="fhRight"></div></div>';
			if(methodEn) {
				obj.insertAdjacentHTML("beforeEnd",code);
			}	else	{
				obj.appendChild(dcparseNode(obj,code));
			}
			break;
		}
	}
	
	function dcparseNode(obj,htmlIn)	{
		var rng = obj.ownerDocument.createRange();rng.setStartBefore(obj);
		return rng.createContextualFragment(htmlIn);
	}
	
	function assess()	{
		if (onlyWrappers.length==1)	{
			/* for pages with only 1 wrapper */
			insertDiv(onlyWrappers[0],"beforeLeftOnly");
			if (wrapperWidths[0]=="narrow")	{
				insertDiv(onlyWrappers[0],"finalNarrow");
			}	else	{
				insertDiv(onlyWrappers[0],"after");
			}
		}	else	{
			/* for pages with multiple wrappers */
			for (k=0;k<onlyWrappers.length;k++)	{
				// any new widths?
				
				if (k==0)	{
					insertDiv(onlyWrappers[k],"beforeLeftOnly");
				}	else if (wrapperWidths[k]=="wide" && (k==0 || wrapperWidths[k-1]=="narrow"))	{
					insertDiv(onlyWrappers[k],"before");
				}	
				if (wrapperWidths[k]=="wide" && (wrapperWidths[k+1]=="narrow"))	{
					insertDiv(onlyWrappers[k],"after");
				}
				if (k==onlyWrappers.length-1 && wrapperWidths[k]=="wide")	{
					insertDiv(onlyWrappers[k],"after");
				}
				if (k==onlyWrappers.length-1 && wrapperWidths[k]=="narrow")	{
					insertDiv(onlyWrappers[k],"finalNarrow");
				}
			}
		}
		/* special case for single module profilePanel */
		var pps=fh_getElementsByClassName(document.getElementById("contentArea"),"div","profilePanel");
		for (var j=0;j<pps.length;j++)	{
			insertDiv(pps[j].parentNode,"before");
			insertDiv(pps[j].parentNode,"after");
		}
	}
}

function fh_getElementsByClassName(oElm, strTagName, strClassName){
	var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	var aC=0;
	strClassName = strClassName.replace(/\-/g, "\\-");
	var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
	var oElement;
	for(var i=0; i<arrElements.length; i++){
		oElement = arrElements[i];		
		if(oRegExp.test(oElement.className)){
			arrReturnElements[aC]=oElement;
			aC++;
		}	
	}
	return (arrReturnElements)
}