var requests = new Object();
function fetch(requestName,url,processChangeMethodStr,fetchAsyc){
	requests[requestName]=null;
	if (window.XMLHttpRequest) {
		requests[requestName]=new XMLHttpRequest();
		if(fetchAsyc==true)requests[requestName].onreadystatechange=eval(processChangeMethodStr);
		requests[requestName].open("GET",url,fetchAsyc);
		requests[requestName].send(null);
	} else if (window.ActiveXObject) {
		requests[requestName] = new ActiveXObject("Microsoft.XMLHTTP");
		if(fetchAsyc == true)requests[requestName].onreadystatechange=eval(processChangeMethodStr);
		requests[requestName].open("GET", url, fetchAsyc);
		requests[requestName].send();
	}
	if(fetchAsyc==false)eval(processChangeMethodStr);
}
function getXMLData(request,pathEls,startObj,returnObj){
	path=new Array()
	path=pathEls;
	if(isValidXML(request)){
		currEl=startObj?startObj:request.responseXML;i=0;
		if(path.length%2==0){
			while(i<path.length){
				thisElName=path[i];
				thisElIndex=path[i+1];
				i+=2;
				if(!currEl)return null;
				currEl=currEl.getElementsByTagName(thisElName);
				if(!currEl||currEl.length<thisElIndex)return null;
				currEl=currEl.item(thisElIndex);
			}
			return(!currEl?null:returnObj==true?currEl:currEl.firstChild.nodeValue);
		}else{return null;}
	}	
}
function isValidXML(request){
	return((request && request.readyState==4 && request.status==200)?true:false);
}