//------------------------------------------------------//// Solution Partner's ASP.NET Hierarchical Menu Control //// Copyright (c) 2002-2005                              //// Jon Henning - Solution Partner's Inc                 //  // jhenning@solpart.com   -   http://www.solpart.com    //// Compatible Menu Version:  <Min: 1400>             ////                           <Max: 1.7.2.0>             //// <Script Version: 1720>                               ////------------------------------------------------------//var m_oSolpartMenu;if (m_oSolpartMenu == null)	m_oSolpartMenu = new Array(); //stores all menu objects (SolpartMenu) in array var m_spm_sBrowser;var m_spm_sVersion;function spm_initMyMenu(oXML, oCtl)   //Creates SolpartMenu object and calls generate method{  m_oSolpartMenu[oCtl.id] = new SolpartMenu(oCtl);  m_oSolpartMenu[oCtl.id].GenerateMenuHTML(oXML); }  //------- Constructor -------//function SolpartMenu(o){__db(o.id + ' - constructor');//  var me = this;  //allow attached events to reference this  //--- Data Properties ---//  this.systemImagesPath=spm_getAttr(o, 'SysImgPath', '');    this.iconImagesPath=spm_getAttr(o, 'IconImgPath', this.systemImagesPath);    this.xml = spm_getAttr(o, 'XML', '');  this.xmlFileName = spm_getAttr(o, 'XMLFileName', '');  //--- Appearance Properties ---//  this.fontStyle=spm_getAttr(o, 'FontStyle', 'font-family: arial;');  this.backColor=spm_getAttr(o, 'BackColor');    this.foreColor=spm_getAttr(o, 'ForeColor');  this.iconBackColor=spm_getAttr(o, 'IconBackColor');  this.hlColor=spm_getAttr(o, 'HlColor', '');  this.shColor=spm_getAttr(o, 'ShColor', '');   this.selColor=spm_getAttr(o, 'SelColor');  this.selForeColor=spm_getAttr(o, 'SelForeColor');  this.selBorderColor=spm_getAttr(o, 'SelBorderColor');  this.menuAlignment = spm_getAttr(o, 'MenuAlignment', 'Left');  this.display=spm_getAttr(o, 'Display', 'horizontal');  this.MBLeftHTML=spm_getAttr(o, 'MBLHTML', '');  this.MBRightHTML=spm_getAttr(o, 'MBRHTML', '');  this.rootArrow = spm_getAttr(o, 'RootArrow', '0');  this.rootArrowImage = spm_getAttr(o, 'RootArrowImage', '');  this.arrowImage = spm_getAttr(o, 'ArrowImage', '');  this.backImage=spm_getAttr(o, 'BackImage', '');	this.supportsTransitions = spm_getAttr(o, 'SupportsTrans', '0');  //--- Transition Properteis ---//  //this.menuEffectsStyle=spm_getAttr(o, 'MenuEffectsStyle', '');  this.menuTransitionLength=spm_getAttr(o, 'MenuTransitionLength', .3);  this.menuTransition=spm_getAttr(o, 'MenuTransition', 'None');  this.menuTransitionStyle=spm_getAttr(o, 'MenuTransitionStyle', '');  this.SolpartMenuTransitionObject = new SolpartMenuTransitionObject();    //--- Behavior Properteis ---//  this.moveable = spm_getAttr(o, 'Moveable', '0');  this.moDisplay=spm_getAttr(o, 'MODisplay', 'HighLight');  this.moExpand=spm_getAttr(o, 'MOExpand', "-1");  this.moutDelay=spm_getAttr(o, 'MOutDelay', "0");  this.minDelay=spm_getAttr(o, 'MInDelay', "0");  this.minDelayType=null;	this.minDelayTimer=null;	this.minDelayObj=null;	    if (spm_browserType() == 'safari')	//safari has issues with mouseoutdelay...		this.moutDelay = 5000;		  this.target=spm_getAttr(o, 'target', "");  this.moScroll=spm_getAttr(o, 'MOScroll', "-1");  //--- Sizing Properties ---//  this.menuBarHeight=spm_fixUnit(spm_getAttr(o, 'MenuBarHeight', '0'));  this.menuItemHeight=spm_fixUnit(spm_getAttr(o, 'MenuItemHeight', '0'));  this.iconWidth=spm_fixUnit(spm_getAttr(o, 'IconWidth', '0'));  this.borderWidth=spm_getAttr(o, 'BorderWidth', '1');  //--- CSS Properties ---//  this.cssMenuContainer=spm_getAttr(o, 'CSSMenuContainer', '');  this.cssMenuBar=spm_getAttr(o, 'CSSMenuBar', '');  this.cssMenuItem=spm_getAttr(o, 'CSSMenuItem', '');  this.cssMenuIcon=spm_getAttr(o, 'CSSMenuIcon', '');  this.cssSubMenu=spm_getAttr(o, 'CSSSubMenu', '');  this.cssMenuBreak=spm_getAttr(o, 'CSSMenuBreak', '');  this.cssMenuItemSel=spm_getAttr(o, 'CSSMenuItemSel', '');  this.cssMenuArrow=spm_getAttr(o, 'CSSMenuArrow', '');  this.cssMenuRootArrow=spm_getAttr(o, 'CSSRootMenuArw', '');  this.cssMenuScrollItem=spm_getAttr(o, 'CSSScrollItem', '');	//for right to left (rtl) menus	this.direction = spm_getCurrentStyle(document.body, 'direction');	this.useIFrames=(spm_getAttr(o, 'useIFrames', '1') != '0' && spm_supportsIFrameTrick());			this.delaySubmenuLoad=(spm_getAttr(o, 'delaySubmenuLoad', '0') != '0' && spm_needsSubMenuDelay());		    //---- methods ---//  //this.GenerateMenuHTML=__GenerateMenuHTML;  //----- private ----//  this._m_sNSpace = o.id;               //stores namespace for menu  this._m_sOuterTables = '';            //stores HTML for sub menus  this._m_oDOM;                         //stores XML DOM object	this._m_oMenu = o;                    //stores container  this._m_oMenuMove;                    //stores control that is used for moving menu    this._m_oTblMenuBar;                  //stores menu container	this._m_aOpenMenuID = new Array();	  //stores list of menus that are currently displayed	this._m_bMoving=false;                //flag to determine menu is being dragged  this._m_dHideTimer = null;            //used to time when mouse out occured to auto hide menu based on mouseoutdelay  this._m_oScrollingMenu = null;				//used in scrolling menu on mouse over__db(this._m_oMenu.id + ' - constructor end');}//--- Destroys interrnal object references ---//SolpartMenu.prototype.destroy = function (){  this.systemImagesPath = "ccsh";    this.iconImagesPath = null;  this.xml = null;  this.xmlFileName = null;  //--- Appearance Properties ---//  this.fontStyle = null;  this.backColor = null;    this.foreColor = null;  this.iconBackColor = null;  this.hlColor = null;  this.shColor = null;   this.selColor = null;  this.selForeColor = null;  this.selBorderColor = null;  this.menuAlignment = null;  this.display = null;  this.rootArrow = null;  this.rootArrowImage = null;  this.arrowImage = null;  this.backImage = null;  //--- Transition Properteis ---//  //this.menuEffectsStyle = null;  this.menuTransitionLength = null;  this.menuTransition = null;  this.SolpartMenuTransitionObject = null;    //--- Behavior Properteis ---//  this.moveable = null;  this.moDisplay = null;  this.moExpand = null;  this.moutDelay = null;  //--- Sizing Properties ---//  this.menuBarHeight = null;  this.menuItemHeight = null;  this.iconWidth = null;  this.borderWidth = null;  //--- CSS Properties ---//  this.cssMenuContainer = null;  this.cssMenuBar = null;  this.cssMenuItem = null;  this.cssMenuIcon = null;  this.cssSubMenu = null;  this.cssMenuBreak = null;  this.cssMenuItemSel = null;  this.cssMenuArrow = null;  this.cssMenuRootArrow = null;    //---- methods ---//  //----- private ----//  m_oSolpartMenu[this._m_sNSpace] = null;  this._m_sNSpace = null;                 //stores namespace for menu  this._m_sOuterTables = null;            //stores HTML for sub menus  this._m_oDOM = null;                    //stores XML DOM object	this._m_oMenu = null;                   //stores container  this._m_oMenuMove = null;               //stores control that is used for moving menu    this._m_oTblMenuBar = null;             //stores menu container	this._m_aOpenMenuID = null;	            //stores list of menus that are currently displayed	this._m_bMoving = null;                 //flag to determine menu is being dragged  this._m_dHideTimer = null;              //used to time when mouse out occured to auto hide menu based on mouseoutdelay  this._m_oScrollingMenu = null;					//used in scrolling menu on mouse over  }//--- xml document loaded (non-dataisland) ---//SolpartMenu.prototype.onXMLLoad = function (){  this.GenerateMenuHTML(this._m_oDOM);}//--- Generates menu HTML through passed in XML DOM ---//SolpartMenu.prototype.GenerateMenuHTML = function (oXML) {__db(this._m_oMenu.id + ' - GenerateMenuHTML');    //'Generates the main menu bar  var sHTML = '';  this._m_sOuterTables = '';	if (oXML == null)	{	  if (this._m_oDOM == null)	  {	    oXML = spm_createDOMDoc();	    this._m_oDOM = oXML;        	  	    if (this.xml.length)	      oXML.loadXML(this.xml);  	  	    if (this.xmlFileName.length)	    {	      oXML.onload = eval('onxmlload' + this._m_sNSpace); 	      oXML.load(this.xmlFileName);	      return; //async load	    }    }	}	else	  this._m_oDOM = oXML;  if (this.display == "vertical")  {      sHTML += '<table ID="tbl' + this._m_sNSpace + 'MenuBar" CELLPADDING=\'0\' CELLSPACING=\'0\' BORDER="0" CLASS="' + spm_fixCSSForMac(this.getIntCSSName('spmbctr') + this.cssMenuContainer) + '" HEIGHT="100%" STYLE="vertical-align: middle;">\n';	//removed position: relative;  for IE and display: block; for Opera      sHTML += MyIIf(this.MBLeftHTML.length, '<tr>\n       <td>' + this.MBLeftHTML + '</td>\n</tr>\n', '');      sHTML += MyIIf(Number(this.moveable), '<tr>\n       <td ID="td' + this._m_sNSpace + 'MenuMove" height=\'3px\' style=\'cursor: move; ' + spm_getMenuBorderStyle(this) + '\'>' + spm_getSpacer(this) + '</td>\n</tr>\n', '');      sHTML +=         this.GetMenuItems(this._m_oDOM.documentElement);      sHTML += '       <tr><td HEIGHT="100%">' + spm_getSpacer(this) + '</td>\n' ;      sHTML += '   </tr>\n';      sHTML += MyIIf(this.MBRightHTML.length, '<tr>\n       <td>' + this.MBRightHTML + '</td>\n</tr>\n', '');      sHTML += '</table>\n';  }  else  {      sHTML += '<table ID="tbl' + this._m_sNSpace + 'MenuBar" CELLPADDING=\'0\' CELLSPACING=\'0\' BORDER="0" CLASS="' + spm_fixCSSForMac(this.getIntCSSName('spmbctr') + this.cssMenuContainer) + '" WIDTH="100%" STYLE="vertical-align: middle; ">\n';	//removed position: relative;  for IE and display: block; for Opera      sHTML += '	<tr>\n';      sHTML += MyIIf(this.MBLeftHTML.length, '<td>' + this.MBLeftHTML + '</td>\n', '');      sHTML += MyIIf(Number(this.moveable), '       <td ID="td' + this._m_sNSpace + 'MenuMove" width=\'3px\' style=\'cursor: move; ' + spm_getMenuBorderStyle(this) + '\'>' + spm_getSpacer(this) + '</td>\n', '');      sHTML += spm_getMenuSpacingImage('left', this);      sHTML +=         this.GetMenuItems(this._m_oDOM.documentElement);      sHTML += spm_getMenuSpacingImage('right', this);      sHTML += MyIIf(this.MBRightHTML.length, '<td>' + this.MBRightHTML + '</td>\n', '');      sHTML += '   </tr>\n';      sHTML += '</table>\n';  }		this._m_oMenu.innerHTML = sHTML;	this.GenerateSubMenus();	  this._m_oMenuMove = spm_getById('td' + this._m_sNSpace + 'MenuMove');  spm_getTags("BODY")[0].onclick = spm_appendFunction(spm_getTags("BODY")[0].onclick, 'm_oSolpartMenu["' + this._m_sNSpace + '"].bodyclick();'); //document.body.onclick = this.bodyclick;  this._m_oTblMenuBar = spm_getById('tbl' + this._m_sNSpace + 'MenuBar');     this.fireEvent('onMenuComplete');__db(this._m_oMenu.id + ' - GenerateMenuHTML end');    }SolpartMenu.prototype.GenerateSubMenus = function (oXML) {	if (this._m_sOuterTables.length > 0)	{			var oDiv = spm_getById(this._m_sNSpace + '_divOuterTables');			if (oDiv == null)			{				alert('It appears that your menu dll is out of sync with your script file.');				return;			}						if (this.delaySubmenuLoad != '0' && document.readyState != 'complete')				return;										oDiv.innerHTML = this._m_sOuterTables;				}	this._m_sOuterTables = '';}function spm_getMenuBarEvents(sCtl){  return 'onmouseover="m_oSolpartMenu[\'' + sCtl + '\'].onMBMO(this);" onmouseout="m_oSolpartMenu[\'' + sCtl + '\'].onMBMOUT(this);" onclick="m_oSolpartMenu[\'' + sCtl + '\'].onMBC(this, event);" onmousedown="m_oSolpartMenu[\'' + sCtl + '\'].onMBMD(this);" onmouseup="m_oSolpartMenu[\'' + sCtl + '\'].onMBMU(this);"';}function spm_getMenuItemEvents(sCtl){  return 'onmouseover="m_oSolpartMenu[\'' + sCtl + '\'].onMBIMO(this);" onmouseout="m_oSolpartMenu[\'' + sCtl + '\'].onMBIMOUT(this);" onclick="m_oSolpartMenu[\'' + sCtl + '\'].onMBIC(this, event);"';}//--- Returns HTML for menu items (recursive function) ---//SolpartMenu.prototype.GetMenuItems = function (oParent){  var oNode;  var sHTML = '';  var sID;  var sParentID;  var sClickAction;  	for (var i = 0; i < oParent.childNodes.length; i++)	{		oNode = oParent.childNodes[i];		if (oNode.nodeType != 3 && oNode.nodeType != 8)  //exclude nodeType of Text (Netscape/Mozilla) issue!		{		  //'determine if root level item and set parent id accordingly		  if (oNode.parentNode.nodeName != "menuitem")			  sParentID = "-1";		  else			  sParentID = oNode.parentNode.getAttribute("id");		  if (oNode.nodeName == "menuitem")			  sID = oNode.getAttribute("id");		  else			  sID = "";  __db(sID + ' getmenuitems');			sClickAction = spm_getMenuClickAction(oNode, this);		  if (sParentID == "-1")	//'if top level menu item		  {					  if (this.display == "vertical")				  sHTML += "<tr>\n"; //'if vertical display then add rows for each top menuitem  			  			if (oNode.nodeName == 'menubreak')  			{					if (this.display == "vertical")						sHTML += "<tr>\n"; //'if vertical display then add rows for each top menuitem 					var sBreakHTML = spm_getAttr(oNode, 'lefthtml', '') + spm_getAttr(oNode, 'righthtml', ''); 					if (sBreakHTML.length > 0) 						sHTML += '   <td class="' + spm_fixCSSForMac(this.getIntCSSName('spmbrk') + this.cssMenuBreak) + '">' + sBreakHTML + '</td>\n'; 					else 						sHTML += '   <td class="' + spm_fixCSSForMac(this.getIntCSSName('spmbrk') + this.cssMenuBreak) + '">' + spm_getMenuImage('spacer.gif', this, true, ' ') + '</td>\n';					if (this.display == "vertical")						sHTML += "</tr>\n";  			}  			else  			{					sHTML += '<td>\n<table width="100%" CELLPADDING="0" CELLSPACING="0" border="0">\n<tr id="td' + this._m_sNSpace + sID + '" ' + spm_getMenuBarEvents(this._m_sNSpace) + '  class="' + spm_fixCSSForMac(this.getIntCSSName('spmbar spmitm') + this.cssMenuBar + ' ' + this.cssMenuItem + ' ' + spm_getMenuItemCSS(oNode)) + '" savecss="' + spm_getMenuItemCSS(oNode) + '" saveselcss="' + spm_getMenuItemSelCSS(oNode) + '" menuclick="' + sClickAction + '" style="' + spm_getMenuItemStyle('item', oNode) + '">\n';					var sAlign = this.display=='vertical' ? 'align="' + this.menuAlignment + '"' : '';					sHTML += '<td unselectable="on" NOWRAP="NOWRAP" ' + sAlign + ' TITLE="' + spm_getAttr(oNode, 'tooltip', '') + '">' + spm_getImage(oNode, this) + spm_getItemHTML(oNode, 'left', '&nbsp;') + spm_getAttr(oNode, 'title', '') + spm_getItemHTML(oNode, 'right') + MyIIf(Number(this.rootArrow) && spm_nodeHasChildren(oNode), '</td>\n<td align="right" class="' + spm_fixCSSForMac(this.getIntCSSName('spmrarw') + this.cssMenuRootArrow) + '">' + spm_getArrow(this.rootArrowImage, this) + "", '&nbsp;') + '\n</td>\n</tr>\n</table>\n</td>\n';				}				  	    			  if (this.display == "vertical")				  sHTML += "</tr>\n";		  		 		  }		  else                        //'submenu - not top level menu item		  {			  switch(oNode.nodeName)			  {				  case "menuitem":				  {					  sHTML +=		'   <tr ID="tr' + this._m_sNSpace + sID + '" ' + spm_getMenuItemEvents(this._m_sNSpace) + ' parentID="' + sParentID + '" class="' + spm_fixCSSForMac(this.getIntCSSName('spmitm') + this.cssMenuItem + ' ' + spm_getMenuItemCSS(oNode)) + '" savecss="' + spm_getMenuItemCSS(oNode) + '" saveselcss="' + spm_getMenuItemSelCSS(oNode) + '" menuclick="' + sClickAction + '" style="' + spm_getMenuItemStyle('item', oNode) + '">\n';					  sHTML +=		'       <td unselectable="on" id="icon' + this._m_sNSpace + sID + '" class="' + spm_fixCSSForMac(this.getIntCSSName('spmicn') + this.cssMenuIcon) + '" style="' + spm_getMenuItemStyle('image', oNode) + '; ' + spm_getMenuItemStyle('item', oNode) + '">' + spm_getImage(oNode, this) + '</td>\n';					  sHTML +=		'       <td unselectable="on" id="td' + this._m_sNSpace + sID + '" class="' + spm_fixCSSForMac(this.getIntCSSName('spmitm') + this.cssMenuItem + ' ' + spm_getMenuItemCSS(oNode)) + '" savecss="' + spm_getMenuItemCSS(oNode) + '" NOWRAP="NOWRAP" TITLE="' + spm_getAttr(oNode, 'tooltip', '') + '" style="' + spm_getMenuItemStyle('item', oNode) + '">' + spm_getItemHTML(oNode, 'left', '') + spm_getAttr(oNode, 'title', '') + spm_getItemHTML(oNode, 'right', '') + '</td>\n';					  sHTML +=		'       <td unselectable="on" id="arrow' + this._m_sNSpace + sID + '" width="15px" CLASS="' + spm_fixCSSForMac(this.getIntCSSName('spmarw') + this.cssMenuArrow) + '" style="' + spm_getMenuItemStyle('item', oNode) + '">' + MyIIf(spm_nodeHasChildren(oNode), spm_getArrow(this.arrowImage, this), spm_getSpacer(this)) + '</td>\n';					  sHTML +=		'   </tr>\n';					  break;				  }				  case "menubreak":				  { 						var sBreakHTML = spm_getAttr(oNode, 'lefthtml', '') + spm_getAttr(oNode, 'righthtml', ''); 						if (sBreakHTML.length > 0)							sHTML += '   <tr><td colspan="3" class="' + spm_fixCSSForMac(this.getIntCSSName('spmbrk') + this.cssMenuBreak) + '">' + sBreakHTML + '</td>\n</tr>\n'; 						else							sHTML += '   <tr>\n<td style="height: 1px" class="' + spm_fixCSSForMac(this.getIntCSSName('spmicn') + this.cssMenuIcon) + '">' + spm_getMenuImage('spacer.gif', this, true, ' ') + '</td>\n<td colspan="2" class="' + spm_fixCSSForMac(this.getIntCSSName('spmbrk') + this.cssMenuBreak) + '">' + spm_getMenuImage('spacer.gif', this, true, ' ') + '</td>\n</tr>\n';					  break;				  }			  }		  }		  //'Generate sub menu - note: we are recursively calling ourself		  //'netscape renders tables with display: block as having cellpadding!!! therefore using div outside table - LAME!		  if (oNode.childNodes.length > 0)		  {				var sTag = 'DIV';				var sStyle = '';				if (spm_isMac('ie'))				{					sTag = 'P';					sStyle = 'margin-top:0px; margin-left:0px;'				}			  this._m_sOuterTables = '\n<' + sTag + ' ID="tbl' + this._m_sNSpace + sID + '" CLASS="' + spm_fixCSSForMac(this.getIntCSSName('spmsub') + this.cssSubMenu) + '" STYLE="display:none; position: absolute;' + sStyle + this.menuTransitionStyle + '">\n<table CELLPADDING="0" CELLSPACING="0" BORDER="0">\n' + this.GetMenuItems(oNode) + '\n</table>\n</' + sTag + '>\n' + this._m_sOuterTables;			}    }	}	return sHTML;}	//--------------- Event Functions ---------------//  //--- menubar click event ---//	SolpartMenu.prototype.onMBC = function (e, evt)	{		this.GenerateSubMenus();		var oCell = e; //event.srcElement;		var sID = oCell.id.substr(2);		var oMenu = spm_getById("tbl" + sID);				if (oMenu != null)		{			this.hideAllMenus();		//mindelay mod			if (oMenu.style.display == '')			{				this.hideAllMenus();						if (this.useIFrames)					spm_iFrameIndex(oMenu, false, this.systemImagesPath);				else					spm_showElement("SELECT|OBJECT");			}			else			{				spm_positionMenu(this, oMenu, oCell);								this.doTransition(oMenu);				oMenu.style.display = "";				this._m_aOpenMenuID[0] = sID;				if (this.useIFrames)					spm_iFrameIndex(oMenu, true, this.systemImagesPath);				else					spm_hideElement("SELECT|OBJECT",oMenu);			}		}		    this.fireEvent('onMenuBarClick', oCell);        oMenu = spm_getById("td" + sID);    if (spm_getAttr(oMenu, "menuclick", '').length)    {      eval(spm_getAttr(oMenu, "menuclick", ''));      this.hideAllMenus();    }		spm_stopEventBubbling(evt);	}	  //--- menubar mousedown event ---//	SolpartMenu.prototype.onMBMD = function (e)	{		var oCell = e; //event.srcElement;		this.applyBorder(oCell, 1, this.shColor, this.hlColor);	}    //--- menubar mouseup event ---//	SolpartMenu.prototype.onMBMU = function (e)	{		var oCell = e; //event.srcElement;		this.applyBorder(oCell, 1, this.hlColor, this.shColor);	}    //--- menubar mouseover event ---//	SolpartMenu.prototype.onMBMO = function (e, bBypassDelay)	{		this.GenerateSubMenus();		var oCell = e; //event.srcElement;				if (oCell.id.length == 0) //cancelBubble		  return;		var sID = oCell.id.substr(2);		var oMenu = spm_getById("tbl" + sID);		if (this._m_aOpenMenuID.length || this.moExpand != '0')		{			if (this.minDelay != 0 && bBypassDelay != true)			{				if (this.minDelayTimer != null)					window.clearTimeout(this.minDelayTimer);				this.minDelayType = 'root';				this.minDelayObj = e;				this.minDelayTimer = setTimeout('m_oSolpartMenu["' + this._m_sNSpace + '"].mouseInDelayHandler()', this.minDelay);			}			else			{				//--- if menu is shown then mouseover triggers the showing of all menus ---//				this.hideAllMenus();				if (oMenu != null)				{					spm_positionMenu(this, oMenu, oCell);					this.doTransition(oMenu);					oMenu.style.display = "";					this._m_aOpenMenuID[0] = sID;					if (this.useIFrames)						spm_iFrameIndex(oMenu, true, this.systemImagesPath);					else						spm_hideElement("SELECT|OBJECT",oMenu);				}			}			this.applyBorder(oCell, 1, this.shColor, this.hlColor);		}		else		{			this.applyBorder(oCell, 1, this.hlColor, this.shColor);		}		oCell.className =  spm_fixCSSForMac(this.getIntCSSName('spmitmsel spmbar') + this.cssMenuBar + ' ' + this.cssMenuItemSel + ' ' + spm_getAttr(oCell, 'saveselcss', '') + ' ' + spm_getAttr(oCell, 'savecss', ''));				this._m_dHideTimer = null;				this.fireEvent('onMenuBarMouseOver', oCell);			}  //--- menubar mouseout event ---//	SolpartMenu.prototype.onMBMOUT = function (e)	{		var oCell = e; //event.srcElement;		var sID = oCell.id.substr(2);		this.applyBorder(oCell, 1, spm_getCellBackColor(oCell), spm_getCellBackColor(oCell), "none");			this._m_dHideTimer = new Date();		if (this.moutDelay != 0)		  setTimeout('m_oSolpartMenu["' + this._m_sNSpace + '"].hideMenuTime()', this.moutDelay);		      oCell.className = spm_fixCSSForMac(this.getIntCSSName('spmbar spmitm') + this.cssMenuBar + ' ' + this.cssMenuItem + ' ' + spm_getAttr(e, 'savecss', ''));    this.stopTransition();    this.minDelayType = null;    this.fireEvent('onMenuBarMouseOut', oCell);	}	  //--- menuitem click ---//	SolpartMenu.prototype.onMBIC = function (e, evt)	{		var oRow = spm_getSourceTR(e, this._m_sNSpace);  //event.srcElement		var sID = oRow.id.substr(2);		if (spm_itemHasChildren(sID, this._m_sNSpace) == false)			this.hideAllMenus();		this.fireEvent('onMenuItemClick', oRow);    if (spm_getAttr(oRow, "menuclick", '').length)    {      eval(spm_getAttr(oRow, "menuclick", ''));      this.hideAllMenus();		}		spm_stopEventBubbling(evt);				this.handlembi_mo(oRow, true);	}  //--- menuitem mouseover event ---//	SolpartMenu.prototype.onMBIMO = function (e)	{				this.handlembi_mo(spm_getSourceTR(e, this._m_sNSpace)); //event.srcElement		this._m_dHideTimer = null;	}  //--- menuitem mouseout event ---//	SolpartMenu.prototype.onMBIMOUT = function (e)	{			this.handlembi_mout(spm_getSourceTR(e, this._m_sNSpace));  //event.srcElement		this._m_dHideTimer = new Date;		//setTimeout(this.hideMenuTime, this.moutDelay);		if (this.moutDelay != 0)		  setTimeout('m_oSolpartMenu["' + this._m_sNSpace + '"].hideMenuTime()', this.moutDelay);		 		this.minDelayType = null;	}	SolpartMenu.prototype.bodyclick = function()	{		this.hideAllMenus();	}  //--- handles display of newly opened menu ---//	SolpartMenu.prototype.handleNewItemSelect = function (sID)	{		var i;		var iNewLength=-1;		var bDeleteRest=false; 		for (i=0; i<this._m_aOpenMenuID.length; i++)		{					if (bDeleteRest)			{				spm_getById("tbl" + this._m_aOpenMenuID[i]).style.display = "none";				if (this.useIFrames)					spm_iFrameIndex(spm_getById("tbl" + this._m_aOpenMenuID[i]), false, this.systemImagesPath);			}			if (this._m_aOpenMenuID[i] == this._m_sNSpace + sID)			{				bDeleteRest=true;				iNewLength = i;			}						}		if (iNewLength != -1)			this._m_aOpenMenuID.length = iNewLength+1;	}	  //--- hides all menus that are currently displayed ---//	SolpartMenu.prototype.hideAllMenus = function ()	{		var i;		var oMenu;		for (i=0; i<this._m_aOpenMenuID.length; i++)		{					oMenu = spm_getById("tbl" + this._m_aOpenMenuID[i]);			oMenu.style.display = "none";			if (this.useIFrames)				spm_iFrameIndex(oMenu, false, this.systemImagesPath);		}		if (this.useIFrames != true)			spm_showElement("SELECT|OBJECT");		this._m_aOpenMenuID.length = 0;	}		      function SolpartMenuTransitionObject()  {    this.id=null;    this.stop = false;  }   //--- stops menu transition effect ---//  SolpartMenu.prototype.stopTransition = function ()  {    this.SolpartMenuTransitionObject.stop = true;    this.doFilter();    this.SolpartMenuTransitionObject = new SolpartMenuTransitionObject();  }    //--- starts menu transition effect ---//  SolpartMenu.prototype.doTransition = function (oMenu)  {    if (this.menuTransition == 'None' || this.supportsTransitions == '0')      return;    var sID = this.SolpartMenuTransitionObject.id;        switch (this.menuTransition)    {      case 'AlphaFade':      {        if (this.SolpartMenuTransitionObject.id != oMenu.id)         {          this.SolpartMenuTransitionObject.id = oMenu.id;          this.SolpartMenuTransitionObject.opacity = 0;          this.doFilter();        }        break;      }      case 'Wave':      {        if (this.SolpartMenuTransitionObject.id != oMenu.id)         {                  this.SolpartMenuTransitionObject.id = oMenu.id;          this.SolpartMenuTransitionObject.phase = 0;          this.doFilter();        }        break;      }      case 'ConstantWave':      {        if (sID != oMenu.id)         {                  this.SolpartMenuTransitionObject.id = oMenu.id;          this.SolpartMenuTransitionObject.phase = 0;          this.SolpartMenuTransitionObject.constant=true;          this.doFilter();        }        break;      }      case 'Inset': case 'RadialWipe': case 'Slide': case 'Spiral': case 'Stretch': case 'Strips': case 'Wheel': case 'GradientWipe': case 'Zigzag': case 'Barn': case 'Blinds': case 'Checkerboard': case 'Fade': case 'Iris': case 'RandomBars':      {        oMenu.filters('DXImageTransform.Microsoft.' + this.menuTransition).apply();        oMenu.filters('DXImageTransform.Microsoft.' + this.menuTransition).duration = this.menuTransitionLength;        oMenu.filters('DXImageTransform.Microsoft.' + this.menuTransition).play();        break;      }    }  }  //--- applys transition filter ---//  SolpartMenu.prototype.doFilter = function (bStop)   {          if (this.SolpartMenuTransitionObject.id == null)      return;          var o = spm_getById(this.SolpartMenuTransitionObject.id);    window.status = new Date();    switch (this.menuTransition)    {      case 'AlphaFade':      {        if (this.SolpartMenuTransitionObject.stop)        {          o.filters('DXImageTransform.Microsoft.Alpha').opacity = 100;        }        else        {          o.filters('DXImageTransform.Microsoft.Alpha').opacity = this.SolpartMenuTransitionObject.opacity;          if (this.SolpartMenuTransitionObject.opacity < 100)          {            setTimeout('m_oSolpartMenu["' + this._m_sNSpace + '"].doFilter()', 50);            this.SolpartMenuTransitionObject.opacity += (100/20* this.menuTransitionLength);          }        }        break;      }      case 'Wave': case 'ConstantWave':      {        if (this.SolpartMenuTransitionObject.stop)        {            o.filters("DXImageTransform.Microsoft.Wave").freq = 0;            o.filters("DXImageTransform.Microsoft.Wave").lightstrength = 0;            o.filters("DXImageTransform.Microsoft.Wave").strength = 0;            o.filters("DXImageTransform.Microsoft.Wave").phase = 0;        }        else        {          o.filters("DXImageTransform.Microsoft.Wave").freq = 1;          o.filters("DXImageTransform.Microsoft.Wave").lightstrength = 20;          o.filters("DXImageTransform.Microsoft.Wave").strength = 5;          o.filters("DXImageTransform.Microsoft.Wave").phase = this.SolpartMenuTransitionObject.phase;          if (this.SolpartMenuTransitionObject.phase < 100 * this.menuTransitionLength || this.SolpartMenuTransitionObject.constant == true)          {            setTimeout('m_oSolpartMenu["' + this._m_sNSpace + '"].doFilter()', 50);            this.SolpartMenuTransitionObject.phase += 5;          }          else          {            o.filters("DXImageTransform.Microsoft.Wave").freq = 0;            o.filters("DXImageTransform.Microsoft.Wave").lightstrength = 0;            o.filters("DXImageTransform.Microsoft.Wave").strength = 0;            o.filters("DXImageTransform.Microsoft.Wave").phase = 0;          }        }        break;      }    }  }            //--- handles mouseover for menu item ---//	SolpartMenu.prototype.handlembi_mo = function (oRow, bBypassDelay)	{		var sID = oRow.id.substr(2);		spm_getById("icon" + sID).className = spm_fixCSSForMac(this.getIntCSSName('spmitmsel spmicn') + this.cssMenuIcon + ' ' + this.cssMenuItemSel + ' ' + spm_getAttr(oRow, 'saveselcss', ''));		spm_getById("td" + sID).className = spm_fixCSSForMac(this.getIntCSSName('spmitmsel') + this.cssMenuItemSel + ' ' + spm_getAttr(oRow, 'saveselcss', ''));		spm_getById("arrow" + sID).className = spm_fixCSSForMac(this.getIntCSSName('spmitmsel spmarw') + this.cssMenuItemSel + ' ' + this.cssMenuArrow + ' ' + spm_getAttr(oRow, 'saveselcss', ''));				if (this.selBorderColor != '')			spm_applyRowBorder(oRow, 1, this.selBorderColor, true);		if (this.minDelay != 0 && bBypassDelay != true)		{			if (this.minDelayTimer != null)				window.clearTimeout(this.minDelayTimer);			this.minDelayType = 'sub';			this.minDelayObj = oRow;			this.minDelayTimer = setTimeout('m_oSolpartMenu["' + this._m_sNSpace + '"].mouseInDelayHandler()', this.minDelay);			return;		}			if (this._m_aOpenMenuID[this._m_aOpenMenuID.length - 1] != oRow.id.replace('tr', ''))		{			this.handleNewItemSelect(spm_getAttr(oRow, "parentID", ""));					if (spm_getById("tbl" + sID) != null)			{				var iWidth;				oMenu = spm_getById("tbl" + sID);				var oPDims = new spm_elementDims(oRow);				var oMDims = new spm_elementDims(oMenu);				        							oMenu.style.top = spm_getCoord(oPDims.t);								spm_resetScroll(oMenu);				this.doTransition(oMenu);				oMDims = new spm_elementDims(oMenu);	//now that we moved need to reget dims				oMenu.style.display = "";			  if (oMDims.t - spm_getBodyScrollTop() + oMDims.h > spm_getViewPortHeight())			  {				  if (oMDims.h < spm_getViewPortHeight())						oMenu.style.top = spm_getCoord(spm_getViewPortHeight() + spm_getBodyScrollTop() - oMDims.h);					else					{						spm_handleScrollMenu(this, oMenu);												oMDims = new spm_elementDims(oMenu);	//now that we moved need to reget dims					}			  }				if (this.direction == 'rtl')					oMenu.style.left = spm_getCoord(oPDims.l - oMDims.w - spm_getBodyScrollLeft());				else					oMenu.style.left = spm_getCoord(oPDims.l + oPDims.w - spm_getBodyScrollLeft());				if (this.direction == 'rtl')				{					if (oMDims.l - spm_getBodyScrollLeft() < 0)						oMenu.style.left = spm_getCoord(oPDims.l + oPDims.w - spm_getBodyScrollLeft());				}				else  				{					if (oPDims.l - spm_getBodyScrollLeft() + oPDims.w + oMDims.w > spm_getViewPortWidth())						oMenu.style.left = spm_getCoord(oPDims.l - oMDims.w - spm_getBodyScrollLeft());				}									this._m_aOpenMenuID[this._m_aOpenMenuID.length] = sID;				if (this.useIFrames)					spm_iFrameIndex(oMenu, true, this.systemImagesPath);				else					spm_hideElement("SELECT|OBJECT",oMenu);			}		}		this.fireEvent('onMenuItemMouseOver', oRow);			}	  //--- handles mouseout for menu item ---//	SolpartMenu.prototype.handlembi_mout = function (oRow)	{			var sID = oRow.id.substr(2);			oRow.className = spm_fixCSSForMac(this.getIntCSSName('spmitm') + ' ' + this.cssMenuItem + ' ' + spm_getAttr(oRow, 'savecss', ''));		  spm_getById("icon" + sID).className = spm_fixCSSForMac(this.getIntCSSName('spmicn') + this.cssMenuIcon);		  spm_getById("td" + sID).className = spm_fixCSSForMac(this.getIntCSSName('spmitm') + ' ' + this.cssMenuItem + ' ' + spm_getAttr(oRow, 'savecss', ''));		  spm_getById("arrow" + sID).className = spm_fixCSSForMac(this.getIntCSSName('spmarw') + this.cssMenuArrow);						if (this.selBorderColor != '')				spm_applyRowBorder(oRow, 1, "", false);      this.stopTransition();	}  //used for raising events to client javascript  SolpartMenu.prototype.fireEvent = function (sEvent, src)   {		return; //disabled for now    if (eval('this.' + sEvent + ' != null'))		{			var e = new Object();			if (src != null)				e.srcElement = src;			else				e.srcElement = this._m_oMenu;								eval('this.' + sEvent + '(e)');		}  }	//--- called by setTimeOut to check mouseout hide delay ---//	SolpartMenu.prototype.hideMenuTime = function ()  {    if (this._m_dHideTimer != null && this.moutDelay > 0)    {      if (new Date() - this._m_dHideTimer >= this.moutDelay)      {        this.hideAllMenus();        this._m_dHideTimer = null;      }      else        setTimeout(this.hideMenuTime, this.moutDelay);    }  }	SolpartMenu.prototype.mouseInDelayHandler = function ()	{		if (this.minDelayType == 'root')			this.onMBMO(this.minDelayObj, true);		else if (this.minDelayType == 'sub')			this.handlembi_mo(this.minDelayObj, true);		this.minDelayTimer = null;		this.minDelayObj = null;	}	//--- called by setTimeOut to check mouseout hide delay ---//	SolpartMenu.prototype.scrollMenu = function ()  {		if (this._m_oScrollingMenu != null)		{			if (spm_ScrollMenuClick(this._m_oScrollingMenu) == false)				setTimeout('m_oSolpartMenu["' + this._m_sNSpace + '"].scrollMenu()', 500);			else				this._m_oScrollingMenu = null;		}  }//global	function spm_iFrameIndex(eMenu, bShow, sysImgPath)	{		if (spm_browserType() == 'op')			return;	//not needed				if (document.readyState != 'complete')			return;	//avoid operation aborted				if (bShow)		{			var oIFR=spm_getById('ifr' + eMenu.id);			if (oIFR == null)			{				var oIFR = document.createElement('iframe');				oIFR.id = 'ifr' + eMenu.id;				//oIFR.src = 'javascript: void(0);';				oIFR.src = sysImgPath + 'spacer.gif';				oIFR.style.top = spm_getCoord(0);				oIFR.style.left = spm_getCoord(0);				oIFR.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=0)";				oIFR.scrolling = 'no';				oIFR.frameBorder = 'no';				oIFR.style.display = 'none';				oIFR.style.position = 'absolute';				document.body.appendChild(oIFR);			}			var oMDims = new spm_elementDims(eMenu);						oIFR.style.width=oMDims.w;			oIFR.style.height=oMDims.h;			oIFR.style.top=spm_getCoord(oMDims.t);			oIFR.style.left=spm_getCoord(oMDims.l);						var iIndex = spm_getCurrentStyle(eMenu, 'zIndex');	//eMenu.style.zIndex;			if (iIndex == null || iIndex == 0)				eMenu.style.zIndex = 1;			oIFR.style.zIndex=iIndex-1;			oIFR.style.display="block";		}		else if (spm_getById('ifr' + eMenu.id) != null)		{			spm_getById('ifr' + eMenu.id).style.display='none';		}	}	function spm_showElement(elmID)	{		if (spm_browserType() == 'op')			return;	//not needed		// Display any element that was hidden		var sTags = elmID.split('|');		for (var x=0; x<sTags.length; x++)		{			elmID = sTags[x];			for (var i = 0; i < spm_getTags(elmID).length; i++)			{				obj = spm_getTags(elmID)[i];				if (! obj || ! obj.offsetParent)					continue;				obj.style.visibility = "";			}		}	}	function spm_hideElement(elmID, eMenu)	{		if (spm_browserType() == 'op')			return;	//not needed		var obj;		// Hide any element that overlaps with the dropdown menu		var sTags = elmID.split('|');				var oMDims = new spm_elementDims(eMenu);				for (var x=0; x<sTags.length; x++)		{			elmID = sTags[x];			for (var i = 0; i < spm_getTags(elmID).length; i++)			{				obj = spm_getTags(elmID)[i];				var oODims = new spm_elementDims(obj);								if (oODims.t > oMDims.t + oMDims.h)				{					//if element is below bottom of menu then do nothing				}				else if (oODims.l > oMDims.l + oMDims.w)				{					//if element is to the right of menu then do nothing				}				else if (oODims.l + oODims.w < oMDims.l)				{					//if element is to the left of menu then do nothing				}				else if (oODims.t + oODims.h < oMDims.t)				{					//if element is to the top of menu then do nothing				}				else				{					obj.style.visibility = "hidden";				}			}		}	}	function spm_positionMenu(me, oMenu, oCell)	{		spm_resetScroll(oMenu);		var oPDims = new spm_elementDims(oCell, false, me);				if (me.display == 'vertical')		{			oMenu.style.top = spm_getCoord(oPDims.t);			var oMDims = new spm_elementDims(oMenu);			if (oMDims.t - spm_getBodyScrollTop() + oMDims.h >= spm_getViewPortHeight())			{				if (oMDims.h < spm_getViewPortHeight())					oMenu.style.top = spm_getCoord(spm_getViewPortHeight() - oMDims.h + spm_getBodyScrollTop());					else					spm_handleScrollMenu(me, oMenu);			}						var oOrigMDims;						if (spm_browserType() != 'ie') //since mozilla doesn't set width greater than window size we need to store it here				 oOrigMDims = new spm_elementDims(oMenu);			      if (me.direction == 'rtl')                      {          var oMDims2 = new spm_elementDims(oMenu);          oMenu.style.left = spm_getCoord((oPDims.l) - oMDims2.w - spm_getBodyScrollLeft());      }      else          oMenu.style.left = spm_getCoord(oPDims.l + oPDims.w - spm_getBodyScrollLeft());								oMDims = new spm_elementDims(oMenu);			if (oOrigMDims == null)				oOrigMDims = oMDims;						if (oMDims.l - spm_getBodyScrollLeft(true) + oOrigMDims.w > spm_getViewPortWidth())			{			  if (spm_getViewPortWidth() - oOrigMDims.w > 0)  //only do this if it fits				  oMenu.style.left = spm_getCoord(oPDims.l - oOrigMDims.w - spm_getBodyScrollLeft(true));			}			//oMenu.style.display = "";		}		else		{			if (me.direction == 'rtl')						{				var oMDims2 = new spm_elementDims(oMenu);				oMenu.style.left = spm_getCoord((oPDims.l + oPDims.w) - oMDims2.w - spm_getBodyScrollLeft());			}			else							oMenu.style.left = spm_getCoord(oPDims.l - spm_getBodyScrollLeft());							oMenu.style.top = spm_getCoord(oPDims.t + oPDims.h);			var oMDims = new spm_elementDims(oMenu);						if (oMDims.l - spm_getBodyScrollLeft(true) + oMDims.w > spm_getViewPortWidth())			{			  if (spm_getViewPortWidth() - oMDims.w > 0)  //only do this if it fits				  oMenu.style.left = spm_getCoord(spm_getViewPortWidth() - oMDims.w + spm_getBodyScrollLeft(true));			}						if (oMDims.t - spm_getBodyScrollTop() + oMDims.h > spm_getViewPortHeight())			{			  if (oPDims.t - oMDims.h - spm_getBodyScrollTop() > 0) //only do this if it fits				  oMenu.style.top = spm_getCoord(oPDims.t - oMDims.h);	//place above menu bar				else					spm_handleScrollMenu(me, oMenu);			}			//oMenu.style.display = "none";		}	}	//--------- Internal (private) Functions --------//	//--- Applies border to cell ---//	SolpartMenu.prototype.applyBorder = function (oCell, iSize, sTopLeftColor, sBottomRightColor, sStyle)	{		if (this.moDisplay == 'Outset')		{			if (sStyle == null)				sStyle = "solid";			if (sTopLeftColor.length > 0 && sBottomRightColor.length > 0)			{				if (oCell.tagName == 'TR')					oCell = oCell.childNodes(0);								oCell.style.borderTop = sStyle + " " + iSize + "px " + sTopLeftColor;				oCell.style.borderLeft = sStyle + " " + iSize + "px " + sTopLeftColor;				oCell.style.borderRight = sStyle + " " + iSize + "px " + sBottomRightColor;				oCell.style.borderBottom = sStyle + " " + iSize + "px " + sBottomRightColor;								}		}		if (this.moDisplay == 'HighLight')		{			if (sTopLeftColor == this.backColor)			{        oCell.className = spm_fixCSSForMac(this.getIntCSSName('spmbar spmitm') + ' ' + this.cssMenuItem + ' ' + spm_getAttr(oCell, 'savecss', ''));			}			else			{        oCell.className = spm_fixCSSForMac(this.getIntCSSName('spmbar spmitmsel') + ' ' + this.cssMenuItemSel + ' ' + spm_getAttr(oCell, 'saveselcss', ''));			}		}			}	function spm_applyRowBorder(oRow, iSize, sColor, bSelected, sStyle)	{		if (oRow.cells.length == 0) //(spm_browserType() == 'safari')			return;	//safari has issues with accessing cell				var sColor2=sColor;		if (sStyle == null)			sStyle = "solid";		if (sColor == "")		{				sColor2 = spm_getCurrentStyle(oRow.cells[0], 'background-Color');				if ((sColor2 == null || sColor2 == '') && spm_browserType() != 'ie')					sColor2 = 'transparent';		}		spm_applyBorders(oRow.cells[0], sStyle, iSize, sColor2, true, true, false, true);		if (sColor == "" && bSelected == false)    {      sColor2 = spm_getCellBackColor(oRow.cells[1]);      if (sColor2 == null || sColor2 == '')				sColor2 = 'transparent';    }       //if (sColor2 != 'transparent')    //{			spm_applyBorders(oRow.cells[1], sStyle, iSize, sColor2, true, false, false, true);			spm_applyBorders(oRow.cells[2], sStyle, iSize, sColor2, true, false, true, true);		//}	}		function spm_getCellBackColor(o)	{		var sColor = spm_getCurrentStyle(o, 'background-Color');      if (spm_browserType() == 'ie')    {      //--- fix IE transparent border issue ---//      while (sColor == 'transparent')      {        sColor = spm_getCurrentStyle(o, 'background-Color');          o = o.parentElement;        if (o.id.indexOf('divOuterTables') != -1)	//if we are outside the realm of the menu then use transparency					break;      }    }    return sColor;	}		function spm_applyBorders(o, sStyle, iSize, sColor, t, l, r, b)	{		if (t) o.style.borderTop = sStyle + " " + iSize + "px " + sColor;		if (b) o.style.borderBottom = sStyle + " " + iSize + "px " + sColor;		if (r) o.style.borderRight = sStyle + " " + iSize + "px " + sColor;		if (l) o.style.borderLeft = sStyle + " " + iSize + "px " + sColor;	}	function spm_resetScroll(oMenu)	{			if (oMenu.scrollItems != null)		{			oMenu.scrollPos = 1;			oMenu.scrollItems = 9999;			spm_showScrolledItems(oMenu);		}		}			function spm_handleScrollMenu(me, oMenu)	{		var oTbl = spm_getTags('table', oMenu)[0]; //oMenu.childNodes[1];			oMenu.style.display = '';		if (oMenu.scrollPos == null)		{			oMenu.scrollPos = 1;												var oRow = spm_insertTableRow(oTbl);			var oCell = document.createElement('TD');					oCell.id = 'dn' + oMenu.id.substring(3);			oCell.colSpan = 3;			oCell.align = 'center';			oCell.style.backgroundColor = 'gray';	//can be overridden by MenuScroll style			oCell.innerHTML='<div id="dn' + oMenu.id.substr(3) + '" onclick="return spm_ScrollMenuClick(this, event);" onmouseover="spm_ScrollMenuMO(this, m_oSolpartMenu[\'' + me._m_sNSpace + '\']);" onmouseout="spm_ScrollMenuMOUT(m_oSolpartMenu[\'' + me._m_sNSpace + '\']);" class="' + spm_fixCSSForMac(me.getIntCSSName('spmitmscr')) + ' ' + me.cssMenuScrollItem + '" style="width: 100%; font-size: 6pt;">...</div>';			oRow.appendChild(oCell);			oRow = spm_insertTableRow(oTbl, 0);			oCell = document.createElement('TD');					oCell.id = 'up' + oMenu.id.substring(3);			oCell.colSpan = 3;			oCell.align = 'center';			oCell.style.backgroundColor = 'gray';	//can be overridden by MenuScroll style			oCell.innerHTML='<div id="up' + oMenu.id.substr(3) + '" onclick="return spm_ScrollMenuClick(this, event);" onmouseover="spm_ScrollMenuMO(this, m_oSolpartMenu[\'' + me._m_sNSpace + '\']);" onmouseout="spm_ScrollMenuMOUT(m_oSolpartMenu[\'' + me._m_sNSpace + '\']);" class="' + spm_fixCSSForMac(me.getIntCSSName('spmitmscr')) + ' ' + me.cssMenuScrollItem + '" style="width: 100%; font-size: 6pt;">...</div>';			oRow.style.display = 'none';			oRow.appendChild(oCell);		}			if (oMenu.ScrollRowHeight == null)		{			spm_getTags('tr', oTbl)[0].style.display = '';			oMenu.ScrollItemHeight = (spm_getElementHeight(spm_getTags('tr', oTbl)[0]) * 2);			spm_getTags('tr', oTbl)[0].style.display = 'none';			oMenu.ScrollRowHeight = spm_getElementHeight(spm_getTags('tr', oTbl)[1]);		}		oMenu.scrollItems = parseInt((spm_getViewPortHeight() - spm_elementTop(oMenu) + spm_getBodyScrollTop() - oMenu.ScrollItemHeight) / (oMenu.ScrollRowHeight + 1));		spm_showScrolledItems(oMenu);	}			function spm_ScrollMenuMO(e, me)	{		me._m_dHideTimer = null;		me._m_oScrollingMenu = e;		if (Number(me.moScroll))			setTimeout('m_oSolpartMenu["' + me._m_sNSpace + '"].scrollMenu()', 500);	}		function spm_ScrollMenuMOUT(me)	{		me._m_oScrollingMenu = null;		me._m_dHideTimer = new Date();		if (me.moutDelay != 0)		  setTimeout('m_oSolpartMenu["' + me._m_sNSpace + '"].hideMenuTime()', me.moutDelay);			}		function spm_ScrollMenuClick(e, evt)	{				if (e != null)		{				var oCell = e.parentNode;			var oTbl = oCell.parentNode.parentNode.parentNode;			var oMenu = oTbl.parentNode;			if (oCell.id == 'up' + oMenu.id.substring(3))			{				if (oMenu.scrollPos > 1)					oMenu.scrollPos--;									else					return true;			}			else 			{				if (oMenu.scrollPos + oMenu.scrollItems < oTbl.rows.length - 1)					oMenu.scrollPos++;				else					return true;			}							spm_showScrolledItems(oMenu);			if (evt != null)				spm_stopEventBubbling(evt);		}		return false;	}	function spm_showScrolledItems(oMenu)	{		var oTbl = spm_getTags('table', oMenu)[0];		var oRows = spm_getTags('tr', oTbl);	//oTbl.rows.length				for (var i=1; i < oRows.length; i++)			{			//if row is not within display "window" then don't display it			if (i < oMenu.scrollPos || i >= oMenu.scrollPos + oMenu.scrollItems)				oRows[i].style.display = 'none';			else				oRows[i].style.display = '';					}				// if we are scrolled down at least one then display up scroll item		if (oMenu.scrollPos > 1)			oRows[0].style.display = '';		else			oRows[0].style.display = 'none';						// if there is at least one item not displayed then show down item		if (oMenu.scrollPos + oMenu.scrollItems < oTbl.rows.length - 1)			oRows[oRows.length-1].style.display = '';		else			oRows[oRows.length-1].style.display = 'none';				}	function spm_insertTableRow(tbl, iPos)	{		var oRow;		var oTB;		oRow = document.createElement('TR');		if (tbl.getElementsByTagName('TBODY').length == 0)		{			oTB = document.createElement('TBODY');			tbl.appendChild(oTB);		}		else			oTB = tbl.getElementsByTagName('TBODY')[0];		if (iPos == null)			oTB.appendChild(oRow);		else			oTB.insertBefore(oRow, tbl.rows[iPos]);		return oRow;		}	function spm_getElementHeight(o)	{			if (o.offsetHeight == null || o.offsetHeight == 0)		{			if (o.offsetParent.offsetHeight == null || o.offsetParent.offsetHeight == 0)			{				if (o.offsetParent.offsetParent != null)					return o.offsetParent.offsetParent.offsetHeight; //needed for Konqueror				else					return 0;			}			else				return o.offsetParent.offsetHeight;		}		else			return o.offsetHeight;	}	function spm_getElementWidth(o)	{		if (o.offsetWidth == null || o.offsetWidth == 0)		{			if (o.offsetParent.offsetWidth == null || o.offsetParent.offsetWidth == 0)			{				if (o.offsetParent.offsetParent != null)					return o.offsetParent.offsetParent.offsetWidth; //needed for Konqueror				else					return 0;			}			else				return o.offsetParent.offsetWidth		}		else			return o.offsetWidth;	}		//viewport logic taken from http://dhtmlkitchen.com/js/measurements/index.jsp	function spm_getViewPortWidth()	{		// supported in Mozilla, Opera, and Safari    if(window.innerWidth)			return window.innerWidth;    // supported in standards mode of IE, but not in any other mode    if(window.document.documentElement.clientWidth)			return document.documentElement.clientWidth;	    // supported in quirks mode, older versions of IE, and mac IE (anything else).    return window.document.body.clientWidth;	}	  function spm_getBodyScrollTop()  {		if (window.pageYOffset)			return window.pageYOffset;				var oBody = (document.compatMode && document.compatMode != "BackCompat") ? document.documentElement : document.body;				return oBody.scrollTop;  }  function spm_getBodyScrollLeft(bOverride)  { 		if (window.pageXOffset)			return window.pageXOffset;		var oBody = (document.compatMode && document.compatMode != "BackCompat") ? document.documentElement : document.body;		return oBody.scrollLeft;  }		function spm_getViewPortHeight()	{		// supported in Mozilla, Opera, and Safari    if(window.innerHeight)			return window.innerHeight;    // supported in standards mode of IE, but not in any other mode    if(window.document.documentElement.clientHeight)			return document.documentElement.clientHeight;	    // supported in quirks mode, older versions of IE, and mac IE (anything else).    return window.document.body.clientHeight;	}			function spm_elementTop(eSrc, includeBody)	{				var iTop = 0;		var eParent;		eParent = eSrc;		while (eParent.tagName.toUpperCase() != "BODY")		{			//Safari incorrectly calculates the TR tag to be at the top of the table, so try and get child TD tag to use for measurement			//if (spm_browserType() == 'safari' && eParent.tagName.toUpperCase() == 'TR' && spm_getTags('TD', eParent).length)			//	eParent = spm_getTags('TD', eParent)[0];			iTop += eParent.offsetTop;						eParent = eParent.offsetParent;			if (eParent == null)				break;		}		if (includeBody != null && eParent != null && (spm_browserType() == 'safari' || spm_browserType() == 'kq')) 			iTop += eParent.offsetTop;				return iTop;	}	function spm_elementLeft(eSrc, includeBody)	{			var iLeft = 0;		var eParent;		eParent = eSrc;		while (eParent.tagName.toUpperCase() != "BODY")		{			iLeft += eParent.offsetLeft;							eParent = eParent.offsetParent;			if (eParent == null)				break;		}		if (includeBody != null && eParent != null && (spm_browserType() == 'safari' || spm_browserType() == 'kq'))			iLeft += eParent.offsetLeft;				return iLeft;	}		function spm_getElement(e, sID) 	{		var o=e;		var i=0;		while (o.id != sID)		{			o=o.parentNode;			i++;		}		return o;	}	function spm_getSourceTR(e, ns)	{		while (e.id == "")		{			e= e.parentElement;		}		if (e.id.indexOf("arrow") != -1)		{			var sID = e.id.substr(5);			return spm_getById("tr" + sID);		}		else if (e.id.indexOf("td") != -1)		{			var sID = e.id.substr(2);			return spm_getById("tr" + sID);		}			else if (e.id.indexOf("icon") != -1)		{			var sID = e.id.substr(4);			return spm_getById("tr" + sID);		}			else if (e.id.indexOf("img") != -1)		{			var sID = e.id.substr(3);			return spm_getById("tr" + sID);		}			else		{			return e;		}	}	function spm_itemHasChildren(sID, ns)	{		return spm_getById("tbl" + sID) != null;	}function spm_getMenuItemStyle(sType, oNode){  return spm_getAttr(oNode, sType + "style", '');}function spm_getMenuItemCSS(oNode){  return spm_getAttr(oNode, "css", '');}function spm_getMenuItemSelCSS(oNode){  return spm_getAttr(oNode, "selcss", '');}SolpartMenu.prototype.getIntCSSName =  function(sClass){  var ary = sClass.split(' ');  var s='';  for (var i=0; i<ary.length; i++)    s += this._m_sNSpace.toLowerCase() + '_' + ary[i] + ' ';    return s;}function spm_fixCSSForMac(s){	var ary = s.split(' ');	var sRet='';	for (var i=0; i<ary.length; i++)	{		if (ary[i].rtrim().length > 0)		{			if (sRet.length)				sRet += ' ' + ary[i];			else				sRet = ary[i];		}	}	return sRet;}function spm_getMenuClickAction(oNode, me){  //'function to determine if menu item has action associated (URL)  var sName = spm_getAttr(me._m_oMenu, 'name', me._m_oMenu.name);  if (sName == null || sName.length == 0)	//opera fix for getting name		sName = spm_getAttr(me._m_oMenu, 'pbname', me._m_oMenu.pbname);	  if (spm_getAttr(oNode, "runat", '').length)    return "__doPostBack('" + sName + "', '" + spm_getAttr(oNode, "id", "") + "');";  if (spm_getAttr(oNode, "server", '').length)    return "__doPostBack('" + sName + "', '" + spm_getAttr(oNode, "id", "") + "');";  var sURL = spm_getAttr(oNode, "url", "");  if (sURL.length)	{		if (sURL.toLowerCase().substr(0, "javascript:".length) == "javascript:")			return sURL.substr("javascript:".length) + ";";		else		{			if (me.target.length > 0 && document.frames[me.target] != null)				return "document.frames['" + me.target + "'].location.href='" + sURL + "';";			else				return "document.location.href='" + sURL + "';";		}	}	return '';	}function spm_getMenuSpacingImage(sPos, me){  var sAlign = me.menuAlignment.toLowerCase();  if ((sPos == 'left' && sAlign == 'right') || (sPos == 'right' && sAlign == 'left'))		return "       <td width=\"100%\">" + spm_getSpacer(me) + "</td>";  if ((sPos == 'right' && sAlign == 'left') || (sPos == 'left' && sAlign == 'right'))		return "       <td width=\"3px\">" + spm_getSpacer(me) + "</td>";	if (sAlign == 'Center')		return "       <td width=\"33%\">" + spm_getSpacer(me) + "</td>";		return '';   }function spm_getSpacer(me) {  return spm_getMenuImage('spacer.gif', me, false, ' ');    //return '&nbsp;'; //"<IMG SRC=\"" + me.systemImagesPath + "spacer.gif\">";}function spm_getImage(oAttr, me){  //'retrieves an image for a passed in XMLAttribute  var sImage = spm_getAttr(oAttr, 'image', '');  if (sImage.length)  {    return spm_getHTMLImage(sImage, spm_getAttr(oAttr, 'imagepath', me.iconImagesPath), null, spm_getAttr(oAttr, 'title', ''));  }  else    return spm_getMenuImage('spacer.gif', me, null, ' ');}function spm_getItemHTML(oNode, sSide, sDef){  if (sDef == null) sDef = '';  return spm_getAttr(oNode, sSide + "html", sDef);}function spm_getMenuImage(sImage, me, bForce, sAlt){    //'generates html for image using the SystemImagesPath property    return spm_getHTMLImage(sImage, me.systemImagesPath, bForce, sAlt);}function spm_getHTMLImage(sImage, sPath, bForce, sAlt){    //'generates html for image using the SystemImagesPath property    if (spm_browserNeedsSpacer() == false && sImage == 'spacer.gif' && bForce != true)        return '&nbsp;';     else        //return "<IMG SRC=\"" + sPath + sImage + "\" " + spm_getAlt(sAlt) + ">";
        return "<IMG SRC=\"../spacer.gif\" " + spm_getAlt(sAlt) + ">"; 
        }function spm_getAlt(sAlt){	if (sAlt != null && sAlt.rtrim().length > 0)		return ' ALT="' + sAlt + '" ';	else		return '';}function spm_browserNeedsSpacer(){	if (spm_browserType() == 'ie')		return false;	else		return true;}function MyIIf(bFlag, sTrue, sFalse) {    if (bFlag)		return sTrue;	else		return sFalse;}function spm_getArrow(sImg, me) {  //FIX    if (sImg.length)        return spm_getMenuImage(sImg, me, null, '>');    else    {      if (me.direction == 'rtl')				return "3";       else				return "4"; //'defaults to using wingdings font (4 = arrow)    }}function spm_getMenuBorderStyle(me, shColor, hlColor, width){  if (shColor == null) shColor = me.shColor;  if (hlColor == null) hlColor = me.hlColor;  if (width == null) width = me.borderWidth;    //border-bottom: Gray 1px solid; border-left: White 1px solid; border-top: White 1px solid; border-right: Gray 1px solid;  //return 'border-bottom: ' + shColor + ' ' + width + 'px solid; border-left: ' + hlColor + ' ' + width + 'px solid;  border-top: ' + hlColor + ' ' + width + 'px solid; border-right: ' + shColor + ' ' + width + 'px solid;';  return getBorderStyle('border-bottom', shColor, width) + getBorderStyle('border-left', hlColor, width) + getBorderStyle('border-top', hlColor, width) + getBorderStyle('border-right', shColor, width);}function getBorderStyle(type, color, width){    return type + ': ' + color + ' ' + width + 'px solid; ';}//------------------------//String.prototype.ltrim = function () { return this.replace(/^\s*/, "");}String.prototype.rtrim = function () { return this.replace(/\s*$/, "");}String.prototype.trim  = function () { return this.ltrim().rtrim(); }if (spm_browserType() == 'safari')	//Safari Hack	var Document = null;	if (spm_browserType() != 'ie' && spm_browserType() != 'op' && Document != null){  Document.prototype.loadXML = function (s)     {          // parse the string to a new doc      var doc2 = (new DOMParser()).parseFromString(s, "text/xml");      // remove all initial children      while (this.hasChildNodes())      this.removeChild(this.lastChild);      // insert and import nodes      for (var i = 0; i < doc2.childNodes.length; i++)       {      this.appendChild(this.importNode(doc2.childNodes[i], true));      }    }    function _Node_getXML()     {      //create a new XMLSerializer      var objXMLSerializer = new XMLSerializer;            //get the XML string      var strXML = objXMLSerializer.serializeToString(this);            //return the XML string      return strXML;    }    Node.prototype.__defineGetter__("xml", _Node_getXML);}function spm_createDOMDoc(){	if (spm_browserType() == 'ie')	{		var o = new ActiveXObject('MSXML.DOMDocument');		o.async = false;		return o;	}	else		return document.implementation.createDocument("", "", null);}function spm_getById(sID){  if (document.all == null)    return document.getElementById(sID);  else    return document.all(sID);}function spm_getTags(sTag, oCtl){	if (oCtl == null)		oCtl = document;		if (spm_browserType() == 'ie')    return oCtl.all.tags(sTag);  else    return oCtl.getElementsByTagName(sTag);}function spm_browserType(){	if (m_spm_sBrowser == null)	{		var agt=navigator.userAgent.toLowerCase();		if (agt.toLowerCase().indexOf('konqueror') != -1) 			m_spm_sBrowser = 'kq';		else if (agt.toLowerCase().indexOf('opera') != -1) 			m_spm_sBrowser = 'op';		else if (agt.toLowerCase().indexOf('netscape') != -1) 			m_spm_sBrowser = 'ns';		else if (agt.toLowerCase().indexOf('msie') != -1)			m_spm_sBrowser = 'ie';		else if (agt.toLowerCase().indexOf('safari') != -1)			m_spm_sBrowser = 'safari';	  		if (m_spm_sBrowser == null)			m_spm_sBrowser = 'mo';  	}	//window.status = m_spm_sBrowser;	return m_spm_sBrowser;}function spm_browserVersion(){	//Please offer a better solution if you have one!	var sType = spm_browserType();	var iVersion = parseFloat(navigator.appVersion);	var sAgent = navigator.userAgent.toLowerCase();	if (sType == 'ie')	{		var temp=navigator.appVersion.split("MSIE");		iVersion=parseFloat(temp[1]);	}	if (sType == 'ns')	{		var temp=sAgent.split("netscape");		iVersion=parseFloat(temp[1].split("/")[1]);		}	return iVersion;}function spm_needsSubMenuDelay(){	if (spm_browserType() == 'ie')		return true;	else		return false;}function spm_supportsIFrameTrick(){	var sType = spm_browserType();	var sVersion = spm_browserVersion();		if ((sType == 'ie' && sVersion < 5.5) || (sType == 'ns' && sVersion < 7) || (spm_browserType() == 'safari') || spm_isMac('ie'))	{		return false;	}	return true;}function spm_isMac(sType){//return true;  var agt=navigator.userAgent.toLowerCase();  if (agt.indexOf('mac') != -1)   {		if (sType == null || spm_browserType() == sType)			return true;  }  else    return false;  }//taken from http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&oe=UTF-8&safe=off&threadm=b42qj3%24r8s1%40ripley.netscape.com&rnum=1&prev=/groups%3Fq%3Dmozilla%2B%2522currentstyle%2522%26hl%3Den%26lr%3D%26ie%3DUTF-8%26oe%3DUTF-8%26safe%3Doff%26scoring%3Dd function spm_getCurrentStyle(el, property) {  if (document.defaultView)   {   // Get computed style information:    if (el.nodeType != el.ELEMENT_NODE) return null;    return document.defaultView.getComputedStyle(el,'').getPropertyValue(property.split('-').join(''));  }  if (el.currentStyle)   {    // Get el.currentStyle property value:    return el.currentStyle[property.split('-').join('')];    //return el.currentStyle.getAttribute(property.split('-').join(''));  //We need to get rid of slashes  }  if (el.style)   {    // Get el.style property value:    return el.style.getAttribute(property.split('-').join(''));  // We need to get rid of slashes  } return  null;}function spm_getAttr(o, sAttr, sDef){  if (sDef == null)    sDef = '';  var s = o.getAttribute(sAttr);  if (s != null && s.length > 0)    return o.getAttribute(sAttr);  else    return sDef;}function spm_setAttr(o, sAttr, sVal){	if (sVal.length > 0)		o.setAttribute(sAttr, sVal);	else		o.removeAttribute(sAttr);}function spm_fixUnit(s){  if (s.length && isNaN(s) == false)    return s + 'px';}function spm_nodeHasChildren(node){  if (typeof(node.selectSingleNode) != 'undefined') //(node.selectSingleNode != null) //(spm_browserType() == 'ie')    return node.selectSingleNode('./menuitem') != null;  else  {    if (node.childNodes.length > 0)    {      //Netscape/Mozilla counts an empty <menuitem id></menuitem> as having a child...      for (var i=0; i< node.childNodes.length; i++)      {        if (node.childNodes[i].nodeName == 'menuitem')            return true;      }    }  }  return false;  }function spm_findNode(oParent, sID){	for (var i = 0; i < oParent.childNodes.length; i++)	{		oNode = oParent.childNodes[i];		if (oNode.nodeType != 3)  //exclude nodeType of Text (Netscape/Mozilla) issue!		{			if ((oNode.nodeName == "menuitem" || oNode.nodeName == "menubreak") && oNode.getAttribute("id") == sID)				return oNode;			if (oNode.childNodes.length > 0)			{				var o = spm_findNode(oNode, sID);				if (o != null)					return o;			}		}	}}function spm_getSibling(oNode, iOffset){	var sID = spm_getAttr(oNode, 'id');	var o;	for (var i=0; i<oNode.parentNode.childNodes.length; i++)	{		o = oNode.parentNode.childNodes[i];		if (o.nodeType != 3)		{			if (spm_getAttr(o, 'id') == sID)				return getOffsetNode(o.parentNode, i, iOffset);		}	}}function spm_stopEventBubbling(e){    if (spm_browserType() == 'ie')			window.event.cancelBubble = true;		else			e.stopPropagation();}//--- if you have a better solution send me an email - jhenning@solpart.com ---//function spm_appendFunction(from_func, to_func){  if (from_func == null)    return new Function ( to_func );   return new Function ( spm_parseFunctionContents(from_func) + '\n' + spm_parseFunctionContents(to_func) );}function spm_parseFunctionContents(fnc){  var s =String(fnc).trim();  if (s.indexOf('{') > -1)		s = s.substring(s.indexOf('{') + 1, s.length - 1);  return s;}//--- For JS DOM ---//function SPJSXMLNode(sNodeName, sID, oParent, sTitle, sURL, sImage, sImagePath, sRightHTML, sLeftHTML, sRunAtServer, sItemStyle, sImageStyle, sToolTip, sItemCSS, sItemSelCSS) {   this.nodeName = sNodeName;  this.id=sID;  this.childNodes = new Array();  //this.nodeType = 3;      this.parentNode = oParent;              if (oParent != null)  {    oParent.childNodes[oParent.childNodes.length] = this;        if (oParent.documentElement == null)      this.documentElement = oParent;    else      this.documentElement = oParent.documentElement;  }  else    this.documentElement = this;      this.title = sTitle;  this.url = sURL;  this.image = sImage;  this.imagepath = sImagePath;  this.righthtml = sRightHTML;  this.lefthtml = sLeftHTML;  this.server = sRunAtServer;  this.itemstyle = sItemStyle;  this.imagestyle = sImageStyle;  this.tooltip = sToolTip;  this.css = sItemCSS;  this.selcss = sItemSelCSS;}      SPJSXMLNode.prototype.getAttribute = function(s){  return this[s];}  var m_iSPTimer;  var m_iSPTotalTimer=0;  var m_sSPDebugText;  var m_oSPDebugCtl;  var m_bSPDebug = false;    function __db(s)  {    if (spm_browserType() != 'ie' || m_bSPDebug == false)      return;         var sT = new Date() - m_iSPTimer;    if (sT > 120000)    {      sT = '';      m_oSPDebugCtl.value = '---reset---';      m_iSPTotalTimer=0;    }    else if (sT > 100)    {      m_iSPTotalTimer+= sT;      sT = ' *** [' + sT + '] *** ';    }    else if (sT > 0)    {      m_iSPTotalTimer+= sT;      sT = ' [' + sT + ']';    }    else      sT = '';          if (document.forms.length > 0 && m_oSPDebugCtl == null)    {            document.forms(0).insertAdjacentHTML('afterEnd', '<br><TEXTAREA ID="my__Debug" STYLE="WIDTH: 100%; HEIGHT: 100px"></TEXTAREA>');      m_oSPDebugCtl = document.all('my__Debug');    }    if (m_oSPDebugCtl != null)      m_oSPDebugCtl.value += '[' + m_iSPTotalTimer + '] ' + s + sT + '\n';    else      m_sSPDebugText += '[' + m_iSPTotalTimer + '] ' + s + sT + '\n';           m_iSPTimer = new Date();  }	if (window.__smartNav != null)		window.setTimeout(spm_fixSmartNav, 1000);	function spm_fixSmartNav()	{		if (window.__smartNav != null)		{			if (document.readyState == 'complete')			{				var o = spm_getById('SolpartMenuDI');				if (o != null)				{					if (o.length == null)					{							if (o.xml != null)								spm_initMyMenu(o, o.parentElement);					}					else					{						for (var i=0; i<o.length; i++)						{							if (o[i].xml != null)								spm_initMyMenu(o[i], o.parentElement);						}					}				}			}			else				window.setTimeout(spm_fixSmartNav, 1000);		}	}	function spm_elementDims(o, bIncludeBody, me)	{		var bHidden = (o.style.display == 'none');				if (bHidden)			o.style.display = "";		this.t = spm_elementTop(o, bIncludeBody);		this.l = spm_elementLeft(o, bIncludeBody);		if (!spm_isMac('ie'))		{			o.style.top = spm_getCoord(0);			o.style.left = spm_getCoord(0);		}		this.w = spm_getElementWidth(o);		this.h = spm_getElementHeight(o);		if (!spm_isMac('ie'))		{			o.style.top = spm_getCoord(this.t);			o.style.left = spm_getCoord(this.l);		}		if (bHidden)			o.style.display = "none";	}function spm_getCoord(i){	return i + 'px';}