function genHeaderMenu(xmlfile, divid)
{
	try
	{
		if (navigator.userAgent.toLowerCase().indexOf("msie") >= 0)
		{
			var mXml = new ActiveXObject("MSXML2.FreeThreadedDOMDocument");
			mXml.async = false;
			mXml.load(xmlfile);

			var current = getCurrentPage();
			var parent_link = getCurrentParentLink(current, mXml);
			var parent = getCurrentParent(current, mXml);

			var html = "<ul>";
			var submenuHtml = "";
			var s_submenuHtml = "";
			var menu = mXml.selectSingleNode("//ApplicationMenu/Menu[@lv='0']");

			if (menu != null)
			{
				for (var m=0; m<menu.childNodes.length; m++)
				{
					var node = menu.childNodes[m];
					var submenu = mXml.selectSingleNode("//ApplicationMenu/Menu[@id='" + node.getAttribute("link") + "']");
					html += "<li>";
					if (node.getAttribute("cp").indexOf("[") != 0)
					{
						html += "<a ";
						if (node.getAttribute("pageid") == parent)
							html += "class='here' ";
						/*if (submenu != null)
						{
							html += "onmouseover='showMenu(this)' ";
							html += "onmouseout='hideMenu()' ";
						}*/
						html += "lv='" + menu.getAttribute("lv") + "' ";
						html += "link='" + node.getAttribute("link") + "' ";
						html += "href='" + node.getAttribute("pageid") + "'>";
						html += node.getAttribute("cp");
						html += "</a>";
					}
                    
					if (submenu != null)
					{
						submenuHtml += "<ul class='dropmenu_l1' id='" + submenu.getAttribute("id") + "' style='position:absolute;background:#EEF0F4;text-align:left;display:none;'>";//padding:2px 5px 5px 5px;
						html += "<ul>";

						for (var s=0; s<submenu.childNodes.length; s++)
						{
							var subnode = submenu.childNodes[s];
							var s_submenu = mXml.selectSingleNode("//ApplicationMenu/Menu[@id='" + subnode.getAttribute("link") + "']");
							html += "<li";
							html += (parent_link.toLowerCase() == node.getAttribute("link").toLowerCase()) ? "  " : " style='display:none;' ";
							submenuHtml += "<li style='float:none;width:auto;white-space:nowrap;'>";
							if (s == 0)
								html += " class='firstListLink'";
							html += "><a ";
							submenuHtml += "<a style='";
							submenuHtml += (s_submenu != null ? "PADDING-RIGHT: 15px! important;background:url(./images/folder_arrow.gif);background-repeat:no-repeat;background-position-x:right;background-position-y:50%;" : "background:none;" );
							submenuHtml += "display:block;'";//onmouseover='showMenu(this, true)' onmouseout='hideMenu()'
							if (subnode.getAttribute("pageid") == current)
								html += "class='here' ";
							html += "href='" + subnode.getAttribute("pageid") + "'>";
							submenuHtml += "lv='" + submenu.getAttribute("lv") + "' ";
							submenuHtml += "href='" + subnode.getAttribute("pageid") + "' ";
							submenuHtml += "link='" + subnode.getAttribute("link") + "'>";
							html += subnode.getAttribute("cp");
							submenuHtml += subnode.getAttribute("cp");
							html += "</a>";
							submenuHtml += "</a>"; 
                                                       
							if (s_submenu != null)
							{
								if (getDocName().indexOf(".aspx") < 0)
									s_submenuHtml += "<ul class='dropmenu_l2' id='" + s_submenu.getAttribute("id") + "' style='MARGIN-LEFT: -6px! important; border-left:#d1d1d1 1px solid;position:absolute;background:#EEF0F4;text-align:left;display:none;'>";//padding:2px 5px 5px 5px;
								else
									s_submenuHtml += "<ul class='dropmenu_l2' id='" + s_submenu.getAttribute("id") + "' style='MARGIN-LEFT: -3px! important; border-left:#d1d1d1 1px solid;position:absolute;background:#EEF0F4;text-align:left;display:none;'>";//padding:2px 5px 5px 5px;
								
								for (var ss=0; ss<s_submenu.childNodes.length; ss++)
								{
									var s_subnode = s_submenu.childNodes[ss];
									s_submenuHtml += "<li style='float:none;width:auto;white-space:nowrap;'>";
									s_submenuHtml += "<a style='background:none;padding:5px;display:block;'";//onmouseover='showMenu(this, true)' onmouseout='hideMenu()'
									s_submenuHtml += "lv='" + s_submenu.getAttribute("lv") + "' ";
									s_submenuHtml += "href='" + s_subnode.getAttribute("pageid") + "' ";
									s_submenuHtml += "link='" + s_subnode.getAttribute("link") + "'>";
									s_submenuHtml += s_subnode.getAttribute("cp");
									s_submenuHtml += "</a>";
									s_submenuHtml += "</li>";
								}
								s_submenuHtml += "</ul>";
							}                            
							html += "</li>";
							submenuHtml += "</li>";
						}
						submenuHtml += "</ul>";
						html += "</ul>";
					}
					html += "</li>";
				}
				html += "</ul>";

				document.getElementById("submenu_div").outerHTML = submenuHtml + s_submenuHtml;
				document.getElementById(divid).innerHTML = html;
				setupMenu();
			}
        	}
		else if (navigator.userAgent.toLowerCase().indexOf('safari') >= 0 || navigator.userAgent.toLowerCase().indexOf('firefox') >= 0)
		{
			//Menu generation for browser Safari & FireFox (2009-06-18 Alex)

			var xmlObj = new XMLHttpRequest();
			xmlObj.open( "GET", xmlfile, false);
			//xmlObj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=ISO-8859-1");
			xmlObj.setRequestHeader("Content-Type", "charset=utf-8");
			xmlObj.send( null );

			//Style for Safari HTML page
			var ul_menu_style = "position: absolute; background: #EEF0F4; text-align: left; display: none; padding-right: 22px; z-index:998;";
			var ul_li_a_menu_style = "PADDING-RIGHT: 0px! important; background: url(./images/folder_arrow.gif); background-repeat: no-repeat; background-position: right 50%;";
			
			//Style for Safari ASPX page
			if (getDocName().indexOf(".aspx") >= 0 && navigator.userAgent.toLowerCase().indexOf('safari') >= 0)
			{
				ul_menu_style = "position: absolute; background: #EEF0F4; text-align: left; display: none; padding-right: 20px; z-index:998;";
				ul_li_a_menu_style = "PADDING-RIGHT: 15px! important; background: url(./images/folder_arrow.gif); background-repeat: no-repeat; background-position: right 50%;";
			}
				
			//Style for Firefox HTML page
			if (getDocName().indexOf(".html") >= 0 && navigator.userAgent.toLowerCase().indexOf('firefox') >= 0)
			{
				ul_menu_style = "position: absolute; background: #EEF0F4; text-align: left; display: none; padding-right: 22px; z-index:998;";
				ul_li_a_menu_style = "PADDING-RIGHT: 0px! important; background: url(./images/folder_arrow.gif); background-repeat: no-repeat; background-position: right 50%;";
			}
	
			//Style for Firefox ASPX page			
			if (getDocName().indexOf(".aspx") >= 0 && navigator.userAgent.toLowerCase().indexOf('firefox') >= 0)
			{
				ul_menu_style = "position: absolute; background: #EEF0F4; text-align: left; display: none; padding-right: 15px; z-index:998;";
				ul_li_a_menu_style = "PADDING-RIGHT: 10px! important; background: url(./images/folder_arrow.gif); background-repeat: no-repeat; background-position: right 50%;";
			}


			if( xmlObj.readyState == 4 )
			{
				var rootNode = xmlObj.responseXML.documentElement;
				var menuNode = xmlObj.responseXML.documentElement.getElementsByTagName("Menu");
			
				var current = getCurrentPage();
				var parent_link = getCurrentParentLink_NonIE(current, menuNode);
				var parent = getCurrentParent_NonIE(current, menuNode);
			
				var html = "<ul>";
				var submenuHtml = "";
				var s_submenuHtml = "";

				var menu = getSingleNode_NonIE(menuNode, "lv", "0");

				//generate Level 0 Menu
				if (menu != null)
				{
					var level_Node = menu.getElementsByTagName("Level");

					for (var m_i = 0; m_i < level_Node.length; m_i++)
					{
						var menu_node = level_Node[m_i];

						var menu_link = menu_node.getAttributeNode("link").nodeValue;
					
						var submenu = getSingleNode_NonIE(menuNode, "id", menu_link);

						html += "<li>";
					
						if (menu_node.getAttributeNode("cp").nodeValue.indexOf("[") != 0)
						{
							html += "<a ";
							if (menu_node.getAttributeNode("pageid").nodeValue == parent)
								html += "class='here' ";

							html += "lv='" + menu.getAttributeNode("lv").nodeValue + "' ";
							html += "link='" + menu_node.getAttributeNode("link").nodeValue + "' ";
							html += "href='" + menu_node.getAttributeNode("pageid").nodeValue + "'>";
							html += menu_node.getAttributeNode("cp").nodeValue;
							html += "</a>";
						}
				
                    				//generate Level 1 Menu
						if (submenu != null)
						{
							submenuHtml += "<ul class='dropmenu_l1' id='" + submenu.getAttributeNode("id").nodeValue + "' style='" + ul_menu_style + "'>";    //padding:2px 5px 5px 5px;
							html += "<ul>";

							var sub_level_Node = submenu.getElementsByTagName("Level");

							for (var m_j = 0;  m_j < sub_level_Node.length; m_j++)
							{
								var submenu_node = sub_level_Node[m_j];
						
								var submenu_link = submenu_node.getAttributeNode("link").nodeValue;
						
								var s_submenu = getSingleNode_NonIE(menuNode, "id", submenu_link);

								html += "<li";
								html += (parent_link.toLowerCase() == menu_node.getAttributeNode("link").nodeValue.toLowerCase()) ? "  " : " style='display: none;' ";
			
								submenuHtml += "<li style='float: none; width:auto; white-space: nowrap;'>";
                        	
								if (m_j == 0)
									html += " class='firstListLink'";
								html += "><a ";
                        
								submenuHtml += "<a style='";
								submenuHtml += (s_submenu != null ? ul_li_a_menu_style : "background: none;" );
								submenuHtml += "display: block;'";   //onmouseover='showMenu(this, true)' onmouseout='hideMenu()'
                            			
								if (submenu_node.getAttributeNode("pageid").nodeValue == current)
									html += "class='here' ";
			
								html += "href='" + submenu_node.getAttributeNode("pageid").nodeValue + "'>";
								submenuHtml += "lv='" + submenu.getAttributeNode("lv").nodeValue + "' ";
								submenuHtml += "href='" + submenu_node.getAttributeNode("pageid").nodeValue + "' ";
								submenuHtml += "link='" + submenu_node.getAttributeNode("link").nodeValue + "'>";
								html += submenu_node.getAttributeNode("cp").nodeValue;
								submenuHtml += submenu_node.getAttributeNode("cp").nodeValue;
								html += "</a>";
								submenuHtml += "</a>";  
                                               			
								//generate Level 2 Menu
								if (s_submenu != null)
								{

									if (getDocName().indexOf(".aspx") < 0)
										s_submenuHtml += "<ul class='dropmenu_l2' id='" + s_submenu.getAttribute("id") + "' style='MARGIN-LEFT: -6px! important; border-left:#d1d1d1 1px solid;position:absolute;background:#EEF0F4;text-align:left;display:none; z-index:999;'>";   //padding:2px 5px 5px 5px;
									else
										s_submenuHtml += "<ul class='dropmenu_l2' id='" + s_submenu.getAttribute("id") + "' style='MARGIN-LEFT: -3px! important; border-left:#d1d1d1 1px solid;position:absolute;background:#EEF0F4;text-align:left;display:none; z-index:999;'>";   //padding:2px 5px 5px 5px;

									var s_sub_level_Node = s_submenu.getElementsByTagName("Level");

									for (var m_k = 0; m_k < s_sub_level_Node.length; m_k++)
									{
										var s_submenu_node = s_sub_level_Node[m_k];

										s_submenuHtml += "<li style='float:none; width:auto; white-space:nowrap;'>";
										s_submenuHtml += "<a style='background:none;padding:5px;display:block;'";           //onmouseover='showMenu(this, true)' onmouseout='hideMenu()'
										s_submenuHtml += "lv='" + s_submenu.getAttributeNode("lv").nodeValue + "' ";
										s_submenuHtml += "href='" + s_submenu_node.getAttributeNode("pageid").nodeValue + "' ";
										s_submenuHtml += "link='" + s_submenu_node.getAttributeNode("link").nodeValue + "'>";
										s_submenuHtml += s_submenu_node.getAttributeNode("cp").nodeValue;
										s_submenuHtml += "</a>";
										s_submenuHtml += "</li>";
									}

							
		                                			s_submenuHtml += "</ul>";
								} 
                           
								html += "</li>";
								submenuHtml += "</li>";
							}
							submenuHtml += "</ul>";
							html += "</ul>";
						}

						html += "</li>";
					}
					html += "</ul>";

					document.getElementById("submenu_div").innerHTML = submenuHtml + s_submenuHtml;
					document.getElementById(divid).innerHTML = html;
					setupMenu();
				}

			}
	
		}
		else
		{
			alert('Your browser is not currently supported.');
			return;
		}
	}
	catch(e)
	{
		alert(e.message);
	}
}

function getCurrentPage()
{
	//alert(window.location.href.substring(window.location.href.lastIndexOf('/') + 1).replace(/&[a-zA-Z0-9_='"]*/g, '').replace(/#[a-zA-Z0-9-_='"]*/g, '').replace(/\?[a-zA-Z0-9-_='"]*/g, ''));

	if (document.getElementById("refermenu"))
		return document.getElementById("refermenu").getAttribute("link");
	else
		return window.location.href.substring(window.location.href.lastIndexOf('/') + 1).replace(/&[a-zA-Z0-9_='"]*/g, '').replace(/#[a-zA-Z0-9-_='"]*/g, '').replace(/\?[a-zA-Z0-9-_='"]*/g, '');
}

function getCurrentParent(current, xmldoc)
{
	var lv = xmldoc.selectSingleNode("//ApplicationMenu/Menu[@id!='appmenu' and @lv='1']/Level[@pageid='" + current + "']");
	if (lv != null)
	{
		var link = lv.parentNode.getAttribute("id");
		return xmldoc.selectSingleNode("//ApplicationMenu/Menu[@id='appmenu']/Level[@link='" + link + "']").getAttribute("pageid");
	}
	else
	{
		return current;
	}
}

function getCurrentParentLink(current, xmldoc)
{
	var lv = xmldoc.selectSingleNode("//ApplicationMenu/Menu[@id!='appmenu' and @lv='1']/Level[@pageid='" + current + "']");
	if (lv != null)
	{
		var link = lv.parentNode.getAttribute("id");
		return link
	}
	else
	{
		return "";
	}
}

function getSingleNode_NonIE(_menuNode, _nodeName, _targetName)
{
	//Get single Node for browser Safari & FireFox (2009-06-18 Alex)
	var _menu = null;
	for (var _x = 0; _x < _menuNode.length; _x++)
	{
		if (_menuNode[_x].getAttributeNode(_nodeName) != null && _menuNode[_x].getAttributeNode(_nodeName).nodeValue == _targetName)
			{_menu = _menuNode[_x]; break; }
	}
	return _menu;
}

function getCurrentParent_NonIE(_current, _menuNode)
{

	//Get Current Parent for browser Safari & FireFox (2009-06-18 Alex)
    	var _lv = null;
	for (var _x = 0; _x < _menuNode.length; _x++)
	{
		if (_menuNode[_x].getAttributeNode("lv") != null && _menuNode[_x].getAttributeNode("lv").nodeValue == "1" && _menuNode[_x].getAttributeNode("id").nodeValue != "appmenu")
		{
			var _menulevel1 = _menuNode[_x].getElementsByTagName("Level");

			for (var _y = 0; _y< _menulevel1.length; _y++)
			{

				if (_menulevel1[_y].getAttributeNode("pageid") != null && _menulevel1[_y].getAttributeNode("pageid").nodeValue == _current)
					{_lv = _menulevel1[_y]; break; }
			}
			if (_lv != null)
				break;
		}
		if (_lv != null)
			break;
	}

	if (_lv != null)
	{
        	var _link = _lv.parentNode.getAttributeNode("id").nodeValue;
		var _id = null;
		for (var _z = 0; _z < _menuNode.length; _z++)
		{
			if (_menuNode[_z].getAttributeNode("id") != null && _menuNode[_z].getAttributeNode("id").nodeValue == "appmenu")
			{
				var _menulevel0 = _menuNode[_z].getElementsByTagName("Level");
				for (var _v = 0; _v < _menulevel0.length; _v++)
				{
					if (_menulevel0[_v].getAttributeNode("link").nodeValue == _link)
						{_id = _menulevel0[_v].getAttributeNode("pageid").nodeValue; break; }
				}
				if (_id != null)
					break;
			}
			if (_id != null)
				break;
		}
		return _id;
    	}
    	else
    	{
        	return _current;
    	}
}

function getCurrentParentLink_NonIE(_current, _menuNode)
{
	//Get Current Parent Link for browser Safari & FireFox (2009-06-18 Alex)
    	var _lv = null;
	for (var _x = 0; _x < _menuNode.length; _x++)
	{
		if (_menuNode[_x].getAttributeNode("lv") != null && _menuNode[_x].getAttributeNode("lv").nodeValue == "1" && _menuNode[_x].getAttributeNode("id").nodeValue != "appmenu")
		{
			var _menulevel1 = _menuNode[_x].getElementsByTagName("Level");

			for (var _y = 0; _y< _menulevel1.length; _y++)
			{

				if (_menulevel1[_y].getAttributeNode("pageid") != null && _menulevel1[_y].getAttributeNode("pageid").nodeValue == _current)
					{_lv = _menulevel1[_y]; break; }
			}
			if (_lv != null)
				break;
		}
	}

	if (_lv != null)
	{
        	var _link = _lv.parentNode.getAttributeNode("id").nodeValue;
		return _link;
    	}
    	else
    	{
        	return "";
    	}
}

function getDocName() 
{
	//var path = document.location.href;
	//var end = (path.indexOf("?") == -1) ? path.length : path.indexOf("?");
	//var end = (path.indexOf("#") == -1) ? path.length : path.indexOf("#");
	//return path.substring(path.lastIndexOf("/") + 1, end);

	var page_Path = document.location.href.toLowerCase();
	var page_Query = document.location.search.toLowerCase();
	var page_Sharp = (page_Path.indexOf("#") == -1) ? page_Path.length : page_Path.indexOf("#");

	var page_Name = page_Path.replace(page_Query, "");
	page_Name = page_Name.substring(page_Name.lastIndexOf("/") + 1, page_Sharp);
	return page_Name;
}

var closeTimer = new Array();
function setupMenu()
{
	$("#schSiteNav>ul>li>a, .dropmenu_l1>li>a, .dropmenu_l2>li>a").hover(function() 
	{
		var menuItem = $(this);
		var maxLength = 0;

		var lv = parseInt(menuItem.attr("lv"));
		var ul = $("ul#" + menuItem.attr("link"));

		// Cancel hide menu of this menu
		if (closeTimer[menuItem.parents("ul").attr("id")])
			window.clearTimeout(closeTimer[menuItem.parents("ul").attr("id")]);
		if (lv > 1) 
		{
			var id = menuItem.parents("ul").attr("id");
			window.clearTimeout(closeTimer[$("a[@link=" + id + "]").parents("ul").attr("id")]);
		}

		if (ul.length > 0) 
		{
			ul.css("visibility", "hidden");
			ul.css("display", "block");
			// adjust width first
			if (lv >= 0) 
			{
				if (ul.find("li").css("width").indexOf("px") < 0) 
				{
					ul.find("li").siblings().each(function() {
                        		if ($(this).outerWidth() > maxLength) {
                            		maxLength = $(this).outerWidth();
                        		}
                    			});
                    ul.find("li").siblings().each(function() {
                        $(this).find("a").width((maxLength));
                        $(this).find("a").css("padding-right", "15px");
                        $(this).find("a").css("background-position-x", "right");
                        $(this).width(maxLength);
                        if (getDocName().indexOf(".aspx") < 0)
                            $(this).find("a").width((maxLength + 15));
						if (getDocName().indexOf(".aspx") >= 0 && $.browser.msie == true && $.browser.version.indexOf("7") >= 0)
						{
							$(this).width((maxLength + 18));
						}
                    });
                    //alert(maxLength);
                }
            }
            if (lv == 0) {
                var offset = [$('#schSiteNav').position().left, $('#schSiteNav').position().top];
                ul.css("top", menuItem.scrollTop() + menuItem.outerHeight() + offset[1]);
                ul.css('left', menuItem.position().left + offset[0]);
            }
            else {
                var offset = [menuItem.parent("li").parent("ul").outerWidth(), $('#schSiteNav').position().top + $('#schSiteNav>ul>li>a').outerHeight()];
                ul.css("top", menuItem.parent("li").position().top + offset[1]);
                ul.css('left', menuItem.parent("li").parent("ul").position().left + offset[0]);
            }
            ul.css("visibility", "visible");
        }
    }, function() {

        var menuItem = $(this);
        var lv = parseInt(menuItem.attr("lv"));
        closeTimer[menuItem.attr("link")] = window.setTimeout(function() {
            $("ul#" + menuItem.attr("link")).css("display", "none");
        }, 300);
        if (lv > 0)
            closeTimer[menuItem.parent("li").parent("ul").attr("id")] = window.setTimeout(function() {
                menuItem.parent("li").parent("ul").css("display", "none");
            }, 300);
        if (lv == 2) {
            var id = menuItem.parents("ul").attr("id");
            closeTimer[$("a[@link=" + id + "]").parents("ul").attr("id")] = window.setTimeout(function() {
                $("a[@link=" + id + "]").parents("ul").css("display", "none");
            }, 300);
        }
    });
}