//===
// RBCNet Menu
// Aug 3/06
// Felipe A Carrillo
//===
// Dependencies:
//=== https://www.rbcinsurance.com/home/file-109340.gif
//=== https://www.rbcinsurance.com/home/file-109361.gif
//=== https://www.rbcinsurance.com/home/file-109341.gif
//=== https://www.rbcinsurance.com/home/file-109339.gif
//=== https://www.rbcinsurance.com/home/file-109338.gif
//===

function RBCNETMenu(){
	this.pageid = null;
	this.data = null;
	var isNS = navigator.appName.toLowerCase().indexOf("netscape")!=-1 ? true : false;
	
	this.render = function(ar, level, parent)
	{
		var s = "";
		
		for (var i=0; i<ar.length; i++)
		{
			var mitem = new RBCNETMenuItem(ar[i]);
			mitem.isNS = isNS;
			mitem.isSelected = this.isSelectionNested(ar[i]);
			mitem.isExpanded = this.isGroupExpanded(ar[i]);
			mitem.isSelectionHere = this.isSelectionHere(ar[i][5]);
			mitem.isSelectedBelow = (typeof(ar[i][6])!="undefined") ? this.isSelectedBelow(ar[i][6]) : false;
			mitem.level = level;
			mitem.isSingle = ar.length==1;
			
			var parentHasNextSibling = this.hasNextSibling(parent);
			
			s += mitem.toString();
			
			if (level==1 && i==ar.length-1 && !mitem.isExpanded && parentHasNextSibling)
			{
				s += "<tr><td colspan=\"4\" bgcolor=\"#ffffff\">";
				s += "<div align=\"center\" style=\"border-bottom:solid 1px #CCD6EB;height:10;margin:0 10 12 10\">";
				s += "</div></td></tr>";
			}
			
			if (mitem.isExpanded && typeof(ar[i][6])!="undefined")
			{
				var sub = ar[i][6];
				s += this.render(sub, level+1, ar[i]);
			}
		}
		
		return s;
	}
	
	this.hasNextSibling = function(ar){
		if (typeof(ar)=="undefined") return false;
	
		if (typeof(ar[ar.length])=="undefined")
		{
			return false;
		}
		else
		{
			return true;
		}
	}
	
	this.toString = function()
	{
		var s = "<table width=\"169\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";

		s += this.render(this.data, 0);
		
		s += "</table>";
		
		return s;
	}
	
	this.isSelectionHere = function(pagescsv)
	{
		var pageid = ";" + this.pageid + ";";
		
		if (pagescsv.toString().indexOf(pageid)!=-1)
		{
			return true;
		}
		
		return false;
	}
	
	this.isSelectedBelow = function(ar){
		return this.isSelectionNested(ar);
	}
	
	this.isSelectionNested = function(a)
	{
		var pageid = ";" + this.pageid + ";";
		
		if (a.toString().indexOf(pageid)!=-1)
		{
			return true;
		}
		
		return false;
	}
	
	this.isGroupExpanded = function(a)
	{
		if (a.toString().indexOf(";-1;")!=-1)
		{
			return true;
		}

		var pageid = ";" + this.pageid + ";";
		
		if (a.toString().indexOf(pageid)!=-1)
		{
			return true;
		}
		
		return false;
	}
	
}

function RBCNETMenuItem(a){
	this.id = a[0];
	this.label = a[1];
	this.href = a[2];
	this.target = a[3];
	this.sep = a[4];
	this.pages = a[5];
	this.level = null;
	this.isSelected = null;
	this.isExpanded = null;
	this.isSingle = false;
	this.isSelectionHere = false;
	this.isSelectedBelow = false;
	this.isNS = false;
	
	this.toString = function(){
		var s = "";
		
		switch (this.level)
		{
			case 0:
				s += "<tr>";
				
				//if (this.isSelected)
				//{
					s += "<td colspan=\"4\" bgcolor=\"#ffffff\" width=\"169\">";
					s += "<a target=\"" + this.target + "\" class=\"navtextlink10b\"";
					if (this.sep==0)
					{
						s += " href=\"" + this.href + "\">";
					}else{
						s += ">";
					}
					s += this.label;
					s += "</a></td>";
					
				//}
				//else
				//{
				/*	s += "<td width=\"10\" bgcolor=\"#ffffff\" valign=\"top\"><span class=\"chevron\">&#187;</span></td>";
					s += "<td colspan=\"3\" bgcolor=\"#ffffff\" width=\"159\">";
					s += "<a target=\"" + this.target + "\" class=\"navtextlink10\"";
					if (this.sep==0)
					{
						s += " href=\"" + this.href + "\">";
					}else{
						s += ">";
					}
					s += this.label;
					s += "</a></td>";
				}*/
				
				s += "</tr><tr><td colspan=\"4\" bgcolor=\"#ffffff\" width=\"169\">";
				s += "<div style=\"height:2;font-size:0.0003em\"></div>";
				s += "</td></tr>";
				
				break;
				
			case 1:
				s += "<tr><td colspan=\"4\" width=\"169\"><div style=\"height:6;font-size:0.0003em\">";
				s += "</div></td></tr>";
				s += "<tr>";
				
				if (this.isSelected && this.isExpanded)
				{
					s += "<td width=\"10\" valign=\"top\" bgcolor=\"#ccd6eb\">";
					if (this.isSingle)
					{
						s += "<img src=\"https://www.rbcinsurance.com/home/file-109340.gif\">";
					}
					else
					{
						s += "<img src=\"https://www.rbcinsurance.com/home/file-109340.gif\">";					
					}
					s += "</td>";
					s += "<td colspan=\"3\" bgcolor=\"#ccd6eb\" width=\"159\">";
					s += "<a target=\"" + this.target + "\" class=\"navtextlink10b\"";
					if (this.sep==0)
					{
						s += " href=\"" + this.href + "\">";
					}else{
						s += ">";
					}
					s += this.label;
					s += "</a></td>";
				}
				else
				{
					s += "<td width=\"10\" bgcolor=\"#ffffff\" valign=\"top\">";
					s += "<span class=\"chevron\">&#187;</span></td>";
					s += "<td colspan=\"3\" bgcolor=\"#ffffff\" width=\"159\">";
					s += "<a target=\"" + this.target + "\" class=\"navtextlink10\"";
					if (this.sep==0)
					{
						s += " href=\"" + this.href + "\">";
					}else{
						s += ">";
					}
					s += this.label;
					s += "</a></td>";
				}
				
				s += "</tr>";
				
				break;

			case 2:
				
				s += "<tr>";
				
				if (this.isSelected && this.isExpanded)
				{
					var bgColor, imgSrc;
					if (this.isSelectionHere && !this.isSelectedBelow){
						bgColor = "#FFFFFF";
						imgSrc = "https://www.rbcinsurance.com/home/file-109360.gif";
					}
					else
					{
						bgColor = "#e5eaf5";
						imgSrc = "https://www.rbcinsurance.com/home/file-109361.gif";
					}
					s += "<td width=\"10\" bgcolor=\"" + bgColor + "\"><img src=\"https://www.rbcinsurance.com/home/file-109679.gif\" width=\"10\"></td>";
					s += "<td width=\"10\" valign=\"top\" bgcolor=\"" + bgColor + "\">";
					s += "<img src=\"" + imgSrc + "\" width=\"10\">";
					s += "</td>";
					s += "<td colspan=\"2\" bgcolor=\"" + bgColor + "\" width=\"149\">";
					s += "<a target=\"" + this.target + "\" class=\"navtextlink10b\"";
					if (this.sep==0)
					{
						s += " href=\"" + this.href + "\">";
					}else{
						s += ">";
					}
					s += this.label;
					s += "</a></td>";
				}
				else
				{
					s += "<td width=\"10\" bgcolor=\"#ccd6eb\"><img src=\"https://www.rbcinsurance.com/home/file-109679.gif\" width=\"10\"></td>";
					s += "<td width=\"10\" valign=\"top\" bgcolor=\"#ccd6eb\">";
					s += "<img src=\"https://www.rbcinsurance.com/home/file-109341.gif\" width=\"10\">";
					s += "</td>";
					s += "<td colspan=\"2\" bgcolor=\"#ccd6eb\" width=\"149\">";
					s += "<a target=\"" + this.target + "\" class=\"navtextlink10\"";
					if (this.sep==0)
					{
						s += " href=\"" + this.href + "\">";
					}else{
						s += ">";
					}
					s += this.label;
					s += "</a></td>";
				}
							
				s += "</tr>";
				
				break;
				
			case 3:
				
				s += "<tr>";
				
				if (this.isSelected && this.isExpanded)
				{
					s += "<td width=\"10\" bgcolor=\"#ffffff\"><img src=\"https://www.rbcinsurance.com/home/file-109679.gif\" width=\"10\"></td>";
					s += "<td width=\"10\" bgcolor=\"#ffffff\"><img src=\"https://www.rbcinsurance.com/home/file-109679.gif\" width=\"10\"></td>";
					s += "<td width=\"10\" valign=\"middle\" bgcolor=\"#ffffff\">";
					s += "<img src=\"https://www.rbcinsurance.com/home/file-109339.gif\" width=\"5\">";
					s += "</td>";
					s += "<td bgcolor=\"#ffffff\" width=\"139\">";
					s += "<a target=\"" + this.target + "\" class=\"navtextlink8b\"";
					if (this.sep==0)
					{
						s += " href=\"" + this.href + "\">";
					}else{
						s += ">";
					}
					s += this.label;
					s += "</a></td>";
				}
				else
				{
					s += "<td width=\"10\" bgcolor=\"#e5eaf5\"><img src=\"https://www.rbcinsurance.com/home/file-109679.gif\" width=\"10\"></td>";
					s += "<td width=\"10\" bgcolor=\"#e5eaf5\"><img src=\"https://www.rbcinsurance.com/home/file-109679.gif\" width=\"10\"></td>";
					s += "<td width=\"10\" valign=\"middle\" bgcolor=\"#e5eaf5\">";
					s += "<img src=\"https://www.rbcinsurance.com/home/file-109338.gif\" width=\"5\">";
					s += "</td>";
					s += "<td bgcolor=\"#e5eaf5\" width=\"139\">";
					s += "<a target=\"" + this.target + "\" class=\"navtextlink8\"";
					if (this.sep==0)
					{
						s += " href=\"" + this.href + "\">";
					}else{
						s += ">";
					}
					s += this.label;
					s += "</a></td>";
				}

				s += "</tr>";
				
		}
		
		return s;
	}
}

//=========================//
//=== XML to JSArray	===//
//=== Aug 3/06			===//
//=== Felipe A Carrillo	===//
//=========================//

function xml2jsArray(XmlDoc){
	var menu = XmlDoc.selectSingleNode("//menu");

	var a = new Array();
	var len = menu.childNodes.length;
	
	for (var i=0; i<len; i++){
		if (menu.childNodes(i).tagName=="menuitem")
		{
			writeXml2JsItem(menu.childNodes(i), a);
		}
	}

	return a;
}

function writeXml2JsItem(item, a)
{
	var id = item.getAttribute("id");
	var label = item.getAttribute("label");
	var href = item.getAttribute("href");
	var target = item.getAttribute("target");
	var sep = item.getAttribute("sep");
	var pages = item.getAttribute("pagescsv");

	var aa = new Array();
		aa[0] = id + "";
		aa[1] = label + "";
		aa[2] = href + "";
		aa[3] = target + "";
		aa[4] = sep + "";
		aa[5] = pages + "";
		
	a[a.length] = aa;

	if (hasXmlChildren(item))
	{
		var aaa = new Array();
		aa[aa.length] = aaa;
		recurXml2Js(item, aaa);
	}
}

function recurXml2Js(item, aa)
{
	var len = item.childNodes.length;
	for (var i=0; i<len; i++)
	{
		if (item.childNodes(i).tagName=="menuitem")
		{
			writeXml2JsItem(item.childNodes(i), aa);
		}
	}
}

function hasXmlChildren(item)
{
	for (var j=0; j<item.childNodes.length; j++)
	{
		if (item.childNodes(j).nodeName=="menuitem") return true;
	}
	return false;
}

//=========================//
//=== LIst to JSArray	===//
//=== Aug 3/06			===//
//=== Felipe A Carrillo	===//
//=========================//

function ul2jsArray(UlElemId){
	var isNS = navigator.appName.toLowerCase().indexOf("netscape")!=-1 ? true : false;
	var menu = document.getElementById(UlElemId);

	var a = new Array();
	var len = menu.childNodes.length;

	for (var i=0; i<len; i++){
		if (menu.childNodes[i].tagName=="LI")
		{
			writeUl2JsItem(menu.childNodes[i], isNS, a);
		}
	}
	return a;
}

function writeUl2JsItem(item, isNS, a)
{
	var id = "";
	var label = isNS ? item.childNodes[1].innerHTML : item.firstChild.innerText;
	var href = isNS ? item.childNodes[1] : item.firstChild.href;
	var target = isNS ? item.childNodes[1].getAttribute("target") : item.firstChild.target;
	var sep = 0;
	var pages = item.getAttribute("pagescsv");
		
	var aa = new Array();
		aa[0] = "";
		aa[1] = label + "";
		aa[2] = href + "";
		aa[3] = target + "";
		aa[4] = sep + "";
		aa[5] = pages + "";
		
	a[a.length] = aa;

	var next = (isNS ? item.nextSibling.nextSibling : item.childNodes[2]);
	if (next && next.tagName=="UL")
	{
		var aaa = new Array();
		aa[aa.length] = aaa;
		recurUl2Js(next, isNS, aaa);
	}
}

function recurUl2Js(item, isNS, aa)
{
	var len = item.childNodes.length;
	for (var i=0; i<len; i++)
	{
		if (item.childNodes[i].tagName=="LI")
		{
			writeUl2JsItem(item.childNodes[i], isNS, aa);
		}
	}
}

//=== Initializer ===//

function FSMenu(id){
	var a = null;
	
	try
	{
		a = eval(id + "_array");
	}
	catch(e)
	{
		a = ul2jsArray(id);
	}
	
	if (a==null) return;
	
	var rbcnetmenu = new RBCNETMenu;
		rbcnetmenu.pageid = CMS_PageId;
		rbcnetmenu.data = a;

	var li = document.getElementById(id);
	var strmenu = rbcnetmenu.toString();

	if (navigator.appName.toLowerCase().indexOf("internet explorer")==-1){
		var r = li.ownerDocument.createRange();
			r.setStartBefore(li);
			
		var parsedHTML = r.createContextualFragment(strmenu);

		if (li.nextSibling)
		{ 
			li.parentNode.insertBefore(parsedHTML, li.nextSibling);
		}
		else
		{
			li.parentNode.appendChild(parsedHTML);
		}
	}
	else
	{
		li.insertAdjacentHTML("afterEnd", strmenu);
	}
}

//2b deprecated
function addEvent(){}

//==================//
