/********************************************************************
* Copyright ©  Acsys, Inc.  All rights reserved.
* 
* This material contains the valuable properties and trade secrets of
* Acsys, Inc. embodying substantial creative efforts and confidential 
* information, ideas, and expressions, no part of which may be 
* reproduced or transmitted in any form or by any means, electronic, 
* mechanical, or otherwise, including photocopying and recording or 
* in connection with any information storage or retrieval system 
* without the permission in writing of Acsys, Inc.
*/

/********************************************************************
* This library defines a class for managing cookies.
* 
* Dependencies: 
*	AcsysMain.js
*/

//------------------------------------------------------------------------
// GetPageX, GetPageY
//
// Returns the absolute X or Y coordinate of the elementect
//
// based on method described in "Determining Element Page Coordinates"
// found at http://www.webreference.com/dhtml/diner/realpos/
//
// returns: integer
//------------------------------------------------------------------------
function GetPageX(id)
{
	return GetElementPageX(document.getElementById(id));
}

function GetElementPageX(element)
{
	if (!element || !browser)
	{
		return 0;
	}

	if (browser.IsNN4)
	{
		return (element.pageX) ? element.pageX : 0;
	}

	if (browser.IsDOM)
	{
		var pageX = element.offsetLeft;
		var parent = element.offsetParent;
		var items = "";

		while (parent != null)
		{
			items += parent.tagName + " " + parent.offsetLeft + " " + parent.style + "\n" ;
			pageX += parseInt(parent.offsetLeft);

			if (parent.tagName == "TD" && !browser.IsIE) 
			{
				//alert(parent.clientTop);
			}
			
			if (parent.tagName == "TABLE") 
			{
				if (!isNaN(parseInt(parent.border)))
				{
					pageX += parseInt(parent.border);
				}
			}
			parent = parent.offsetParent;
		}
		//alert(items);
		return pageX;
	}
	else
	{
		return element.offsetLeft;
	}
}

function GetPageY(id)
{
	return GetElementPageY(document.getElementById(id));
}

function GetElementPageY(element)
{
	if (!element || !browser)
	{
		return 0;
	}

	if (browser.IsNN4)
	{
		return (element.pageY) ? element.pageY : 0;
	}
  
	if (browser.IsDOM)
	{
		var pageY = element.offsetTop;
		var parent = element.offsetParent;

		while (parent != null)
		{
			pageY += parseInt(parent.offsetTop);
			if (parent.tagName == "TABLE") 
			{
				if (!isNaN(parseInt(parent.border)))
				{
					pageY += parseInt(parent.border);
				}
			}
			parent = parent.offsetParent;
		}
		return pageY;
	}
	else
	{
	return element.offsetTop;
	}
}

function GetWidth(id)
{
	return GetElementWidth(document.getElementById(id));
}

function GetElementWidth(element)
{
	if (!element || !browser)
	{
		return 0;
	}
  
	if (browser.IsNN4)
	{
		return (element.clip.width) ? element.clip.width : 0;
	}
	else // if (browser.IsDOM)
	{
		return (element.style.visibility == "hidden") ? element.scrollWidth : element.offsetWidth;
	}
}

function SetWidth(id, width)
{
	return SetElementWidth(document.getElementById(id), width);
}

function SetElementWidth(element, width)
{
	if (!element || !browser)
	{
		return -1;
	}

	if (browser.IsNN4)
	{
		element.clip.width = width;
	}

	if (browser.IsDOM)
	{
		element.style.pixelWidth = width;
		element.style.width = width + "px";
	}
	
	return width;
}

function GetHeight(id)
{
	return GetElementHeight(document.getElementById(id));
}

function GetElementHeight(element)
{
	if (!element || !browser)
	{
		return 0;
	}

	if (browser.IsNN4)
	{
		return (element.clip.height) ? element.clip.height : 0;
	}
	else if (browser.IsDOM)
	{
		return parseInt(element.offsetHeight);
	}
	else if (browser.IsIE4 || browser.IsIE5)
	{
		return (element.style.visibility == "hidden") ? parseInt(element.scrollHeight) : parseInt(element.offsetHeight);
	}
}

function SetHeight(id, height)
{
	return SetElementHeight(document.getElementById(id), height);
}

function SetElementHeight(element, height)
{
	if (!element || !browser)
	{
		return -1;
	}
  
	if (browser.IsNN4)
	{
		element.clip.height = theHeight;
	}

	if (browser.IsDOM)
	{
		element.style.pixelHeight = height;
		element.style.height = height + "px";
	}
	/*
	if (browser.IsDOM)
	{
		element.style.clip = "rect(0 " + GetElementWidth(element) + " " + height + " 0)";
	}*/
	
	return height;
}

function Center(id)
{
	CenterElement(document.getElementById(id));
}

function CenterElement(element)
{
	if (!element || !browser)
	{
		return;
	}

	var iWidth = GetElementWidth(element);
	var iHeight = GetElementHeight(element);
	var iClientWidth = GetClientWidth();
	var iClientHeight = GetClientHeight();
	var iMoveY = (iClientWidth - iWidth)/2;
	var iMoveX = (iClientHeight - iHeight)/2;
	iMoveY = (iMoveY < 0) ? 0 : iMoveY;
	iMoveX = (iMoveX < 0) ? 0 : iMoveX;

	MoveTo(element, iMoveY, iMoveX);
}

function GetClientWidth()
{
	if (!browser)
	{
		return 0;
	}

	if (browser.IsNN4)
	{
		return window.innerWidth;
	}
	else //if (IsDOM)
	{
		return document.body.clientWidth;
	}
}

function GetClientHeight()
{
	if (!browser)
	{
		return 0;
	}

	if (browser.IsNN4)
	{
		return window.innerHeight;
	}
	else //if (IsDOM)
	{
		return document.body.clientHeight;
	}
}

function GetDocumentWidth()
{
	if (!browser)
	{
		return 0;
	}

	if(browser.IsNN4 == true)
	{
		return window.innerWidth + window.pageXOffset;
	}
	else
	{
		return document.body.scrollWidth;
	}
}

function GetDocumentHeight()
{
	if (!browser)
	{
		return 0;
	}

	if(browser.IsNN4 == true)
	{
		return window.innerHeight + window.pageYOffset;
	}
	else
	{
		return document.body.scrollHeight;
	}
}

function SetZIndex(id, zIndex)
{
	return SetElementZIndex(document.getElementById(id), zIndex);
}

function SetElementZIndex(element, zIndex)
{
	if (!element || !browser)
	{
		return -1;
	}

	if (browser.IsIE4 || browser.IsDOM)
	{
		element.style.zIndex = zIndex;
	}

	if (browser.IsNN4)
	{
		element.zIndex = zIndex;
	}
	
	return zIndex;
}

function SetVisibility(id, visibility)
{
	SetElementVisibility(document.getElementById(id), visibility);
}

function SetElementVisibility(element, visibility)
{
	if (!element || !browser)
	{
		return;
	}

	if (browser.IsIE4 || browser.IsDOM)
	{
		element.style.visibility = visibility;
	}

	if (browser.IsNN4)
	{
		element.visibility = (visibility.search(/^visible$/i) > -1) 
			? "show"
			: "hide";
	}
}

function MoveTo(id, cx, cy)
{
	MoveElementTo(document.getElementById(id), cx, cy);
}

function MoveElementTo(element, cx, cy)
{
	if (!element || !browser)
	{
		return;
	}

	if (browser.IsNN4)
	{
		element.moveTo(cx, cy);
	}
	else if (browser.IsDOM)
	{
		element.style.left = cx + "px";
		element.style.top  = cy + "px";
		//element.style.setProperty("left", cx + "px", ""); // element.style.left = cx;
		//element.style.setProperty("top", cy + "px", ""); //element.style.top  = cy;
	}
	else if (browser.IsIE4 || browser.IsIE5)
	{
		element.style.pixelLeft = cx;
		element.style.pixelTop  = cy;
	}
}

function MoveBy(id, dx, dy)
{
	MoveElementTo(document.getElementById(id), dx, dy);
}

function MoveElementBy(element, dx, dy)
{
	if (!element || !browser)
	{
		return;
	}

	if (browser.IsNN4)
	{
		element.moveBy(dx, dy);
	}
	else if (browser.IsDOM)
	{
		element.style.left += dx;
		element.style.top  += dy;
	}
	else if (browser.IsIE4 || browser.IsIE5)
	{
		element.style.pixelLeft += dx;
		element.style.pixelTop  += dy;
	}
}

function IsChild(parentID, childID)
{
	if (!parentID || !childID)
	{
		return false;
	}
	var parentElement = document.getElementById(parentID);
	var childElement = document.getElementById(childID);
	
	if (!parentElement || !childElement || !browser)
	{
		return false;
	}

	if (browser.IsDOM)
	{
		var parent = childElement.parentNode;

		while (parent != null)
		{
			if (parent == parentElement)
			{
				return true;
			}
			parent = parent.parentNode;
		}
	}
	return false;
	
}

//------------------------------------------------------------------------
// HandleResize() 
//
// Netscape 4.x resize bug handler. On resize, Netscape will trash 
// positions of CSS positioned elements, forcing the need for a page
// reload to reset them, however, NS 4.0x browsers toss an extra resize 
// event after a page loads and scroll bars are added causing an infinite
// loop of page reloads. To work around, we must save the original
// window size in a global to see if we have a true resize event before
// reloading the page.
//
// Add the line "onresize='HandleResize();'" to the body to tag to enable
//------------------------------------------------------------------------
if(browser.IsNN4 == true)
{
  var origWidth   = window.innerWidth;
  var origHeight = window.innerHeight;
}

function HandleResize()
{
  if(browser.IsNN4 == true)
    if (window.innerWidth != origWidth || window.innerHeight != origHeight)
      self.location.reload();
}
