GetMenuXML();
function GetMenuXML()
{
	var t0 = new Date().getTime();
	advAJAX.get
	({
		//url: "offices.xml",
		url: "js/menu1.xml",
		//url: "modules/xml_structure_menugenerator.inc.php",
		parameters : {
			"unique" : "custom_unique_param"+( 100 * Math.random() )
		},
		headers : {
			 "Content-type" : "text/xml; charset=UTF-8"
		},
		timeout : 5000,
		retry: 2,
		retryDelay: 2000,
		onInitialization : function( obj ) {},
		onLoading : function( obj ) {},
		onSuccess : function( obj ) {},
		onError : function( obj ) { alert( "Error while loading XML offices data!\n"+obj.status ); },
		onFinalization : function( obj )
		{
			obj.responseText = obj.responseText.replace( "&", "&amp;" );											// <- Zamien znaki, ktore wywoluja bledy podczas parsowania XMLa
			obj.responseText = obj.responseText.replace( new RegExp( "^\n|\t", "gm" ), "" );			// <- Usun puste linijki i tabulacje
			if( document.all )
			{
				var xmlDocument = new ActiveXObject('Microsoft.XMLDOM');
				xmlDocument.async = false;
				xmlDocument.loadXML( obj.responseText );
			}
			else
			{
				var xmlDocument = new DOMParser().parseFromString( obj.responseText, 'application/xml');
			}

			// Wstaw na stronę informację z czasem generowania menu (ms)
			t1 = new Date().getTime();
			var t_ms = t1 - t0;
			//document.getElementById("div_menutime").innerHTML = t_ms;

			// Przygotuj objekt XML do dalszej obrobki
			//alert( obj.responseText );
			if( document.all ) var xml = xmlDocument.documentElement;
			else var xml = xmlDocument.firstChild;

			MenuParseXML( xml );
			return;
		}
	});
}


function MenuParseXML( xml )
{
	xml = xml.childNodes; // <-- skocz do listy dzieci

	for ( var i = 0; i< xml.length; i++ )	 // <-- Odszukaj <pages>
	{
		if( xml[i].nodeName != "#text" ) if( xml[i].nodeName == "pages" ) // <-- odszukaj na liscie dzieci node o nazwie "pages" i przejdz tam
		{
			var menu_id = xml[i].getAttribute('menu_id');
			MenuMakeArray( xml[i], menu_id );
			//menu_id_arr.push( menu_id );
			//MenuMakeArray( xml[i], menu_id );
		}
	}
	return;
}


var MenusArray = Array();
function MenuMakeArray( xml, menu_id, level )
{
	// Ustal startowy level
	if( !level ) level = 0;
	// Dodaj to tablicy z menusami akutalnie przetwarzane menu
	level == 0 ? menu_id = "menu"+menu_id : menu_id = "submenu"+menu_id;
	MenusArray[ menu_id ] = Array();
	// Parsuj XMLa
	var xml_pages = xml.childNodes;
	// <pages>
	for( var page_no = 0; page_no < xml_pages.length; page_no++ )
	{
		// <page>
		if( xml_pages[ page_no ].nodeName == "page" )
		{
			var array_page = Array();
			var xml_page = xml_pages[ page_no ].childNodes;
			for( var var_no = 0; var_no < xml_page.length; var_no++ ) if( xml_page[ var_no ].nodeName != "#text" )
			{
				// <page> - node values
				var page_var = xml_page[ var_no ].nodeName;
				var page_val;
				xml_page[ var_no ].firstChild ? page_val = xml_page[ var_no ].firstChild.nodeValue : page_val = null;
				if( page_var == "m" ) var m = page_val;
				//if( page_var == "label" ) alert( page_var+" = "+page_val );
				// Dodaj do tablicy dane o pages dla tego menu
				array_page[ page_var ] = page_val;
				if( page_var == "pages" ) MenuMakeArray( xml_page[ var_no ], m, level+1 );
			}
			m = null;
			MenusArray[ menu_id ].push( array_page );
		}
	}
}

