/**
 * $Id: Neteor.dropdown-menu.js 4502 2010-03-01 09:11:24Z vincent $
 **/

/**
 * Dropdown menu
 * @package	CMS
 * @author	Neteor
 * @copyright	Neteor 2010
 */

/**
 * Declare Neteor Menu namespace
 */
Neteor = {
	menu: {

		/**
		 * Constant - current item displayed Id
		 */
		currentMenuId: false

		/**
		 * Array used for cache menus already loaded
		 */
		, items: new Array()

		/**
		 * Menu item object
		 */
		, item: function(id) {
			this.id = id;

			/**
			 * Hide menu item
			 */
			this.hide = function () {
				Neteor.getDom('menu' + this.id).style.display = 'none';
			}

			/**
			 * Show menu item
			 */
			this.show = function () {
				if (this.hasChilds()) {
					Neteor.getDom('menu' + this.id).style.display = 'block';
				}
			}

			this.hasChilds = function () {
				UL = Neteor.getDom('li' + this.id).getElementsByTagName('li');
				return (UL.length > 0);
			}
		}

		, getItem: function (menu_id) {
			for (var i = 0; i < Neteor.menu.items.length; i++) {
				if (Neteor.menu.items[i].id == menu_id) {
					return Neteor.menu.items[i];
				}
			}
			return false;
		}

		, load: function (id) {
			xajax_menuLoad(id);
		}

		, loadComplete: function (menu_id) {
			// Instanciate new menu item
			var menuItem = new Neteor.menu.item(menu_id);
			// Add item to the menu
			Neteor.menu.items.push(menuItem);
			// show item (only if currentMenuId is menu_id)
			//if (Neteor.menu.currentMenuId == menu_id) {
				menuItem.show();
			//}
		}

		/**
		 * AJAX Load sub menu and display it
		 * @param	integer	page_id
		 */
		, show: function (menu_id) {
			// Set currentMenuId
			Neteor.menu.currentMenuId = menu_id;

			// Check menu is not already loaded
			var menuItem = Neteor.menu.getItem(menu_id);
			if (menuItem == false) {
				// Ajax load menu item
				Neteor.menu.load(menu_id);
				return;
			}
			menuItem.show();
		}

		, hide: function (menu_id) {
			var menuItem = Neteor.menu.getItem(menu_id);
			if (menuItem == false) {
				return;
			}
			menuItem.hide();
		}
	}

	/**
	 * Shortland for document.getElementById function
	 * @param	string	element_id	Id of the DOM element to return
	 */
	, getDom: function (element_id) {
		if (!document.getElementById(element_id)) {
			//alert(element_id + ' does not exist.');
			return;
		}
		return document.getElementById(element_id);
	}
};