
	/*
	* Copyright 2004 vioma GmbH
	*/
	
	var _vmenu_items = new Array( );
	var _vmenu_event_counter = 0;
	var _vmenu_timeout = 1000;
	
	function vmenu_over( vmenu_element_parent, vmenu_element_name, lvl, vmenu_pos, count_elem ) {
		var element, p, x, y;
		
		_vmenu_event_counter++;
		
		for( var level = lvl; level < _vmenu_items.length; level++ ) {
			var o = document.getElementById( _vmenu_items[level] );
			if( o ) o.style.display = 'none';
		}
		
		if( vmenu_element_name !== '' ) _vmenu_items[lvl] = vmenu_element_name;
		
		var element = document.getElementById( vmenu_element_name );
		if( element ) {
			p = vmenu_element_position( vmenu_element_parent );
			
			element.style.display = 'inline';
			element.style.zIndex = 10;
			
			switch( vmenu_pos ) {
				case 'bottom' : 
					x = p.x;
					y = p.y + p.height;
				break;
				case 'right' :
					x = p.x + p.width + 5;
					y = p.y;
				break;
				case 'top' :
					var d  = document.getElementById( vmenu_element_name );
					if( d ) {
						x = p.x;
						y = p.y - vmenu_element_position( d ).height;
					} else alert( 'Element doesn\'t exist: '+vmenu_element_name );
				break;
				case 'left' :
					var d = document.getElementById( vmenu_element_name );
					if( d ) {
						x = p.x - vmenu_element_position( d ).width;
						y = p.y;
					} else alert( 'Element doesn\'t exist: '+vmenu_element_name );	
				break;
			}
			element.style.top = y;
			element.style.left = x;
		}
		
		if( typeof vmenu_custom_event_over == 'function' ) vmenu_custom_event_over( vmenu_element_parent, vmenu_element_name, lvl, vmenu_pos, count_elem );
	}
	
	function vmenu_out( ) {	
		_vmenu_event_counter++;
		window.setTimeout( 'vmenu_hide( '+_vmenu_event_counter+' )', _vmenu_timeout );
	}
	
	function vmenu_hide( event_counter ) {
		if( _vmenu_event_counter == event_counter ) {
			for( i in _vmenu_items ) {
				var o = document.getElementById( _vmenu_items[i] );
				if( o ) o.style.display = 'none';
			}
			
			if( typeof vmenu_custom_event_hide == 'function' ) vmenu_custom_event_hide( event_counter );
		}
	}
	
	function vmenu_element_position( element ) {
		var elem = element;
		var tagname = '';
		var x = 0;
		var y = 0;
		var ow = 0;
		var oh = 0;
		
		ow += elem.offsetWidth;
		oh += elem.offsetHeight;
		
		while ( ( typeof( elem ) == 'object' ) && ( typeof( elem.tagName ) != 'undefined' ) ) {
			y += elem.offsetTop;
			x += elem.offsetLeft;
			tagname = elem.tagName.toLowerCase( );
			
			if( tagname == 'body' ) elem = 0;
			if( typeof( elem ) == 'object' )
				if( typeof( elem.offsetParent ) == 'object' ) elem = elem.offsetParent;
		}
		
		position = new Object( );
		position.x = x;
		position.y = y;
		position.width = ow;
		position.height = oh;
		return position;
	}
