//** File Details **********************************************************************************
//** Author:		Benjé Mouton
//** Company:		Zero Zero One - Digital Construction
//** Date Created:	15 September 2004
//** Description:	Get offset of two windows...
//** Project:		FM-Web Prototype
//**************************************************************************************************

	function GetRelativeOffset(objSourceElement, objTargetElement) {
		var arrOffsets = {x: 0, y: 0};
		arrOffsets.x = Math.max(objSourceElement.screenLeft, objTargetElement.screenLeft) - Math.min(objSourceElement.screenLeft, objTargetElement.screenLeft);
		arrOffsets.y = Math.max(objSourceElement.screenTop, objTargetElement.screenTop) - Math.min(objSourceElement.screenTop, objTargetElement.screenTop);
		arrOffsets.y = arrOffsets.y / 2;
		
		return arrOffsets;
	}
	
//** File Details **********************************************************************************
//** Author:		Benjé Mouton
//** Company:		Zero Zero One - Digital Construction
//** Date Created:	4 August 2004
//** Description:	Get offset of HTML element...
//** Project:		FM-Web Prototype
//**************************************************************************************************

	function GetRelativePosition(objSourceElement) {
		var arrOffsets = {x: 0, y: 0};

		while (objSourceElement != null) {
			arrOffsets.x += objSourceElement.offsetLeft;
			arrOffsets.y += objSourceElement.offsetTop;
			objSourceElement = objSourceElement.offsetParent;
		}

		return arrOffsets;
	}

//** File Details **********************************************************************************
//** Author:		Benjé Mouton
//** Company:		Zero Zero One - Digital Construction
//** Date Created:	4 August 2004
//** Description:	Set the CSS class of the element...
//** Project:		FM-Web Prototype
//**************************************************************************************************

	function SetClass(objSourceElement, strClass) {
		if (objSourceElement != null) {
			objSourceElement.className = strClass;
		}
	}
	
	function SetLocation(objTargetWindow, strURL) {
		objTargetWindow.location.href = strURL;
	}
	
//** File Details **********************************************************************************
//** Author:		Benjé Mouton
//** Company:		Zero Zero One - Digital Construction
//** Date Created:	4 August 2004
//** Description:	Get HTML control or element position...
//** Project:		FM-Web Prototype
//**************************************************************************************************

	function OpenWindow(strURL, intTop, intLeft, intHeight, intWidth) {
		var objNewWindow = null;
		var strOptions = "toolbar=no,location=no,menubar=no,scrollbars=no,resizable=no,top=" + intTop + ",left=" + intLeft + ",height=" + intHeight + ",width=" + intWidth;

		objNewWindow = window.open(strURL, "objNewWindow", strOptions);
		objNewWindow.focus();
	}
	
	function GetElementPosition(objElement) {
		var arrCoordinates = {x: 0, y: 0};

		while (objElement) {
			arrCoordinates.x += objElement.offsetLeft;
			arrCoordinates.y += objElement.offsetTop;
			objElement = objElement.offsetParent;
		}

		return arrCoordinates;
	}

	function GetElementRelativePosition(objSourceElement, objTargetElement) {
		var arrCoordinates = {x: 0, y: 0};

		while (objSourceElement) {
			if (objSourceElement != objTargetElement) {
				arrCoordinates.x += objSourceElement.offsetLeft;
				arrCoordinates.y += objSourceElement.offsetTop;
			} 
			objSourceElement = objSourceElement.offsetParent;
		}
		
		return arrCoordinates;
	}

	function GetElementParentTag(objElement, strTagName) {
		var objParentTag = objElement;
		
		while (objParentTag) {
			if (objParentTag.tagName == strTagName.toUpperCase()) {
				return objParentTag;
			}
			objParentTag = objParentTag.parentNode;
		}
	}
	
	function GetMousePosition(intOffsetX, intOffsetY) {
		var arrCoordinates = {x: 0, y: 0};

		arrCoordinates.x = event.clientX + intOffsetX;
		arrCoordinates.y = event.clientY + intOffsetY;

		return arrCoordinates;
	}
	
//** File Details **********************************************************************************
//** Author:		Benjé Mouton
//** Company:		Zero Zero One - Digital Construction
//** Date Created:	4 August 2004
//** Description:	Get the id of an iframe from within the content document...
//** Project:		FM-Web Prototype
//**************************************************************************************************

	function GetIFrame() {
		var objParent = parent.document;
		var objIFrames = objParent.getElementsByTagName("IFRAME");
		var strIFrameID = null;

		for (var i = 0; i < objIFrames.length; i++) {
			if (objIFrames[i].Document == self.document) {
				strIFrameID = objIFrames[i].id;
			}
		}

		return strIFrameID;
	}

//** File Details **********************************************************************************
//** Author:		Benjé Mouton
//** Company:		Zero Zero One - Digital Construction
//** Date Created:	4 August 2004
//** Description:	Switch the class of the element passed in the second parameter...
//** Project:		FM-Web Prototype
//**************************************************************************************************

	function ToggleClass(objDIV, strClass) {
		if (objDIV != null) {
			objDIV.className = strClass;
		}
	}

	function ToggleClassArray(strObjectArray, strClassArray) {
		if (strObjectArray != null && strClassArray != null) {
			for (var i = 0; i < strObjectArray.length; i++) {
				if (strObjectArray[i] != null && strClassArray[i] != null) {
					var objControl = document.getElementById(strObjectArray[i]);
					objControl.className = strClassArray[i];
				}
			}
		}
	}
	
	var objTreeViewPlus = new Image(9,9);
	var objTreeViewMinus = new Image(9,9);

	objTreeViewPlus.src = "/Images/treeview_plus.gif";
	objTreeViewMinus.src = "/Images/treeview_minus.gif";
	
	function ToggleTreeBranch(strImageID, strObjectID) {
		var objImageControl = document.getElementById(strImageID);
		var objControl = document.getElementById(strObjectID);
		
		if (objControl != null) {
			if (objControl.style.display == "none") {
				objControl.style.display = "block";
				objImageControl.src = objTreeViewMinus.src;
			} else {
				objControl.style.display = "none";
				objImageControl.src = objTreeViewPlus.src;
			}
		}
	}
	
	function ToggleDisplay(strObjectID) {
		var objControl = document.getElementById(strObjectID);
		
		if (objControl != null) {
			if (objControl.style.display == "none") {
				objControl.style.display = "block";
			} else {
				objControl.style.display = "none";
			}
		}
	}
	
	function HighlightRow(objRow, strBGColour) {
		if (objRow != null) {
			for (var i = 0; i < objRow.cells.length; i++) {
				objRow.cells[i].style.backgroundColor = strBGColour;
			}
		}
	}