var Navi =
{
  init: function()
  {
    Navi.subMenus = Core.getElementsByClass('menu');  // find all sub menus
    Navi.cover = document.getElementById('cover');  // find the shading element
    Navi.menuExt = "Menu"; //add this extension to the ID of the a tag that is select.i.e. lang --> langMenu
    Navi.menuName = "";   // set us variable 
    
	var links = document.getElementsByTagName("a"); //set link activity
    for (var i = 0; i < links.length; i++)  //setup evemts
    {
       var check = links[i].parentNode.parentNode.parentNode.parentNode.getAttribute("id");
		if (check == "menu"){
        Core.addEventListener(links[i], "mouseover", Navi.menuLinkListener);
        Core.addEventListener(links[i], "focus", Navi.menuLinkListener);
    	}
   	 }
    Navi.hideMenus(); //hides the menu after loading for accessibility
    },
  menuLinkListener: function(event)  //performs shading on 1st level menu items and sets background shade animation off
  {
    var link = this;
    if (Core.hasClass(Navi.cover, "seven")){}
    else {setTimeout("Navi.animateHide()" ,80);  // animate shade call
    	}
    Core.addEventListener(Navi.cover, "mouseover", Navi.unhidePage);
	var links = document.getElementsByTagName("a");
	for (var i = 0; i < links.length; i++)
    {
    	var check = links[i].parentNode.parentNode.parentNode.parentNode.getAttribute("id");
		if (check == "menu"){
     	if (links[i] == link){
     	   Navi.showSubMenu(link);
     		}
     	else {
	     Navi.hideSubMenu(links[i]);
    	 	  }
     	}
      
    }
 },

 openSubMenu: function(subOpen) // opens the selected sub menu for the a tag, i.e. nameMenu
 {
  var w = document.getElementById(subOpen);
  if (Core.hasClass(w,"hidden")){Core.removeClass(w,"hidden");}
  Core.addClass(w,"show");
 },
 
  showSubMenu: function(menu) // changes the classes for the top level menus and sets of open menu
  {
     if (Core.hasClass(menu,"select")){}
     else {Core.addClass(menu,"select");}
     if (Core.hasClass(menu,"open")){Core.removeClass(menu,"open");}
     Navi.menuName = (menu.id + Navi.menuExt);
     Navi.openSubMenu(Navi.menuName);
   },
   
   
 closeSubMenu: function(subClose) // closes open menu item
 {
  var w = document.getElementById(subClose);
  if (Core.hasClass(w,"show")){Core.removeClass(w,"show");}
  Core.addClass(w,"hidden");
 },
  
 hideSubMenu: function(menu) // changes classes on top level and set menu item closed
  {
  	  if (Core.hasClass(menu,"open")){}
     	  	else {Core.addClass(menu,"open");}
     	  if (Core.hasClass(menu,"select")){Core.removeClass(menu,"select");}
     Navi.menuName = (menu.id + Navi.menuExt);
     Navi.closeSubMenu(Navi.menuName);

  },
  
  hideMenus: function()  // closes all menus
  {
   for (var i = 0; i < Navi.subMenus.length; i++)
    {
     if (Core.hasClass(Navi.subMenus[i],"show")){Core.removeClass(Navi.subMenus[i],"show");}
     Core.addClass(Navi.subMenus[i],"hidden");
    }
  
  },
  
   unhidePage: function(event) // change the page background back to normal
   {
   var links = document.getElementsByTagName("a");
   Core.removeEventListener(Navi.cover, "mouseover", Navi.unhidePage);
   setTimeout("Navi.animateUnHide()" ,20);  // animate shade call
   setTimeout("Navi.hideMenus()",20);
   for (var i = 0; i < links.length; i++)
    {
       var check = links[i].parentNode.parentNode.parentNode.parentNode.getAttribute("id");
		if (check == "menu"){
		if (Core.hasClass(links[i],"select")){Core.removeClass(links[i],"select");}
		if (Core.hasClass(links[i],"open")){Core.removeClass(links[i],"open");}
   	}
 }
},
 
 animateUnHide: function() // animate shade show call
 {
  		if (Core.hasClass(Navi.cover, "nine"))
			{
   			Core.removeClass(Navi.cover,"nine");
   			Core.addClass(Navi.cover,"full");
   			}
   		else {	
   		if (Core.hasClass(Navi.cover, "seven"))
   			{
   			Core.removeClass(Navi.cover,"seven");
   			Core.addClass(Navi.cover,"eight");
   		    setTimeout("Navi.animateUnHide()" ,25);
   			}
		else if (Core.hasClass(Navi.cover, "eight"))
			{
   			Core.removeClass(Navi.cover,"eight");
   			Core.addClass(Navi.cover,"nine");
 			 setTimeout("Navi.animateUnHide()" ,25);
   			}
   			}
  },

 animateHide: function() // animate shade show call
 {
  		if (Core.hasClass(Navi.cover, "eight"))
			{
   			Core.removeClass(Navi.cover,"eight");
   			Core.addClass(Navi.cover,"seven");
   			}
   		else {	
   				if (Core.hasClass(Navi.cover, "nine"))
   				{
   				Core.removeClass(Navi.cover,"nine");
   				Core.addClass(Navi.cover,"eight");
   		    	setTimeout("Navi.animateHide()" ,25);
   				}
				else if (Core.hasClass(Navi.cover, "full"))
				{
   				Core.removeClass(Navi.cover,"full");
   				Core.addClass(Navi.cover,"nine");
 			 	setTimeout("Navi.animateHide()" ,25);
   				}
   			}
  }
      
};
Core.start(Navi); //starts the page after everything has loaded.


