var cssMenu = {
   menu_obj: {},
   current_id: false,
   active_id: false,
   menu_id: null,
	init: function init (element) {

		//Event.observe(document, 'mousemove', cssMenu.getcords);
        cssMenu.menu_id = element;
		if($(cssMenu.menu_id))
	   {
			var menu_array = $(cssMenu.menu_id).childElements();

			cssMenu.create_menus(menu_array,"header_menu");
			//$(element).observe('mouseover',cssMenu.showMenu);
			$(cssMenu.menu_id).observe('mouseout',cssMenu.getcords);
		}
	},
	getcords: function getcords(e){
				mouseX = Event.pointerX(e);
				mouseY = Event.pointerY(e);

		        //add_debug('getcords',cssMenu.current_id+' - mouseX:' + mouseX + '-- mouseY:' + mouseY)
				//$('debug2').innerHTML = cssMenu.current_id+' - mouseX:' + mouseX + '-- mouseY:' + mouseY;
                
				p = $(cssMenu.menu_id);

				poffsets = Element.cumulativeOffset(p);
				ptop     = poffsets[1];
				pleft    = poffsets[0];
				pbottom  = 74+ptop;
				pright   = p.getWidth()+pleft;
				
				if(cssMenu.menu_obj[cssMenu.current_id])
				{
					m = cssMenu.menu_obj[cssMenu.current_id];

					mc = m.submenu.className;
					mc = mc.split("_");

					if(m.submenu.className == 'on')
					{
						//$('debug').innerHTML = m.submenu.className;

						offsets = Element.cumulativeOffset(m.submenu);
						mtop     = offsets[1];
						mleft    = offsets[0];
						mbottom  = 45+mtop;
						mright   = m.submenu.getWidth()+mleft;

						//add_debug(cssMenu.current_id,cssMenu.current_id+' - mouseX:' + mouseX + '-- mouseY:' + mouseY)
					//	$('debug2').innerHTML = "Left Edge:"+mleft+"|Div Width:"+m.submenu.getWidth()+"|Right Edge:"+mright+"|Top Edge:"+mtop+"|Div Height:"+m.submenu.getHeight()+"|Bottom Edge:"+mbottom+"|"+'mouseX:' + mouseX + '-- mouseY:' + mouseY;
						if(!(mouseX > mleft && mouseX < mright ) || !(mouseY > mtop && mouseY < mbottom ))
						{
						   $(cssMenu.current_id).removeClassName("active_top");
						   m.submenu.removeClassName('on');
						   m.submenu.addClassName('off');
						   //add_debug(cssMenu.current_id,cssMenu.current_id+' - mouseX:' + mouseX + '-- mouseY:' + mouseY+' | top:' + mtop + '-- bottom:' + mbottom + "| Height: "+m.submenu.getHeight())
						}
					}
				}

					//	$('debug2').innerHTML = "Left Edge:"+mleft+"|Div Width:"+m.submenu.getWidth()+"|Right Edge:"+mright+"|Top Edge:"+mtop+"|Div Height:"+m.submenu.getHeight()+"|Bottom Edge:"+mbottom+"|"+'mouseX:' + mouseX + '-- mouseY:' + mouseY;

				if(cssMenu.active_id)
				    if(!(mouseX > pleft && mouseX < pright ) || !(mouseY > ptop && mouseY < pbottom ))
					{
				    	//if(cssMenu.active_id != cssMenu.current_id)
				    	//{
						   $(cssMenu.current_id).removeClassName("active_top");
						   cssMenu.menu_obj[cssMenu.current_id].submenu.removeClassName('on');
						   cssMenu.menu_obj[cssMenu.current_id].submenu.addClassName('off');
				    	//}
						   cssMenu.menu_obj[cssMenu.active_id].submenu.removeClassName('off');
						   cssMenu.menu_obj[cssMenu.active_id].submenu.removeClassName('on');
						   $(cssMenu.active_id).addClassName("active_top");
						   cssMenu.menu_obj[cssMenu.active_id].submenu.addClassName('active_sub');
						   //add_debug(cssMenu.current_id,cssMenu.current_id+' - mouseX:' + mouseX + '-- mouseY:' + mouseY+' | top:' + ptop + '-- bottom:' + pbottom + "| Height: "+p.getHeight() + "| Offsets: "+poffsets)
					}
	},
	create_menus: function create_menus(menu,parent) {
		menu.each(function(m)
		{
			if(m.className == "active_top")
				cssMenu.active_id = m.id;
				
			
			if(m.down('ul') != undefined)
			{
				//alert(m.down(0));
				m.observe('mouseover',cssMenu.showMenu);
				m.observe('mouseout',cssMenu.getcords);
			}

			var submenu_array = m.childElements();

			if(submenu_array.length > 1)
			{
				mid = m.id
				if(mid != ""  && !mid.include("ul"))
				{
					//add_debug('add mouse over',submenu_array)
			         cssMenu.create_menus(submenu_array,m.id);
						cssMenu.menu_obj[m.id] = {"submenu":submenu_array[1],"parent_menu":parent};
						m.observe('mouseover',cssMenu.showMenu);
						m.observe('mouseout',cssMenu.getcords);
				}
			}
		})
	},
	hoverMenu: function hoverMenu(e) {
		m = this;
		mc = m.className;

		if(mc != 'active')
		{
		  m.removeClassName('off');
		  m.addClassName('on');
		}
	},
	normalMenu: function normalMenu(e) {
		m = this;
		//pm = cssMenu.menu_obj[this.id].parent_menu;
		mc = m.className;

		if(mc != 'active')
		{
		  m.removeClassName('on');
		  m.addClassName('off');
		}
	},
	showMenu: function showMenu(e) {
		//add_debug('showMenu',cssMenu.current_id);
		//$('debug2').innerHTML = cssMenu.menu_obj[this.id].submenu.id + " | ";
       if(cssMenu.current_id) {
		   $(cssMenu.current_id).removeClassName("active_top");
		   if($(cssMenu.current_id).down('ul') != undefined)
		   {
			   $(cssMenu.current_id).down('ul').removeClassName('on');
			   $(cssMenu.current_id).down('ul').addClassName('off');
		   }
       }
		   
		cssMenu.current_id = this.id;
		m = cssMenu.menu_obj[this.id].submenu;
		pm = cssMenu.menu_obj[this.id].parent_menu;
		mc = m.className;
		
		if(mc != "")
		{
		   mc = mc.split("_");
		   
		   if(cssMenu.active_id)
			   if(cssMenu.active_id != cssMenu.current_id)
			   {
				   //add_debug('showMenu',cssMenu.active_id + "|" + cssMenu.current_id);
				   $(cssMenu.active_id).removeClassName("active_top");
				   cssMenu.menu_obj[cssMenu.active_id].submenu.removeClassName('active_sub');
				   cssMenu.menu_obj[cssMenu.active_id].submenu.removeClassName('on');
				   cssMenu.menu_obj[cssMenu.active_id].submenu.addClassName('off');
			   }
		   
		   m.removeClassName('off');
		   $(cssMenu.current_id).addClassName("active_top");
		   m.addClassName('on');
		}
	},
	hideMenu: function hideMenu(e) {
		m = cssMenu.menu_obj[this.id].submenu;

		mc = m.className;

		if(mc != "")
		{
		   mc = mc.split("_");
		   m.removeClassName('on')
		   m.addClassName('off')
		}

	}
};
