//common funcs
//common funcs
//common funcs
	

//finds first child element of type "sTagName" 
//ex:  GetChildElem(eSrc,"TR") - finds the first child element of type "TR"
function GetChildElem(eSrc,sTagName)
{
  var cKids = eSrc.children;
  for (var i=0;i<cKids.length;i++)
  {
    if (sTagName == cKids[i].tagName) return cKids[i];
  }
  return false;
}	

//finds first decendent element (i.e. not just direct child elements) of type "sTagName" 
//ex:  GetDecendentElem(eSrc,"TR") - finds the first decendent element of type "TR"
function GetDecendentElem(eSrc,sTagName)
{
  var cKids = eSrc.all;
  for (var i=0;i<cKids.length;i++)
  {
    if (sTagName == cKids[i].tagName) return cKids[i];
  }
  return false;
}	

//finds the first decendent element (i.e. not just direct child elements) with id "sID" 
//ex:  GetDecendentElemByID(eSrc,"tdSpecialCell") - finds the first child element where id = "tdSpecialCell"
function GetDecendentElemByID(eSrc,sID)
{
  var cKids = eSrc.all;
  for (var i=0;i<cKids.length;i++)
  {
    if (sID == cKids[i].id) return cKids[i];
  }
  return false;
}

//finds a parent element of type "sTagName" 
//ex:  GetParentElem(eSrc,"TR") - finds the first parent element of type "TR"
function GetParentElem(eSrc,sTagName)
{
  var cParent
  var leSrc=eSrc;
  while (cParent = leSrc.parentElement)
  {
    if (sTagName == cParent.tagName) return cParent;
    leSrc=leSrc.parentElement;
  }
  return false;
}	
	
function BreakURL(sURL)
{
	if (sURL)
	{
		var UrlArray = {"URLBase" : "", "URLFilename" : ""};
		UrlArray["URLBase"] = sURL.substr(0,sURL.lastIndexOf("/"));
		UrlArray["URLFilename"] = sURL.substr(sURL.lastIndexOf("/") + 1,sURL.length - sURL.lastIndexOf("/") + 1);
		return UrlArray;
	}
}
	
function getCurrentDate()
{
  var dt = new Date();
  //return(dt.toUTCString());
  return(dt.toLocaleString()); 
  //str += dt.getUTCFullYear() + (dt.getUTCMonth()+1) + dt.getUTCDate(); 
}
	

function addToTabs(strTabCaption, strTabSrc, frmPostForm, strTabTip, strTabId)
{
	var strTabToLookFor='tabStrip';
	if (strTabId)
	{
		strTabToLookFor=strTabId;
	}
	var strParent='window.parent';
	var tabStrip;
	
	var iii;
	for (iii=0;iii<10;iii++)
	{
		if (tabStrip=eval(strParent + '.' + strTabToLookFor))
		{
			tabStrip.addTab(strTabCaption, strTabSrc, frmPostForm, strTabTip);
			iii=11;
		}
		strParent+='.parent';
	}
}
function IsInt(str) //Allows for decimals
{
	for (var i=0; i<str.length; i++) {
		var ch=str.substring(i,i+1);
		if (ch<"0" || ch>"9"){
			if (ch!="."&&ch!="-")
			{
				return false;
			}
			else
			{
				if (ch=="-"&&i!=0)
				{
					return false;
				}
			}
		}
	}
	return true;
}

function commaSplit(srcNumber) {
var txtNumber = '' + srcNumber;
if (isNaN(txtNumber) || txtNumber == "") {
alert("That does not appear to be a valid number.  Please try again.");
fieldName.select();
fieldName.focus();
}
else {
var rxSplit = new RegExp('([0-9])([0-9][0-9][0-9][,.])');
var arrNumber = txtNumber.split('.');
arrNumber[0] += '.';
do {
arrNumber[0] = arrNumber[0].replace(rxSplit, '$1,$2');
} while (rxSplit.test(arrNumber[0]));
if (arrNumber.length > 1) {
return arrNumber.join('');
}
else {
return arrNumber[0].split('.')[0];
      }
   }
}
function formatCurrency(num) {
	num = num.toString().replace(/\$|\,/g,'');
	if(isNaN(num)) num = "0";
	cents = Math.floor((num*100+0.5)%100);
	num = Math.floor((num*100+0.5)/100).toString();
	if(cents < 10) cents = "0" + cents;
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
		num = num.substring(0,num.length-(4*i+3))+','+num.substring(num.length-(4*i+3));
	return ('$' + num + '.' + cents);
}

function YesNoDialog(strTitle, strMsg)
{
	var argList = new Array(3);
	argList[0]=strTitle;
	argList[1]=strMsg;
	argList[2]=false;
	
	var url='YesNoDialog.asp';

	var hDlgHandle=window.showModalDialog(url,argList,
	"dialogHeight: 150px; dialogWidth:450px; center: Yes; help: No; resizable: No; status: no;");
	return argList[2];
}

function onOnlyNumbers()
{
	var key=window.event.keyCode;
	if (((key >= 48) && (key <= 57)) || (key == 43) || (key == 45) || (key == 46))
		window.event.returnValue=true;
	else
		window.event.returnValue=false;
}

// Iterates through xml and adds a table row for each row
function addToTable(eParentRow, oXMLDoc, strNodeName)
{
	if (typeof(strNodeName) == "undefined")
		strNodeName = ".//z:row";
	var oXMLNodes = oXMLDoc.selectNodes(strNodeName);
    var eParentRow2 = eParentRow;
    var indxRows = 0;
    var eNewRow;
    for (;indxRows<oXMLNodes.length;indxRows++)
    {
        eNewRow = eParentRow.cloneNode(true);
		eNewRow = eParentRow2.insertAdjacentElement("afterEnd", eNewRow);
        addDataToRow(eNewRow, oXMLNodes[indxRows]);
        eParentRow2=eNewRow;
    }
}

function doGridTree(eSrcRow, bSkipSameLvl)
{
	var cExpContr = GetPlusMinus(eSrcRow.all["PlusMinus"]);	//am I expanding or contracting?

    if (cExpContr == '+')	// expanding
    {
		if (eSrcRow.childLoaded == "N") //children not loaded yet...
			onLoadChildren(eSrcRow, cExpContr);
		else
			DoLoadedGridTree(eSrcRow, cExpContr,bSkipSameLvl);
	}
	else  // Contracting
	{
		DoLoadedGridTree(eSrcRow, cExpContr,bSkipSameLvl);
	}
	
	document.body.style.cursor = "auto";
	
	try{
		window.event.cancelBubble=true;
	}
	catch(e){
	}
	return false;
}


// Handles expanding or contracting rows that are already loaded.
function DoLoadedGridTree(eParentRow, cExpContr, bSkipSameLvl)
{
    //if i'm expanding, set my plus/minus to minus
	SetPlusMinus(eParentRow.all["PlusMinus"], cExpContr);

	var iBaseTreeLevel = parseInt(eParentRow.tblLvl,10);
	var iExpandTreeLevel = iBaseTreeLevel + 1;
	//run through table rows switching display style until
	//   the tree level = selected tree level
	var eNextRow = eParentRow.nextSibling;
	
	//JMK - This is used if you have multi rows that belong to the same level
	if(bSkipSameLvl){
		while(eNextRow!=null && eNextRow.nextSibling && eParentRow.levelCd==eNextRow.levelCd)
			eNextRow = eNextRow.nextSibling
	}
			
	var iCurrTreeLevel;
	var iHideParentLevel;
	while ((eNextRow != null) && (eNextRow.tagName == "TR"))
	{
		iCurrTreeLevel = parseInt(eNextRow.tblLvl, 10);
		iHideParentLevel = parseInt(eNextRow.tblLvlHideParent, 10);
		strNeverShow = eNextRow.getAttribute('neverShow');

		//am i at the same level? break!
		if ((isNaN(iCurrTreeLevel)) || (iBaseTreeLevel == iCurrTreeLevel))
			break;

		// Handle Contracting
		if ((cExpContr == '-') && (iBaseTreeLevel < iCurrTreeLevel))
		{
			//Save what level hid this row (used if row is expanded again later)
			if (eNextRow.tblLvlHideParent == ''){
					eNextRow.tblLvlHideParent = eParentRow.tblLvl;
			}
			eNextRow.style.display = "none";
		}

		// Handle Expanding (expand all rows that were hidden by the current base)
		if ((cExpContr == '+') && (iBaseTreeLevel == iHideParentLevel))
		{
			if ((!strNeverShow) && (strNeverShow != 'true'))
			{
				eNextRow.style.display = "block";
				eNextRow.tblLvlHideParent = '';
			}
		}

		eNextRow = eNextRow.nextSibling;
	}
}
var bExpandAll = false;
var bEntireBom = false;
var oXMLRowReq=new Array();
var arrParentRows;

function onExpandCollapse(eTbl,eBtn)
{
	arrParentRows=null;
	arrParentRows=new Array();
	
	oXMLRowReq=null;
	oXMLRowReq=new Array();
	
	bEntireBom=true;
	var eRow = eTbl.rows(1)
	
	if(eBtn){
		if(eBtn.value=='Cancel'){
			bExpandAll=false;
			eBtn.value = 'Expand All';
			if(btnExport)
				btnExport.disabled = false;
			//set all processing flags to N
			//for(var i=1;i<eTbl.rows.length;i++)
			//{
			//	if(GetChildElem(eTbl.rows(i),'TD')){//Check for a cell
			//		if(eTbl.rows(i).cells[0].getElementsByTagName("IMG")){
			//			eIMG = eTbl.rows(i).cells[0].getElementsByTagName("IMG")[0]; //check for img
			//			if(eIMG)
			//				eIMG.processing='N';
			//		}
			//	}
			//}
			return;
		}
	}
	try{
		var eIMG = GetChildElem(eRow.cells[1].firstChild,'IMG'); //check for img
	}
	catch(e){
	}
	if(eIMG || bEntireBom){
		if(eBtn.value=='Collapse All'){			
			collapseAll(eRow);
		}else{
			expandAll(eRow)
		}
	}else{
		alert('Not valid.');
	}	
	
}	

function expandAll(eSelectedRow,bLoaded)
{
	var eIMG;
	//get static value of row count in case it changes
	var eTbl = GetParentElem(eSelectedRow,"TABLE");
	var k= eTbl.rows.length
	for(var i=eSelectedRow.rowIndex;i<k;i++)
	{
		//if(!bEntireBom){
		//	if(eTbl.rows(i).tblLvl <= eSelectedRow.tblLvl && eSelectedRow.rowIndex != eTbl.rows(i).rowIndex){
		//		break;
		//	}
		//}
		
		if(GetChildElem(eTbl.rows(i),'TD')){//Check for a cell
			if(eTbl.rows(i).cells[1].getElementsByTagName("IMG")){
				eIMG = eTbl.rows(i).cells[1].getElementsByTagName("IMG")[0]; //check for img
				if(eIMG){
					if(eIMG.id=='PlusMinus' && GetPlusMinus(eIMG)=='+'){								
						if(eTbl.rows(i).childLoaded=='Y'){
							if(!bLoaded){
								bExpandAll=false;
								btnExpand.value = 'Expand All';
							}
							doGridTree(eTbl.rows(i),true,bLoaded);
												 
						}else{
							if(btnExport)
								btnExport.disabled = true;
							btnExpand.value='Cancel';
							bExpandAll=true;
							arrParentRows[arrParentRows.length]=eTbl.rows(i);
							doGridTree(eTbl.rows(i));
							k=eTbl.rows.length
						}
					}
				}
			}
		}
	}	
	btnExpand.value='Expand All'
	btnExport.disabled = false	
}

function collapseAll(eSelectedRow)
{
	var eIMG;
	var eTbl = GetParentElem(eSelectedRow,"TABLE");
	//start with selected row or first if no row selected
	for(var i=eSelectedRow.rowIndex;i<eTbl.rows.length-1;i++)
	{
		//if(!bEntireBom){
		//	if(eTbl.rows(i).tblLvl <= eSelectedRow.tblLvl && eSelectedRow.rowIndex != eTbl.rows(i).rowIndex)
		//		break;
		//}
		
		if(GetChildElem(eTbl.rows(i),'TD')){//Check for a cell
			if(eTbl.rows(i).cells[1].getElementsByTagName("IMG")){
				eIMG = eTbl.rows(i).cells[1].getElementsByTagName("IMG")[0]; //check for img
				if(eIMG){
					if(eIMG.id=='PlusMinus'){
						var eParentRow = eTbl.rows(i);
						if(GetPlusMinus(eIMG)=='-')
							SetPlusMinus(eParentRow.all["PlusMinus"], '-');

						var iBaseTreeLevel = parseInt(eParentRow.tblLvl,10);
						var iExpandTreeLevel = iBaseTreeLevel + 1;
						//run through table rows switching display style until
						//   the tree level = selected tree level
						var eNextRow = eParentRow.nextSibling;
						var iCurrTreeLevel;
						var iHideParentLevel;
						while ((eNextRow != null) && (eNextRow.tagName == "TR"))
						{
							iCurrTreeLevel = parseInt(eNextRow.tblLvl, 10);
							iHideParentLevel = parseInt(eNextRow.tblLvlHideParent, 10);
							strNeverShow = eNextRow.getAttribute('neverShow');

							//am i at the same level? break!
							if ((isNaN(iCurrTreeLevel)) || (iBaseTreeLevel == iCurrTreeLevel))
								break;

							// Handle Contracting
							if (iBaseTreeLevel < iCurrTreeLevel){
								//Save what level hid this row (used if row is expanded again later)
								eNextRow.tblLvlHideParent = eParentRow.tblLvl;
								eNextRow.style.display = "none";
							}

							eNextRow = eNextRow.nextSibling;
						}
					}
				}
			}
		}
	}	
}
function GetPlusMinus(eSrc)
{
	if (eSrc)
	{
		var UrlArray = BreakURL(eSrc.src);
		return ((UrlArray["URLFilename"] == "minus.gif") ? "-" : "+");
	}
	return "";
}

function SetPlusMinus(eSrc, cExpContr)
{
	if (eSrc)
	{
		var eSrcRow = GetParentElem(eSrc,"TR");
		var UrlArray = BreakURL(eSrc.src);
		if (cExpContr == "+")
		{
			eSrc.src=UrlArray["URLBase"] + "/minus.gif";
			eSrcRow.className = 'selExpanded ' + eSrcRow.className;
		}
		else
		{
			eSrc.src=UrlArray["URLBase"] + "/plus.gif";
			eSrcRow.className = eSrcRow.className.replace('selExpanded ', '');
		}
	}
}

function BreakURL(sURL)
{
	if (sURL)
	{
		var UrlArray = {"URLBase" : "", "URLFilename" : ""};
		UrlArray["URLBase"] = sURL.substr(0,sURL.lastIndexOf("/"));
		UrlArray["URLFilename"] = sURL.substr(sURL.lastIndexOf("/") + 1,sURL.length - sURL.lastIndexOf("/") + 1);
		return UrlArray;
	}
}

function xmlEncode(strValue)
{
	if (typeof(strValue) == "undefined" || strValue == null)
		return "";

	var strRet = "";
	var iCurChar;
	var curChar;
	for (iCurChar = 0; iCurChar < strValue.length; iCurChar++)
	{
		curChar = strValue.charAt(iCurChar);
		switch(curChar)
		{
			case '<' : 
				strRet += '&lt;';
				break;
			case '>' :
				strRet += '&gt;';
				break;
			case '\'' :
				strRet += '&apos;';
				break;
			case '"' :
				strRet += '&quot;';
				break;
			case '&' :
				strRet += '&amp;';
				break;
			default :
				strRet += curChar;
		}
	}
	return strRet;
}
//this kills the char's XML chokes on...
function onKillSpecialChars()
{
	var key=window.event.keyCode;
	if (((key >= 64) && (key <= 126)) ||
	    ((key >= 40) && (key <= 59)) ||
	    ((key >= 35) && (key <= 37)) ||
	    ((key >= 32) && (key <= 33)))
		window.event.returnValue=true;
	else
		window.event.returnValue=false;
}

//This function will set the cursor on the page
//pass in the function to call, the window status if you want it set,
//and true or false if you want to set the cursor back or leave it indefinitely (this is used if you want to wait until the page reloads itself)
//If your strFunction needs to pass in a string variable use @@ instead of a quote Ex. onclick="setCursor('myfunction(@@test@@)','',false)"
function setCursor(strFunction,strWindowStatus,bStay)
{
	document.body.style.cursor = "wait";
	if(strWindowStatus)
		window.status=strWindowStatus;
	if(bStay)
		setTimeout("cursorSet("+strFunction.replace(/@@/g,"'")+","+bStay+")", 200);
	else
		setTimeout("cursorSet("+strFunction.replace(/@@/g,"'")+")", 200);		
}

function cursorSet(strFunction,bStay)
{
	if(bStay){
		if(!eval(strFunction))
			return;
	}
	else
		eval(strFunction);
		
	document.body.style.cursor = "";
	window.status="";
}

//Trims leading and trailing spaces
function Trim(strVal)
{
	return strVal.replace(/^\s*([\s\S]*\S+)\s*$|^\s*$/,'$1');
}


function htmlEncode(strValue)
{
	if (typeof(strValue) == "undefined" || strValue == null)
		return "";

	var strRet = "";
	var iCurChar;
	var curChar;
	for (iCurChar = 0; iCurChar < strValue.length; iCurChar++)
	{
		curChar = strValue.charAt(iCurChar);
		switch(curChar)
		{
			case '+' : 
				strRet += '%2B';
				break;
			default :
				strRet += curChar;
		}
	}
	return strRet;
}

function filterNode(oNode, searchAttr, requiredVal)
{
	var i=0;
	while(i<oNode.childNodes.length)
	{
		//Check its children too
		if(oNode.childNodes[i].childNodes.length>0){
			for(var k=oNode.childNodes[i].childNodes.length;k>-1;k--)
			{
				if(AttrValue(oNode.childNodes[i].childNodes[k],searchAttr,"")==requiredVal)
					oNode.childNodes[i].removeChild(oNode.childNodes[i].childNodes[k]);
			}
		}
		if(AttrValue(oNode.childNodes[i],searchAttr,"")==requiredVal)
			oNode.removeChild(oNode.childNodes[i]);
		else
			i++;
	}
	
	return oNode;
}

function removeNodes(oCstGrpNode, searchAttr, requiredVal)
{
	var i=0;
	while(i<oCstGrpNode.childNodes.length)
	{
		if(AttrValue(oCstGrpNode.childNodes[i],searchAttr,"")!=requiredVal)
			oCstGrpNode.removeChild(oCstGrpNode.childNodes[i]);
		else
			i++;
	}
	
	return oCstGrpNode;
}

function YesNoDialog(strTitle, strMsg, strHeight)
{
	var argList = new Array(3);
	argList[0]=strTitle;
	argList[1]=strMsg;
	argList[2]=true;
	
	var url='../Exect/YesNoDialog.asp';

	var hDlgHandle=window.showModalDialog(url,argList,
	"dialogHeight: " + (strHeight==null ? '150' : strHeight) + "px; dialogWidth:450px; center: Yes; help: No; resizable: No; status: no;");
	return argList[2];
}

//replaces an xml node with new text...
// ex.
//	replaceNodeText(requestXML.selectSingleNode('//req/opts'), "<opts><...></opts>");
//
function replaceNodeText(oNode, strNewNode)
{
	oXmlDom = new ActiveXObject( "Microsoft.XMLDOM" );
	oXmlDom.async=false;
	oXmlDom.loadXML(strNewNode);

	var oNewNode=oNode.parentNode.replaceChild(oXmlDom.documentElement, oNode);
	oXmlDom=null;
	return oNewNode;
}

//Can you stick it into a number object? That's ALL you need to do
function IsNumber(str)
{
	str=str.toString();	
	str=str.replace(/,/g,''); // strip out the commas
	var numVal=new Number(str);
	return !isNaN(numVal);
}

function ShowError(oXMLReq)
{
	var strRet;
	var oErrorNodes = oXMLReq.responseXML.selectNodes("//error");
	var bErrorFound = false;

	if (oErrorNodes)
	{
		if (oErrorNodes.length != 0)
			bErrorFound = true;
	}

	if (bErrorFound)
	{
		for (var i=0; i < oErrorNodes.length; i++)
		{
			strRet = oErrorNodes[i].text;

			//Call error dialog
			window.showModalDialog("../Exect/common/DisplayErr.htm",oErrorNodes[i].xml,
					"dialogHeight: 400px; dialogWidth: 450px; center: Yes; help: No; resizable: Yes; status: no;");
		}
		return -1;
	}
}
function AttrValue(oXMLNode, strAttrName, strDefault)
{
	var oXMLAttr;
	if (oXMLNode == null)
		return strDefault;
	oXMLAttr = oXMLNode.attributes.getNamedItem(strAttrName);
	if (oXMLAttr)
		return oXMLAttr.text;
	else
		return strDefault;
}

function callNewPage(eCell, vNewPage)
{
var vhref = window.location.href;
var i = vhref.split("/").length - 1;
var vPage = vhref.split("/")[i];

	if (vPage!=vNewPage){
		if(i>3){ //need to go up a directory
			if(i==4)
				window.location.href = '../'+vNewPage;
			else
				window.location.href = '../../'+vNewPage;
		}else
			window.location.href = vNewPage;
	}else
		if (eCell.parentRow)
			showHideLeftMenu(eCell);

}

function fPageLoad(strPageName,strSetTopMenu,strPath)
{
	if(!strPath)
		strPath="";
	//clientSideInclude('topMenu', strPath+'TopMenu.html');
	//clientSideInclude('leftMenu', strPath+strLeftMenu);
	//clientSideInclude('footer', strPath+'Footer.html');
	setBGcolor(strPageName);
	setSelectedTopMenu(strSetTopMenu);
}


function showHideLeftMenu(eCell)
{
	var eTable = tblLeftMenu;
	var eRow = GetParentElem(eCell,'TR');
	
	if (eCell.parentRow=="none")
	{	//if menu option is a child, colapse all children and reset text of parent menu option
		var eRowNext = eRow.nextSibling;
		if (eRowNext)
		{
			if (eRowNext.cells(0).parentRow!="none" && eRowNext.cells(0).selRow!="X" )
			{	//show
			
				if (eCell.innerText.indexOf(">>")>0)
				{
				
					eCell.innerText = eCell.innerText.substr(0,eCell.innerText.indexOf(">>")-1);
					for (var i=eRow.rowIndex+1; i < eTable.rows.length ; i++)
					{
						if (eTable.rows(i).cells(0).parentRow!="none" && eTable.rows(i).cells(0).selRow!="X")
						{
							eTable.rows(i).cells(0).className = "lftmenudtl";
							eTable.rows(i).className = "showLeftMenu";
						}
						else
							i = eTable.rows.length+1;
					
					}
				}
				//hide
				else
				{
					eCell.innerText = eCell.innerText + ' >>';
					for (var i=eRow.rowIndex+1; i < eTable.rows.length ; i++)
					{
						if (eTable.rows(i).cells(0).parentRow!="none" && eTable.rows(i).cells(0).selRow!="X")
							eTable.rows(i).className = "hiddenLeftMenu";
						else
							i = eTable.rows.length+1;				
					}
				}
			}
		}
	}
	
	//show entire sub menu, not just selected sub menu row
	else
	{	//get first row in sub menu
		for (var i=eRow.rowIndex; i > 0 ; i--)
		{
			if (eTable.rows(i).cells(0).parentRow=="none")
			{
				var subMenuStart = i+1
				break;
			}
		}
		if (eTable.rows(subMenuStart-1).cells(0).innerText.indexOf(">>") > 0)
			eTable.rows(subMenuStart-1).cells(0).innerText = eTable.rows(subMenuStart-1).cells(0).innerText.substr(0,eTable.rows(subMenuStart-1).cells(0).innerText.indexOf(">>")-1);
		
		//set class for all row in selected sub menu
		for (var i=subMenuStart; i < eTable.rows.length ; i++)
		{	
			if (eTable.rows(i).cells(0).parentRow!="none")
			{
				if (eTable.rows(i).cells(0).selRow=="N")
				{
					eTable.rows(i).cells(0).className = "lftmenudtl";
					eTable.rows(i).className = "showLeftMenu";
				}
			}
			else
				i = eTable.rows.length+1;
		}
	}
	
	
}

function setBGcolor(vPage)
{
//var vhref = window.location.href;
//var i = vhref.split("/").length - 1;
//var vPage = vhref.split("/")[i];

var eTable = tblLeftMenu;

	for (var i=0; i < eTable.rows.length ; i++)
	{ 
		if (eTable.rows(i).cells(0).selRow != 'X')
		{
			if(vPage==eTable.rows(i).cells(0).pageName)
			{
				eTable.rows(i).cells(0).selRow = 'Y';
				if(i==0)
					eTable.rows(i).cells(0).className = "lftMnuHdrSelected";
				else
				{
					eTable.rows(i).cells(0).className = "lftMnuSelected";
					//showHideLeftMenu(eTable.rows(i).cells(0));
				}
				var selRowIndex = eTable.rows(i).rowIndex;
				
				
			}
			else
			{
				eTable.rows(i).cells(0).selRow = 'N';
				if(i==0)
					eTable.rows(i).cells(0).className = "lftmenuhdr";
				else
				{	//if its a sub-menu option, only show if the parent row is selected
					if(eTable.rows(i).cells(0).parentRow!="none")
					{
						if(vPage==eTable.rows(i).cells(0).parentRow)
							eTable.rows(i).cells(0).className = "lftmenusub";
						else
							eTable.rows(i).className = "hiddenLeftMenu";
					}
					else
						eTable.rows(i).cells(0).className = "lftmenudtl";
				}
			}
		}
	}
	//if (eTable.rows(selRowIndex).cells(0).parentRow!="none")
	
	showHideLeftMenu(eTable.rows(selRowIndex).cells(0));
		
	
	
}

function setHighlightedText(eCell, vRowType)
{
	if (eCell.getAttribute('selRow')=="N")
	{

		if(vRowType=='hdr')
			eCell.className = "lftMnuHdrHighlighted";
		else
			eCell.className = "lftMnuHighlighted";
	}
	else
	{
		if(vRowType=='hdr')
			eCell.className = "lftMnuHdrHighlightedSelected";
		else
			eCell.className = "lftMnuHighlightedSelected";
	}
}


function clearHighlightedText(eCell, vRowType)
{
	if (eCell.getAttribute('selRow')=="N")
	{

		if(vRowType=='hdr')
			eCell.className = "lftmenuhdr";
		else
			if(eCell.parentRow=="none")
				eCell.className = "lftmenudtl";	
			else
				eCell.className = "lftmenusub";	
	}
	else
	{
		if(vRowType=='hdr')
			eCell.className = "lftMnuHdrSelected";
		else
			eCell.className = "lftMnuSelected";
	}
}

function setSelectedTopMenu(vPage)
{

var eTable = tblTopMenu;
	for (var i=0; i < eTable.rows(0).cells.length ; i++)
	{ 
		if(vPage==eTable.rows(0).cells(i).pageName)
		{
			eTable.rows(0).cells(i).selCell = 'Y';
			eTable.rows(0).cells(i).className = "topMenuSelected";			
		}
		else
		{
			eTable.rows(0).cells(i).selRow = 'N';
			eTable.rows(0).cells(i).className = "topMenu";
		}
	}
}

function setHighlightedTextTopMenu(eCell)
{

	eCell.className = "topMenuHighlighted";
}

function clearHighlightedTextTopMenu(eCell)
{
	if (eCell.getAttribute('selCell')=="N")
		eCell.className = "topMenu";
	else
		eCell.className = "topMenuSelected";
}

function clientSideInclude(id, url, mnuItem) {
  
  var req = false;
  // For Safari, Firefox, and other non-MS browsers
  if (window.XMLHttpRequest) {
    try {
      req = new XMLHttpRequest();
    } catch (e) {
      req = false;
    }
  } else if (window.ActiveXObject) {
    // For Internet Explorer on Windows
    try {
      req = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        req = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e) {
        req = false;
      }
    }
  }
  

 var element = document.getElementById(id);
 if (!element) {
  alert("Bad id " + id + 
   "passed to clientSideInclude." +
   "You need a div or span element " +
   "with this id in your page.");
  return;
 }
  if (req) {
    // Synchronous request, wait till we have it all
    req.open('GET', url, false);
    req.send(null);
    element.innerHTML = req.responseText;
  } else {
    element.innerHTML =
   "Sorry, your browser does not support " +
      "XMLHTTPRequest objects. This page requires " +
      "Internet Explorer 5 or better for Windows, " +
      "or Firefox for any system, or Safari. Other " +
      "compatible browsers may also exist.";
  }
}

function loadMenuLinks(eContainer)
{
	/*
	initXML("../../adcLinks.xml")	
	var strPageName = window.location.href;
	var i = strPageName.split("/").length - 1;
	strPageName = strPageName.split("/")[i];
	
	var oLinkNode = xmlLinks.selectSingleNode("//link/text()[contains(.,strPageName)]").parentNode
	if(oLinkNode){
		var strHtml = "<table><tr><td class='lftmenuhdr'><br>Related Links</td></tr>"
		var strCatcd;
		var oCatNode;
		var oCatNodes = oLinkNode.selectNodes("category")
		//for each link node get the categories
		for(var i=0;i<oCatNodes.length;i++){
			strCatcd = oCatNodes[i].text
			oCatNode = xmlLinks.selectSingleNode("//service[@cd='"+strCatcd+"']")
			strHtml+="<tr><td width='150' valign='top' class='maincopy' "+AttrValue(oCatNode,"wrap","nowrap")+"><a href="+oCatNode.text+
					  ">"+AttrValue(oCatNode,"linkDesc","")+"</a></td></tr>"
		}
		strHtml += "</table>"
		eval(eContainer).innerHTML = strHtml+"<br>";
	}	
	*/
}

var xmlLinks
function loadMenu(eContainer,strGroupType,strSubFilter,strSubFilterVal){
	initXML("../adcLinks.xml")	
	var oLinkNodes;
	//append an S to get parentNode
	var oGroupNodes = xmlLinks.selectSingleNode("//"+strGroupType+"s")
	
	var strHtml = "";
	
	if(oGroupNodes){
		strHtml = "<span class='maincopy'>View Cases by "+AttrValue(oGroupNodes,"desc","")+
					"</span><br><select class='maincopy' id='selLinkGroup' "
		if(strSubFilter)		
			strHtml+="onchange=onShowLinksByGrp('"+strGroupType+"','"+strSubFilter+"','"+strSubFilterVal+"')>"
		else
			strHtml+="onchange=onShowLinksByGrp('"+strGroupType+"')>"
		
		for(var i=0;i<oGroupNodes.childNodes.length;i++){	
			//ONly create the option if it has links to show
			var oChildNodes;
			if(strSubFilter)
				oChildNodes = xmlLinks.selectNodes("//link/"+strGroupType+"[text()='"+oGroupNodes.childNodes[i].text+"' and ../"+strSubFilter+"[text()='"+strSubFilterVal+"']]")
			else
				oChildNodes = xmlLinks.selectNodes("//link/"+strGroupType+"[text()='"+oGroupNodes.childNodes[i].text+"']")
		
			if(oChildNodes.length>0){
				strHtml+="<option value='"+oGroupNodes.childNodes[i].text+"'>"+oGroupNodes.childNodes[i].text+"</option>"
			}
		}
		strHtml += "</select><br><br><div id='divLinks'></div>"
		eval(eContainer).innerHTML = strHtml;
		onShowLinksByGrp(strGroupType,strSubFilter,strSubFilterVal);
	}
}

function onShowLinksByGrp(strGroupType,strSubFilter,strSubFilterVal){
	//get links based on select box
	var strLinkValue = selLinkGroup.options[selLinkGroup.selectedIndex].value;
	var oLinkNodes;
	
	if(strSubFilter)
		oLinkNodes = xmlLinks.selectNodes("//link/"+strGroupType+"[text()='"+strLinkValue+"' and ../"+strSubFilter+"[text()='"+strSubFilterVal+"']]")
	else
		oLinkNodes = xmlLinks.selectNodes("//link/"+strGroupType+"[text()='"+strLinkValue+"']")
		
	var strHtml="";		
	if(oLinkNodes.length>0){
		strHtml="<table>";
		for(var i=0;i<oLinkNodes.length;i++)
		{			
			strHtml+="<tr>"						
			strHtml+="<td valign='top' class='maincopy' "+AttrValue(oLinkNodes[i].parentNode,"wrap","nowrap")+"><a href="+oLinkNodes[i].parentNode.text+
				">"+AttrValue(oLinkNodes[i].parentNode,"linkDesc","")+"</a></td></tr>"
		}		
	}
	divLinks.innerHTML = strHtml;
}
/*
function loadMenu(eContainer,strGroupType,strSubFilter,strSubFilterVal){
	initXML("../adcLinks.xml")	
	var oLinkNodes;
	//append an S to get parentNode
	var oGroupNodes = xmlLinks.selectSingleNode("//"+strGroupType+"s")

	var strHtml,strRowHtml = "";
	if(oGroupNodes){
		var iCellCnt = 1;
		var iLinksPerRow = 1;
		//if(oLinkNodes.length>12)
		//	iLinksPerRow = Math.round((oLinkNodes.length/12)+.5);
			
		var bEndRow=false;
		var strGroupValue=""

		strHtml = "<table cellspacing='10'>"
		for(var f=0;f<oGroupNodes.childNodes.length;f++){
			strGroupValue = oGroupNodes.childNodes[f].text;
			var oLinkNodes = xmlLinks.selectNodes("//link/"+strGroupType+"[text()='"+strGroupValue+"' and ../"+strSubFilter+"[text()='"+strSubFilterVal+"']]")
			
			if(oLinkNodes.length>0){
				strGroupingHtml="";
				if(f>0)
					strGroupingHtml+="<tr><td height='20px' colspan='2'></td></tr>"
				strGroupingHtml+="<tr bgcolor='#CCCCCC'><td class='mbtitle' colspan='2'>"+strGroupValue+"</td></tr>"
				
				strRowHtml=""
				for(var i=0;i<oLinkNodes.length;i++)
				{			
					//if(oLinkNodes[i].parentNode.selectSingleNode(strSubFilter+"[text()='"+strSubFilterVal+"']")){
						strRowHtml+="<tr>"						
						strRowHtml+="<td valign='top' class='maincopy' "+AttrValue(oLinkNodes[i].parentNode,"wrap","nowrap")+"><a href="+oLinkNodes[i].parentNode.text+
							">"+AttrValue(oLinkNodes[i].parentNode,"linkDesc","")+"</a></td></tr>"
					//}					
				}
				if(strRowHtml!="")
					strHtml+=strGroupingHtml+strRowHtml;
			}
		}
		strHtml += "</table>"
		eval(eContainer).innerHTML = strHtml;
	}
}
*/
// verify that browser supports XML features and load external .xml file
function verifySupport(xFile) {
    if (document.implementation && document.implementation.createDocument) {
        // this is the W3C DOM way, supported so far only in NN6
        xmlLinks = document.implementation.createDocument("", "theXdoc", null);
    } else if (typeof ActiveXObject != "undefined") {
        xmlLinks = new ActiveXObject("Msxml.DOMDocument");
		xmlLinks.async = false;
		xmlLinks.setProperty("SelectionLanguage","XPath") 
    }
    if (xmlLinks&& typeof xmlLinks.load != "undefined") {
        // load external file (from same domain)
        xmlLinks.load(xFile);
        return true;
    }
    return false;
}

// initialize first time -- invoked onload
function initXML(xFileRelative) {
        xFile = xFileRelative;
    // confirm browser supports needed features and load .xml file
    verifySupport(xFile)
}

function getReferrer(){
	var strReferrer = window.document.referrer;
	if(strReferrer){
		var aryURL = new Array;
		aryURL = strReferrer.split("/");
		strReferrer = aryURL[aryURL.length-1];
	}
	return strReferrer;
}

function getTitle(){
	var strTitle = "";
	switch(getReferrer().toUpperCase()){
	case "AISUCCESSES.HTML":
		strTitle = "&nbsp;&nbsp;&nbsp;&nbsp;Application Development: Successes"
		break;
	case "ROISUCCESSES.HTML":
		strTitle = "&nbsp;&nbsp;&nbsp;&nbsp;Quick ROI: Successes"
		break;
	default:
		break;
	}
	return strTitle;
}

function onSearch()
{
	frmSearch.words.value=txtTopSearch.value
	txtTopSearch.value=""
	//frmSearch.submit();
	frmSearch.submit.click();
}

function onSearchKeyPress()
{
	if (window.event.keyCode == 13)
	{
		onSearch();
	}
}