
			function menu_click( struct ) {
				menu_nodes_open[struct] = struct;
				menu_cookies_set( );
				return true;
			}
			
			function menu_click_close( struct ) {
				if( menu_nodes_open[struct] == struct ) {
					//alert( 'navclick: close' );
					delete menu_nodes_open[struct];
					menu_cookies_set( );
					menu_display( );
					return false;
				} else {
					//alert( 'navclick: open' );
					menu_click( struct );
					return true;
				}
			}
			
			function menu_cookies_set( ) {
				var str = menu_nodes_serialize( menu_nodes_open );
				document.cookie = 'pl_menu_nodes='+str+';path=/;';
			}
			
			function menu_cookies_load( ) {
				var list = [];
				var cookiestring = menu_cookies_load_search( );
				//alert( cookiestring );
				if( cookiestring.length > 0 ) {
					list = menu_nodes_deserialize( cookiestring )
				}
				return list;
			}
			
			function menu_cookies_load_search( ) {
				var value = ''; 
				var search = 'pl_menu_nodes='; 
				var end = 0;
				if( document.cookie.length > 0 ) {  
					offset = document.cookie.indexOf( search ); 
					if(offset != -1) {  
						offset += search.length; 
						end = document.cookie.indexOf( ';', offset ); 
						if( end == -1 ) end = document.cookie.length; 
						value = document.cookie.substring(offset, end) 
					}
				}
				return value;
			}
			
			function menu_list_display( struct ) {
				var list = document.getElementById( 'pl-menu-list-'+struct );
				if( list ) list.style.display = 'inline';
				var span = document.getElementById( 'pl-menu-nav-'+struct );
				if( span && span.innerHTML != '' ) {
					span.innerHTML = '-';
				}
			}
			
			function menu_list_hide( struct ) {
				var list = document.getElementById( 'pl-menu-list-'+struct );
				if( list ) list.style.display = 'none';
				var span = document.getElementById( 'pl-menu-nav-'+struct );
				if( span && span.innerHTML != '' ) {
					span.innerHTML = '+';
				}
			}
			
			function menu_nodes_serialize( a ) {
				var str = '';
				for( var struct in a ) {
					str += struct + '/';
				}
				return str.substring( 0, str.length - 1 );
			}
			
			function menu_nodes_deserialize( s ) {
				var list = [];
				var items = s.split( '/' );
				for( var i in items ) {
					struct = parseInt( items[i] );
					list[struct] = struct;
				}
				return list;
			}
			
			function menu_display( ) {
				if( menu_nodes_open_old ) {
					for( var struct in menu_nodes_deserialize( menu_nodes_open_old ) ) {
						menu_list_hide( struct );
					}
				}
				for( var struct in menu_nodes_open ) {
					menu_list_display( struct );
				}
				menu_nodes_open_old = menu_nodes_serialize( menu_nodes_open ) ;
			}
			