function createXmlHttpRequest() 
{
	if (typeof XMLHttpRequest != "undefined")
		return new XMLHttpRequest();
	var xhrVersion = [ "MSXML2.XMLHttp.5.0", "MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0",
			"MSXML2.XMLHttp","Microsoft.XMLHttp" ];
	for (var i = 0; i < xhrVersion.length; i++) {
		try {
			var xhrObj = new ActiveXObject(xhrVersion[i]);
			return xhrObj;
		} catch (e) { }
	}
	obj.raiseEvent("FatalError");
	return null;
};

if (typeof XPathEvaluator != 'undefined')
{

	XMLDocument.prototype.selectSingleNode = function (sXPath) {
		var oEvaluator = new XPathEvaluator();
		var oResult = oEvaluator.evaluate(sXPath, this, null, 
			XPathResult.FIRST_ORDERED_NODE_TYPE, null);
		if (oResult != null) {
			return oResult.singleNodeValue;
		} else {
			return null;
		}
	};
	
	Element.prototype.selectNodes = function (sXPath) {
	    var oEvaluator = new XPathEvaluator();
	    var oResult = oEvaluator.evaluate(sXPath, this, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);    
		  
		var aNodes = new Array;
	    
	    if (oResult != null) 
		{
	        var oElement = oResult.iterateNext();
	        while(oElement) 
			{
	            aNodes.push(oElement);
	            oElement = oResult.iterateNext();
	        }
	    }
	    
    return aNodes;
	};
	
}



function GetXML(xmlDocument)
{
	if (typeof XMLSerializer != 'undefined')
	{
		return new XMLSerializer().serializeToString(xmlDocument);
	}
	else
		return xmlDocument.xml;
}






/////////////////////////////////////////////////////////////////////

function MenuItem(DOMNode)
{
	if (DOMNode)
	{
		this.nodeName	= DOMNode.nodeName;
		this.name		= DOMNode.getAttribute("text") || '';
		this.url		= DOMNode.getAttribute("url") || '';
		this.target		= DOMNode.getAttribute("target") || '';
		
		var name1		= DOMNode.getAttribute("text") || '';
		var url1		= DOMNode.getAttribute("url") || '';
		var target		= DOMNode.getAttribute("target") || '';
		
		
		
		//var urlaf       = "<a href='"+ var url1 + "target ="+ var target +"'>"+ var name1 + "</a>"
		//this.action		= DOMNode.getAttribute("action") || '';
		//this.disable	= parseInt(DOMNode.getAttribute("disable")) ? true : false;
		//this.auto		= true;
		//this.InputFile	= null;
	}
	else
	{
		this.nodeName	= '';
		this.name		= '';
		this.url		= '';
		this.target		= '';
		this.action		= '';
		this.disable	= false;
		this.auto 		= false;
		this.InputFile	= null;
	}	
	this.children	= [];
	
	this.saveToXML = function(parentNode)
	{
		
	}
	
	this.getRow = function() 
	{
		var rootTab = document.getElementById('tab');
		var tr = rootTab.getElementsByTagName('TR');
		for (var i=0; i<tr.length; i++)
			if (tr[i].MenuItemElement == this)
				return tr[i];
		return null;
	}
}


var buttonsNode;
var menus = [];

function rebuildButtonsNode()
{
	
}

function reportStatus()
{
	if (xmlHttp.readyState == 4)
	{
		buttonsNode = xmlHttp.responseXML.selectSingleNode('/menu/buttons');
		var mainNodes = buttonsNode.selectNodes('./main');		
		for (var i=0; i < mainNodes.length; i++)
		{
			var menuItem = new MenuItem(mainNodes[i]);
			
			var subNodes = mainNodes[i].selectNodes('./sub');			
			for (var j=0; j < subNodes.length; j++)
			{
				menuItem.children[menuItem.children.length] = new MenuItem(subNodes[j]);;
			}			
			menus[menus.length] = menuItem;
		}
	}
}



function addLine(table, menuItem, lvl, pos)
{
	var tr = table.insertRow(pos);
	var td;
	var obj;
	//tr.insertCell(-1).className = "none";
	tr.MenuItemElement = menuItem;
	td = tr.insertCell(-1);
	td.className = "menuName";
	td.colSpan = 3;
	td = tr.insertCell(-1);
	td.className = "menuName";
	obj = document.createElement('BUTTON');
	obj.appendChild(document.createTextNode(menuItem.name));
	
	//obj.appendChild(document.createTextNode(list.items[i].caption));
	//obj.value =menuItem.name;
	obj.style.width = 540 ;
	obj.style.height = 30 ;
	obj.style.backgroundColor="#D2D2D2"
	obj.style.fontWeight="bold";
	obj.onclick = function(){
							if (menuItem.target == "_blank")
								{
								blank.location.href=menuItem.url
								}
							if (menuItem.target == "_self")
								{
								self.location.href=menuItem.url
								}	
							if (menuItem.target == "_parent")
								{
								parent.location.href=menuItem.url
								}		
							}
							 //parentElement.appendChild(newLink);
	td.appendChild(obj);
	
	

	
	
	//td = tr.insertCell(-1);
	//td.className = "menuUrl";
	//obj = document.createElement('INPUT');
	//obj.value = menuItem.url;
	//obj.style.width = 400 - (lvl*3);
	//obj.onchange = changeValues;
	//td.appendChild(obj);
	
	
	
	//td = tr.insertCell(-1);
	//td.className = "menuTarget";
	//obj = document.createElement('INPUT');
	//obj.value = menuItem.target;
	//obj.style.width = 100 - (lvl*3);
	//obj.onchange = changeValues;
	//td.appendChild(obj);
	
	
	
	
	
	
	
	
	
}

function buildTable(table, menu, lvl)
{
	
	
	lvl = lvl || 0;
	for (var i = 0; i<menu.length; i++)
	{
		addLine(table, menu[i], lvl, table.rows.length);
	}
}


function show()
{
	if (!buttonsNode)
	{
		setTimeout("show()", 500);
		return;
	}
	
	rebuildButtonsNode();	
	
	document.getElementById('output').innerText = GetXML(xmlHttp.responseXML);
	
	var table = document.getElementById('tab');
	
	buildTable(table, menus);
	
	
}
function changeValues()
{
	var menuItem = this.parentNode.parentNode.MenuItemElement;
	switch (this.parentNode.className)
	{
		case 'menuName':
			menuItem.name = this.value;
			break;
		case 'menuUrl':
			menuItem.url = this.value;
			break;
		case 'menuTarget':
			menuItem.target = this.value;
			break;
		case 'menuAction':
			menuItem.action = this.value;
			break;
		case 'menuDisable':
			menuItem.disable = this.checked;
			break;
	}
}


var xmlHttp = createXmlHttpRequest();
xmlHttp.onreadystatechange = reportStatus;
xmlHttp.open("GET", filename, true);
xmlHttp.setRequestHeader("If-Modified-Since", new Date(0));
xmlHttp.send("");


