window.CustomLayoutProcessing = new function() {
	function for2each(col, func) {
		if (col) {
			var length = col.length;
			if (length) {
				for(var i = 0; i < length; i++) {
					if (func(col[i], i, col)) {
						return true;
					}
				}
			}
			else {
				var child = col.firstChild;
				var i = 0;
				while(child) {
					if (child.nodeType == 1 && func(child, i, col)) {
						return true;
					}
					child = child.nextSibling;
					i++;
				}
			}
		}
	}

	this.preLayoutProcessing = function()
	{
		var direntry = document.getElementById("entry");
		var oPageH1 = findFirstElementOfClass(document,"h1","page");
		var oPageHeadTitle = first(document.getElementsByTagName("title"));
		if (direntry)
		{
			var panel = findFirstElementOfClass(direntry,"div","panel");
			if (panel)
			{
				var info = findFirstElementOfClass(panel,"dl","Info");
				if (info)
				{
					var oProperties = [];
					var oCurrentPropertyName = "";
					var removeDD = true;
					for2each(map(info), function(node) {
						if (node.tagName)
						{
							if (node.tagName == "DD")
							{
								if (removeDD)
								{
									oProperties[RTrim(oCurrentPropertyName)] = RTrim(node.innerHTML);
									node.parentNode.removeChild(node);
								} else {
									removeDD = true;
								}
							}
							if (node.tagName == "DT")
							{
								oCurrentPropertyName = node.innerHTML;
								if (oCurrentPropertyName.indexOf("Description") == 0)
								{
									removeDD = false;
								}
								node.parentNode.removeChild(node);								
							}
						}
					});
					var oPageTitle = "";
					if (oProperties["First Name"]) {
						oPageTitle = oPageTitle + oProperties["First Name"];
					}
					if (oProperties["Last Name"]) {
						if (oPageTitle != "") {
							oPageTitle = oPageTitle + " ";
						}
						oPageTitle = oPageTitle + oProperties["Last Name"];
					}
					if (oProperties["Degree"]) {
						if (oPageTitle != "") {
							oPageTitle = oPageTitle + ", ";
						}
						oPageTitle = oPageTitle + oProperties["Degree"];
					}
					oPageH1.innerHTML = oPageTitle;
					document.title = oPageTitle;
				}
			}
		}
	}
		
	this.postLayoutProcessing = function()
	{
		/* remove directory entries and document collection documents from navigation */
		var nav = document.getElementById("navigation");
		if (nav)
		{
			if (findFirstElementOfClass(document,"div","group") ||
				document.getElementById("entry") ||
				document.getElementById("documentCollection") ||
				document.getElementById("documentInfo"))
			{
				var oNodeList = findFirstElementOfClass(nav,"ul","Children");
				if (oNodeList)
				{
					oNodeList.parentNode.removeChild(oNodeList);
				} else if (oNodeList = findFirstElementOfClass(nav,"ul","Peers")) {
					//oNodeList.parentNode.removeChild(nodelist);
					for2each(map(oNodeList), function(oLi) {
						if (oLi.className.indexOf("crumb") < 0 ) {
							oNodeList.removeChild(oLi);
						}
					});
				}
			}
		}
		
		if (document.body.className.indexOf("Inner") >= 0)
		{
			/* insert a print link */
			var printparent = findFirstElementOfClass(document, "td","l-center");
			if (printparent)
			{
				var printdiv = printparent.insertBefore(document.createElement("div"), printparent.firstChild);
				printdiv.className = "l-print";
				var printlink = printdiv.appendChild(document.createElement("a"));
				printlink.innerHTML = "Print";
				printlink.href = "javascript:window.print()";
				printlink.className = "l-print-link";
			}
		}
	}
	
	function findFirstElementOfClass(start, element, classname)
	{
		var foundElement = null;
		foreach(start.getElementsByTagName(element), function(el) {
			if ((el.className.indexOf(classname) >= 0) || classname == "*")
			{
				foundElement = el;
				return true;
			}
		});
		return foundElement;
	}
		
	function RTrim( value ) {
		var re = /((\s*\S+)*)\s*/;
		return value.replace(re, "$1");
	}
}
