	// browser check

	var isNav = false;  // default
	var isIE = false;   // default
	var isIE6 = false; // default;
	var isIE7 = false;
	var isIE55 = false; // default;
	var isIE5 = false; // default;
	var isNav4 = false; // default
	var isNav6 = false; // default
	var isNav7 = false; // default
	var isDOM = false; // default	

	// dhtml dom variables
	var collStr = ""; // default
	var styleStr = ""; // default

	if(document.layers){
		isNav4 = true;
		isNav = true;
	}
	if(document.all){
		isIE = true;
		collStr = "all.";
		styleStr = ".style";
	}

	if(!document.all && document.getElementById){
		isDOM = true;
		isNav6 = true;
		isNav = true;
		isNav7 = true;
	}


	if(section == 'default') section = '';
	
	window.onload = function()
	{
		doMenu();
		// if(section == 'estimates') addCalculateListener(), calculate();
		doSubMenu(section);	
		//equalColHeight(null,'colSet');
	}

	function doMenu()
	{
		var menu = getNodes_filterByTagClass(getObjByID('lineThree'),new Array('a'),null);

		for(i in menu)
		{
			//if(i== 0) alert(section + "__" + menu[i].innerHTML);
			try 
			{	
				var oMenuDivStyle = getStyleObj(menu[i].parentNode.id);
				var parts = menu[i].href.toString().split('/');

				if(parts[3] == '' && section == ''){
					oMenuDivStyle.backgroundImage = 'url(/images/menu_bg_sel.gif)';
					getStyleObj(menu[i].id).textDecoration = 'underline';
				}
				else if(parts[3].toLowerCase() == section.toLowerCase()){
					oMenuDivStyle.backgroundImage = 'url(/images/menu_bg_sel.gif)';
					getStyleObj(menu[i].id).textDecoration = 'underline';
				}else{
					oMenuDivStyle.backgroundImage = 'url(/images/menu_bg.gif)';
					getStyleObj(menu[i].id).textDecoration = 'none';
				}
						
						//return menu[i].parentNode = '/images/lineThreeMenuItems/' + src[0].toLowerCase() + '-selected' + '.' + src[1];
			}
			catch(e){};

		}// i

	}
	
	function doSubMenu(section)
	{
		if(section == 'scanning-services')
		{
			var submenu = document.getElementById('nestedContentGreen').getElementsByTagName('img');
			
			if(category != '')
			{
				for(i in submenu)
				{
					try 
					{	
						var parts = submenu[i].src.toString().split('/');
						var src	= parts.pop().split('.');				
		
						if(src[0].split('-').join('').toLowerCase().match(category.split('-').join('').toLowerCase()) != null){
							submenu[i].className = '';
							return submenu[i].src = '/images/printingServices/' + src[0].split('-').join('').toLowerCase() + '-selected' + '.' + src[1];
						}
					}
					catch(e){};
				}
			}	
		}
		else if(section == 'about')
		{
			var submenu = document.getElementById('nestedContentPastel').getElementsByTagName('img');
			
			if(category != '')
			{
				for(i in submenu)
				{
					try 
					{	
						var parts = submenu[i].src.toString().split('/');
						var src	= parts.pop().split('.');				
		
						if(src[0].split('-').join('').toLowerCase().match(category.split('-').join('').toLowerCase()) != null)
							return submenu[i].src = '/images/about/' + src[0].split('-').join('').toLowerCase() + '-selected' + '.' + src[1];
					}
					catch(e){};
				}
			}	
		}

	}


/******************************************
DOM Helpers
******************************************/

	function getNodes_filterByTagClass(oPNode,tgNames, clsName)
	{
		var ndes = new Array();
		for(var j=0; j < tgNames.length; j++)
		{
			var all = oPNode.getElementsByTagName(tgNames[j]);
			for(var i=0;i<all.length;i++)
			{
				if(all[i].nodeName.toLowerCase() == tgNames[j].toLowerCase() )
				{
					if(clsName != null){
						if(all[i].className.toLowerCase() == clsName.toLowerCase())  ndes[ndes.length] = all[i];
					}else ndes[ndes.length] = all[i];
				}
			}
		}
		return ndes;
	}

	// get obj. by ID
	function getObjByID(id)
	{
		if (document.getElementById) return document.getElementById(id);
		else if (document.all) return document.all[id];
		else if (document.layers) return document.layers[id];
		else return null;
	}

function isThisNodeType(oNde, ndeTypeName){
	if(oNde.nodeName){
		if(oNde.nodeName.toLowerCase() == ndeTypeName.toLowerCase()) return true;
		return false;
	}else return false;
}

	function getStyle(id,styleProp)
	{
		var x = getObjByID(id);
		var y = null;
		if (x.currentStyle) y = x.currentStyle[styleProp];
		else if (window.getComputedStyle) y = document.defaultView.getComputedStyle(x,null).getPropertyValue(styleProp);
		return y;
	}
	// get the style object

	function getStyleObj(id){
		var o = getObjByID(id);
		if(o == null) return null;
		else if(o.style) return o.style;
		else return o;
	}

/**********************************************
Equal Column Heights
**********************************************/
var columnClass="colSet";


// resizes the columns
function equalColHeight(animate, colSetClassName)
{
	if(animate == null) animate = 0;
	if(colSetClassName == null) colSetClassName = columnClass;

	if(document.getElementById)
	{
		var newArgs = new Array();
		var newArgsStr = '';
		var colSets = getColSetsFromDoc(colSetClassName);// grabs columns based on class name + tag name (a 'div' in this case)

		for(var i=0; i<colSets.length;i++)
		{
			var cols = getColNodes(colSets[i], 'DIV');
			resizeCols(cols);
		}// i
	}// getElementById
}


function resizeCols(cols){
	var maxH = 0;
	for(var i=0;i<cols.length;i++){
		var colH = getColHeight(cols[i]);
		if(colH > maxH) maxH = colH;
	}
	if(maxH != 0){
		for(var j=0; j<cols.length; j++){ 
			cols[j].style.height = maxH + 'px';
		}
	}

}

// trys to grab the displayed height of an element
// tested with IE6, ffox and konq. Height is wrong on ie5.5
function getColHeight(oElem)
{
	var paddingBtm = (isIE)?getStyle(oElem.id,'paddingBottom'):getStyle(oElem.id,'padding-bottom');// getStyle() in util.js
	if(paddingBtm.indexOf('px') > -1) paddingBtm = paddingBtm.substring(0,(paddingBtm.length - 2));
	else if(isInteger(paddingBtm) == false) paddingBtm = 0;

	var paddingTp = (isIE)?getStyle(oElem.id,'paddingTop'):getStyle(oElem.id,'padding-top');
	if(paddingTp.indexOf('px') > -1) paddingTp = paddingTp.substring(0,(paddingTp.length - 2));
	else if(isInteger(paddingTp) == false) paddingTp = 0;

	var borderBtm = (isIE)?getStyle(oElem.id,'borderBottomWidth'):getStyle(oElem.id,'border-bottom-width');
	if(borderBtm.indexOf('px') > -1) borderBtm = borderBtm.substring(0,(borderBtm.length - 2));
	else if(isInteger(borderBtm) == false ) borderBtm = 0;

	var borderTp = (isIE)?getStyle(oElem.id,'borderTopWidth'):getStyle(oElem.id,'border-top-width');
	if(borderTp.indexOf('px') > -1) borderTp = borderTp.substring(0,(borderTp.length - 2));
	else if(isInteger(borderTp) == false ) borderTp = 0;

	return (oElem.offsetHeight - paddingBtm) - paddingTp - borderBtm - borderTp;

}

// returns an associative array of arrays. The assosiative array has labels of 'set_0,set_1,etc.'. Each label points to an array of divs. 
// The idea is that related div columns are grouped together.
function getColSetsFromDoc(colSetClassName)
{
	var allDivs = (document.getElementsByTagName)?(document.getElementsByTagName('DIV')):(document.all);
	var colSets = new Array();
	for(var i=0;i<allDivs.length;i++){

		// set blank ids
		if(allDivs[i].parentNode && allDivs[i].parentNode.className && allDivs[i].parentNode.className.indexOf(colSetClassName) > -1 ){ 
			if(allDivs[i].id == '') allDivs[i].id = 'colID_' + i;
		}
		if(allDivs[i].className && allDivs[i].className.indexOf(colSetClassName) > -1 ){ 
			colSets[colSets.length] = allDivs[i];
		}

	}// i
	return colSets;
}


// only grab text nodes or   nodes that are of a specific type (like <p> and text nodes)
function getColNodes(oPNode, ndeTypeName){
	var nds = new Array();
	if(oPNode == null) return null;
	for(var i=0;i<oPNode.childNodes.length;i++){
		var nd = oPNode.childNodes[i];
		if(isThisNodeType(nd,ndeTypeName) && nd.className && (nd.className.indexOf('col_') > -1) ) nds[nds.length] = nd;
	}
	return nds;
}

/*********************************************
Edit Menus
*********************************************/

	// show menus for editing individual articles
	function toggleEditToolbar()
	{
		var oTglMenus = getObjByID('toggleEditArticleMenus');
		var menus = getNodes_filterByTagClass(document.body,new Array('div'), 'editArticleMenu');
		var displ = (oTglMenus.innerHTML.toLowerCase().indexOf('hide') > -1)?'none':'block';

		for(var i=0;i < menus.length; i++){ 
			if(!menus[i].id || menus[i].id == '') menus[i].id = 'editArticleMenu_tmp' + i;
			getStyleObj(menus[i].id).display = displ;// getStyleObj() is in util.js
		}

		if(displ == 'none'){
			oTglMenus.innerHTML = 'Edit Page';
			oTglMenus.className = '';
		}else{
			oTglMenus.innerHTML = 'Hide Edit Page';
			oTglMenus.className = 'emph';
		}
	}
	

	