// JavaScript Document

/*
* 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);
	}
}

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);
		new Effect.Center('errorBox');
		new Effect.Appear('errorBox',{to:0.8});
		
	}
	
}

/*
* 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';

}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}