
///////////////////////////////////////////////////////////////////
// contextMenu_target object attributes
//		contextmenu			- id of context menu
//
// Global
//		contextMenu_target
//		contextMenu_close()
//
///////////////////////////////////////////////////////////////////


var contextMenu_disabled			= false;	// disable the context menu?
var contextMenu_mouseOverContext	= false;	// is the mouse over the context menu?
var contextMenu_currentMenu			= null;		// makes my life easier
var	contextMenu_target				= null;

function contextMenu_initialize(obj) {
	if (obj != null) alert(obj);
	
    var alltags = document.getElementsByTagName("*");
    for (i=0; i < alltags.length; i++) {
        tag   = alltags[i];    
        if (tag.getAttribute('contextmenu') != null) {

			menu				= tag.getAttribute('contextmenu');
			menu				= document.getElementById(menu);
			menu.onmouseover	= function() { contextMenu_mouseOverContext = true; };
			menu.onmouseout		= function() { contextMenu_mouseOverContext = false; };
			
			tag.oncontextmenu	= function() { contextMenu_show(); };

        }
    }

	document.body.onmousedown		= function() { contextMenu_mouseDown(); };
    document.body.oncontextmenu		= function() { return (contextMenu_currentMenu == null); };
}

function contextMenu_mouseDown(event) {
	
    if (contextMenu_disabled || contextMenu_mouseOverContext)
        return;

	// IE somehow doesn't pass the event object
	if (event == null)        event = window.event;
	    
	// we assume we have a standards compliant browser, but check if we have IE
	var target = event.target != null ? event.target : event.srcElement;

    // only show the context menu if the right mouse button is pressed
    //   and a hyperlink has been clicked (the code can be made more selective)
    //if (event.button != 2)
		contextMenu_close();
}

function contextMenu_close() {
    contextMenu_mouseOverContext = false;
    if (contextMenu_currentMenu != null) {
    	contextMenu_currentMenu.style.display = 'none';
    	contextMenu_currentMenu	= null;
    }
}

function contextMenu_show() {
	if (contextMenu_disabled || contextMenu_mouseOverContext)
	    return;

	// IE esomehow doesn't pass the event object
	if (event == null)        event = window.event;
	    
	// we assume we have a standards compliant browser, but check if we have IE
	var target = event.target != null ? event.target : event.srcElement;
	
	// document.body.scrollTop does not work in IE
	var scrollTop = document.body.scrollTop ? document.body.scrollTop : 
	    document.documentElement.scrollTop;
	var scrollLeft = document.body.scrollLeft ? document.body.scrollLeft : 
	    document.documentElement.scrollLeft;


	while (target.getAttribute('contextmenu') == null && target.tagName != 'BODY') {
		target	= target.parentElement;
	}
	
	prevMenu				= contextMenu_currentMenu;

	contextMenu_target		= target;
	contextMenu_currentMenu	= target.getAttribute('contextmenu');
	contextMenu_currentMenu	= document.getElementById(contextMenu_currentMenu);
	
	if (prevMenu != null && prevMenu != contextMenu_currentMenu)
		prevMenu.style.display	= 'none';
	
	if (contextMenu_currentMenu == null)	return false;
	
	// hide the menu first to avoid an "up-then-over" visual effect
	contextMenu_currentMenu.style.display = 'none';
	contextMenu_currentMenu.style.left = event.clientX + scrollLeft + 'px';
	contextMenu_currentMenu.style.top = event.clientY + scrollTop + 'px';
	contextMenu_currentMenu.style.display = 'block';
	
	// if this function returns false, the browser's context menu will not show up
	return false;
}






