
var dyn_menu = new Array();	//the current open span.
var dyn_menu_out = true;
var close_delay = 1000;	// 2 seconds
var close_timeout = null;

function parentOffsetTop( child_ ){
	var _offset = 0;
	var _node = child_.offsetParent;
	while( _node ){
		_offset += _node.offsetTop;
		_node = _node.offsetParent;
	}
	return _offset ;
}
function parentOffsetLeft( child_ ){
	var _offset = 0;
	var _node = child_.offsetParent;
	while( _node ){
		_offset += _node.offsetLeft;
		_node = _node.offsetParent;
	}
	return _offset ;
}
function collapseDynMenu( span_ ){
	var i, index = 0;
	for( i = dyn_menu.length - 1; i>=0 && index == 0 ; i-- ){
		if( !is_senior( span_, dyn_menu[i] ) ){
			hide_span( dyn_menu[ i ] );
		} else {
			index = i +1;
		}
	}
	return index;
}

function beginDynMenu( span_, sub_menu_, x_, y_ ){
//	js_debug( 'beginDynMenu( ' + span_.id + ', ' + sub_menu_.id + ', ' + x_ + ', ' + y_ + ' )' );
	var index = collapseDynMenu( span_ );
	if( is_senior( sub_menu_, js_element( 'MY_HIDE_DIV' ) ) ){
		js_move_element( sub_menu_, document.body );
		sub_menu_.style.visibility = 'visible';
	}
	dyn_menu[ index ] = sub_menu_;
	dyn_menu[ index ].style.top = y_;
	dyn_menu[ index ].style.left = x_;
	dyn_menu_out = false;
	clearTimeout( close_timeout );
	close_timeout = 0;
}


function startDynMenuRight( span_, sub_menu_, x_, y_ ){
	var _x = span_.offsetLeft + span_.offsetWidth + parentOffsetLeft( span_ ) + 3;
	var _y = span_.offsetTop + parentOffsetTop( span_ ) -1;
	
	beginDynMenu( span_, sub_menu_, _x + x_ , _y + y_ );
}
function startDynMenuDown( span_, sub_menu_, x_, y_ ){
	var _x = span_.offsetLeft + parentOffsetLeft( span_ ) -1;
	var _y = span_.offsetTop + span_.offsetHeight + parentOffsetTop( span_ ) + 3;

	beginDynMenu( span_, sub_menu_, _x + x_ , _y + y_ );
}

function liveDynMenu( ){
//	js_debug( 'liveDynMenu( );' );
	dyn_menu_out = false;
}
//function stopDynMenu( span_, sub_menu_ ){
function stopDynMenu(  ){
//	js_debug( 'stopDynMenu( );' );
	if( dyn_menu.length ){
		dyn_menu_out = true;
		if( close_timeout )
			clearTimeout( close_timeout );
		close_timeout = setTimeout( 'closeDynMenu();', close_delay );
	}
}
function hide_span( span_ ){
//	js_debug( 'hide_span( ' + span_.id + ' );' );
	span_.style.visibility = 'hidden';
	js_move_element( span_ , null );
	

	span_.style.top = -1000;
	span_.style.left = -1000;
}

function closeDynMenu( ){
//	js_debug( 'closeDynMenu( );' );
	if( dyn_menu_out ){
		for( var i = 0 ; i < dyn_menu.length; i++)
			hide_span( dyn_menu[ i] );
		dyn_menu = new Array();
		dyn_menu_out = true;
	}
}

var drag_elem = null;
var prev_page_x = 0;
var prev_page_y = 0;
function Mouse( e ){
	if( arguments.length == 0 ){
		e = event ;
	}
//	debug_object_props( drag_elem );
	
	if( prev_page_x != null && prev_page_y != null ){
		drag_elem.style.left = Math.max( 0, drag_elem.offsetLeft + e.clientX - prev_page_x );
		drag_elem.style.top = Math.max( 0, drag_elem.offsetTop + e.clientY - prev_page_y );
	}

	prev_page_x = e.clientX;
	prev_page_y = e.clientY;
//	self.status = e.clientX + "|" + e.clientY + "|" + drag_elem.style.top + "|" + drag_elem.offsetTop ;
}

function keydown( e ){
	if( arguments.length == 0 ){
		e = event ;
	}
	debug_object_props( e );
//	mouseup();
	self.status = e.keyCode ;
	
}


function mouseDown( ){

	elem_.onmousemove = Mouse;
	elem_.onmouseup = mouseup;

}

function mouseup( e ){
	if( drag_elem ){
		document.onmousemove = null
		document.onmouseup = null;
	}
	drag_elem = null;
}
function drag_it( elem_ ){
	drag_elem = elem_;
	self.stauts = 'drag it.';
	document.onmousemove = Mouse;
	document.onmouseup = mouseup;

	prev_page_x = null;
	prev_page_y = null;
	
//	document.onmousedown = mouseDown ;
}