// ----------------------------------------------------------
// PopUpImages.js
//
// Author        : Thomas E. George
// Creation Date : February 27, 2008
//
// History       : 02/27/2008 - TEG - created
//               : 12/01/2010 - TEG - touched and redeployed to resync
//              
// ----------------------------------------------------------

var xmlHttp                   = null;
var itemImagePopUpImgDiv      = null;
var itemImagePopUpImg         = null;
var itemImagePopUpImgDiv2     = null;
var itemImagePopUpImg2        = null;
var itemImagePopUpDiv         = null;
var itemImagePopUpIFrame      = null;
var itemImagePUOffsetElem     = null;
var itemImagePopUpPID         = null;
var newImg                    = null;
var imgIFrame                 = null;
var imgIFrameSF               = null;
var imgIFrameHeight           = 0;
var imgIFrameWidth            = 0;
var imgImageHeight            = 0;
var imgImageWidth             = 0;

function initVarsPU(bGetDivAndIFrameOnly)
{
	var rc = false;
	
	try
	{
		//<!-- AJAX ImagePopUp (embedded in HTML body via default.asp) -->    
		//<div style="position:absolute;width:0;height:0;visibility:hidden;" id="itemImagePopUpDiv">
		//    <iframe style="visibility:hidden;" id="itemImagePopUpIFrame" frameborder="0" scrolling="no" marginwidth="0" marginheight="0" width="170" height="170">
		//    </iframe>
		//</div>
		//<span style="position:absolute;visibility:hidden;" id="itemImagePopUpDiv">
		//    <iframe style="visibility:hidden;" id="itemImagePopUpIFrame" frameborder="0" scrolling="no" marginwidth="0" marginheight="0" width="170" height="170">
		//    </iframe>
		//</span>
		
		itemImagePopUpDiv    = document.getElementById("itemImagePopUpDiv");    // <div>
		itemImagePopUpIFrame = document.getElementById("itemImagePopUpIFrame"); // <iframe>
		if(itemImagePopUpDiv != null && itemImagePopUpIFrame != null)
		{
			//if(!bGetDivAndIFrameOnly)
			//{
				imgIFrameHeight = itemImagePopUpIFrame.height;
				imgIFrameWidth  = itemImagePopUpIFrame.width;
			
				itemImagePopUpIFrame.onmouseout = function() {clearPopUpImageFE();} // more generic and works in IE and Firefox
				
				//if(_bOnBlurHidePU)
				//{
				//	document.onclick = clearPopUpImageFE;
				//	itemImagePopUpImg.onmouseover = function() {document.onclick = null;}
				//	itemImagePopUpImg.onmouseout  = function() {document.onclick = clearPopUpImageFE;}
				//}
			//}			
			rc = true;
		}
		else
		{
			ProcessException(null, "PopUpImages.js::initVarsPU()", "Required <div> and <iframe> document element(s) are invalid or missing --- Cannot process.");
		}
	}
	catch(e)
	{
	    ProcessException(e, "initVarsPU()");
	}
	finally
	{
	}
	
	return rc;
}

function initVarsPUImg()
{
	var rc = false;
	
	try
	{
		itemImagePopUpImgDiv = document.getElementById("itemImagePopUpImgDiv"); // <div>
		itemImagePopUpImg    = document.getElementById("itemImagePopUpImg");    // <img>
		if(itemImagePopUpImgDiv != null && itemImagePopUpImg != null)
		{
			imgImageHeight = itemImagePopUpImg.height;
			imgImageWidth  = itemImagePopUpImg.width;
			
			itemImagePopUpImg.onmouseout = function() {clearPopUpImageImg();}
			
			if(_bOnBlurHidePU)
			{
				//itemImagePopUpImg.onblur = _clearPopUpImageImg;
				
				document.onclick = _clearPopUpImageImg;
				itemImagePopUpImg.onmouseover = function() {document.onclick = null;}
				itemImagePopUpImg.onmouseout  = function() {document.onclick = _clearPopUpImageImg;}
				
				//var ebt = document.getElementsByTagName("body");
				//if(ebt != null && ebt[0] != null)
				//{
				//	ebt[0].onclick = _clearPopUpImageImg;
				//}
			}
			rc = true;
		}
		//else
		//{
		//	ProcessException(null, "PopUpImages.js::initVarsPUImg()", "Required <div> and <img> document element(s) are invalid or missing --- Cannot process.");
		//}
		
		itemImagePopUpImgDiv2 = document.getElementById("itemImagePopUpImgDiv2"); // <div>
		itemImagePopUpImg2    = document.getElementById("itemImagePopUpImg2");    // <img>
		if(itemImagePopUpImgDiv2 != null && itemImagePopUpImg2 != null)
		{
			imgImageHeight = itemImagePopUpImg2.height;
			imgImageWidth  = itemImagePopUpImg2.width;
			
			itemImagePopUpImg2.onmouseout = function() {clearPopUpImageImg2();}
			
			if(_bOnBlurHidePU2)
			{
				//itemImagePopUpImg2.onblur = _clearPopUpImageImg2;
				
				document.onclick = _clearPopUpImageImg2;
				itemImagePopUpImg2.onmouseover = function() {document.onclick = null;}
				itemImagePopUpImg2.onmouseout  = function() {document.onclick = _clearPopUpImageImg2;}
				
				//var ebt = document.getElementsByTagName("body");
				//if(ebt != null && ebt[0] != null)
				//{
				//	ebt[0].onclick = _clearPopUpImageImg2;
				//}
			}
			rc = true;
		}
	}
	catch(e)
	{
	    ProcessException(e, "initVarsPUImg()");
	}
	finally
	{
	}
	
	return rc;
}

function hasTooltip()
{
	var rc = false;
	
	try
	{
		var sPID = String(itemImagePopUpPID) + "tt";
		var elem = document.getElementById(sPID);
		
		if(elem != null)
		{
			rc = true;
		}
	}
	catch(e)
	{
	    ProcessException(e, "hasTooltip()");
	}
	finally
	{
	}
	
	return rc;
}

function clearAltTextPU(element)
{
	try
	{
		if(element != null)
		{
			var altAttr = element.getAttribute("alt"); //["alt"];
		
			if(altAttr != null && altAttr.length > 0)
			{
				element.setAttribute("alt", ""); //altAttr = "";
			}
			
			var titleAttr = element.getAttribute("title");
		
			if(titleAttr != null && titleAttr.length > 0)
			{
				element.setAttribute("title", "");
			}
		}
	}
	catch(e)
	{
	    ProcessException(e, "clearAltTextPU()");
	}
	finally
	{
	}
}

function popUpImage(element)
{
	try
	{
		if(_bActivatePU)
		{
			if(initVarsPU(false))
			{	
				if(element != null)
				{		
					_clearPopUpImage();
					
					// clear standard tooltip if active
					clearAltTextPU(element);
					            
					//createXMLHttpRequest();
					xmlHttp = CreateXMLHttpRequestObject();
					
					if(xmlHttp != null)
					{
						xmlHttp.onreadystatechange = callbackPU;
    
						itemImagePUOffsetElem = element;
						
						var url = ""
						
						var eID = element.id;
						
						var eIDi = 0
						
						eIDi = eID.search(/cu/i)
						if(eIDi >= 0)
						{
							eID = eID.replace(/cu/gi, "");
							url = "/ThumbnailServer.asp?ContribID=" + escape(eID);
						}
						else
						{
							eIDi = eID.search(/pu/i)
							if(eIDi >= 0)
							{
								eID = eID.replace(/pu/gi, "");
								url = "/ThumbnailServer.asp?PID=" + escape(eID);
							}
						}
						 
						if(url.length > 0)
						{
							xmlHttp.open("GET", url, true);
							xmlHttp.send(null);
						}
					}
					else
					{
						ProcessException(null, "PopUpImages.js::popUpImage()", "CreateXMLHttpRequestObject() failed --- Cannot process.");
					}
				}
				else
				{
					ProcessException(null, "PopUpImages.js::popUpImage()", "Invalid passed-in parameter 'element' --- Cannot process.");
				}
			}
			else
			{
				ProcessException(null, "PopUpImages.js::popUpImage()", "initVarsPU() failed --- Cannot process.");
			}
		}
	}
	catch(e)
	{
	    ProcessException(e, "popUpImage()");
	}
	finally
	{
	}
}

function callbackPU()
{
	try
	{
		if(xmlHttp != null)
		{
			if(xmlHttp.readyState == _nRequestReadyState_Complete_)
			{
			    if(xmlHttp.status == _nHttpServerStatus_OK_)
			    {
					//var sResponseHeaders = xmlHttp.GetAllResponseHeaders();  //+++ not supported by FireFox
					//var sContentType     = xmlHttp.GetResponseHeader("Content-Type"); //+++ Firefox chokes here
					//
					//alert("callbackPU() - Content-Type = '" + sContentType + "'");
					
					var sContentType = "";
					
					if(xmlHttp.responseText.toLowerCase().indexOf(_sXmlDocTag) >= 0)
					{
						sContentType = "text/xml";
					}
					else
					{
						sContentType = "text/html";
					}
					
					if(sContentType == "text/xml")
					{
						var xmlResults = null;
						
						if(reParseXMLText(xmlHttp))
						{
							var sXHRR = cleanXMLDocText(xmlHttp.responseText);
							
							xmlResults = ParseXMLTextToXMLDoc(sXHRR);
						}
						else
						{
							xmlResults = xmlHttp.responseXML;
						}
	
						//xmlResults = unescape(xmlResults); //+++NO+++
						
						setPopUpImage(xmlResults);
			        }
			        else
			        {
			        }
			    }
			}
		}
		else
		{
			ProcessException(null, "PopUpImages.js::callbackPU()", "xmlHttp is null - CreateXMLHttpRequestObject() failed --- Cannot process.");
		}
	}
	catch(e)
	{
	    ProcessException(e, "callbackPU()");
	}
	finally
	{
	}
}

function setToImageSize(imageSrc, imageIFrame, scaleFactor)
{
	try
	{
		newImg = new Image();
	
		newImg.src = imageSrc;
		
		//var nmax = 0
		//while(newImg.width <= 0)
		//{
		//	++nmax;
		//	
		//	if(nmax > 10000)
		//	{
		//		break;
		//	}
		//}
	
		if(_nTimeoutMSSetNewImgSize > 0)
		{
			imgIFrame   = imageIFrame;
			imgIFrameSF = scaleFactor;

			//setTimeout("imgIFrame.style.height = (newImg.height * imgIFrameSF) + 'px';", _nTimeoutMSSetNewImgSize);
			//setTimeout("imgIFrame.style.width  = (newImg.width  * imgIFrameSF) + 'px';", _nTimeoutMSSetNewImgSize);
			setTimeout("imgIFrame.height = (newImg.height * imgIFrameSF) + 'px';", _nTimeoutMSSetNewImgSize);
			setTimeout("imgIFrame.width  = (newImg.width  * imgIFrameSF) + 'px';", _nTimeoutMSSetNewImgSize);

			//var nmax = 0
			//while((imgIFrame.style.height + 'px' != (newImg.height * imgIFrameSF) + 'px') || (imgIFrame.style.width + 'px' != (newImg.width * imgIFrameSF) + 'px'))
			//{
			//	++nmax;
			//}
		}
		else
		{
			//imageIFrame.style.height = (newImg.height * scaleFactor) + 'px';
			//imageIFrame.style.width  = (newImg.width  * scaleFactor) + 'px';
			imageIFrame.height = (newImg.height * scaleFactor) + 'px';
			imageIFrame.width  = (newImg.width  * scaleFactor) + 'px';
		}
	}
	catch(e)
	{
	    ProcessException(e, "setToImageSize()");
	}
	finally
	{
	}
}

function setPopUpImageImgEx(PopUpImage)
{
	try
	{
		//alert("in setPopUpImageImgEx()");
		
		if(PopUpImage.length > 0)
		{
			if(itemImagePopUpImgDiv != null && itemImagePopUpImg != null)
			{
				itemImagePopUpImg.src = PopUpImage;
				
				setOffsetsPUImg();
					
				if(_isIE)
				{
					if(_nTimeoutMSPU > 0)
					{
						setTimeout("itemImagePopUpImgDiv.style.visibility = 'visible';", _nTimeoutMSPU);
						setTimeout("itemImagePopUpImg.style.visibility = 'visible';", _nTimeoutMSPU);
						//setTimeout("itemImagePopUpImg.focus();", _nTimeoutMSPU);
					}
					else
					{
						itemImagePopUpImgDiv.style.visibility = 'visible';
						itemImagePopUpImg.style.visibility = 'visible';
						//itemImagePopUpImg.focus();
					}
				}
				else
				{
					if(_nTimeoutMSPU > 0)
					{
						setTimeout("itemImagePopUpImgDiv.style.setProperty('visibility', '', null);", _nTimeoutMSPU);
						setTimeout("itemImagePopUpImg.style.setProperty('visibility', '', null);", _nTimeoutMSPU);
						//setTimeout("itemImagePopUpImg.focus();", _nTimeoutMSPU);
					}
					else
					{
						itemImagePopUpImgDiv.style.setProperty('visibility', '', null);
						itemImagePopUpImg.style.setProperty('visibility', '', null);
						//itemImagePopUpImg.focus();
					}
				}
			}
			else
			{
				ProcessException(null, "PopUpImages.js::setPopUpImageImgEx()", "Invalid 'itemImagePopUpImgDiv' and/or 'itemImagePopUpImg' --- Cannot process.");
			}
		}
	}
	catch(e)
	{
	    ProcessException(e, "setPopUpImageImgEx()");
	}
	finally
	{
	}
}

function setPopUpImageImgEx2(PopUpImage)
{
	try
	{
		//alert("in setPopUpImageImgEx2()");
		
		if(PopUpImage.length > 0)
		{
			if(itemImagePopUpImgDiv2 != null && itemImagePopUpImg2 != null)
			{
				itemImagePopUpImg2.src = PopUpImage;
				
				setOffsetsPUImg2();
					
				if(_isIE)
				{
					if(_nTimeoutMSPU > 0)
					{
						setTimeout("itemImagePopUpImgDiv2.style.visibility = 'visible';", _nTimeoutMSPU);
						setTimeout("itemImagePopUpImg2.style.visibility = 'visible';", _nTimeoutMSPU);
						//setTimeout("itemImagePopUpImg2.focus();", _nTimeoutMSPU);
					}
					else
					{
						itemImagePopUpImgDiv2.style.visibility = 'visible';
						itemImagePopUpImg2.style.visibility = 'visible';
						//itemImagePopUpImg2.focus();
					}
				}
				else
				{
					if(_nTimeoutMSPU > 0)
					{
						setTimeout("itemImagePopUpImgDiv2.style.setProperty('visibility', '', null);", _nTimeoutMSPU);
						setTimeout("itemImagePopUpImg2.style.setProperty('visibility', '', null);", _nTimeoutMSPU);
						//setTimeout("itemImagePopUpImg2.focus();", _nTimeoutMSPU);
					}
					else
					{
						itemImagePopUpImgDiv2.style.setProperty('visibility', '', null);
						itemImagePopUpImg2.style.setProperty('visibility', '', null);
						//itemImagePopUpImg2.focus();
					}
				}
			}
			else
			{
				ProcessException(null, "PopUpImages.js::setPopUpImageImgEx2()", "Invalid 'itemImagePopUpImgDiv2' and/or 'itemImagePopUpImg2' --- Cannot process.");
			}
		}
	}
	catch(e)
	{
	    ProcessException(e, "setPopUpImageImgEx2()");
	}
	finally
	{
	}
}

function setPopUpImageEx(PID, PopUpImage)
{
	try
	{
		if(PopUpImage.length > 0)
		{
			// see all uses of if(_bCloneDivAndIFrame)
			if(_bCloneDivAndIFrame)
			{
				clonePopUpImageDivAndIFrame("");
				//createPopUpImageDivAndIFrame("");
			}
			
			if(itemImagePopUpIFrame != null && itemImagePopUpDiv != null)
			{
				//setOffsetsPU();
				
				itemImagePopUpIFrame.src = PopUpImage;
				
				setToImageSize(PopUpImage, itemImagePopUpIFrame, 1);
				
				setOffsetsPU();
					
				//itemImagePopUpDiv.style.visibility = "visible";
				if(_isIE)
				{
					//setToImageSize(PopUpImage, itemImagePopUpIFrame, 1);

					if(_nTimeoutMSPU > 0)
					{
						setTimeout("itemImagePopUpDiv.style.visibility = 'visible';", _nTimeoutMSPU);
						setTimeout("itemImagePopUpIFrame.style.visibility = 'visible';", _nTimeoutMSPU);
					}
					else
					{
						itemImagePopUpDiv.style.visibility = 'visible';
						itemImagePopUpIFrame.style.visibility = 'visible';
					}
				}
				else
				{
					if(_nTimeoutMSPU > 0)
					{
						setTimeout("itemImagePopUpDiv.style.setProperty('visibility', '', null);", _nTimeoutMSPU);
						setTimeout("itemImagePopUpIFrame.style.setProperty('visibility', '', null);", _nTimeoutMSPU);
					}
					else
					{
						itemImagePopUpDiv.style.setProperty('visibility', '', null);
						itemImagePopUpIFrame.style.setProperty('visibility', '', null);
					}
				}
				
				//setOffsetsPU();
			}
			else
			{
				ProcessException(null, "PopUpImages.js::setPopUpImageEx()", "Invalid 'PopUpImage' and/or 'itemImagePopUpIFrame' and/or 'itemImagePopUpDiv' --- Cannot process.");
			}
		}
	}
	catch(e)
	{
	    ProcessException(e, "setPopUpImageEx()");
	}
	finally
	{
	}
}
        
function setPopUpImage(xmlResults)
{
	try
	{
		if(xmlResults != null)
		{
			if(itemImagePopUpIFrame != null && itemImagePopUpDiv != null)
			{
				var PID        = xmlResults.getElementsByTagName("PID")[0].firstChild.data;
				var PopUpImage = "";
				if(xmlResults.getElementsByTagName("PopUpImage")[0].firstChild != null)
				{
					PopUpImage = xmlResults.getElementsByTagName("PopUpImage")[0].firstChild.data;
				}					
				
				setPopUpImageEx(PID, PopUpImage);
				
				//itemImagePopUpIFrame.src = PopUpImage;
				//
				//setOffsetsPU();
				//
				////itemImagePopUpDiv.style.visibility = "visible";
				//if(_isIE)
				//{
				//	itemImagePopUpDiv.style.visibility = 'visible';
				//	itemImagePopUpIFrame.style.visibility = 'visible';
				//}
				//else
				//{
				//	itemImagePopUpDiv.style.setProperty('visibility', '', null);
				//	itemImagePopUpIFrame.style.setProperty('visibility', '', null);
				//}
			}
			else
			{
				ProcessException(null, "PopUpImages.js::setPopUpImage()", "Invalid 'itemImagePopUpIFrame' and/or 'itemImagePopUpDiv' --- Cannot process.");
			}
		}
		else
		{
			ProcessException(null, "PopUpImages.js::setPopUpImage()", "Invalid passed-in parameter 'xmlResults' --- Cannot process.");
		}
	}
	catch(e)
	{
	    ProcessException(e, "setPopUpImage()");
	}
	finally
	{
	}
}
        
function setOffsetsPU()
{
	try
	{
		if(itemImagePUOffsetElem != null && itemImagePopUpDiv != null)
		{
			//var end = itemImagePUOffsetElem.offsetWidth;
			var end = calculateOffsetLeftPU(itemImagePUOffsetElem);
			var top = calculateOffsetTopPU(itemImagePUOffsetElem);
    
			itemImagePopUpDiv.style.border = "none"; //"black 1px solid";
			itemImagePopUpDiv.style.left   = end + itemImagePUOffsetElem.offsetWidth + 15;
			
			var pw = itemImagePopUpDiv.style.left;
			pw = Number(pw.replace(/px/gi, ""));
			var pl = Number(itemImagePopUpIFrame.style.width.replace(/px/gi, ""));
			pw = pw + pl
			
			var dw = document.body.clientWidth; //.offsetWidth .scrollWidth;
			
			if(pw > dw)
			{
				itemImagePopUpDiv.style.left = (end - (pl + 10)) + "px";
			}
			
			itemImagePopUpDiv.style.top = top + "px";
		}
		else
		{
			ProcessException(null, "PopUpImages.js::setOffsetsPU()", "Invalid 'itemImagePUOffsetElem' and/or 'itemImagePopUpDiv' --- Cannot process.");
		}
	}
	catch(e)
	{
	    ProcessException(e, "setOffsetsPU()");
	}
	finally
	{
	}
}
        
function calculateOffsetTopPU(field)
{
	return calculateOffsetPU(field, "offsetTop") + _nImageOffsetTop;
}

function calculateOffsetLeftPU(field)
{
	return calculateOffsetPU(field, "offsetLeft") + _nImageOffsetLeft;
}

function calculateOffsetTopPU2(field)
{
	return calculateOffsetPU(field, "offsetTop") + _nImage2OffsetTop;
}

function calculateOffsetLeftPU2(field)
{
	return calculateOffsetPU(field, "offsetLeft") + _nImage2OffsetLeft;
}

function calculateOffsetPU(field, attr)
{
	var offset = 0;
  
	try
	{
		while(field)
		{
			offset += field[attr]; 
			field = field.offsetParent;
		}
	}
	catch(e)
	{
	    ProcessException(e, "calculateOffsetPU()");
	}
	finally
	{
	}
  
	return offset;
}

function setOffsetsPUImg()
{
	try
	{
		if(!_bFixedImgPos)
		{
			if(itemImagePUOffsetElem != null && itemImagePopUpImgDiv != null)
			{
				//alert("in setOffsetsPUImg()");
				//alert("i left:" + itemImagePopUpImgDiv.style.left + ", top:" + itemImagePopUpImgDiv.style.top);
		
				//var end = itemImagePUOffsetElem.offsetWidth;
				var end = calculateOffsetLeftPU(itemImagePUOffsetElem);
				var top = calculateOffsetTopPU(itemImagePUOffsetElem);
    
				itemImagePopUpImgDiv.style.border = "none"; //"black 1px solid";
				itemImagePopUpImgDiv.style.left   = end + itemImagePUOffsetElem.offsetWidth + 15;
				
				var pw = itemImagePopUpImgDiv.style.left;
				pw = Number(pw.replace(/px/gi, ""));
				var pl = Number(itemImagePopUpImg.style.width.replace(/px/gi, ""));
				pw = pw + pl
				
				var dw = document.body.clientWidth; //.offsetWidth .scrollWidth;
				
				if(pw > dw)
				{
					itemImagePopUpImgDiv.style.left = (end - (pl + 10)) + "px";
				}
				
				itemImagePopUpImgDiv.style.top = top + "px";
				
				//alert("o left:" + itemImagePopUpImgDiv.style.left + ", top:" + itemImagePopUpImgDiv.style.top);
			}
			else
			{
				ProcessException(null, "PopUpImages.js::setOffsetsPUImg()", "Invalid 'itemImagePUOffsetElem' and/or 'itemImagePopUpImgDiv' --- Cannot process.");
			}
		}
	}
	catch(e)
	{
	    ProcessException(e, "setOffsetsPUImg()");
	}
	finally
	{
	}
}

function setOffsetsPUImg2()
{
	try
	{
		if(!_bFixedImgPos2)
		{
			if(itemImagePUOffsetElem != null && itemImagePopUpImgDiv2 != null)
			{
				//alert("in setOffsetsPUImg2()");
				//alert("i left:" + itemImagePopUpImgDiv2.style.left + ", top:" + itemImagePopUpImgDiv2.style.top);
		
				//var end = itemImagePUOffsetElem.offsetWidth;
				var end = calculateOffsetLeftPU2(itemImagePUOffsetElem);
				var top = calculateOffsetTopPU2(itemImagePUOffsetElem);
    
				///itemImagePopUpImgDiv2.style.border = "none"; //"black 1px solid";
				itemImagePopUpImgDiv2.style.left   = end + itemImagePUOffsetElem.offsetWidth + 15;
				
				var pw = itemImagePopUpImgDiv2.style.left;
				pw = Number(pw.replace(/px/gi, ""));
				var pl = Number(itemImagePopUpImg2.style.width.replace(/px/gi, ""));
				pw = pw + pl
				
				var dw = document.body.clientWidth; //.offsetWidth .scrollWidth;
				
				if(pw > dw)
				{
					itemImagePopUpImgDiv2.style.left = (end - (pl + 10)) + "px";
				}
				
				itemImagePopUpImgDiv2.style.top = top + "px";
				
				//alert("o left:" + itemImagePopUpImgDiv2.style.left + ", top:" + itemImagePopUpImgDiv2.style.top);
			}
			else
			{
				ProcessException(null, "PopUpImages.js::setOffsetsPUImg2()", "Invalid 'itemImagePUOffsetElem' and/or 'itemImagePopUpImgDiv2' --- Cannot process.");
			}
		}
	}
	catch(e)
	{
	    ProcessException(e, "setOffsetsPUImg2()");
	}
	finally
	{
	}
}

function clearPopUpImageDivAndIFrame()
{
	try
	{
		//alert("in clearPopUpImageDivAndIFrame()");
		
		if(initVarsPU(true))
		{	
			_clearPopUpImage();
		}
		else
		{
			ProcessException(null, "PopUpImages.js::clearPopUpImageDivAndIFrame()", "initVarsPU() failed --- Cannot process.");
		}
	}
	catch(e)
	{
	    ProcessException(e, "clearPopUpImageDivAndIFrame()");
	}
	finally
	{
	}
}

function setContainerOnClickEvents()
{
	if(_bOnBlurHidePU)
	{
		document.onclick = _clearPopUpImageImg;
		itemImagePopUpImg.onmouseover = function() {document.onclick = null;}
		itemImagePopUpImg.onmouseout  = function() {document.onclick = _clearPopUpImageImg;}
	}
	
	if(_bOnBlurHidePU2)
	{
		document.onclick = _clearPopUpImageImg2;
		itemImagePopUpImg2.onmouseover = function() {document.onclick = null;}
		itemImagePopUpImg2.onmouseout  = function() {document.onclick = _clearPopUpImageImg2;}
	}
}

function clearPopUpImageImage()
{
	try
	{
		//alert("in clearPopUpImageImage()");
		
		if(initVarsPUImg())
		{	
			clearPopUpImageImg();
		}
		else
		{
			ProcessException(null, "PopUpImages.js::clearPopUpImageImage()", "initVarsPUImg() failed --- Cannot process.");
		}
	}
	catch(e)
	{
	    ProcessException(e, "clearPopUpImageImage()");
	}
	finally
	{
	}
}

function _clearPopUpImage()
{
	try
	{
		if(!hasTooltip())
		{
			if(_bActivatePU)
			{
				if(itemImagePopUpIFrame != null && itemImagePopUpDiv != null)
				{
					//var v = _isIE ? itemImagePopUpDiv.style.visibility : itemImagePopUpDiv.style.getPropertyValue('visibility');
					if(_isIE)
					{
						if(_nTimeoutMSPU > 0)
						{
							setTimeout("itemImagePopUpDiv.style.visibility = 'hidden';", _nTimeoutMSPU);
							setTimeout("itemImagePopUpIFrame.style.visibility = 'hidden';", _nTimeoutMSPU);
						}
						else
						{
							itemImagePopUpDiv.style.visibility = 'hidden';
							itemImagePopUpIFrame.style.visibility = 'hidden';
						}
					}
					else
					{
						if(_nTimeoutMSPU > 0)
						{
							setTimeout("itemImagePopUpDiv.style.setProperty('visibility', 'hidden', null);", _nTimeoutMSPU);
							setTimeout("itemImagePopUpIFrame.style.setProperty('visibility', 'hidden', null);", _nTimeoutMSPU);
						}
						else
						{
							itemImagePopUpDiv.style.setProperty('visibility', 'hidden', null);
							itemImagePopUpIFrame.style.setProperty('visibility', 'hidden', null);
						}
					}
					
					itemImagePopUpDiv.style.border = "none";
					
					// see all uses of if(_bCloneDivAndIFrame)
					if(_bCloneDivAndIFrame)
					{
						clonePopUpImageDivAndIFrame("");
						//createPopUpImageDivAndIFrame("");
					}
					else
					{
						if(itemImagePopUpIFrame.src.length > 0)
						{
							itemImagePopUpIFrame.contentWindow.location.replace("");
						}
						
						itemImagePopUpIFrame.src = "";
					}
				}
				else
				{
					ProcessException(null, "PopUpImages.js::_clearPopUpImage()", "Invalid 'itemImagePopUpIFrame' and/or 'itemImagePopUpDiv' --- Cannot process.");
				}
			}
		}
	}
	catch(e)
	{
	    ProcessException(e, "_clearPopUpImage()");
	}
	finally
	{
	}
}

function _clearPopUpImageImg()
{
	try
	{
		//alert("in _clearPopUpImageImg()");
		
		if(_bActivatePU)
		{
			if(itemImagePopUpImgDiv != null && itemImagePopUpImg != null)
			{
				if(_isIE)
				{
					if(_nTimeoutMSPU > 0)
					{
						setTimeout("itemImagePopUpImgDiv.style.visibility = 'hidden';", _nTimeoutMSPU);
						setTimeout("itemImagePopUpImg.style.visibility = 'hidden';", _nTimeoutMSPU);
					}
					else
					{
						itemImagePopUpImgDiv.style.visibility = 'hidden';
						itemImagePopUpImg.style.visibility = 'hidden';
					}
				}
				else
				{
					if(_nTimeoutMSPU > 0)
					{
						setTimeout("itemImagePopUpImgDiv.style.setProperty('visibility', 'hidden', null);", _nTimeoutMSPU);
						setTimeout("itemImagePopUpImg.style.setProperty('visibility', 'hidden', null);", _nTimeoutMSPU);
					}
					else
					{
						itemImagePopUpImgDiv.style.setProperty('visibility', 'hidden', null);
						itemImagePopUpImg.style.setProperty('visibility', 'hidden', null);
					}
				}
					
				itemImagePopUpImg.style.border = "none";
						
				itemImagePopUpImg.src = "";
				
				_clearPopUpImageImg2();
			}
			else
			{
				ProcessException(null, "PopUpImages.js::_clearPopUpImageImg()", "Invalid 'itemImagePopUpImgDiv' and/or 'itemImagePopUpImg' --- Cannot process.");
			}
		}
	}
	catch(e)
	{
	    ProcessException(e, "_clearPopUpImageImg()");
	}
	finally
	{
	}
}

function _clearPopUpImageImg2()
{
	try
	{
		//alert("in _clearPopUpImageImg2()");
		
		if(_bActivatePU)
		{
			if(itemImagePopUpImgDiv2 != null && itemImagePopUpImg2 != null)
			{
				if(_isIE)
				{
					if(_nTimeoutMSPU > 0)
					{
						setTimeout("itemImagePopUpImgDiv2.style.visibility = 'hidden';", _nTimeoutMSPU);
						setTimeout("itemImagePopUpImg2.style.visibility = 'hidden';", _nTimeoutMSPU);
					}
					else
					{
						itemImagePopUpImgDiv2.style.visibility = 'hidden';
						itemImagePopUpImg2.style.visibility = 'hidden';
					}
				}
				else
				{
					if(_nTimeoutMSPU > 0)
					{
						setTimeout("itemImagePopUpImgDiv2.style.setProperty('visibility', 'hidden', null);", _nTimeoutMSPU);
						setTimeout("itemImagePopUpImg2.style.setProperty('visibility', 'hidden', null);", _nTimeoutMSPU);
					}
					else
					{
						itemImagePopUpImgDiv2.style.setProperty('visibility', 'hidden', null);
						itemImagePopUpImg2.style.setProperty('visibility', 'hidden', null);
					}
				}
					
				///itemImagePopUpImg2.style.border = "none";
						
				itemImagePopUpImg2.src = "";
			}
		}
	}
	catch(e)
	{
	    ProcessException(e, "_clearPopUpImageImg2()");
	}
	finally
	{
	}
}

function callOnTimeout(sCallStatement, iTOms)
{
	var rc = false;
	try
	{
		if(iTOms > 0)
		{
			setTimeout(sCallStatement, iTOms);
			
			rc = true;
		}
	}
	catch(e)
	{
	    ProcessException(e, "callOnTimeout()");
	}
	finally
	{
	}
	
	return rc;
}

function clearPopUpImageFE()
{
	try
	{
		if(_bOnMouseOutPU)
		{
			_clearPopUpImage();
		}
	}
	catch(e)
	{
	    ProcessException(e, "clearPopUpImageFE()");
	}
	finally
	{
	}
}

function clearPopUpImageImg()
{
	try
	{
		if(_bOnMouseOutPU)
		{
			_clearPopUpImageImg();
		}
	}
	catch(e)
	{
	    ProcessException(e, "clearPopUpImageImg()");
	}
	finally
	{
	}
}

function clearPopUpImageImg2()
{
	try
	{
		if(_bOnMouseOutPU2)
		{
			_clearPopUpImageImg2();
		}
	}
	catch(e)
	{
	    ProcessException(e, "clearPopUpImageImg2()");
	}
	finally
	{
	}
}

function clearPopUpImage()
{
	try
	{
		if(_bOnMouseOutPU)
		{
			_clearPopUpImage();
		}
	}
	catch(e)
	{
	    ProcessException(e, "clearPopUpImage()");
	}
	finally
	{
	}
}
function getPopUpImage(element, PID, imgURL)
{
	try
	{
		//alert("getPopUpImage(" + imgURL + ")");
		
		itemImagePopUpPID = PID;
		
		if(!hasTooltip())
		{
			if(_bUseXHRMechanismPU || (imgURL == null || imgURL.length == 0))
			{
				popUpImage(element);
			}
			else
			{
				if(_bActivatePU)
				{
					if(initVarsPU(false))
					{	
						if(element != null && imgURL != null && imgURL.length > 0)
						{		
							_clearPopUpImage();
							
							// clear standard tooltip if active
							clearAltTextPU(element);
							
							itemImagePUOffsetElem = element;
							
							setPopUpImageEx(PID, imgURL);
						}
						else
						{
							ProcessException(null, "PopUpImages.js::getPopUpImage()", "Invalid passed-in parameter 'element' --- Cannot process.");
						}
					}
					else
					{
						ProcessException(null, "PopUpImages.js::getPopUpImage()", "initVarsPU() failed --- Cannot process.");
					}
				}
			}
		}
	}
	catch(e)
	{
	    ProcessException(e, "getPopUpImage()");
	}
	finally
	{
	}
}

function getPopUpImageImg(element, imgURL, nOffsetTop, nOffsetLeft)
{
	try
	{
		//alert("getPopUpImageImg(" + imgURL + ")");
		
		if(_bActivatePU)
		{
			if(initVarsPUImg())
			{	
				if(element != null && imgURL != null && imgURL.length > 0)
				{		
					_clearPopUpImageImg();
							
					// clear standard tooltip if active
					clearAltTextPU(element);
							
					itemImagePUOffsetElem = element;
					
					if(nOffsetTop != -1)
					{
						_nImageOffsetTop = nOffsetTop;
					}
					else
					{
						_nImageOffsetTop = _nImageOffsetDefTop;
					}
					
					if(nOffsetLeft != -1)
					{
						_nImageOffsetLeft = nOffsetLeft;
					}
					else
					{
						_nImageOffsetLeft = _nImageOffsetDefLeft;
					}
							
					setPopUpImageImgEx(imgURL);
				}
				else
				{
					ProcessException(null, "PopUpImages.js::getPopUpImageImg()", "Invalid passed-in parameter 'element' --- Cannot process.");
				}
			}
			else
			{
				ProcessException(null, "PopUpImages.js::getPopUpImageImg()", "initVarsPUImg() failed --- Cannot process.");
			}
		}
	}
	catch(e)
	{
	    ProcessException(e, "getPopUpImageImg()");
	}
	finally
	{
	}
}

function getPopUpImageImg2(element, imgURL, nOffsetTop, nOffsetLeft)
{
	try
	{
		//alert("getPopUpImageImg2(" + imgURL + ")");
		
		if(_bActivatePU)
		{
			if(initVarsPUImg())
			{	
				if(element != null && imgURL != null && imgURL.length > 0)
				{		
					_clearPopUpImageImg2();
							
					// clear standard tooltip if active
					clearAltTextPU(element);
							
					itemImagePUOffsetElem = element;
							
					if(nOffsetTop != -1)
					{
						_nImage2OffsetTop  = nOffsetTop;
					}
					else
					{
						_nImage2OffsetTop = _nImage2OffsetDefTop;
					}
					
					if(nOffsetLeft != -1)
					{
						_nImage2OffsetLeft = nOffsetLeft;
					}
					else
					{
						_nImage2OffsetLeft = _nImage2OffsetDefLeft;
					}
					
					setPopUpImageImgEx2(imgURL);
				}
				else
				{
					ProcessException(null, "PopUpImages.js::getPopUpImageImg2()", "Invalid passed-in parameter 'element' --- Cannot process.");
				}
			}
			else
			{
				ProcessException(null, "PopUpImages.js::getPopUpImageImg2()", "initVarsPUImg() failed --- Cannot process.");
			}
		}
	}
	catch(e)
	{
	    ProcessException(e, "getPopUpImageImg2()");
	}
	finally
	{
	}
}

// assumes itemImagePopUpDiv and itemImagePopUpIFrame originally created in HTML
function createPopUpImageDivAndIFrame(sSrc)
{
	try
	{
		//var e_Div        = document.createElement("DIV");
		//e_Div.id         = "itemImagePopUpDiv";
		//e_Div.visibility = "hidden";
		//e_Div.position   = "absolute";
		//e_Div.width      = 0;
		//e_Div.height     = 0;
		////e_Div.style = "position:absolute;width:0;height:0;visibility:hidden;";
		
		if(itemImagePopUpDiv != null && itemImagePopUpIFrame != null)
		{
			var e_IFrame = document.createElement("IFRAME");
			
			if(e_IFrame != null)
			{
				if(sSrc != null && sSrc.length > 0)
				{
					e_IFrame.src = sSrc;
				}
				
				e_IFrame.id           = "itemImagePopUpIFrame";
				e_IFrame.visibility   = "hidden";
				e_IFrame.width        = imgIFrameWidth; //90
				e_IFrame.height       = imgIFrameHeight; //120
				e_IFrame.frameborder  = 0;
				e_IFrame.scrolling    = "no";
				e_IFrame.marginwidth  = 0;
				e_IFrame.marginheight = 0;
				////e_IFrame.style      = "visibility:hidden;";
				////e_IFrame.src        = "http://www.xyz.com";
		
				//itemImagePopUpDiv.removeChild(itemImagePopUpIFrame);
				//itemImagePopUpDiv.appendChild(e_IFrame);
				itemImagePopUpDiv.replaceChild(e_IFrame, itemImagePopUpIFrame);
		
				itemImagePopUpIFrame = e_IFrame;
				//itemImagePopUpIFrame = document.getElementById("itemImagePopUpIFrame"); // <iframe>
			}
		}
	}
	catch(e)
	{
	    ProcessException(e, "createPopUpImageDivAndIFrame()");
	}
	finally
	{
	}
}

// assumes itemImagePopUpDiv and itemImagePopUpIFrame originally created in HTML
function clonePopUpImageDivAndIFrame(sSrc)
{
	try
	{
		//var e_Div    = null; //document.createElement("DIV");
		//var e_IFrame = null; //document.createElement("IFRAME");
		
		//e_Div    = itemImagePopUpDiv.cloneNode(true);
		//e_IFrame = e_Div.firstChild;
		
		if(itemImagePopUpDiv != null && itemImagePopUpIFrame != null)
		{
			var e_IFrame = null; //document.createElement("IFRAME");
			e_IFrame = itemImagePopUpIFrame.cloneNode(true);
		
			if(e_IFrame != null)
			{
				if(sSrc != null && sSrc.length > 0)
				{
					e_IFrame.src = sSrc;
				}
		
				//itemImagePopUpDiv.removeChild(itemImagePopUpIFrame);
				//itemImagePopUpDiv.appendChild(e_IFrame);
				itemImagePopUpDiv.replaceChild(e_IFrame, itemImagePopUpIFrame);
		
				itemImagePopUpIFrame = e_IFrame;
				//itemImagePopUpIFrame = document.getElementById("itemImagePopUpIFrame"); // <iframe>
			}
		}
	}
	catch(e)
	{
	    ProcessException(e, "clonePopUpImageDivAndIFrame()");
	}
	finally
	{
	}
}
