var menu_arr =
{ submenu : [
            { title:'Home', path:'', src: 'index', ext: 'php'},
            { title:'Announcements', path:'', src:'announcements'},
            { title:'My Account', path:'my_account',
              submenu: [
                       { title:'Account Details', path:'', src:'account_details'},
                       { title:'My Downloads', path:'', src:'downloads'}
                       ]
            },
            { title:'Xport', path:'xport',
              submenu:  [ { title:'Overview', path:'', src:'overview'},
                        { title:'Usage', path:'usage',
                          submenu:  [
                                    { title:'Overview', path:'', src:'overview'},
                                    { title:'Project Inclusion', path:'', src:'project_inclusion'},
                                    { title:'Character Types', path:'', src:'character_types'},
                                    { title:'Document Types', path:'', src:'document_types'},
                                    { title:'Enumerations', path:'', src:'enumerations'},
                                    { title:'XHTML Generation', path:'', src:'xhtml_generation'},
                                    { title:'Stylesheet Generaion', path:'', src:'stylesheet_generation'},
                                    { title:'XHTML Parsing', path:'', src:'xhtml_parsing'},
                                    { title:'Stylesheet Parsing', path:'', src:'stylesheet_parsing'}
                                    ]
                        },
                        { title:'Interface', path:'interface',
                          submenu:  [
                                    { title:'Overview', path:'', src:'overview'},
                                    { title:'xhtml classes', path:'xhtml_classes',
                                      submenu:  [
                                                { title:'Overview', path:'', src:'overview'},
                                                { title:'document', path:'document',
                                                  submenu:  [
                                                            { title:'Overview', path:'', src:'overview'},
                                                            { title:'begin', path:'', src:'begin'},
                                                            { title:'body', path:'', src:'body'},
                                                            { title:'clear', path:'', src:'clear'},
                                                            { title:'descendant_begin', path:'', src:'descendant_begin'},
                                                            { title:'descendant_end', path:'', src:'descendant_end'},
                                                            { title:'document', path:'', src:'document'},
                                                            { title:'document_type', path:'', src:'document_type'},
                                                            { title:'end', path:'', src:'end'},
                                                            { title:'frameset', path:'', src:'frameset'},
                                                            { title:'head', path:'', src:'head'},
                                                            { title:'html', path:'', src:'html'},
                                                            { title:'insert', path:'', src:'insert'},
                                                            { title:'insertion operator &lt;&lt;', path:'', src:'insertion_operator'},
                                                            { title:'parse', path:'', src:'parse'},
                                                            { title:'title', path:'', src:'title'},
                                                            { title:'write', path:'', src:'write'}
                                                            ]
                                                },
                                                { title:'markup', path:'markup',
                                                  submenu:  [
                                                            { title:'Overview', path:'', src:'overview'},
                                                            { title:'attribute', path:'', src:'attribute'},
                                                            { title:'attributes', path:'', src:'attributes'},
                                                            { title:'back', path:'', src:'back'},
                                                            { title:'begin', path:'', src:'begin'},
                                                            { title:'clear', path:'', src:'clear'},
                                                            { title:'descendant_begin', path:'', src:'descendant_begin'},
                                                            { title:'descendant_end', path:'', src:'descendant_end'},
                                                            { title:'empty', path:'', src:'empty'},
                                                            { title:'end', path:'', src:'end'},
                                                            { title:'erase', path:'', src:'erase'},
                                                            { title:'front', path:'', src:'front'},
                                                            { title:'insert', path:'', src:'insert'},
                                                            { title:'operator &lt;&lt;', path:'', src:'inserter_operator'},
                                                            { title:'markup_type', path:'', src:'markup_type'},
                                                            { title:'parent', path:'', src:'parent'},
                                                            { title:'pop_back', path:'', src:'pop_back'},
                                                            { title:'pop_front', path:'', src:'pop_front'},
                                                            { title:'push_back', path:'', src:'push_back'},
                                                            { title:'push_front', path:'', src:'push_front'},
                                                            { title:'rbegin', path:'', src:'rbegin'},
                                                            { title:'rend', path:'', src:'rend'},
                                                            { title:'size', path:'', src:'size'},
                                                            { title:'style', path:'', src:'style'},
                                                            { title:'styles', path:'', src:'styles'},
                                                            { title:'tag', path:'', src:'tag'},
                                                            { title:'tag_name', path:'', src:'tag_name'},
                                                            { title:'write', path:'', src:'write'}
                                                            ]
                                                },
                                                { title:'element', path:'element',
                                                  submenu:  [
                                                            { title:'Overview', path:'', src:'overview'},
                                                            { title:'attribute', path:'', src:'attribute'},
                                                            { title:'attributes', path:'', src:'attributes'},
                                                            { title:'back', path:'', src:'back'},
                                                            { title:'begin', path:'', src:'begin'},
                                                            { title:'clear', path:'', src:'clear'},
                                                            { title:'descendant_begin', path:'', src:'descendant_begin'},
                                                            { title:'descendant_end', path:'', src:'descendant_end'},
                                                            { title:'element', path:'', src:'element'},
                                                            { title:'empty', path:'', src:'empty'},
                                                            { title:'end', path:'', src:'end'},
                                                            { title:'erase', path:'', src:'erase'},
                                                            { title:'front', path:'', src:'front'},
                                                            { title:'insert', path:'', src:'insert'},
                                                            { title:'operator &lt;&lt;', path:'', src:'inserter_operator'},
                                                            { title:'markup_type', path:'', src:'markup_type'},
                                                            { title:'parent', path:'', src:'parent'},
                                                            { title:'pop_back', path:'', src:'pop_back'},
                                                            { title:'pop_front', path:'', src:'pop_front'},
                                                            { title:'push_back', path:'', src:'push_back'},
                                                            { title:'push_front', path:'', src:'push_front'},
                                                            { title:'rbegin', path:'', src:'rbegin'},
                                                            { title:'rend', path:'', src:'rend'},
                                                            { title:'size', path:'', src:'size'},
                                                            { title:'style', path:'', src:'style'},
                                                            { title:'styles', path:'', src:'styles'},
                                                            { title:'tag', path:'', src:'tag'},
                                                            { title:'tag_name', path:'', src:'tag_name'},
                                                            { title:'write', path:'', src:'write'}
                                                            ]
                                                },
                                                { title:'pcdata', path:'pcdata',
                                                  submenu:  [
                                                            { title:'Overview', path:'', src:'overview'},
                                                            { title:'pcdata', path:'', src:'pcdata'},
                                                            { title:'operator &lt;&lt;', path:'', src:'inserter_operator'},
                                                            { title:'markup_type', path:'', src:'markup_type'},
                                                            { title:'parent', path:'', src:'parent'},
                                                            { title:'write', path:'', src:'write'}
                                                            ]
                                                },
                                                { title:'comment', path:'comment',
                                                  submenu:  [
                                                            { title:'Overview', path:'', src:'overview'},
                                                            { title:'comment', path:'', src:'comment'},
                                                            { title:'operator &lt;&lt;', path:'', src:'inserter_operator'},
                                                            { title:'markup_type', path:'', src:'markup_type'},
                                                            { title:'parent', path:'', src:'parent'},
                                                            { title:'write', path:'', src:'write'}
                                                            ]
                                                },
                                                { title:'procinstr', path:'procinstr',
                                                  submenu:  [
                                                            { title:'Overview', path:'', src:'overview'},
                                                            { title:'operator &lt;&lt;', path:'', src:'inserter_operator'},
                                                            { title:'procinstr', path:'', src:'procinstr'},
                                                            { title:'markup_type', path:'', src:'markup_type'},
                                                            { title:'parent', path:'', src:'parent'},
                                                            { title:'write', path:'', src:'write'}
                                                            ]
                                                },
                                                { title:'formatter', path:'formatter',
                                                  submenu:  [
                                                            { title:'Overview', path:'', src:'overview'},
                                                            { title:'formatter', path:'', src:'formatter'},
                                                            { title:'layout_style', path:'', src:'layout_style'},
                                                            { title:'operator &lt;&lt;', path:'', src:'insertion_operator'},
                                                            { title:'operator !', path:'', src:'operator_bool'},
                                                            { title:'option', path:'', src:'option'}
                                                            ]
                                                },
                                                { title:'parser', path:'parser',
                                                  submenu:  [
                                                            { title:'Overview', path:'', src:'overview'},
                                                            { title:'add_entity', path:'', src:'add_entity'},
                                                            { title:'doctype', path:'', src:'doctype'},
                                                            { title:'entity_appearance', path:'', src:'entity_appearance'},
                                                            { title:'option', path:'', src:'option'},
                                                            { title:'operator !', path:'', src:'operator_bool'},
                                                            { title:'parser', path:'', src:'parser'}
                                                            ]
                                                }
                                                ]
                                    },
                                    { title:'stylesheet classes', path:'stylesheet_classes',
                                      submenu:  [
                                                { title:'Overview', path:'', src:'overview'},
                                                { title:'stylesheet', path:'stylesheet1',
                                                  submenu:  [
                                                            { title:'overview', path:'', src:'overview'},
                                                            { title:'at', path:'', src:'at'},
                                                            { title:'begin', path:'', src:'begin'},
                                                            { title:'clear', path:'', src:'clear'},
                                                            { title:'empty', path:'', src:'empty'},
                                                            { title:'end', path:'', src:'end'},
                                                            { title:'erase', path:'', src:'erase'},
                                                            { title:'insert', path:'', src:'insert'},
                                                            { title:'operator =', path:'', src:'assignment_operator'},
                                                            { title:'operator &lt;&lt;', path:'', src:'insertion_operator'},
                                                            { title:'operator ==, !=', path:'', src:'equality_operator'},
                                                            { title:'operator []', path:'', src:'subscript_operator'},
                                                            { title:'parse', path:'', src:'parse'},
                                                            { title:'push_back', path:'', src:'push_back'},
                                                            { title:'size', path:'', src:'size'},
                                                            { title:'stylesheet', path:'', src:'stylesheet'},
                                                            { title:'write', path:'', src:'write'}
                                                            ]
                                                },
                                                { title:'stylesheet_item', path:'stylesheet_item',
                                                  submenu:  [
                                                            { title:'overview', path:'', src:'overview'},
                                                            { title:'at', path:'', src:'at'},
                                                            { title:'begin', path:'', src:'begin'},
                                                            { title:'clear', path:'', src:'clear'},
                                                            { title:'empty', path:'', src:'empty'},
                                                            { title:'end', path:'', src:'end'},
                                                            { title:'erase', path:'', src:'erase'},
                                                            { title:'insert', path:'', src:'insert'},
                                                            { title:'operator &lt;&lt;', path:'', src:'insertion_operator'},
                                                            { title:'operator []', path:'', src:'subscript_operator'},
                                                            { title:'operator ==', path:'', src:'equality_operator'},
                                                            { title:'push_back', path:'', src:'push_back'},
                                                            { title:'selector', path:'', src:'selector'},
                                                            { title:'size', path:'', src:'size'},
                                                            { title:'stylesheet_item_type', path:'', src:'stylesheet_item_type'},
                                                            { title:'write', path:'', src:'write'}
                                                            ]
                                                },
                                                { title:'stylesheet_rule', path:'stylesheet_rule',
                                                  submenu:  [
                                                            { title:'overview', path:'', src:'overview'},
                                                            { title:'at', path:'', src:'at'},
                                                            { title:'begin', path:'', src:'begin'},
                                                            { title:'clear', path:'', src:'clear'},
                                                            { title:'empty', path:'', src:'empty'},
                                                            { title:'end', path:'', src:'end'},
                                                            { title:'erase', path:'', src:'erase'},
                                                            { title:'insert', path:'', src:'insert'},
                                                            { title:'operator &lt;&lt;', path:'', src:'insertion_operator'},
                                                            { title:'operator []', path:'', src:'subscript_operator'},
                                                            { title:'push_back', path:'', src:'push_back'},
                                                            { title:'selector', path:'', src:'selector'},
                                                            { title:'stylesheet_item_type', path:'', src:'stylesheet_item_type'},
                                                            { title:'stylesheet_rule', path:'', src:'stylesheet_rule'},
                                                            { title:'write', path:'', src:'write'}
                                                            ]
                                                },
                                                { title:'stylesheet_comment', path:'stylesheet_comment',
                                                  submenu:  [
                                                            { title:'overview', path:'', src:'overview'},
                                                            { title:'stylesheet_comment', path:'', src:'stylesheet_comment'},
                                                            { title:'stylesheet_item_type', path:'', src:'stylesheet_item_type'},
                                                            { title:'write', path:'', src:'write'}
                                                            ]
                                                },
                                                { title:'stylesheet_import', path:'stylesheet_import',
                                                  submenu:  [
                                                            { title:'overview', path:'', src:'overview'},
                                                            { title:'stylesheet_import', path:'', src:'stylesheet_import'},
                                                            { title:'stylesheet_item_type', path:'', src:'stylesheet_item_type'},
                                                            { title:'write', path:'', src:'write'}
                                                            ]
                                                },
                                                { title:'declaration', path:'declaration',
                                                  submenu:  [
                                                            { title:'overview', path:'', src:'overview'},
                                                            { title:'declaration', path:'', src:'declaration'},
                                                            { title:'operator ==', path:'', src:'equality_operator'},
                                                            { title:'property', path:'', src:'property'},
                                                            { title:'property_name', path:'', src:'property_name'},
                                                            { title:'value', path:'', src:'value'}
                                                            ]
                                                },
                                                { title:'sytlesheet_formatter', path:'stylesheet_formatter',
                                                  submenu:  [
                                                            { title:'overview', path:'', src:'overview'},
                                                            { title:'operator !', path:'', src:'operator_bool'},
                                                            { title:'operator &lt;&lt;', path:'', src:'insertion_operator'},
                                                            { title:'option', path:'', src:'option'},
                                                            { title:'stylesheet_formatter', path:'', src:'stylesheet_formatter'}
                                                            ]
                                                }
                                                ]
                                    },
                                    { title:'iterator classes', path:'iterator_classes',
                                      submenu:  [
                                                { title:'Overview', path:'', src:'overview'},
                                                { title:'markup iterator', path:'markup_iterator',
                                                  submenu:  [
                                                            { title:'overview', path:'', src:'overview'},
                                                            { title:'iterator', path:'', src:'iterator'},
                                                            { title:'operator --', path:'', src:'operator_decr'},
                                                            { title:'operator *', path:'', src:'operator_deref'},
                                                            { title:'operator ==', path:'', src:'operator_eq'},
                                                            { title:'operator ++', path:'', src:'operator_incr'},
                                                            { title:'operator -&gt;', path:'', src:'operator_ptr'}
                                                            ]
                                                },
                                                { title:'reverse markup iterator', path:'reverse_markup_iterator',
                                                  submenu:  [
                                                            { title:'overview', path:'', src:'overview'},
                                                            { title:'base', path:'', src:'base'},
                                                            { title:'operator --', path:'', src:'operator_decr'},
                                                            { title:'operator *', path:'', src:'operator_deref'},
                                                            { title:'operator ==', path:'', src:'operator_eq'},
                                                            { title:'operator ++', path:'', src:'operator_incr'},
                                                            { title:'operator -&gt;', path:'', src:'operator_ptr'},
                                                            { title:'reverse_iterator', path:'', src:'reverse_iterator'}
                                                            ]
                                                },
                                                { title:'descendant markup iterator', path:'descendant_markup_iterator',
                                                  submenu:  [
                                                            { title:'overview', path:'', src:'overview'},
                                                            { title:'descendant_iterator', path:'', src:'descendant_iterator'},
                                                            { title:'operator --', path:'', src:'operator_decr'},
                                                            { title:'operator *', path:'', src:'operator_deref'},
                                                            { title:'operator ==', path:'', src:'operator_eq'},
                                                            { title:'operator ++', path:'', src:'operator_incr'},
                                                            { title:'operator -&gt;', path:'', src:'operator_ptr'}
                                                            ]
                                                },
                                                { title:'stylesheet iterator', path:'stylesheet_iterator',
                                                  submenu:  [
                                                            { title:'overview', path:'', src:'overview'},
                                                            { title:'iterator', path:'', src:'iterator'},
                                                            { title:'operator --', path:'', src:'operator_decr'},
                                                            { title:'operator *', path:'', src:'operator_deref'},
                                                            { title:'operator ==', path:'', src:'operator_eq'},
                                                            { title:'operator ++', path:'', src:'operator_incr'},
                                                            { title:'operator -&gt;', path:'', src:'operator_ptr'}
                                                            ]
                                                },
                                                { title:'stylesheet item iterator', path:'stylesheet_item_iterator',
                                                  submenu:  [
                                                            { title:'overview', path:'', src:'overview'},
                                                            { title:'iterator', path:'', src:'iterator'},
                                                            { title:'operator --', path:'', src:'operator_decr'},
                                                            { title:'operator *', path:'', src:'operator_deref'},
                                                            { title:'operator ==', path:'', src:'operator_eq'},
                                                            { title:'operator ++', path:'', src:'operator_incr'},
                                                            { title:'operator -&gt;', path:'', src:'operator_ptr'}
                                                            ]
                                                }
                                                ]
                                    }
                                    ]
                        },
                        { title:'Iterators', path:'iterators',
                          submenu:  [ { title:'Iterator Overview', path:'', src:'iterator_overview'},
                                    { title: 'Markup Iterators', path:'', src:'markup_iterators'},
                                    { title:'Descendant Markup Iterators', path:'', src:'descendant_iterators'},
                                    { title:'Reverse Markup Iterators', path:'', src:'reverse_markup_iterators'},
                                    { title:'Stylesheet Iterators', path:'', src:'stylesheet_iterators'},
                                    { title:'Stylesheet Item Iterators', path:'', src:'stylesheet_item_iterators'}
                                    ]
                        },
                        { title:'Design', path:'', src:'design'},
                        { title:'Examples', path:'examples',
                          submenu:  [
                                    { title:'Overview', path:'', src:'overview'},
                                    { title:'Xport Brochure', path:'', src:'xport_brochure'},
                                    { title:'US Stat Report Suite', path:'us_stat_report_suite',
                                      submenu: [
                                               { title:'Overview', path:'', src:'overview'},
                                               { title:'Source Code', path:'source_code',
                                                 submenu: [
                                                          { title:'Base class', path:'', src:'base_class'},
                                                          { title:'Helper constructs', path:'', src:'helper_constructs'},
                                                          { title:'Data file', path:'', src:'data_file'},
                                                          { title:'Report classes', path:'', src:'report_classes'},
                                                          { title:'main', path:'', src:'main'}
                                                          ]
                                               },
                                               { title:'Reports', path:'reports',
                                                submenu: [
                                                         { title:'Capital Reports', path:'capital_reports',
                                                           submenu: [
                                                                    { title:'State', path:'', src:'state'},
                                                                    { title:'Divisional', path:'', src:'divisional'},
                                                                    { title:'Regional', path:'', src:'regional'}
                                                                    ]
                                                         },
                                                         { title:'Sq Area Reports', path:'square_area_reports',
                                                           submenu: [
                                                                    { title:'State', path:'', src:'state'},
                                                                    { title:'Divisional', path:'', src:'divisional'},
                                                                    { title:'Regional', path:'', src:'regional'}
                                                                    ]
                                                         },
                                                         { title:'Density Reports', path:'density_reports',
                                                           submenu: [
                                                                    { title:'State', path:'', src:'state'},
                                                                    { title:'Divisional', path:'', src:'divisional'},
                                                                    { title:'Regional', path:'', src:'regional'}
                                                                    ]
                                                         }
                                                         ]
                                               },
                                               { title:'Download', path:'', src:'download'}
                                               ]
                                    },
                                    { title:'C++ Book Report', path:'book_report',
                                      submenu: [
                                               { title:'Overview', path:'', src:'overview'},
                                               { title:'Results', path:'', src:'results'}
                                               ]
                                    },
                                    { title:'Resume', path:'resume',
                                      submenu: [
                                               { title:'Overview', path:'', src:'overview'},
                                               { title:'Results', path:'', src:'results'}
                                               ]
                                    }
                                    ]
                        },
                        { title:'Development History', path:'', src:'development_history'},
                        { title:'Version History', path:'', src:'version_history'},
                        { title:'Credits', path:'', src:'credits'},
                        { title:'Documentation', path:'', src:'documentation'},
                        { title:'Download', path:'', src:'download'}
                        ]
            },
            { title:'XportPro', path:'xportpro',
              submenu:  [ { title:'Overview', path:'', src:'overview'},
                        { title:'Development History', path:'', src:'development_history'},
                        { title:'Version History', path:'', src:'version_history'},
                        { title:'Licensing', path:'', src:'licensing'},
                        { title:'Buy Now!', path:'', src:'purchase'}
                        ]
            },
            { title:'Feature Comparison', path:'', src: 'feature_comparison'},
            { title:'About Us', path:'about_us',
              submenu: [
                        { title: 'Overview', path:'', src:'overview'},
                        { title: 'Terms of Use', path:'', src:'terms_of_use'},
                        { title: 'Your Privacy', path:'', src:'your_privacy'},
                        { title: 'Contact Us', path: '', src:'contact_us'}
                      ]
            }
            ]
}


var blue_arrow_map;
var red_arrow_map;
var green_arrow_map;

var menu_movement_speed = 1;
var menu_movement_incr = 50;
var current_closing_menu_item;
var current_opening_menu_item;
var o_submenu_list;
var c_submenu_list;

function create_menu()
{
  load_arrow_array();
  var menu = document.createElement('div');
  menu.id = 'id_menu';
  var menu_container = document.getElementById('id_menu_container' );
  var menu_heading = document.createElement('h3');
  menu_heading.id = 'menu_header';
  add_top_corners( menu_container );
  menu_heading.appendChild( document.createTextNode('Menu') );

  menu_container.appendChild( menu_heading );
  menu_container.appendChild( menu );

  var level_0_menu = document.createElement('ul');
  level_0_menu.id = 'id_ul_mainmenu';
  level_0_menu.className = 'submenu';
  level_0_menu.setAttribute( 'align', 'right' );

  menu.appendChild( level_0_menu );
  insert_menu( [  ], level_0_menu, true );

  var menu_bottom = document.createElement('div');


  menu_bottom.id = 'menu_footer';
  menu_container.appendChild( menu_bottom );
  add_bottom_corners( menu_bottom );
}


function add_top_corners( container )
{
  var nw_corner = document.createElement('div');
  nw_corner.className = 'nw_corner';
  container.appendChild( nw_corner );
  var ne_corner = document.createElement('div');
  ne_corner.className = 'ne_corner';
  container.appendChild( ne_corner );

}

function add_bottom_corners( container )
{
  var se_corner = document.createElement('div');
  se_corner.className = 'se_corner';
  container.appendChild( se_corner );
  var sw_corner = document.createElement('div');
  sw_corner.className = 'sw_corner';
  container.appendChild( sw_corner );

}

// menu_level_array =
function insert_menu( menu_level_array, menu, include_submenus )
{
  var menu_array = menu_arr.submenu;
  var link_path = '';

  for ( var menu_level = 0; menu_level < menu_level_array.length; ++menu_level ) {
    link_path += menu_array[ menu_level_array[menu_level] ].path + '/';
    menu_array =  menu_array[menu_level_array[menu_level] ].submenu;
  }

  var menu_id = link_path.replace( RegExp('/','g'), '_' );

  for ( var menu_item_no = 0; menu_item_no < menu_array.length; ++menu_item_no ) {
    var menu_item = document.createElement('li');
    menu_item.id = 'id_li_menuitem_' + menu_id + ( typeof menu_array[menu_item_no].src != 'undefined' ? menu_array[menu_item_no].src : menu_array[menu_item_no].path );

    menu_item.status = 'fixed';
    menu_item.style.height = navigator.userAgent.indexOf("MSIE 5")!=-1 ? '4ex' : '3ex';  // fix for ie5

    var possible_body_id_name = 'id_body_' + menu_id + ( typeof menu_array[menu_item_no].src != 'undefined' ? menu_array[menu_item_no].src : menu_array[menu_item_no].path );
    var at_page_in_menu = ( (document.body.id.substr(0, possible_body_id_name.length ) == possible_body_id_name && typeof menu_array[menu_item_no].submenu != 'undefined') || (document.body.id == possible_body_id_name));
    // special attn to index
    if (menu_array[menu_item_no].src == 'index' && menu_item_no != 0 || (document.body.id.substr(possible_body_id_name.length, 1) != '_' && document.body.id.length != possible_body_id_name.length))
      at_page_in_menu = false;
    menu_item.className = ( at_page_in_menu ? 'menu_item_selected' : 'menu_item' );

    if ( menu_level_array.length > 0 ) { // submenu?
      var width = 10 * menu_level_array.length;
      menu_item.style.marginLeft = width + 'px';
    }

    menu_item.onmouseover = on_mouse_over_menu_item;
    menu_item.onmouseout = on_mouse_out_menu_item;
    menu_item.menu_no = menu_item_no;

    // check if My Accounts, and if not logged in
    var dont_show_my_account_sub = false;
    if (menu_array[menu_item_no].title == "My Account") {
      var login_status = document.getElementById('id_logged_in_status');
      if (login_status == null) {
        dont_show_my_account_sub = true;
        menu_array[menu_item_no].src = 'my_account';
        menu_array[menu_item_no].path = '';
      }
    }

    if ( typeof menu_array[menu_item_no].submenu == 'undefined' || dont_show_my_account_sub) {
      // not a submenu
      menu_item.status = 'fixed';
      var child_path = menu_array[menu_item_no].path;
      var menu_text = document.createElement('a');
      menu_text.href = '/' + link_path + child_path +  ( child_path.length > 0 ? '/' : '' ) + menu_array[menu_item_no].src + ( typeof menu_array[menu_item_no].ext != 'undefined' ? '.' + menu_array[menu_item_no].ext : '.php' );
      menu_text.className = 'menu_text';
      menu_text.innerHTML = menu_array[menu_item_no].title;
      menu_text.style.display = "block";
      menu_item.appendChild( menu_text );
      menu.appendChild( menu_item );
    } else {
      // submenu
      var arrow = document.createElement('img');
      var arrow_color = at_page_in_menu ? include_submenus ? 'red_s' : 'red_e' : 'blue_e';
      arrow.src = '/menu_sidebar/images/arrow_' + arrow_color + '.gif';
      arrow.className = 'menu_arrow';
      menu_item.appendChild(arrow);
      menu_item.status = 'closed';
      var menu_text = document.createElement('span');
      menu_text.className = 'menu_text';
      menu_text.innerHTML = menu_array[menu_item_no].title;
      menu_item.appendChild( menu_text );
      menu_item.onclick = on_mouse_click_menu_item;
      menu.appendChild( menu_item );
      if ( include_submenus && at_page_in_menu && typeof menu_array[menu_item_no].submenu != 'undefined' ) {
        show_sub_menu( menu_item );
        menu_item.status = 'open';
      }
    }
  }
}


function load_arrow_array()
{
  var img_path = '/menu_sidebar/images/';

  blue_arrow_map = new Array();
  blue_arrow_map['e'] = new Image( 30, 30 );
  blue_arrow_map['s'] = new Image( 30, 30 );

  blue_arrow_map['e'].src = img_path  + 'arrow_blue_e.gif';
  blue_arrow_map['s'].src = img_path + 'arrow_blue_s.gif';

  green_arrow_map = new Array();
  green_arrow_map['e'] = new Image( 30, 30 );
  green_arrow_map['s'] = new Image( 30, 30 );

  green_arrow_map['e'].src = img_path + 'arrow_green_e.gif';
  green_arrow_map['s'].src = img_path + 'arrow_green_s.gif';

  red_arrow_map = new Array();
  red_arrow_map['e'] = new Image( 30, 30 );
  red_arrow_map['s'] = new Image( 30, 30 );

  red_arrow_map['e'].src = img_path + 'arrow_red_e.gif';
  red_arrow_map['s'].src = img_path + 'arrow_red_s.gif';
}



function on_mouse_over_menu_item()
{
  this.className = 'menu_item_mouseover';

  if ( this.status != 'fixed' ) {
    var arrow_direction = this.status == 'open' ? 's' : 'e';
    this.lastChild.src = '/menu_sidebar/images/arrow_green_' + arrow_direction + '.gif';
  }
}

function on_mouse_out_menu_item()
{
  var body_id_name = 'id_body_' + this.id.substr( 15 );
  this.className = ( ((document.body.id.substr(0, body_id_name.length) == body_id_name && this.status != 'fixed') || (document.body.id == body_id_name)) ? 'menu_item_selected' : 'menu_item' );

  if ( this.status != 'fixed' ) {
    var arrow_type;
    if ( this.status == 'open' )
      arrow_type = this.className == 'menu_item_selected' ? 'red_s' : 'blue_s';
    else
      arrow_type = this.className == 'menu_item_selected' ? 'red_e' : 'blue_e';

    this.lastChild.src = '/menu_sidebar/images/arrow_' + arrow_type + '.gif';
  }

}

function on_mouse_click_menu_item()
{
  if ( this.status == 'closed' ) {
    current_opening_menu_item = document.getElementById( this.id );
    current_opening_menu_item.lastChild.src = '';
    document.menu_busy = true;
    open_submenu( this.id );
  } else if ( this.status == 'open' ) {
    this.status = 'closing';
    current_closing_menu_item = document.getElementById( this.id );
    c_submenu_list = current_closing_menu_item.nextSibling;
    document.menu_busy = true;
    close_submenu1( this.id, 0 );
  } else if ( this.status == 'fixed' ) {
    window.location = this.lnk;
  }

}

function open_submenu( id )
{
  var menu_list = document.getElementById( 'id_ul_mainmenu' );

  var menu_level_array = get_menu_level_array( id );

  var submenu_container = document.createElement('ul');
  submenu_container.className = 'submenu';

  insert_menu( menu_level_array, submenu_container, false );
  submenu_container.menu_no = current_opening_menu_item.menu_no; // need this for opening submenu items

  if ( submenu_container.hasChildNodes() ) {
    submenu_container.visibility = 'hidden';
    menu_list.appendChild( submenu_container );

    var height = submenu_container.offsetHeight;

    menu_list.removeChild( submenu_container );
    submenu_container.style.overflow = 'hidden';

    submenu_container.visibility = 'visible';
    submenu_container.style.height = '1px';

    current_opening_menu_item.parentNode.insertBefore( submenu_container, current_opening_menu_item.nextSibling );
    current_opening_menu_item.status = 'opening';
    o_submenu_list = current_opening_menu_item.nextSibling;
    opening_submenu( id, height, 0 );
  }
}

// id = clicked menu item
// returns menu path. eg: xport->interface->xhtml_documents->element->insert
function get_menu_level_array( id )
{
  // if
  var menu_item = document.getElementById( id );
  var menu_list = document.getElementById( 'id_ul_mainmenu' );

  var menu_level_array = new Array();
  var menu_walker = menu_item.parentNode;

  while ( menu_walker != menu_list ) {
    menu_level_array[menu_level_array.length] = menu_walker.menu_no;
    menu_walker = menu_walker.parentNode;
  }

  menu_level_array.reverse();

  menu_level_array[menu_level_array.length] = menu_item.menu_no;

  return menu_level_array;
}

function opening_submenu( id, final_height, iteration )
{
  var height = o_submenu_list.offsetHeight;

  if ( height > final_height - menu_movement_incr ) {
    o_submenu_list.style.height = 'auto';
    o_submenu_list.style.overflow = 'visible';

    var possible_body_id = 'id_body_' + id.substr( 16 );
    var arrow_color = document.body.id.substr( 0, possible_body_id.length ) == possible_body_id ? 'red' : 'blue';

    current_opening_menu_item.lastChild.src = '/menu_sidebar/images/arrow_' + arrow_color + '_s.gif';
    current_opening_menu_item.status = 'open';
    document.menu_busy = false;
    return;
  }

  o_submenu_list.style.height = height + menu_movement_incr + 'px';

  ++iteration;
  var call_fcn = "opening_submenu('" + id + "'," + final_height + ", " + iteration + " )";
  setTimeout( call_fcn, menu_movement_speed );

}


function close_submenu1( id, interval )
{
  var height = c_submenu_list.offsetHeight;
  c_submenu_list.style.overflow = 'hidden';

  if ( height < menu_movement_incr + 1 ) {
    var possible_body_id = 'id_body_' + id.substr( 16 );
    var arrow_color = document.body.id.substr( 0, possible_body_id.length ) == possible_body_id ? 'red' : 'blue';

    current_closing_menu_item.lastChild.src = '/menu_sidebar/images/arrow_' + arrow_color + '_e.gif';
    c_submenu_list.parentNode.removeChild( c_submenu_list );
    current_closing_menu_item.status = 'closed';
    document.menu_busy = false;
    return;
  }

  c_submenu_list.style.height = height - menu_movement_incr + 'px';
  ++interval;

  var call_fcn = "close_submenu1('" + id + "',"  + interval + " )";
  setTimeout( call_fcn, menu_movement_speed );
}



// opens a submenu
// menu_item = submenu clicked
function show_sub_menu( menu_item )
{
  if ( menu_item.status != 'fixed' ) {

    var menu_level_array = get_menu_level_array( menu_item.id );
    var submenu_container = document.createElement('ul');
    submenu_container.className = 'submenu';
    submenu_container.menu_no = menu_item.menu_no; // need this for opening submenu items
    submenu_container.setAttribute( 'align', 'right' );
    menu_item.parentNode.appendChild( submenu_container );

    insert_menu( menu_level_array, submenu_container, true );

  }

}






