// ==================================================================
// = TrapImageClicks.js
// ==================================================================

	var sRightClickMessage = "you may not right-click images";
	var bRightClickAlert = false;
	var bLastWasRightClick = false;
	var bInClickHandler = false;

	function toggleRightClickAlert()
	{
		bRightClickAlert = !bRightClickAlert;
	}

	function TrapImageClicks( sPopupMessage )
	{
		if ( sPopupMessage && 0 < sPopupMessage.length )
		{
			sRightClickMessage = sPopupMessage;
			bRightClickAlert = true;
		}

		document.oncontextmenu = handleContextMenu;

		// if Netscape, we have to disable clicks on image links
		if ( navigator.appName == 'Netscape' && document.links )
		{
			for( i=0;i<document.links.length;i++ )
			{
				// assumes that a link without text is an image link
				if ( !document.links[i].text )
				{
					document.links[i].onmousedown = handleLinkClickDown;
					document.links[i].onmouseup   = handleLinkClickUp;
				}
			}
		}

		if ( document.images )
 		{
			for( i=0;i<document.images.length;i++ )
			{
				document.images[i].onmousedown = handleImageClickDown;
				document.images[i].onmouseup   = handleImageClickUp;
			}
		}
	}

	// only in IE and NS7, not in NS4.7
	function handleContextMenu(e)
	{
		var bAllowIt;

		bAllowIt = !bLastWasRightClick;
		logMessage( "contextmenu, LastRightClick = " + bLastWasRightClick + ", AllowIt = " + bAllowIt );
		// alert("contextmenu");

		bLastWasRightClick = false;
		return bAllowIt;
	}

	function handleLinkClickDown(e)
	{
		// dont allow popup alert
		return clickTrap(e,"link.down",false);
	}

	function handleLinkClickUp(e)
	{
		return clickTrap(e,"link.up",true);
	}

	function handleImageClickDown(e)
	{
		return clickTrap(e,"image.down",true);
	}

	function handleImageClickUp(e)
	{
		return clickTrap(e,"image.up",true);
	}

	function clickTrap(e,sEvent,bAllowAlert)
	{
		var bAllowClick = false;
		var button = 0;	// IE-style code: left=1,right=2,middle=4
		var bAlt   = false;
		var bShift = false;
		var bCtrl  = false;

		logEnter( "trap:" + sEvent );

		if ( !bInClickHandler )
		{
			bInClickHandler = true;
			if ( navigator.appName == 'Microsoft Internet Explorer' )
			{
				e = event;
				button = event.button;

				bCtrl  = event.ctrlKey;
				bAlt   = event.altKey;
				bShift = event.shiftKey;
			}

			if ( navigator.appName == 'Netscape' )
			{
				// convert NS which to IE button code
				if ( 1 == e.which ) button = 1;	// left
				if ( 2 == e.which ) button = 4;	// middle
				if ( 3 == e.which ) button = 2;	// right

				bCtrl  = 0 != (e.modifiers & Event.CONTROL_MASK);
				bAlt   = 0 != (e.modifiers & Event.ALT_MASK);
				bShift = 0 != (e.modifiers & Event.SHIFT_MASK);
			}

			// (optional) allow shift-right-click to save
			bLastWasRightClick = ( button == 2 && !bShift );

			bAllowClick = !bLastWasRightClick;

			if ( bLastWasRightClick )
			{
				window.status = sRightClickMessage;

				logMessage( sEvent + " button = " + button );

				if ( !bAllowAlert )
				{
					bLastWasRightClick = false;
				}
				else if ( bRightClickAlert )
				{
					logEnter( "open alert (" + sEvent + ")" );
					alert(sRightClickMessage);
					logExit ( "close alert (" + sEvent + ")" );
					bLastWasRightClick = false;
				}
			}
			bInClickHandler = false;
		}

		logExit( "trace:" + sEvent + " return = " + bAllowClick );

		return bAllowClick;

	} // clickTrap()

// ==================================================================
