﻿/// <reference path="Ekina.Core.1.0.js" />

var menuItems = [];

function PopulateMenuObject() {
 
    var mainMenu = $(".menu_main");
    
    for (var i = 0; i < mainMenu.childNodes.length; i++)
		if (mainMenu.childNodes[i] && mainMenu.childNodes[i].tagName && mainMenu.childNodes[i].tagName == "LI")
			menuItems.push($(mainMenu.childNodes[i]));
    
    for (var i = 0; i < menuItems.length; i++) {
		var item = menuItems[i];
		
		var uls = item.getElementsByTagName("UL");
		
		item.subMenu = uls.length > 0 ? $(uls[0]) : null;
		
		item.position = $p(item);
		
		item.subMenuPosition = item.position;
		item.subMenuPosition.x += item.offsetWidth;
		item.subMenuPosition.y --;
		
		item.isParent = true;
		
		item.a = $(item.getElementsByTagName("A")[0]);
		
		if (item.subMenu) {

		    var mouseover = function(e) {
		        var menuItem = this.isParent ? this : this.parentNode;
		        if (menuItem.hideTimer) {
		            window.clearInterval(menuItem.hideTimer);
		            menuItem.hideTimer = null;
		        }
		        if (this.isParent) {
		            menuItem.subMenu.css({
		                display: "block",
		                position: "absolute",
		                left: menuItem.subMenuPosition.x + "px",
		                top: menuItem.subMenuPosition.y + "px"
		            });
		            menuItem.subMenu.addClass("submenu");
		            this.a.addClass("selected");
		        }
		    };
			
			item.subMenu.onmouseover = item.onmouseover = mouseover;
			
			item.subMenu.onmouseout = item.onmouseout = function(e) {					
				e = Ekina.Events.normaliseMouseEvent(e);
				var menuItem = this.isParent ? this : this.parentNode;
				if (this.isParent) {
					this.hideTimer = window.setTimeout(function() {
						menuItem.subMenu.css("display", "none");
						menuItem.a.removeClass("selected");
					}, 200);
				}
				else {
					var relTar = findParentUL(e.relatedTarget);
					if (relTar != menuItem.subMenu) {
						if (menuItem.hideTimer) {
							window.clearInterval(item.hideTimer);
							menuItem.hideTimer = null;
						}
					}
				}
			};
		}
    }
}

function findParentUL(el) {
	if (el == null || el == document || el.tagName.toUpperCase() == "UL")
		return el;
	return findParentUL(el.parentNode);
};
