//  ez tárolja a menu objektumot
pokerAPI.Menu.menuObj = null;

pokerAPI.Menu = function()
{
  
   return{
      
//      bezarja a lenyitott menu elemet
//      csak egy lehet nyitva ezért, csak akkor ad vissza true - t
//      ha van egy OPEN_STATUS - al rendelkezo menu elem, vagy nincs
//      nem CLOSED_STATUS - al rendelkezo
      

      //    a button objektumokat tarolja
      buttons : new Array()
      ,
      closeMenu : function(menuToOpen)
      {
         allClosed = null;
         menuToClose = null;
         ns = pokerAPI.Menu.MenuButton;
	 
         for(b = 0; b < this.buttons.length; b ++ )
         {
            obj = this.buttons[b];
            if(obj.status == ns.OPEN_STATUS)
            {
               menuToClose = obj;
               allClosed = true;
            }
            else if(obj.status != ns.CLOSE_STATUS)
            {
               allClosed = false;
            }
         }
         if(allClosed!=false)
         {
             if(menuToClose != null)
             {
                ns.closeSubMenu(menuToClose, menuToOpen);
             }
             else
             {
                ns.openSubMenu(menuToOpen);
             }
         }
      }
      ,
      /* *
      a menu init fuggvenye visszaadja a menuButton objektumokat egy tombben

      @menuIDs    -   inicializalhato  tobb menuvel is, ezeknek az id - vel kell meghivni
      */      
      init : function(menuClass, menuTagName)
      {
         tags = document.getElementsByTagName(menuTagName);
         for(i = 0; i < tags.length; i ++ )
         {
            MenuNode = tags[i];
            if(MenuNode.className == menuClass)
            {
               menuButtons = MenuNode.getElementsByTagName("DIV");
               for(m = 0; m < menuButtons.length; m ++ )
               {
                  if(menuButtons[m].className.indexOf("SubMenu") > - 1)
                  this.buttons.push(new pokerAPI.Menu.MenuButton.Class(menuButtons[m], menuTagName));
               }
            }
         }
         for(b = 0; b < this.buttons.length; b ++ )
         {
            this.buttons[b].subButtons = this.buttons[b].init(this.buttons[b]);
         }
      }
   };
}



pokerAPI.Menu.MenuButton ={

   //  bevan zarva
   CLOSE_STATUS : 0,
   //  kinyilik
   OPENING_STATUS : 1,
   //   becsikodik
   CLOSING_STATUS : 2,
   //  levan nyitva
   OPEN_STATUS : 3,
   //  Static functions and variables
   initButton : function(buttonObj)
   {
      var buttonNode = buttonObj.buttonNode;
      var needToOpen = false;
      subbuttons = new Array();
      subButtons = buttonNode.getElementsByTagName("LI");
      for(i = 0; i < subButtons.length; i ++ )
      {
         subbuttons.push(subButtons[i]);
         btn_link=subButtons[i].getElementsByTagName("A")[0].href;
         win_link=window.location.href;
         if((btn_link == win_link)&&(btn_link.length==win_link.length))
         {
            subButtons[i].className=subButtons[i].className+" selected";
            //buttonObj.needToOpen = true;
         }
      }
      if(buttonObj.needToOpen == true)
      pokerAPI.Menu.MenuButton.openSubMenu(buttonObj);

      return subbuttons;
   }
   ,
   openSubMenu : function(menuButtonObj)
   {
      menuButtonObj.status = ns.OPENING_STATUS;
      //container = menuButtonObj.subMenuContainer;
	  
	  if(menuButtonObj.containerHeight == 0) {
		  //menuButtonObj.buttonNode.style.height=menuButtonObj.containerHeight + "px";
		  menuButtonObj.subMenuDiv.style.height=menuButtonObj.containerHeight + 4 + "px";
		  
		  //menuButtonObj.buttonNode.style.display = 'block';
		  menuButtonObj.subMenuDiv.style.display = 'block';
		  
		  // magasság javítása
		  var spanElements = menuButtonObj.subMenuDiv.getElementsByTagName('SPAN');
		  var correctHeight = 0;
		  for(var sp = 0; sp < spanElements.length; sp++) {
			correctHeight += spanElements[sp].offsetHeight /*+ 3*/;
		  }
		  //menuButtonObj.buttonNode.style.height=correctHeight + "px";
		  menuButtonObj.subMenuDiv.style.height=correctHeight + 4 + "px";
		  menuButtonObj.containerHeight = correctHeight + 4;
	  }
	  else {
		  menuButtonObj.subMenuDiv.style.display = 'block';
	  }
	  
      menuButtonObj.status = pokerAPI.Menu.MenuButton.OPEN_STATUS;
   }
   ,
   closeSubMenu : function(menuButtonObj, menuToOpenObj)
   {
      ns = pokerAPI.Menu.MenuButton;
      menuButtonObj.status = ns.CLOSING_STATUS;
      //container = menuButtonObj.subMenuContainer;

	  //menuButtonObj.buttonNode.style.height = 0 + "px";
	  //menuButtonObj.subMenuDiv.style.height = 0 + "px";
	  
	 // menuButtonObj.buttonNode.style.display = 'none';
	  menuButtonObj.subMenuDiv.style.display = 'none';
	  
      menuButtonObj.status = ns.CLOSE_STATUS;
      //ns.openSubMenu(menuToOpenObj);
   }
   ,
   Class : function (buttonNode, buttonTagName)
   {
      ns = pokerAPI.Menu.MenuButton;
      this.buttonNode = buttonNode;
      this.needToOpen = false;
      /*
	  this.imgnode = buttonNode.getElementsByTagName("IMG")[0];
      btnAttributes = buttonNode.getElementsByTagName("DIV")[0].getElementsByTagName("P");
      if(btnAttributes.length > 0)
      {
      try{
         this.outImgsrc =btnAttributes[0].innerHTML;
         this.overImgsrc =btnAttributes[1].innerHTML;
         }catch(e){}
      }
		*/
	  
      this.status = ns.CLOSE_STATUS;
      //    nembiztos h van subMenuContainer ! !
      container = buttonNode.getElementsByTagName("UL");
      this.subMenuContainer = null;
      this.containerHeight = 0;
      if(container.length > 0)
      {
         this.subMenuContainer = container[0];
         this.subMenuDiv = this.subMenuContainer.parentNode;
//         this.subMenuContainer.style.top = - this.subMenuContainer.offsetHeight + "px";
         //this.subMenuDiv.style.height = 0 + "px";
         var subMenuContainerChilds = this.subMenuContainer.getElementsByTagName("LI");
         //for(var smcc=0; smcc < subMenuContainerChilds.length; smcc++) {
         //	this.containerHeight += subMenuContainerChilds[smcc].offsetHeight;
         //}
//		 this.containerHeight = subMenuContainerChilds.length * 24;
		//if(navigator.appVersion.indexOf('MSIE 6.0') == -1 || navigator.appVersion.indexOf('MSIE 7.0') > -1) {
		//	 this.containerHeight -= 36;
		//} else {
		//	 this.containerHeight += 3;
		//}
         this.subMenuDiv.style.display = "none";
      }

      this.subButtons = new Array();

      this.init = ns.initButton;
      this.Open = ns.openSubMenu;
      this.Close = ns.closeSubMenu;

      function copyFunction(func, arg)
      {
         return function()
         {
            func(arg);
         }
      }

      this.clickEvent = function(obj)
      {
         if(obj.status == ns.CLOSE_STATUS)
         {
            // elobb bezárja a lenyitott menut, majd kiynitja az ujat
            pokerAPI.Menu.menuObj.closeMenu( obj);
         }
         else if(obj.status == ns.OPEN_STATUS)
         {
            // ns.closeSubMenu(obj);
         }
         else if(obj.status == ns.OPENING_STATUS)
         {
         }
         else if(obj.status == ns.CLOSING_STATUS)
         {
         }
      }

      this.overEvent = function(obj)
      {
		pokerAPI.Menu.MenuButton.openSubMenu(obj);	
         /*
		 if(obj.overImgsrc != null)
         obj.imgnode.src = obj.overImgsrc;
		 */
      }

      this.outEvent = function(obj)
      {
      	pokerAPI.Menu.MenuButton.closeSubMenu(obj, null);
			/*
         if(obj.outImgsrc != null)
         obj.imgnode.src = obj.outImgsrc;
		 */
      }

      this.buttonNode.parentNode.onclick = copyFunction(this.clickEvent, this);
      this.buttonNode.parentNode.onmouseover = copyFunction(this.overEvent, this);
      this.buttonNode.parentNode.onmouseout = copyFunction(this.outEvent, this);
   }

}

if(window.opera)
{
    try
   {
		
   }
   catch(e)
   {
      alert(e);
   }
}

function loadInitMenu() {
	try
   {
      pokerAPI.Menu.menuObj = new pokerAPI.Menu();
      pokerAPI.Menu.menuObj.init("Menu", "DIV");
   }
   catch(e)
   {
      alert(e);
   }
}

addLoadEvent(loadInitMenu);

/*
window.onload = function()
{
   try
   {
      pokerAPI.Menu.menuObj = new pokerAPI.Menu();
      pokerAPI.Menu.menuObj.init("Menu", "DIV");
   }
   catch(e)
   {
      alert(e);
   }
}
*/

