var Submenus = {};

var CommSec = {
  
    animation : { submenu : false },
    submenu_animation : null,
  
    initialize : function (id) {
        CommSec.Menu.buildSubMenus();
        CommSec.Menu.hijackLinks();
        function _renderDefaultSubMenu () {
            if ($$('div#main-nav-container ul li a.active').length >= 1) {
                var id = $$('div#main-nav-container ul li a.active').first().rel;
                CommSec.Menu.showSubMenu(id,0);
            }
          };        
        function _addGlobalContent () {
          /* HTML code for the footer content */
          var _footerContent = '<div id="footer"><a href="#">Contact CommSec</a>'+
                              ' | <a href="#">Service Difficulties</a>' +
                              ' | <a href="#">Privacy Policy</a>' +
                              ' | <a href="#">Financial Services Guide</a>' +
                              ' | <a href="#">Site Map</a>' +
                              ' | <a href="#">Disclaimer</a></div><br/>';
          /* HTML code for the down arrow sprite */
          var _arrow_sprite = '<div class="arrow-sprite">'+
                              '<img src="../images/icons/info-panel-down-arrow.gif" ' +
                              'height="9" width="14" alt="down-arrow" /></div>';
          /* add the down arrow sprite to the right hand column panels */
          $$('div.links-panel h3').each(function (el) {
            new Insertion.After(el,_arrow_sprite);
          });
          /* add the footer to every page */
          /* using javascript so it can be edited in one place */
          new Insertion.Bottom($('container'),_footerContent);
          if ($('page-links')) {
            new Insertion.After($('page-links'),'<div class="clr">&nbsp;</div>');
          };
        }
        /* window onLoad event listener */
        Event.observe( window, 'load', function () {
          _renderDefaultSubMenu();
          _addGlobalContent();
        });
      },
    initializeAccordion : function (relativeJsPath) {
        document.write('<script src="'+relativeJsPath+'/moofx/moo.fx.js" type="text/javascript" charset="utf-8"></script>' +
                       '<script src="'+relativeJsPath+'/moofx/accordion.js" type="text/javascript" charset="utf-8"></script>');
        /* commSec accordion menu */
        var myLinks = $$("li.level2-link");
        var mySubs = $$("ul.level3-links");
        
        myLinks.each(function (link) {
          link.down('a',0).href = '#';
          link.down('a',0).onclick = 'return false;'
        });
        
        window.onload = function () {
          
          var myMenuAccordion = new Fx.Accordion(myLinks, mySubs, {
            onActive: function(link){
      				link.down('a').addClassName('active');
      			},
      			onBackground: function(link){
      				link.down('a').removeClassName('active');
      			},
      			start: 'all-closed',
      			wait: false
          });
          
          myLinks.each(function (myLink,i) {
            if (myLink.down('a').hasClassName('active')) {
              myMenuAccordion.showThisHideOpen(i);
            }
          });     
        };  
      },
    
    setMenu : function (menu) {
        CommSec._menu = menu;
      },
    
    Menu : {
      
      buildSubMenus : function () {
      /* Loop over JSON and build sub menus into memory */
          CommSec._menu.block.each( function (item) {
              var identifier = item.submenu.id;
              Submenus[identifier] = new CommSec.Menu.Submenu(item.submenu.id, item.submenu.items);
            }
          );
        },
      
        /* SUBMenu CLASS */
        Submenu : Class.create({
          initialize : function (id, items) {
            this.id = id;
            this.items = items;
          },
          writeout : function () {
            /* build list of submenu items */
            list_items = '';
            this.items.each(function (item) {
              var cl = [];
              if (item.klass) cl.push(item.klass);
              var c = ' class="'+cl.join(' ')+'"';
              list_items += '<li'+c+'><a href="'+item.url+'">'+item.name+'</a></li>';
            });
            /* return submenu HTML */
            return '<ul id="submenu-'+this.id+'" class="horizontal" style="display:none;">'+list_items+'</ul><div class="clr">&nbsp;</div>';
          }
        }),
        /* END SUBMenu CLASS */

        buildSubMenus : function () {
          CommSec._menu.block.each( function (item) {
            var identifier = item.submenu.id
            Submenus[identifier] = new CommSec.Menu.Submenu(item.submenu.id, item.submenu.items)
          });
        },

        showSubMenu : function (id,d) {
          //do something flashy
          if ($('sub-nav-container').hasClassName('dont-show')) {
            return;
          }
          var d = d
          $('sub-nav-container').update(Submenus[id].writeout());
          CommSec.Menu.effect = new Effect.Appear( 'submenu-'+id, {duration:d, transition:Effect.Transitions.Cubic});
        },

        hideSubMenu : function (id) {
          //do something flashy
          CommSec.Menu.effect.cancel();
          $('sub-nav-container').update("");
        },
    
        hijackLinks : function () {
        /* hijack link elements in the level1-nav and do some stuff */
            $$('ul#main-nav a').each(function (link) {
              Event.observe( $(link), 'mouseover', function (event) {
                $$('ul#main-nav a.active').each( function (el) {
                  el.removeClassName("active");
                });
                /* show the appropriate sub menu */
                CommSec.Menu.showSubMenu(link.rel,0.4);
              }, false);
              Event.observe( $(link), 'mouseout', function (event) {
                //do something
              }, false);
            }),
            $$('div#level1-nav ul li a').each(function (link) {
            // set active nav element
            var _loc = window.location.href; 
            if (link.href == _loc) {
                link.addClassName("active");
            };
        });
      }
    }
};

/* If we need localize the menu we can move this into another js file and build a function to re-write the url */
//var locale = 'en'
//var localizedMenu = 'json/menu-' + locale + '.js'

/* Load the script into the page */
//if (typeof localizedMenu != "undefined") document.write('<script type="text/javascript" src="' + localizedMenu + '"></script>');
