var _latestQuicklink;									//Last quicklink used
var _lastAnnouncementGroup = "UNREAD";		//
var _lastAnnouncementGroupName;
var _marketWatchGlanceDivId = null;			//Set by the first call

/************************************************
*		User has read one (or more) announcements.
*		Call the host to mark them as read.
************************************************/
function markAnnouncementsAsRead(idList)
{
	if ($type(idList)=="number") idList = String(idList);

	if (mainWindow._agt.offlineflag) return;
	var dNode = mainWindow._agt.loginobject.xmlobject.selectSingleNode("//ANNOUNCEMENTS");
	var uri = mainWindow._agt.getUrl("LOGIN", true);
	uri += "?ANNOUNCEMENTSREAD=" + idList.replace(/\,$/, "");
	top.mainWindow.extra.load("GET", uri, false);
	if (top.mainWindow.extra.status)
	{
		var newAnnouncementsNode = top.mainWindow.extra.xmlobject.selectSingleNode("//ANNOUNCEMENTS");
		if (newAnnouncementsNode)
		{
			dNode.parentNode.replaceChild(newAnnouncementsNode.cloneNode(true), dNode);
		}
	}
}				

/*******************************************
*		User clicked on the followup icon.
*		Open the follow-up window and mark
*		the announcement as read.
*******************************************/
function announcementFollowup(announcementID)
{
	var aNode = mainWindow._agt.loginobject.xmlobject.selectSingleNode("//ANNOUNCEMENTS/ANNOUNCEMENT[ID='" + announcementID + "']");
	if (aNode)
	{
		var uNode = aNode.selectSingleNode("FOLLOWUPURL");
		if (uNode)
		{
			var windowId = "announcement" + announcementID;
			top.mainWindow.genericNewWindow(windowId, "popupWindow.htm",  null, null, uNode.text, window);
			var readNode = aNode.selectSingleNode("READDATE");
			if ((!readNode) || (readNode.text.length  == 0))
			{
				markAnnouncementsAsRead(announcementID);
				showAnnouncements(_lastAnnouncementGroup, _lastAnnouncementGroupName);			//Build the announcements display
			}
		}
	}
}

/*********************************************
*		User clicked on the +/- imgage to expand 
*   or collapse the announcement body
*   It will move up to the container Row and 
*   change the class name
*********************************************/
function toggleAnnouncementDetail(linkObj, force)
{  
	var postRead = false;
	var curEl = $(linkObj);
	while (curEl && curEl.tagName.toLowerCase() != "tr" ) curEl = curEl.getParent();
	

	if (!curEl) alert('Could not find the row in toggleAnnouncementDetail');
	else
	{
		// Mark the record as read if it hasn't already been marked
		var announcementID = curEl.getProperty("announcementid")
		var aNode = mainWindow._agt.loginobject.xmlobject.selectSingleNode("//ANNOUNCEMENTS/ANNOUNCEMENT[ID='" + announcementID + "']");
		var readNode = aNode.selectSingleNode("READDATE");
		if ((!readNode) || (readNode.text.length  == 0))
		{	
			curEl.addClass("read").removeClass("unread");
			var cmd = 'markAnnouncementsAsRead(' + announcementID + ')';
			setTimeout(cmd, 100);
		}

		if ($type(force)=='string')
		{
			if (force.toLowerCase()=="on")
				curEl.removeClass('hideextra').addClass('showextra');
			else
				curEl.addClass('hideextra').removeClass('showextra');					
		}
		else
			curEl.toggleClass('hideextra').toggleClass('showextra');



	}
	return curEl;
}


/*********************************************
*		
*********************************************/
function showAnnouncementDetail(obj)
{
	var row;
	
	// Expand the detail div
	row = toggleAnnouncementDetail(obj, "on");
	
	// If the current display is normalized, maximize the pod
	var podDiv = $(obj);
	while (podDiv && podDiv.hasClass('pod') == false) podDiv = podDiv.getParent();
	if (podDiv) podTools.maximizePod(podDiv, false);	
}


/*********************************************
*		User asked to refresh the announcements
*********************************************/
function refreshAnnouncements()
{

	var uri = mainWindow._agt.getUrl("LOGIN", true);
	mainWindow.extra.load("GET", uri, false);
	if (mainWindow.extra.status)
	{
		var aNode = mainWindow.extra.xmlobject.selectSingleNode("//ANNOUNCEMENTS");
		if (aNode)
		{
			var oldNode = mainWindow._agt.loginobject.xmlobject.selectSingleNode("//ANNOUNCEMENTS");
			if (oldNode)
			{
				var pNode = oldNode.parentNode;
				pNode.removeChild(oldNode);
				pNode.appendChild(aNode.cloneNode(true));
			}
			showAnnouncements(_lastAnnouncementGroup, _lastAnnouncementGroupName);			//Build the announcements display
		}
	}
}

function displayAnnouncementPanel(tagId)
{
	showAnnouncements(_lastAnnouncementGroup, _lastAnnouncementGroupName, tagId);			//Build the announcements display
	if (document.getElementById('compliancelist'))
	{
	  displayOption('compliancelist', 'complianceDisplays', 'announcementText', 2);
	  window.event.returnValue = false;
	}
	return false;
}

/************************************************************************
*								Show some of the announcements												*
************************************************************************/
function showAnnouncements(grouping, groupName, tagId)
{
  if (typeof(window.top.podTools) == "undefined") 
	{
		tagId = "announcementText";
	}
	else
	{
		// In the ihome environment, there can be more than one announcement pod because 
		// we may create one on the message tab when startup.
		// We will call this function again for each announcement pod 
		if (!tagId)
		{
			$$('.announcementContainer').each(function(item){  
				  	showAnnouncements(grouping, groupName, item.id); });
			return;
		}
//		var tg;
//		if (tagId) tg = $(tagId);
//		else tg = $(event.srcElement);
//	
//		while (tg != null && tg.nodeName != "#document" && tg.hasClass("announcementContainer") == false)
//			tg = tg.getParent();
//		
//		if (tg != null && tg.nodeName != "#document") tagId = tg.id;
//		else tagId = "announcementText";
	}
	
	
	var uri;
	var noMatches;
	var unreadClause;
	_lastAnnouncementGroup = grouping;
	_lastAnnouncementGroupName = groupName;
	switch(grouping)
	{
		case "ALL":
			uri = "//ANNOUNCEMENTS/ANNOUNCEMENT";
			unreadClause = "//ANNOUNCEMENTS/ANNOUNCEMENT[(not (READDATE) or READDATE='') and (not (FOLLOWUPURL) or FOLLOWUPURL='')]/ID";
			noMatches = "There are no announcements at this time";
			break;
		case "UNREAD":
			uri = "//ANNOUNCEMENTS/ANNOUNCEMENT[not(READDATE) or READDATE='']";
			unreadClause = "//ANNOUNCEMENTS/ANNOUNCEMENT[(not (READDATE) or READDATE='') and (not (FOLLOWUPURL) or FOLLOWUPURL='')]/ID";
			noMatches = "There are no announcements that you have not read";
			break;
		case "GROUP":
			uri = "//ANNOUNCEMENTS/ANNOUNCEMENT[GROUPNAME=\"" + groupName + "\"]";
			unreadClause = "//ANNOUNCEMENTS/ANNOUNCEMENT[GROUPNAME=\"" + groupName + "\" and (not (READDATE) or READDATE='') and (not (FOLLOWUPURL) or FOLLOWUPURL='')]/ID";
			noMatches = "There are no announcements in " + groupName;
			break;
	}

	var xNode = mainWindow.dashboardFormat.selectSingleNode("//div[@id='announcementPanel']/xsl:choose/xsl:when");
	xNode.setAttribute("test", uri);
	xNode = mainWindow.dashboardFormat.selectSingleNode("//div[@id='announcementPanel']/xsl:choose/xsl:when/table/xsl:for-each");
	xNode.setAttribute("select", uri);
	xNode = mainWindow.dashboardFormat.selectSingleNode("//div[@id='announcementPanel']/xsl:choose/xsl:otherwise/div");
	xNode.text = noMatches;
	
	/****************************************
	*			Format the announcements					*
	****************************************/
//debugger;
	var annText = document.getElementById(tagId);
	if (annText)
	{
		var dNode = mainWindow._agt.loginobject.xmlobject.selectSingleNode("//ANNOUNCEMENTS");
		if (dNode) 
		{
			annText.innerHTML = dNode.transformNode(mainWindow.dashboardFormat.XMLDocument);

			/***************************************************
			*		If any of the announcments we just displayed
			*		were not read, and do not have a follow-up
			*		url, mark them as read.
			****************************************************/
			var iNodes = mainWindow._agt.loginobject.xmlobject.selectNodes(unreadClause);
			if ((iNodes.length) && (mainWindow._agt.remote))
			{
				var itext = "";
				for (var ii=0; ii<iNodes.length; ii++) itext += iNodes[ii].text + ",";
				markAnnouncementsAsRead(itext.replace(/\,$/, ""));
			}
		}
		else annText.innerHTML = "Announcements not available at this time";
	}
}

/********************************************************
*				Display the details of a Market Watch						*
*			ValetData.srf?queryType=DMQL&resource=mwfull&class=mwhistory&query=(searchid=ResSearch),(EEVENTID=EmailAgent)&select=DATELASTRUN,LASTOUTPUT,STATUSTEXT

********************************************************/
function showMarketWatchDetail(searchID, eventType)
{
	var mwWidth = 620;
	var mwHeight = 460;
	var pObj = new Object();
	pObj.searchid = searchID;
	pObj.eventtype = eventType;
	pObj.wnd = window;
	
  if (typeof(window.top.podTools) == "undefined") 
	{
		var rv = window.showModalDialog("marketWatchDetail.htm", pObj, 
			"resizable:yes;help:no;status:no;dialogHeight:" + mwHeight + "px;dialogWidth:" + mwWidth + "px;unadorned:yes;");
		return marketWatchDetailFinished(rv, pObj);
	}
	else
	{
		window.top._ModalDiv.arguments = pObj;
	  window.top._ModalDiv.showPopup('marketWatchDetail.htm', mwWidth, mwHeight, 'Market Watch Detail', marketWatchDetailFinished);
	}
}

function marketWatchDetailFinished(returnValue, pObj)
{
	var passedObject;
	if (pObj) passedObject = pObj;
	else passedObject = window.top._ModalDiv.arguments;
	if (passedObject)
	{
		switch(returnValue)
		{
			case "LAUNCH":
				launchSavedSearch(passedObject.searchid, "Agent");
				break;
			case "":
			case "CANCEL":
			case "OK":
				break;
			default:
				window.open(returnValue);
				break;
		}
	}
	
}

/********************************************************
*			User asked to run a saved search.									*
*			Do not run the same window twice.									*
********************************************************/
function launchSavedSearch(searchID, savelevel)
{
	for (var ww=0; ww<mainWindow.windows.list.length; ww++)
	{
		var wObj = mainWindow.windows.list[ww];
		if (wObj.id == "Search" + searchID)
		{
			mainWindow.windows.list[ww].window.focus();
			return;
		}
	}
	
	if (typeof(podTools) == "undefined") 
	{
  	mainWindow.genericNewWindow("Search" + searchID, "searchPage.htm", null, "searchid=" + searchID + "&savelevel=" + savelevel, "no main window", top)	;
	  //mainWindow.genericNewWindow("Search" + linkid, "searchPage.htm", taskNode, "searchid=" + taskNode.getAttribute("id"), "no main window", callingWindow)	;
	}
	else
	{
		linkid = "Search" + searchID;

		//check to see if the search already exists.  if it does then open that pod
		if (podTools.findPodById(linkid))
		{
			podTools.selectPod(linkid);
			return;
		}

		var windowTitle = "Search " + searchID;
		var dNode = tasklist.xmlobject.selectSingleNode("//SEARCH[@id='" + searchID + "']/MENUTEXT");
		if (!dNode)	dNode = searchlist.xmlobject.selectSingleNode("//SEARCH[@id='" + searchID + "']/TOOLTIP");	
	
		
		if ((dNode) && (dNode.text.length > 0)) windowTitle = dNode.text;
		var params = 'p1=' + escape("searchid=" + searchID + "&savelevel=" + savelevel);
		//if (windowTitle.length > 25) windowTitle = "Saved Search";
		genericNewPod("searchframe", linkid, windowTitle, params, windowTitle);
		//genericNewPod("searchframe", linkid, windowTitle, "searchid=" + searchID + "&savelevel=" + savelevel);
  }					
}

/*******************************************************
*			User clicked on a quicklink.  Run the program.
********************************************************/
function quickLinkClick()
{
	var linktype = window.event.srcElement.getAttribute("linktype");
	var linkid = window.event.srcElement.getAttribute("linkid");
	switch(linktype.toLowerCase())
	{
		case "search":
			mainWindow.genericNewWindow("Search" + linkid, "searchPage.htm", null, "searchid=" + linkid, "no main window", top)	;
			break;

		case "valettask":
			var txt = '[@id="' + linkid + '"]';
			var tNode = mainWindow.tasklist.xmlobject.selectSingleNode("//PAGE" + txt + "|SEARCH" + txt + "|UPDATE" + txt);
			if (!tNode) valetAlert(messageText("nosuchtaskid", "Unable to run this task because there is no task id {taskid} in our current list of tasks", new Array("taskid=" + linkid)));
			mainWindow.launchWindowFromTaskNode(tNode);
			break;
		default:
			var params = new Array("linktype="+linktype, "linkid=" + linkid, "errmsg=The linktype is not one of the recognized link types");
			valetAlert(messageText("quicklinkrunerror", "Unable to run quicklink:  Link type={linktype}, Link id={linkid} {errmsg}", params));
			break;
	}
}

/*******************************************************
*							User right-clicked on a quicklink.  
********************************************************/
function quickLinkContext()
{
	var pObj = new Object()
	pObj.linktype = window.event.srcElement.getAttribute("linktype"); 
	pObj.linkid = window.event.srcElement.getAttribute("linkid");
	pObj.label = window.event.srcElement.getAttribute("label");
	pObj.src = window.event.srcElement.getAttribute("src");
	pObj.latestQuicklink = _latestQuicklink;
	pObj.window = window;
	
	var rv = window.showModalDialog("quickLinkUpdate.htm",pObj,"resizable:no;unadorned:no;dialogHeight:450px;dialogWidth:400px;scrollbars=no;");
	var uri = "//LOGIN/DASHBOARD/QUICKLINKS/QUICKLINKTAB[@label=\"" + window.event.srcElement.getAttribute("tab") +  "\"]" +
						"/QUICKLINK[@label=\"" + window.event.srcElement.getAttribute("label") + "\"]";
	var dNode = mainWindow._agt.loginobject.xmlobject.selectSingleNode(uri);
	if (dNode)
	{
		switch(rv)
		{
			case "copy":
				_latestQuicklink = dNode;
				
			case "save":
				if ((dNode.getAttribute("label") != pObj.label) | (dNode.getAttribute("icon") != pObj.src))
				{
					dNode.setAttribute("label", pObj.label);
					dNode.setAttribute("icon", pObj.src);
					if (uploadDashboardSettings())
					{
						var txt = dNode.transformNode(mainWindow.dashboardFormat.XMLDocument);
						window.event.srcElement.parentNode.innerHTML = txt;
						_latestQuicklink = dNode;
					}
				}
				break;

			case "delete":
				dNode.parentNode.removeChild(dNode);
				if (uploadDashboardSettings())
				{
					var txt = dNode.transformNode(mainWindow.dashboardFormat.XMLDocument);
					window.event.srcElement.parentNode.innerHTML = txt;
				}
				_latestQuicklink = null;
				break;
			case "cancel":
			default:
				break;
		}
	}
	return false;
	
}
/********************************************************
*			User clicked on a quicklink tab.  Reset the				*
*			"current" tab just in case we have to rebuild			*
*			the quicklinks display.														*
********************************************************/
function quicklinkTab(ulList, topDiv,displayDiv, idx)
{
	var uri = "//LOGIN/DASHBOARD/QUICKLINKS";
	var tNode = mainWindow._agt.loginobject.xmlobject.selectSingleNode(uri);
	var qNodes = tNode.selectNodes(".//QUICKLINKTAB");
	if (idx <= qNodes.length) tNode.setAttribute("current",qNodes[idx-1].getAttribute("label"));
	displayOption(ulList, topDiv,displayDiv, idx);
}


/****************************************************
*				User did a quicklink drag/drop 
****************************************************/
function dropOnQuicklinkTab()
{
	var dropElem = document.elementFromPoint(window.event.clientX, window.event.clientY);
	var dragElem = window.event.srcElement;

	alert("dropOnQuicklinkTab " + dragElem.outerHTML + "\r\n" + dropElem.outerHTML);

	if (!dropElem) return alert("in dropOnQuicklinkTab, we dropped where there are no elements");
	while (!dropElem.getAttribute("droptype"))
	{
		if (dropElem.nodeName.toUpperCase() == "BODY") return;
		if (!dropElem.parentNode) return;
		dropElem = dropElem.parentNode;
	}
	
	//alert("in dropOnQuicklinkTab, Dragged \r\n" + dragElem.outerHTML + "\r\nto\r\n" + dropElem.getAttribute("droptype"));
	
	/*******************************************
	*					Are we dragging a quicklink?
	*******************************************/
	if (dragElem.nodeName == "IMG")
	{

		var uri = "//LOGIN/DASHBOARD/QUICKLINKS/QUICKLINKTAB[@label=\"" + window.event.srcElement.getAttribute("tab") +  "\"]" +
							"/QUICKLINK[@label=\"" + window.event.srcElement.getAttribute("label") + "\"]";
	
		var dNode = mainWindow._agt.loginobject.xmlobject.selectSingleNode(uri);			//Find node in our list of DASHBOARD elements
		if (dNode)
		{
			switch(dropElem.getAttribute("droptype"))
			{
				case "tab":
					var targetTabName = dropElem.getAttribute("label");
					var sourceTabName = window.event.srcElement.getAttribute("tab");
					var iconLabel = window.event.srcElement.getAttribute("label");				//Icon label
					if (targetTabName.toUpperCase() == "VIEW") return valetAlert("You may not drop a link into the VIEW tab");		//Cannot drop into the VIEW tab
					if (sourceTabName == targetTabName) return valetAlert("This quicklink is already in this display panel");			//Trying to drop into our own tab
					uri = "//LOGIN/DASHBOARD/QUICKLINKS/QUICKLINKTAB[@label=\"" + targetTabName +  "\"]";

					/*******************************************
					*			Move the QUICKLINK tag from one tab to the other
					*******************************************/
					var tNode = mainWindow._agt.loginobject.xmlobject.selectSingleNode(uri);
					if (tNode)
					{
						dNode.parentNode.removeChild(dNode);
						tNode.appendChild(dNode);
					}
					else alert("Could not find a table with the label " + targetTabName);
						
					/*******************************************
					*			Find and rebuild the QUICKLINKS panel
					*******************************************/
					uri = "//LOGIN/DASHBOARD/QUICKLINKS";
					tNode = mainWindow._agt.loginobject.xmlobject.selectSingleNode(uri);
					var displayNode = document.getElementById("quicklinks");
					if (displayNode) displayNode.innerHTML = tNode.transformNode(mainWindow.dashboardFormat.XMLDocument);
					break;
			}
		}
	}
}
function uploadDashboardSettings()
{
	var dNode = mainWindow._agt.loginobject.xmlobject.selectSingleNode("//LOGIN/DASHBOARD");			//Dashboard option embedded in login transaction
	var uri = mainWindow._agt.valetDirectoryURL("agent","private", "post", "dashboardoptions.xml");
	mainWindow.temptran.postText(uri, dNode.xml, false);
	return mainWindow.temptran.errorCheck("Error copying your dashboard changes to the host server", window);
}


/*************************************
*			User wants to change the format
*			of one of the Quicklink displays.
******************************************/
function quickLinkDisplayFormat(tabLabel)
{
	var uri = "//LOGIN/DASHBOARD/QUICKLINKS/QUICKLINKTAB[@label=\"" + tabLabel + "\"]";
	var qNode = mainWindow._agt.loginobject.xmlobject.selectSingleNode(uri);
	if (!qNode) return alert("Did not find " + uri);
	var pObj = new Object();
	pObj.mainWindow = mainWindow;
	pObj.qNode = qNode;
	var rv = window.showModalDialog("quickLinkTabDialog.htm",pObj,"resizable:no;unadorned:yes;dialogHeight:180px;dialogWidth:300px;scrollbars=no;status=no;");
	if (rv)
	{
		if (pObj.displayFormat.length > 0) qNode.setAttribute("view", pObj.displayFormat);
		else qNode.removeAttribute("view");
		uri = "//LOGIN/DASHBOARD/QUICKLINKS";
		tNode = mainWindow._agt.loginobject.xmlobject.selectSingleNode(uri);
		if (tNode.getAttribute('current') == qNode.getAttribute("label")) tNode.setAttribute("current", pObj.label);
		qNode.setAttribute("label", pObj.label);
		if (uploadDashboardSettings())
		{
			var displayNode = document.getElementById("quicklinks");
			if (displayNode) displayNode.innerHTML = tNode.transformNode(mainWindow.dashboardFormat.XMLDocument);
		}
	}
}

/*****************************************
*			User has asked to delete a search
*			from one of the dashboard displays.
******************************************/
function deleteSearchById(searchID, saveLevel)
{
	var sNode = mainWindow.searchlist.xmlobject.selectSingleNode("//SEARCH[@id=\"" + searchID + "\" and @savelevel=\"" + saveLevel + "\"]");
	if (!sNode) return;
	mainWindow.deleteSearch(sNode);
	dashboardSearchDisplays();
}

/******************************************
*			Some dashboard panels display 
*			the list of market watch items.			*
******************************************/
function dashboardMarketWatchDisplays(mwId, filterTabs)
{
	if (!mwId) mwId = "marketwatchdiv";			//Default div name from podgadgets.xml
	var mwDiv = document.getElementById(mwId);
	if (mwDiv)
	{
		if (mainWindow._agt.offlineflag)
		{
			mwDiv.innerHTML = "Market Watch items not available in offline mode";
			return;
		}
		
		if (filterTabs)
		{
				var paramNode = mainWindow.dashboardFormat.selectSingleNode("//xsl:param[@name='ihome']");
				paramNode.text = 'true';								
		}
		
		
		mainWindow.getMarketWatchList(false);			//Load market watch entries
		sNode = mainWindow.marketwatch.xmlobject.selectSingleNode("//MWLIST");
		if (sNode) mwDiv.innerHTML = sNode.transformNode(mainWindow.dashboardFormat.XMLDocument);
		else mwDiv.innerHTML = "You have not scheduled any searches for Market Watch";
	}
	return;
}

function dashboardMarketWatchGlance(mwId, refresh)
{
	if (_marketWatchGlanceDivId == null) _marketWatchGlanceDivId=mwId;
	if (!mwId) mwId = _marketWatchGlanceDivId;
	var mwDiv = $(mwId);
	if (mwDiv)
	{
		if (mainWindow._agt.offlineflag)
		{
			mwDiv.innerHTML = "Market Watch items not available in offline mode";
			return;
		}
		
		if (refresh==null) refresh = false;
		mainWindow.getMarketWatchList(refresh);			//Load market watch entries
		sNode = mainWindow.marketwatch.xmlobject.selectSingleNode("//MARKETWATCH/LOGIN");
		if (sNode) 
		{
			if (sNode.selectSingleNode("@localtime") == null)
			{
				var dNodes = mainWindow.marketwatch.xmlobject.selectNodes("//MARKETWATCH/LOGIN/DATELASTRUN");
				for (var dd=0; dd<dNodes.length; dd++)
				{
					if (dNodes[dd].text.length > 0)
					{
						var dt = textToDate(dNodes[dd].text, "UTC");		//Convert to standard time
						if (dt)
						{
							dNodes[dd].parentNode.setAttribute("localdatetime", dateToText(dt));
						}
					}
				}
				
			}
			mwDiv.innerHTML = sNode.transformNode(mainWindow.dashboardFormat.XMLDocument);
		}
		else mwDiv.innerHTML = "You have not asked for any searches to appear as glances";
	}
	return;
}


/******************************************
*			Some dashboard panels display searches.
******************************************/
function dashboardSearchDisplays()
{
	if (typeof(podTools) == "undefined") { ssId = "savedsearches"; filterTabs = false; }
	else { ssId = "savedsearchesdiv"; filterTabs = true; }
	//if (!ssId) ssId = "savedsearches";
	var ssDiv = document.getElementById(ssId);
	if (ssDiv)
	{
		
		if (filterTabs)
		{
				var paramNode = mainWindow.dashboardFormat.selectSingleNode("//xsl:param[@name='ihome']");
				paramNode.text = 'true';								
		}
		
		
		mainWindow.getMarketWatchList(false);			//Load market watch entries

		/*********************************************
		*		Make a copy of SearchList.xml that
		*		we can edit.  Then remove those
		*		entries the agent is not allowed to run.
		**********************************************/
		var localSearchList = new ActiveXObject('MSXML2.DOMDocument');
		var sNode = mainWindow.searchlist.xmlobject.selectSingleNode("//SEARCHLIST");
		if (!sNode) return ssDiv.innerHTML = "Searchlist cannot be read!  Check for corrupted copy of SearchList.xml on server";
		localSearchList.loadXML(sNode.xml);
		
		
		var sNodes = localSearchList.selectNodes("//SEARCH[PERMISSION]");
		for (var ss=0; ss<sNodes.length; ss++) if (!mainWindow._agt.checkPermissions(sNodes[ss]))	sNodes[ss].parentNode.removeChild(sNodes[ss]);
		
		var sNode = localSearchList.selectSingleNode("//SEARCHLIST");
		xNode = mainWindow.dashboardFormat.selectSingleNode("//xsl:param[@name='collapsed']");
		if (xNode)
		{
			qNode = mainWindow._agt.loginobject.xmlobject.selectSingleNode("//LOGIN/DASHBOARD/PANELS/PANEL[@id='savedsearches']");
			if ((qNode) && (qNode.getAttribute("collapsed"))) xNode.text = qNode.getAttribute("collapsed");
		}
		ssDiv.innerHTML = sNode.transformNode(mainWindow.dashboardFormat.XMLDocument);
	}
	
	var searchPods = document.all.tags("podsearch");
	for (var ss=0; ss<searchPods.length; ss++) searchPods[ss].openWindow();
}

/*****************************************
*				Reissue Market Watch
*****************************************/
function refreshMarketWatch()
{
	mainWindow.getMarketWatchList(true);
	dashboardMarketWatchDisplays();
}


/****************************************************************
*			Let a user find an image for uploading as a user object		*
*
*			objectName = agentphoto, officelogo
*			ownerLevel = Agent, Office
*			objectType = Public, Private
*			headingText = "Choose your agent photo"
*			maxSize = 200000
*			imageHeight = 100
*			imageWidth = 100
*			validExtensions = "jpg,jpeg,bmp,gif"
*			idPrefx = "images/"
****************************************************************/
function findUserObject(objectName, ownerLevel, objectType, headingText, maxSize, imageHeight, imageWidth, validExtensions, idPrefix)
{
	var perm = "," + mainWindow._agt.permissions.toUpperCase() + ",";

	var pObj = new Object();

	
	/****************************************
	*			Get the url of the lowest version	*
	*			of the object we can find.				*
	****************************************/
	var saveuri = "//OBJECTS/OBJECT[@name=\"" + objectName.toLowerCase() + "\"]";
	var saveNode = mainWindow._agt.loginobject.xmlobject.selectSingleNode(saveuri);									//Get the lowest copy
	pObj.saveLevel = "";
	pObj.saveLocation = "";
	pObj.saveTitle = "";
	pObj.saveFileName = "";				//File name without directory path (e.g. MyPhoto.jpg)
	if (saveNode) 
	{
		pObj.saveLevel = saveNode.getAttribute("owner");
		pObj.saveLocation = saveNode.text;
		pObj.saveFileName = saveNode.text;
		pObj.saveTitle = saveNode.getAttribute('title');
		if (mainWindow._agt.remote)
		{
			debugger;
			var absoluteURI = pObj.saveLocation.match(/^\//);
			if (!absoluteURI) absoluteURI = pObj.saveLocation.match(/^\.\./);				//Added by DHW on 4/14/2009
			if (!absoluteURI) absoluteURI = pObj.saveLocation.match(/^http\:/);
			if (!absoluteURI) pObj.saveLocation = mainWindow._agt.valetDirectoryURL(pObj.saveLevel,objectType, "read", saveNode.text);
		}
		else
		{
			pObj.saveLocation = mainWindow._agt.getOwnerDirectory(pObj.saveLevel, objectType) + saveNode.text;
		}
	}

	/******************************************
	*			Get the url of the official version	*
	******************************************/
	var officialuri = "//OBJECTS/OBJECT[@name=\"" + objectName.toLowerCase() + "\" and @owner=\"" + ownerLevel.toLowerCase() + "\"]";
	var officialNode = mainWindow._agt.loginobject.xmlobject.selectSingleNode(officialuri);					//Get the real copy
	pObj.officialLevel = ownerLevel;
	pObj.officialLocation = "";
	pObj.officialTitle = "";
	pObj.officialFileName = "";				//File name without directory path (e.g. MyPhoto.jpg)
	if (officialNode) 
	{
		pObj.officialLevel = officialNode.getAttribute("owner");
		pObj.officialTitle = officialNode.getAttribute("title");
		pObj.officialLocation = officialNode.text;
		pObj.officialFileName = officialNode.text;
		if (mainWindow._agt.remote)
		{
			debugger;
			var absoluteURI = pObj.officialLocation.match(/^\//);
			if (!absoluteURI) absoluteURI = pObj.saveLocation.match(/^\.\./);				//Added by DHW on 4/14/2009
			if (!absoluteURI) absoluteURI = pObj.officialLocation.match(/^http\:/);
			if (!absoluteURI) pObj.officialLocation = mainWindow._agt.valetDirectoryURL(pObj.officialLevel,objectType, "read", officialNode.text);
		}
		else
		{
			pObj.officialLocation = mainWindow._agt.getOwnerDirectory(pObj.officialLevel, objectType) + officialNode.text;
		}
	}


	pObj.mainWindow = mainWindow;
	pObj.imageHeight = imageHeight;
	pObj.imageWidth = imageWidth;
	pObj.heading = headingText;
	pObj.extensions = validExtensions;
	pObj.maxSize = maxSize;
	pObj.objectType = objectType;							//Photo (or private or public)
	pObj.agt = mainWindow._agt;
	pObj.idPrefix = idPrefix;									//Put in front of the file name as the object ID
	pObj.uri = "";														//Used to set entry in preferences
	pObj.remove = false;											//User did not ask to remove the object
	pObj.objectName = objectName;							//agentphoto, officelogo, etc

	/***************************************************************
	*			Ask the user to pick (and upload) the new object file.
	***************************************************************/
	if (window.showModalDialog("uploadUserObject.htm", pObj,"resizable:yes;unadorned:no;scrollbars=no;status=no;dialogHeight:400px;dialogWidth:400px;"))
	{
		mainWindow.loadUserObjects();				//Reload the user objects
		rebuildDisplay();
	}

}



function dashboardRSSDisplays()
{

  	var rssList = document.getElementsByTagName("rss");
  	for (var i=0; i < rssList.length; i++)
  	{
			try
			{
	  	  var rssurl = rssList[i].getAttribute("url");
	  	  if (typeof(rssurl)=="string")
	  	  {
					var pidx = 0;
					while (typeof(rssList[i].getAttribute("p"+pidx))=="string")
					{
						rssurl = rssurl.replace("{"+pidx+"}", rssList[i].getAttribute("p"+pidx));
						pidx += 1;
					}

					var resultString;

					if (rssurl.charAt(1)!=".")
					{
						rssurl = "..\\htm\\getxdomainxml.asp?url=" + escape(rssurl);	

			      var xmlDataDoc = new ActiveXObject("MSXML2.DOMDocument");
			      xmlDataDoc.async=false;
			      xmlDataDoc.load(rssurl);
			      
			      resultString = xmlDataDoc.xml;
					}
					else
					{
			      //rssurl = "http://weather.yahooapis.com/forecastrss?p=55311";
			      //rssurl = "..\\htm\\getxdomainxml.asp?url=http%3a\/\/weather.yahooapis.com\/forecastrss%3fp%3d55311"
			      var xslurl="..\\xsl\\rssFormat.xsl";
		
			      var xslDoc = new ActiveXObject("Microsoft.XMLDOM");
			      xslDoc.async=false;
			      xslDoc.load(xslurl);
		
		
			      var xmlDataDoc = new ActiveXObject("MSXML2.DOMDocument");
			      xmlDataDoc.async=false;
			      
			      //xmlDataDoc.load("../../valetdata.srf?querytype=dmql&resource=compliance&class=MyComplianceIssues&query=(complianceruleid=1)&select=id");
			      xmlDataDoc.load(rssurl);
	
		
			      resultString = xmlDataDoc.transformNode(xslDoc);
		      }
		      rssList[i].innerHTML = resultString;
	  	  }  	  
			}
			catch(e)
			{
				debugger;
			  alert("error:" + e.message);
			}
  	}
}




function DisplayRSS(id)
{
	var funcCall = "DisplayRSS_delay('" + id + "')";
	setTimeout(funcCall, 800);
}

function DisplayRSS_delay(objId)
{
    var rssObj = $(objId);
    if (!rssObj)
    {
      alert("Could not find '" + objId + "'.");
    }
    else
    {
      if (rssObj.tagName != "rss") alert(objId + " is not a rss tag. (" + rssObj.tagName + ")");
			try
			{
	  	  var rssurl = rssObj.getAttribute("url");
	  	  if (typeof(rssurl)=="string")
	  	  {
					var pidx = 0;
					while (typeof(rssObj.getAttribute("p"+pidx))=="string")
					{
						rssurl = rssurl.replace("{"+pidx+"}", rssObj.getAttribute("p"+pidx));
						pidx += 1;
					}

					var resultString;

					if (rssurl.charAt(1)!=".")
					{
						//rssurl = "..\\htm\\getxdomainxml.asp?url=" + escape(rssurl);	
						rssurl = "..\\htm\\getxdomainxml.aspx?url=" + escape(rssurl);	

			      var xmlDataDoc = new ActiveXObject("MSXML2.DOMDocument");
			      xmlDataDoc.async=false;
			      xmlDataDoc.resolveExternals = false;
			      xmlDataDoc.validateOnParse = false;
			      xmlDataDoc.load(rssurl);
			      
			      resultString = xmlDataDoc.xml;
					}
					else
					{
			      //rssurl = "http://weather.yahooapis.com/forecastrss?p=55311";
			      //rssurl = "..\\htm\\getxdomainxml.asp?url=http%3a\/\/weather.yahooapis.com\/forecastrss%3fp%3d55311"
			      var xslurl="..\\xsl\\rssFormat.xsl";
		
			      var xslDoc = new ActiveXObject("Microsoft.XMLDOM");
			      xslDoc.async=false;
			      xslDoc.load(xslurl);
		
		
			      var xmlDataDoc = new ActiveXObject("MSXML2.DOMDocument");
			      xmlDataDoc.async=false;
			      xmlDataDoc.resolveExternals = false;
			      xmlDataDoc.validateOnParse = false;
			      
			      //xmlDataDoc.load("../../valetdata.srf?querytype=dmql&resource=compliance&class=MyComplianceIssues&query=(complianceruleid=1)&select=id");
			      xmlDataDoc.load(rssurl);
	
		
			      resultString = xmlDataDoc.transformNode(xslDoc); 
		      }

					// create a new div to hold the rss feed results
					var rssParent = rssObj.getParent();
					var el = new Element('div').inject(rssObj, 'before');
					el.innerHTML =  resultString.replace(/<!\[CDATA\[/g, "")
		      									 .replace(/]]>/g, "")
		                         .replace(/<ArticleDescription>/g, "")
		                         .replace(/<\/ArticleDescription>/g, "");

					// Make sure that all of the anchor tags in the rss feed have a taget 
					// For now we will accept any existing target. 
      		rssParent.getElements('A').each(function(item) { 
	      			if (item.getProperty('target') == '') item.setProperty('target', '_blank');
      			} );
		      
	  	  } 
			}
			catch(e)
			{
				debugger;
			  alert("error:" + e.message);
			}
  	}
}



var _quicksearch = new classQuickSearch();

function classQuickSearch()
{
  classQuickSearch.countWaiting = false;
  classQuickSearch.reportWaiting = false;

  classQuickSearch.waitingTyp = "";
  classQuickSearch.waitingRptDetail = "";
  classQuickSearch.waitingRptList = "";  
}

classQuickSearch.prototype.getQuery = function(typ, isDMQL)  
{
  var query = "";
  
  switch(typ.toLowerCase())
  {
    case "adr":

			var hsnField = document.getElementById("quicksearch_input_hsn");
			var strField = document.getElementById("quicksearch_input_str");
		  if (hsnField || strField)
		  {
		  	hsnField.value = hsnField.value.trim();
		    if (hsnField.value != "")
		    {
     			var hsnFieldName = hsnField.getAttribute("fldname");
 	    		if (!hsnFieldName) hsnFieldName="streetnumber";
          query = hsnFieldName + "=" + hsnField.value;
          if (isDMQL) query = "(" + query + ")";
        }
        strField.value = strField.value.trim();
        if (strField.value != "")
        {
     			var strFieldName = strField.getAttribute("fldname");
 	    		if (!strFieldName) strFieldName="streetname";
          if (query != "")
          { 
          	if (isDMQL) query += ",";
          	else query += ";";
          }
          if (isDMQL) query += "(" ;
          query += strFieldName + "=" + strField.value;		          
          if (isDMQL) query += ")" ;
        }
      }

			break;
    case "cpix":

			var cpixField = document.getElementById("quicksearch_input_cpix");
			var subcpixField = document.getElementById("quicksearch_input_subcpix");
		  if (cpixField || subcpixField)
		  {
		  	cpixField.value = cpixField.value.trim();
		    if (cpixField.value != "")
		    {
     			var cpixFieldName = cpixField.getAttribute("fldname");
 	    		if (!cpixFieldName) cpixFieldName="cpixno";
          query = cpixFieldName + "=" + cpixField.value;
          if (isDMQL) query = "(" + query + ")";
        }
        subcpixField.value = subcpixField.value.trim();
        if (subcpixField.value != "")
        {
     			var subcpixFieldName = subcpixField.getAttribute("fldname");
 	    		if (!subcpixFieldName) subcpixFieldName="subcpixno";
          if (query != "")
          { 
          	if (isDMQL) query += ",";
          	else query += ";";
          }
          if (isDMQL) query += "(" ;
          query += subcpixFieldName + "=" + subcpixField.value;		          
          if (isDMQL) query += ")" ;
        }
      }

			break;
    case "ln":

			var lnField = document.getElementById("quicksearch_input_ln");
		  if (lnField)
		  {
  			var lnFieldName = lnField.getAttribute("fldname");
  			if (!lnFieldName) lnFieldName="ln";
  			lnField.value = lnField.value.trim();
		    if (lnField.value != "")
		    {
          query = lnFieldName + "=" + lnField.value;
          if (isDMQL) query = "(" + query + ")";
        }
      }

			break;
  }
  return query;
}  
  
classQuickSearch.prototype.openReport = function(typ, rptList, rptDetail)
{
  if (classQuickSearch.countWaiting == true) 
  {
    classQuickSearch.reportWaiting = true;
    classQuickSearch.waitingTyp = typ;
    classQuickSearch.waitingRptDetail = rptDetail;
    classQuickSearch.waitingRptList = rptList;
    return;
  }

  var report = "quickview";
  var cntVal = 0;
  switch(typ.toLowerCase())
  {
    case "adr":
      var cntNode = document.getElementById("quicksearch_count_adr");
      if (cntNode)
        cntVal = parseInt(cntNode.innerText)
      break;
    case "ln":
      var cntNode = document.getElementById("quicksearch_count_ln");
      if (cntNode)
        cntVal = parseInt(cntNode.innerText)
      break;
    case "cpix":
      var cntNode = document.getElementById("quicksearch_count_cpix");
      if (cntNode)
        cntVal = parseInt(cntNode.innerText)
      break;
  }
  if (cntVal == 1 && rptDetail != null) 
  	report = rptDetail;
	else if (rptList != null) 
		report = rptList;
	

  var query = this.getQuery(typ);
  if (query == "") 
  {
  	
	  window.top._ModalDiv.showMessage('Please enter search criteria', 'Quick Search Error', 350, 125);
  }
  else
  {	
  	if (typeof(podTools) == "undefined") 
	    mainWindow.genericNewWindow('QuickSearch', 'searchPage.htm', null, 'searchid=QuickSearch&amp;values=' + query + ';open=' + report, 'no main window', top);
  	else
  	{
			var params = 'p1=' + escape("searchid=QuickSearch&amp;values=" + query + ";open=" + report);
	    genericNewPod("searchframe", "quicksearch", "Quick Search", params);
	    //genericNewPod("searchframe", "quicksearch", "Quick Search", "searchid=QuickSearch&amp;values=" + query + ";open=" + report);
	  }
  }
}

classQuickSearch.prototype.enableQuickSearch_ADR = function()
{
	var hsnField = document.getElementById("quicksearch_input_hsn");
	var strField = document.getElementById("quicksearch_input_str");
	var adrButton = document.getElementById("quicksearch_button_adr");
	var cadrButton = document.getElementById("quicksearch_button_cadr");
	if (hsnField && strField && adrButton)
	{
	  if (hsnField.value == "" && strField.value == "")
	  {
	    adrButton.disabled = true;
	    cadrButton.disabled = true;
    }
    else 
    {
    	adrButton.disabled = false;
    	cadrButton.disabled = false;
    }
	}
}

classQuickSearch.prototype.enableQuickSearch_LN = function()
{
	var lnField = document.getElementById("quicksearch_input_ln");
	var lnButton = document.getElementById("quicksearch_button_ln");
	var clnButton = document.getElementById("quicksearch_button_cln");
	if (lnField && lnButton)
	{
	  if (lnField.value == "")
	  {
	    lnButton.disabled = true;
	    clnButton.disabled = true;
    }
    else 
    {
    	lnButton.disabled = false;
    	clnButton.disabled = false;
    }
	}  
}

classQuickSearch.prototype.enableQuickSearch_CPIX = function()
{
	var cpixField = document.getElementById("quicksearch_input_cpix");
	var subcpixField = document.getElementById("quicksearch_input_subcpix");
	var lnButton = document.getElementById("quicksearch_button_cpix");
	var clnButton = document.getElementById("quicksearch_button_ccpix");
	if ((cpixField.value == "" && subcpixField.value == "") && lnButton)
	{
	  if (lnField.value == "")
	  {
	    lnButton.disabled = true;
	    clnButton.disabled = true;
    }
    else 
    {
    	lnButton.disabled = false;
    	clnButton.disabled = false;
    }
	}  
}

classQuickSearch.prototype.requestCount_ADR = function()
{
  var query = this.getQuery("adr", "dmql");
  if (query=="") return;

  classQuickSearch.countWaiting = true;

	_latestCount = -1;
	url = top.mainWindow.agt.countsURL("Property", query, "");
	//document.body.style.cursor = "wait";
	top.mainWindow.searchcounts.statusnode=true;
	top.mainWindow.searchcounts.onResultChange = classQuickSearch.prototype.countsComplete_ADR;
	//document.all("searchCriteriaHeading").innerHTML = "Getting counts";
	top.mainWindow.searchcounts.load("GET", url, true);
}

classQuickSearch.prototype.requestCount_CPIX = function()
{
  var query = this.getQuery("cpix", "dmql");
  if (query=="") return;

  classQuickSearch.countWaiting = true;
  
	_latestCount = -1;
	url = top.mainWindow.agt.countsURL("Property", query, "");
	//document.body.style.cursor = "wait";
	top.mainWindow.searchcounts.statusnode=true;
	top.mainWindow.searchcounts.onResultChange = classQuickSearch.prototype.countsComplete_CPIX;
	//document.all("searchCriteriaHeading").innerHTML = "Getting counts";
	top.mainWindow.searchcounts.load("GET", url, true);
}

classQuickSearch.prototype.requestCount_LN = function()
{
  var query = this.getQuery("ln", "dmql");
  if (query=="") return;

  classQuickSearch.countWaiting = true;
  
	_latestCount = -1;
	url = top.mainWindow.agt.countsURL("Property", query, "");
	//document.body.style.cursor = "wait";
	top.mainWindow.searchcounts.statusnode=true;
	top.mainWindow.searchcounts.onResultChange = classQuickSearch.prototype.countsComplete_LN;
	//document.all("searchCriteriaHeading").innerHTML = "Getting counts";
	top.mainWindow.searchcounts.load("GET", url, true);
}

classQuickSearch.prototype.countsComplete_CPIX = function()
{
	if (top.mainWindow.searchcounts.readystate != 4)
		return;

	var countList = top.mainWindow.searchcounts.xmlobject.selectNodes("/Counts/Count/Total")
	if (countList.length > 0)
	{
	  var countSpan = document.getElementById("quicksearch_count_cpix");
	  if (countSpan)
	  {
	    countSpan.innerText = countList[countList.length - 1].text;
	  }
	}

  classQuickSearch.countWaiting = false;
  if (classQuickSearch.reportWaiting == true)
  {
    classQuickSearch.prototype.openReport(classQuickSearch.waitingTyp, classQuickSearch.waitingRptList, classQuickSearch.waitingRptDetail);
    this.waitingTyp = "";
    classQuickSearch.waitingRptList = "";
    classQuickSearch.waitingRptDetail = "";
  }
}

classQuickSearch.prototype.countsComplete_LN = function()
{
	if (top.mainWindow.searchcounts.readystate != 4)
		return;

	var countList = top.mainWindow.searchcounts.xmlobject.selectNodes("/Counts/Count/Total")
	if (countList.length > 0)
	{
	  var countSpan = document.getElementById("quicksearch_count_ln");
	  if (countSpan)
	  {
	    countSpan.innerText = countList[countList.length - 1].text;
	  }
	}

  classQuickSearch.countWaiting = false;
  if (classQuickSearch.reportWaiting == true)
  {
    classQuickSearch.prototype.openReport(classQuickSearch.waitingTyp, classQuickSearch.waitingRptList, classQuickSearch.waitingRptDetail);
    this.waitingTyp = "";
    classQuickSearch.waitingRptList = "";
    classQuickSearch.waitingRptDetail = "";
  }
}

classQuickSearch.prototype.countsComplete_ADR = function()
{
	if (top.mainWindow.searchcounts.readystate != 4)
		return;

	var countList = top.mainWindow.searchcounts.xmlobject.selectNodes("/Counts/Count/Total")
	if (countList.length > 0)
	{
	  var countSpan = document.getElementById("quicksearch_count_adr");
	  if (countSpan)
	  {
	    countSpan.innerText = countList[countList.length - 1].text;
	  }
	}

  classQuickSearch.countWaiting = false;
  if (classQuickSearch.reportWaiting == true)
  {
    classQuickSearch.prototype.openReport(classQuickSearch.waitingTyp, classQuickSearch.waitingRptList, classQuickSearch.waitingRptDetail);
    classQuickSearch.waitingTyp = "";
    classQuickSearch.waitingRptList = "";
    classQuickSearch.waitingRptDetail = "";
  }
}
function siteMap()
{
	var tDom = new ActiveXObject("MSXML2.DOMDocument");
	var smd = document.getElementById('siteMapDisplay');
	
	var tNode = mainWindow.tasklist.xmlobject.selectSingleNode("//TASKLIST");
	tDom.loadXML(tNode.xml);
	
	var pNodes = tDom.selectNodes("//PERMISSIONS");

	var qlDisplays = document.getElementById('quicklinksDisplays');
	quicklinkTab('quicklinkslist', 'quicklinksDisplays', 'siteMapDisplay', qlDisplays.childNodes.length.toString());		//Site map is always the last display
}



function checkImportantMessages(doRefresh, removeIfEmpty)
{
  /*
	  <HOMEMESSAGES>
			<POD id="announcements" />
			<POD id="compliance" />	
		</HOMEMESSAGES>
  */
  
	if (doRefresh)
	{
		var uri = mainWindow._agt.getUrl("LOGIN", true);
		mainWindow.extra.load("GET", uri, false);
		if (!mainWindow.extra.status) return;
	}
	
	var msgCount = 0;

	// Get a list of existing pods and throw it into an array
	var gList = $('podarea').getElements("div[tabid='" + podTools.messageTabId + "']");
  var curMsgPods = new Hash();
	for (var i=0; i<gList.length; i++)
	{
		var rid = gList[i].getProperty("refid");
		var pid = gList[i].getProperty("id");
		if (rid) curMsgPods.set(rid, pid);
	}
//	var curMsgPods = new Array();
//	var oldPodList = podTools.dashOpts.selectNodes("//PODTABS/PODTAB[@id='" + podTools.messageTabId + "']/POD");
//	for (var i=0; i<oldPodList.lenght; i++)
//	{
//		curMsgPods.add(oldPodList[i].getAttribute("id"));
//	}


	// Add any new pods
	var homeMsgNode = mainWindow._agt.loginobject.xmlobject.selectSingleNode("//HOMEMESSAGES");
	if (homeMsgNode)
	{
		var msgPodList = homeMsgNode.selectNodes("POD");
		for (var i=0; i<msgPodList.length; i++)
		{
			var podId = msgPodList[i].getAttribute("id");
			var showIt = msgPodList[i].getAttribute("show");
			if (!showIt) showIt = "check";
			
			if (showIt.toLowerCase()=="check")
			{
				switch(podId.toLowerCase())
				{
					case "announcements":
						var aNode = mainWindow._agt.loginobject.xmlobject.selectSingleNode("//ANNOUNCEMENTS/ANNOUNCEMENT[REQUIRED='True' and READDATE='']");
						if(aNode) showIt="yes";
						break;
					case "compliance":
						var aNode = mainWindow._agt.loginobject.xmlobject.selectSingleNode("//ListingSummary/DATA/@totalissues");
						if(aNode && parseInt(aNode.nodeValue) > 0) showIt="yes";
						break;
					default:
						break;									
				}
			}
			
			if (showIt.toLowerCase()=="yes")
			{
				podTools.insertMessageNavPod(podId, null, null, null);		
			  curMsgPods.remove(podId);

				msgCount += 1;
			}
		}
	}
		
		
	// remove any old pods
	msgCount -= curMsgPods.length;
	curMsgPods.each(function(value, Key){ podTools.removePod(value, false, false); });
	
	

	if (msgCount > 0)
	{
	  podTools.showTab(podTools.messageTabId);

	  var layout = (window.size().width > 1200) ? "2B" : "1A";  // if the user has a wide screen allow 2 columns otherwise show one.
	  if (msgCount == 1) layout = "1A";
	  podTools.rebuildTabLayout(podTools.messageTabId, layout);
	}
	else
	  podTools.removeTab(podTools.messageTabId, false);
}


function dashboardTransform(destObj, srcXML, xslurl)
{
		try
		{	
//	      var xslurl="..\\xsl\\rssFormat.xsl";

	      var xslDoc = new ActiveXObject("Microsoft.XMLDOM");
	      xslDoc.async=false;
	      xslDoc.load(xslurl);


	      var xmlDataDoc;
	      if (typeof(srcXML) == "object")
	      {
	      	// user passed an xml object
	      	xmlDataDoc = srcXML;
	      }
	      else
	      {
	      	// user passed a url
		      xmlDataDoc = new ActiveXObject("MSXML2.DOMDocument");
		      xmlDataDoc.async=false;
		      
		      xmlDataDoc.load(srcXML);
				}

	      resultString = xmlDataDoc.transformNode(xslDoc);
	      destObj.innerHTML = resultString;
		}
		catch(e)
		{
			debugger;
		  alert("error:" + e.message);
		}
	
}


function loadListSummaryArea(divId)
{
	var divObj = $(divId);
	var srcXML = mainWindow._agt.loginobject.xmlobject.selectSingleNode("//ListingSummary");


	var objCoord = divObj.getCoordinates();


	var xslt = new ActiveXObject("Msxml2.XSLTemplate.3.0");
	var xsldoc = new ActiveXObject("Msxml2.FreeThreadedDOMDocument.3.0");
	var xslproc;
	xsldoc.async = false;
	xsldoc.load("../xsl/listingsummary.xsl");
	if (xsldoc.parseError.errorCode != 0) {
	   var myErr = xsldoc.parseError;
	   alert("You have error " + myErr.reason);
	} 
	else xslt.stylesheet = xsldoc;


  xslproc = xslt.createProcessor();
  xslproc.input = srcXML;
  if (objCoord.width < 510)
	  xslproc.addParameter("splitdata", "true");
	else
	  xslproc.addParameter("splitdata", "false");
		
  xslproc.transform();
  
  divObj.innerHTML = xslproc.output;

}

/*
function xxloadListSummaryArea(divId)
{
	var divObj = $(divId);
	var srcXML = mainWindow._agt.loginobject.xmlobject.selectSingleNode("//ListingSummary");
	var xslurl = "../xsl/listingsummary.xsl";

  dashboardTransform(divObj, srcXML, xslurl);	

debugger;

	var objCoord = divObj.getCoordinates();
 	var trHolder = divObj.getElements("span[class='holderfortrtosplitcells']")[0];
	if (!trHolder) alert("holderfortrtosplitcells is gone");

  if (objCoord.width < 500)
  {
  	if (trHolder.getElements("tr").length == 0)
		 { var e = new Element("tr").inject(trHolder); }
  }
	else
	{
		while(trHolder.childNodes.length > 0) trHolder.removeChild[0];
  	//trHolder.empty()
	}
}
*/

function impersonationCallback(rv, pObj)
{
	window.top.finishedLogin(true);
}
