function Navigation()
{
	var config = {
		effect : true, // Effekt anwenden
		duration : 1000 // Dauer des Effekts
	};
	
	/**
	 * Menü finden
	 * 
	 * @param object obj
	 * @return object
	 */
	function _getMenu(obj)
	{
		var _menu = obj.firstChild;

		while (_menu = _menu.nextSibling)
		{
			if (
				_menu.nodeName != '#text'
				&& _menu.nodeName == 'DIV'
				&& $(_menu).hasClass('menu_sublist')
			)
			{
				break;
			}
		}
		
		if (_menu)
		{
			return _menu;
		}
		else
		{
			return null;
		}
	}	
	
	/**
	 * Menü öffnen oder schliessen
	 *
	 * @param object icon
	 * @param string site
	 * @param integer id
	 * @return void
	 */
	this.toggle = function(icon, site, id)
	{
		if (!$(icon).hasClass('busy'))
		{		
			$(icon).addClass('busy');
			
			var _menu = $('#menuItem_'+id);
			var _mode = $(icon).hasClass('closed') ? 'open' : 'close';
			
			if (_menu)
			{
				_getTree(
					icon,
					site,
					id,
					function()
					{
						if (config.effect)
						{
							_toggle(icon, _menu);
						}
						else
						{
							_menu.style.display = _mode == 'open' ? 'block' : 'none';
							_setIcon(icon);
						}					
					}
				);
			}
		}
	};
	
	/**
	 * Toggeln mit Effekt
	 * 
	 * @param object icon
	 * @param object obj
	 * @return void
	 */
	function _toggle(icon, obj)
	{
		_setIcon(icon);
		
		$(obj).slideToggle(config.duration, function()
		{
			$(icon).removeClass('busy');
		});
	}
	
	/**
	 * Toggle Icon aktualisieren
	 * 
	 * @param object icon
	 * @return void
	 */
	function _setIcon(icon)
	{
		var _mode = ($(icon).hasClass('closed') || $(icon).hasClass('load')) ? 'open' : 'close';
		icon.src = _mode == 'open' ? icon.src.replace(/(_load)?.gif/i, '_open.gif') : icon.src.replace('_open.gif', '.gif');
		
		if (_mode == 'open')
		{
			$(icon).removeClass('closed');
		}
		else
		{
			$(icon).addClass('closed');
		}
		
		$(icon).removeClass('busy');
	}
	 
	/**
	 * Unterseiten einer Seiten ermitteln
	 * 
	 * @param object icon
	 * @param integer id
	 * @param function func
	 * @param string url
	 * @return void
	 */
	function _getTree(icon, site, id, func)
	{
		var _menu = $('#menuItem_'+id).children('div');

		if (_menu.children().html() === null)
		{
			$(icon).addClass('load');
			icon.src = icon.src.replace('.gif', '_load.gif');
			
			$.system.request(
				'getNav',
				function(html)
				{
					_menu.append(html);
					func();
					$(icon).removeClass('load');
				},
				'',
				{siteName: site, pageID : id}
			);	
		}
		else
		{
			func();
		}
	}
}

var menu = new Navigation();