﻿/*
* utility functions
* version 1.1 11/5/07
*
* update setPos() to stop popups going of screen
*/

function callInProgress (xmlhttp) {
	if(xmlhttp==null)
		return false;

	switch (xmlhttp.readyState) {
		case 1: case 2: case 3:
			return true;
			break;

		// Case 4 and 0
		default:
			return false;
			break;

	}
}

/***********************************************************
* search in an array of nodes for the one with the passed id
*
* returns node if found or false if not
*
* id : string, the id of the node to find
* nodeArray : array of nodes
************************************************************/
function findNodeById(id,nodeArray){
	for(var i = 0;i < nodeArray.length;i++) {
		
			if(nodeArray[i].id == id)
				return nodeArray[i];
	}

	return false;
}

/************************************************
* Replaces the a node in the parentNdoe with the 
* newnode of the same id if it exists, else adds the newNode
*************************************************/
function replaceChildNode(parentNode, newNode) {
	if(parentNode.hasChildNodes()) {
		parentNode.replaceChild(newNode,$(newNode.id));
	} else {
		parentNode.appendChild(newNode);
	}
}
var debug = true; 
function printDebug(message,e) {
	if(debug) {
		var err ="";
		if(e != undefined){
			if(e.message)
				err = e.message;
			else 
				err = e;
		}

		var alertBox = $('errorBox');
	
		if(alertBox != undefined)
			alertBox.parentNode.removeChild(alertBox);
		//alert(message);
		alertBox = document.createElement('div');
		alertBox.setAttribute('id','errorBox' );
		alertBox.innerHTML = err + ": " + message;
		alertBox.className = "errorBox";
		alertBox.style.display = 'none';
		var parent = document.getElementsByTagName('body').item(0);
		parent.insertBefore(alertBox,parent.firstChild);
	
		
	}
	
}

/*
* set postion of an object to the mouse position. crossbrowser
* 11/5/07 added code to keep object inside browser window
* 25/5/07  modified to stop popups going off screen
*/
function setPos(e, obj,offset) {
	var posx;
	var posy;

	if (!e) var e = window.event;
	if (e.pageX || e.pageY) {
		posx = e.pageX;
		posy = e.pageY;
	} else if (e.clientX || e.clientY) {
		if (document.documentElement) {
			posx = e.clientX + document.documentElement.scrollLeft;
			posy = e.clientY + document.documentElement.scrollTop;
		} else {
			posx = e.clientX + document.body.scrollLeft;
			posy = e.clientY + document.body.scrollTop;
		}
	}

	/******* modified to stop popups going off screen 30/5/07 *********/
	if (!window.innerHeight) {

		if(Element.getDimensions(obj).height + e.clientY > document.documentElement.clientHeight) {
			posy -= Element.getDimensions(obj).height - (document.documentElement.clientHeight - e.clientY);
			posx += offset['x'];
		} else if (offset) {
			posx += offset['x'];
			posy += offset['y'];
		}
	} else {
		var mouseYpos = e.pageY- window.pageYOffset;

		if(Element.getDimensions(obj).height+mouseYpos > window.innerHeight) {
			posy -= Element.getDimensions(obj).height - (window.innerHeight - mouseYpos);
			posx += offset['x'];
		} else if (offset) {
			posx += offset['x'];
			posy += offset['y'];
		}
	}

	/****** end modified **/

	//posx += offset['x'];
	//posy += offset['y'];

	obj.style.top = posy+'px';
	obj.style.left = posx+'px';

}
