
var	gHelpBubbleElement			= null;
var	gHelpBubbleInnerElement	= null;
var	gHelpBubbleLinkElement	= null;
var	gHelpBubbleTipElement		= null;
var	gHelpBubbleShowing			= false;

function help_ShowBubble( linkElement, tipElementId, tipWidth )
	{
		help_ShowBubbleSide( linkElement, tipElementId, tipWidth, true );
	}
	
function help_ShowBubbleSide( linkElement, tipElementId, tipWidth, isLeftSide )
	{
		if( null == gHelpBubbleElement )
			{
				help_InitBubble();
			}
		if( gHelpBubbleShowing )
			{
				var	done = (linkElement == gHelpBubbleLinkElement);
				help_HideBubble();
				if( done )
					return;
			}

		var x= help_FindX( linkElement );
		var y= help_FindY( linkElement );
		var	deltaY;
		var	deltaX;

		if( isLeftSide )
			{
				deltaY 	= 20;
				deltaX	= 0;
				gHelpBubbleElement.style.backgroundPosition = "top left";
			}
		else
			{
				deltaY	= 20;
				deltaX	= 20 - tipWidth;
				gHelpBubbleElement.style.backgroundPosition = "top right";
			}
		
		x += deltaX;
		y += deltaY;
		
		gHelpBubbleElement.style.left			= x+"px";
		gHelpBubbleElement.style.top			= y+"px";
		gHelpBubbleElement.style.width		= tipWidth + "px";
		gHelpBubbleTipElement							= document.getElementById( tipElementId );
		gHelpBubbleInnerElement.innerHTML	= gHelpBubbleTipElement.innerHTML;
		
		gHelpBubbleShowing								= true;
		gHelpBubbleElement.style.display	= "block";
		gHelpBubbleLinkElement						= linkElement;
		document.onmousedown							= help_MouseDown;
		
	}
	
function help_InitBubble()
	{
		gHelpBubbleElement 								= document.createElement( "DIV" );
		gHelpBubbleInnerElement						= document.createElement( "DIV" );
		gHelpBubbleElement.className			= "helpBubble";
		gHelpBubbleInnerElement.className	= "helpBubbleInner";
		gHelpBubbleElement.style.display	= "block";
		gHelpBubbleElement.style.zIndex		= "1000";
		document.body.appendChild( gHelpBubbleElement );
		gHelpBubbleElement.appendChild( gHelpBubbleInnerElement );
	}

function help_HideBubble()
	{
		if( null == gHelpBubbleElement )
			return false;
		
		gHelpBubbleShowing								= false;
		gHelpBubbleElement.style.display	= "none";
		gHelpBubbleLinkElement						= "null";
		return false;
	}
	
function help_FindX( theElement )
	{
		var theX=0;
		if( theElement.offsetParent )
			{
				while( theElement.offsetParent )
					{
						theX			+= theElement.offsetLeft;
						theElement = theElement.offsetParent;
					}
			}
		else
			{
				if( theElement.x )
					{
						theX+=theElement.x;
					}
			}
		return theX;
	}

function help_FindY( theElement )
	{
		var theY = 0;
		if( theElement.offsetParent )
			{
				while(theElement.offsetParent)
					{
						theY	+=theElement.offsetTop;
						theElement=theElement.offsetParent;
					}
			}
		else
			{
				if( theElement.y )
					{
						theY += theElement.y;
					}
			}
		return theY;
	}
	
function help_EventSource( event )
	{
		if( event )
			{
				return event.target;
			}
		if( window.event )
			{
				return window.event.srcElement;
			}
		return null;
	}

function help_MouseDown( event )
	{
		var source = help_EventSource( event );
		if( (source == gHelpBubbleLinkElement) || ( help_ElementIsInAControl( source ) && help_BubbleIsInBubble( source ) ) )
			{
				document.onmousedown=function(){};
			}
		else
			{
				help_HideBubble();
			}	
	}
	
function help_BubbleIsInBubble( element )
	{
		while( element )
			{
				if( element == gHelpBubbleElement )
					{
						return true;
					}
				element = element.parentNode;
			}
		return false;
	}

function help_ElementIsInAControl( element )
	{
		while( element ) 
			{
				if( element.href || element.type )
					{
						return true;
					}
				element = element.parentNode;
			}
		return false;
	}

function help_ToggleDisplayOf( elementId, visibleStyle )
	{
		var	element = document.getElementById( elementId );
		if( null == element )
			return false;
		
		if( "none" == element.style.display )
			element.style.display = visibleStyle;
		else
			element.style.display = "none";
	}

function help_ConstructEmail( name, domain )
	{
		return name + "@" + domain;
	}

function help_FeedbackEmail()
	{
		var	addr = help_ConstructEmail( "feedback", gSite_Domain );
		return "<a href='mailto:" + addr + "'>" + addr + "</a>";
	}

function write_FeedbackEmail()
	{
		document.write( help_FeedbackEmail() );
	}
	
var	gHelpShowImageElement			= null;
var	gHelpShowImageShowing			= false;
var	gHelpShowImageLinkElement	= null;

function help_InitShowImage()
	{
		gHelpShowImageElement								= document.createElement( "DIV" );
		gHelpShowImageElement.className			= "helpShowImage";
		gHelpShowImageElement.style.display	= "block";
		gHelpShowImageElement.style.zIndex	= "1001";
		document.body.appendChild( gHelpShowImageElement );
	}

function help_ShowImage( linkElement )
	{
		if( !linkElement.src )
			return;
		
		if( null == gHelpShowImageElement )
			{
				help_InitShowImage();
			}
		
		if( gHelpShowImageShowing )
			{
				var	done = (linkElement == gHelpShowImageLinkElement);
				help_HideShowImage();
				if( done )
					return;
			}
		var x= help_FindX( linkElement );
		var y= help_FindY( linkElement );
		
		gHelpShowImageElement.style.left		= x+"px";
		gHelpShowImageElement.style.top			= y+"px";
		gHelpShowImageElement.innerHTML			= "<img src='" + linkElement.src + "' onmousedown='help_HideShowImage()'>";
	}

function help_HideShowImage()
	{
		if( null == gHelpShowImageElement )
			return false;
		
		gHelpShowImageShowing								= false;
		gHelpShowImageShowing.style.display	= "none";
		gHelpShowImageLinkElement						= "null";
		return false;
	}
