	var gpX_obj;
	var gpX_que = false;
	var gpX_dest;
	var gpX_type;
	var gpX_xtra;
	
	function gpX(inType, inDest, inHttp, inXtra) {
		//inType = func, div
		//inDest = name of function or div
		//inHttp = page to execute
		//inXtra = extra functions to run after execution of ajax (semi-colon separated)
				
		if (inXtra!='' && inXtra!=null){gpX_xtra=inXtra} else {gpX_xtra=''}
		
		if(inType==1){
			gpX_type 	= 'func';
			gpX_dest	= inDest;
		}
		else {
			gpX_type 	= 'div';
			gpX_dest 	= document.getElementById(inDest);
		}
		
		if (gpX_dest!=null && inHttp!='' && inHttp!=null){
			var url = inHttp
			if (url.indexOf('?')==-1){url=url+"?gpX="+ Math.random()}else{url=url+"&gpX="+ Math.random()};
			document.body.style.cursor='wait';
			gpX_getAjax(url);
		}
		
	}

	function gpX_getAjax(inUrl){
		gpX_obj = gpX_getXMLHttpObject();
		if (gpX_obj==null) {
		  alert ("Your browser does not support AJAX!\n\nPlease upgrade to the most current browser version to take full advantage of this site.");
		  return;
		}
		else {
			gpX_obj.onreadystatechange = gpX_stateChanged;
			gpX_obj.open("GET", inUrl, true);
			gpX_obj.send(null);
		}
	}
	
	function gpX_stateChanged() {
		if (gpX_obj.readyState==4) {
			var xmlText = gpX_obj.responseText;
			if (gpX_dest!=null){
				switch (gpX_type) {
					case 'func':
						window[gpX_dest](xmlText);
						break;
					case 'div':
						gpX_dest.innerHTML 			= xmlText;
						gpX_dest.style.display		= 'block';
						gpX_dest.style.visibility	= 'visible';
						gsGrow(0); //shrinks gs
						if (gpX_xtra!=''){gpX_runXtra(gpX_xtra)}
						break;
				}
			}
			document.body.style.cursor='default';
		}
	}

	function gpX_getXMLHttpObject() {
		var xmlHttp=null;
		// Firefox, Opera 8.0+, Safari
		try {xmlHttp=new XMLHttpRequest();}
		// Internet Explorer
		catch (e) {
			try {xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");}
			catch (e) {xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");}
		}
		return xmlHttp;
	}

	function gpX_runXtra(inXtra) {
		//parse and run semi-colon list of js functions
		var vXtra = inXtra;
		var aXtra	= vXtra.split(';');
		for (var loop=0; loop < aXtra.length; loop++)
		{
			vXtra = aXtra[loop];
		    if (vXtra=='gpf'){
		    	gpf_setup();
		    } else {
		    	eval(vXtra);
		    }
		}
	}
