//------------------------------------------------------------------------------------------------------------
//  Module: SolicitationInfo.js
//  Author: Carl Perkins
// Purpose: Functions for cross-module use and functions we want to attempt to hide somewhat from hackers.
//------------------------------------------------------------------------------------------------------------

//--------------------------------------------------------------------
// Carl Perkins: Use of createPopup() for cool tooltips, menus, etc.
//--------------------------------------------------------------------
var lvPopupTooltip = window.createPopup();  // this is global popupTooltip
var lvShowToolTips = true;
//lvPopupTooltip.createStyleSheet('SolutionInfo.css');

function f_TurnOnToolTips()
{
	lvShowToolTips = true;
} // end function

function f_TurnOffToolTips()
{
	lvShowToolTips = false;
} // end function

function f_ShowOrHideToolTips(oThis)
{
	if (oThis.checked)
	{
		f_TurnOnToolTips();
	}
	else
	{
		f_TurnOffToolTips();	
	} // end if

} // end function

//--------------------------------------------------------------
// c.perkins 5 Dec 2005
//   modified to work with gradient and also the caller supplies
//   all the offsets so that each tooltip popup can be tailored
//   to needs of each individual field on the screen.
//--------------------------------------------------------------
function f_CreatePopupTooltip(oThis)
{
		
	var lvPopupBody = lvPopupTooltip.document.body;
	var lvWidth  = oThis.ToolTipWidth;
	var lvHeight = oThis.ToolTipHeight;
	var lvX = oThis.ToolTipOffsetXaxis;
	var lvY = oThis.ToolTipOffsetYaxis;
	var lvFontSize = oThis.ToolTipFontSize;
	var lvFontFamily = oThis.ToolTipFontFamily;
	var lvFontColor = oThis.ToolTipFontColor;
	
	if (lvFontColor == undefined)
	{
		lvFontColor = 'white';
	}
	else
	{
		//
	}
	
	if (lvFontFamily == undefined)
	{
		lvFontFamily = 'Arial';
	}
	else
	{
		//
	}
	
	if (lvFontSize == undefined)
	{
		lvFontSize = '12';
	}
	else
	{
		//
	}
	
	if (lvY == undefined)
	{
		lvY = '30';
	}
	else
	{
		//
	}
	
	if (lvX == undefined)
	{
		lvX = '0';
	}
	else
	{
		//
	} 
	
	if (lvHeight == undefined)
	{
		lvHeight = '50';
	}
	else
	{
		//
	}
	
	if (lvWidth == undefined)
	{
		lvWidth = '400';
	}
	else
	{
		//
	}

	//lvPopupBody.innerHTML = '<span class="ToolTipReplacementPopup">' + oThis.ToolTip + '</span>';
	lvPopupBody.className = 'ToolTipReplacementPopup';
	
	lvPopupBody.innerHTML = "<div  style='border-style: ridge; position:absolute; top:0; left:0; " + 
    "width:" + lvWidth + "px; height:" + lvHeight + "px; padding:10px; color:" + lvFontColor + "; font-family:" + lvFontFamily + "; " +
     "font-size:" + lvFontSize + "pt; filter:progid:DXImageTransform.Microsoft.Gradient()'> " + "<font color=yellow><b>Tip:&nbsp;</b></font>" +
     oThis.ToolTip + "</div>";

	// if tooltip text was not passed, set indicator so we do not show an empty tooltip     
    var lvToolTipText = oThis.ToolTip;
    var lvToolTipTextWasPassed = true;
    if (lvToolTipText == undefined)
	{
		lvToolTipTextWasPassed = false;
	}
	else
	{
		lvToolTipTextWasPassed = true;
	}
    
	var lvElement = oThis;
	if (lvShowToolTips)
		{
			if (lvToolTipTextWasPassed)
			{
				lvPopupTooltip.show(lvX, lvY, lvWidth, lvHeight, lvElement);
			}
			else
			{
				// nada - do NOT show popup as no tooltip has been supplied
			}
		}
	else
		{
			// nada	
		}
			
	
} // end function

function f_HidePopupTooltip(oThis)
{
	lvPopupTooltip.hide();
} // end function

//---------------------------------------------------------------------
// Carl Perkins: Replace title/tooltips with faster and bigger tooltip.
//---------------------------------------------------------------------
function f_MousedOver(oThis)
{
	var lvWindowEventSrcElementClassName = window.event.srcElement.className;
	var lvWindowEventSrcElementID = window.event.srcElement.id;
	//alert('id: ' + lvWindowEventSrcElementID);
	var lvWindowEventSrcElement = window.event.srcElement;
	var lvToolTip = window.event.title;
	var lvClientX = window.event.clientX;
	var lvClientY = window.event.clientY;
	var lvScreenX = window.event.screenX;
	var lvScreenY = window.event.screenY;
	var lvOffsetX = window.event.offsetX;
	var lvOffsetY = window.event.offsetY;
	var lvX       = window.event.srcElement.id.x;
	var lvY       = window.event.srcElement.id.y;
	var lvDocOffset = window.document.body.offsetTop;
	var lvDocScrollAmount = window.document.body.offsetHeight;
	var lvDocScrollTop = window.document.body.scrollTop;
	
	//alert('clientX: ' + lvClientX +
	//		'\n\nclientY: ' + lvClientY +
	//		'\n\nscreenX: ' + lvScreenX +
	//		'\n\nscreenY: ' + lvScreenY +
	//		'\n\noffsetX: ' + lvOffsetX +
	//		'\n\noffsetY: ' + lvOffsetY +
	//		'\n\nelement x: ' + lvX +
	//		'\n\nelement y: ' + lvY +
	//		'\n\noffsetTop: ' + lvDocOffset +
	//		'\n\noffsetHeight: ' + lvDocScrollAmount +
	//		'\n\nscrollTop: ' + lvDocScrollTop);
	
	var lvToolTipText = document.getElementById("idToolTip").innerText;
	document.getElementById("idToolTip").innerText = oThis.ToolTip;
	document.getElementById("idToolTip").style.visibility = 'visible';
	document.getElementById("idToolTip").style.top = lvClientY + lvDocScrollTop; //lvDocScrollAmount;//  lvDocOffset - lvDocScrollAmount; // + ; //lvX + 200;
	document.getElementById("idToolTip").style.left = lvClientX - 20; //lvY + 100; // + 20;
	
	// adjust for email at edge of screen so user can see entire tooltip
	if (oThis.ScootOver == 'Y')
		{
			// html element attribute ScootOverAmount is optional so detect missing attribute
			var lvTypeOf = typeof(oThis.ScootOverAmount);
			var lvAmountToScootOver;
			if (lvTypeOf == 'undefined')
				{
					lvAmountToScootOver = 350;	
				}
			else
				{
					lvAmountToScootOver = oThis.ScootOverAmount;
				}
			document.getElementById("idToolTip").style.left = lvClientX - lvAmountToScootOver;
		}
	else
		{
			// nada
		} // end if
		
		
	// allow adjustment down on the y axis 
	//if (oThis.ScootOver == 'Y')
	//	{
	//		// html element attribute ScootOverAmount is optional so detect missing attribute
	//		var lvTypeOf = typeof(oThis.ScootDownAmount);
	//		var lvAmountToScootDown;
	//		if (lvTypeOf == 'undefined')
	//			{
	//				lvAmountToScootDown = 0;	
	//			}
	//		else
	//			{
	//				lvAmountToScootDown = oThis.ScootDownAmount;
	//			}
	//		//var lvTest = document.getElementById("idToolTip").style.top = parseInt(lvOffsetY) + parseInt(lvAmountToScootDown);
	//		//alert('style.top computed: ' + lvTest +
	//		//		'\n\nlvOffsetY: ' + lvOffsetY +
	//		//		'\n\nlvAmountToScootDown: ' + lvAmountToScootDown);
	//		document.getElementById("idToolTip").style.top = parseInt(lvOffsetY) + parseInt(lvAmountToScootDown);
	//	}
	//else
	//	{
	//		// nada
	//	} // end if
	
	
		
	switch(lvWindowEventSrcElementClassName)
	{
		case 'TableTooltip':
			//oThis.className = 'TableTooltipMousedOver';
			lvWindowEventSrcElement.className = 'TableTooltipMousedOver';
			break;
			
		default:
			// nada - change nothing!
			break;
			
	} // end switch
	
} // end function

//------------------------------------------------------------
// Carl Perkins: use event bubbling to eliminate tons of code.
//------------------------------------------------------------
function f_MousedOut(oThis)
{
	var lvWindowEventSrcElementClassName = window.event.srcElement.className;
	var lvWindowEventSrcElementID = window.event.srcElement.id;
	var lvWindowEventSrcElement = window.event.srcElement;
	
	switch(lvWindowEventSrcElementClassName)
	{
		case 'TableTooltipMousedOver':
			//oThis.className = 'TableTooltipMousedOver';
			lvWindowEventSrcElement.className = 'TableTooltip';
			break;
			
		default:
			// nada - change nothing!
			break;
			
	} // end switch
	
	document.getElementById("idToolTip").style.visibility = 'hidden';
	
} // end function

function f_dummy()
{

} // end function

function f_GetUnencryptedValues()
{
																																																																																																																																													return String.fromCharCode(97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122)
} // end function

function f_GetEncryptedValues()
{
																																																																																																																																													return String.fromCharCode(122, 120, 99, 118, 98, 110, 109, 108, 107, 106, 104, 103, 102, 100, 115, 97, 113, 119, 101, 114, 116, 121, 117, 105, 111, 112)
} // end function

//------------------------------------------------------------
// end of module
//------------------------------------------------------------

