function newAJAX() {
	if (window.XMLHttpRequest) {
		return new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		return new ActiveXObject("Microsoft.XMLHTTP");
	}
	return null;
}

function retrieveTextUsingGet(url, callbackFunction) {
	var XMLHRO = newAJAX();
	if (XMLHRO != null) {
		XMLHRO.open("GET", url);
		XMLHRO.onreadystatechange = function()
		{	
			if (XMLHRO.readyState == 4 && XMLHRO.status == 200) { 
				callbackFunction(XMLHRO.responseText);
				
				delete XMLHRO;				
			}
		}
		XMLHRO.send(" ");	
	}
}

function retrieveXmlUsingGet(url, callbackFunction) {
	var XMLHRO = newAJAX();
	if (XMLHRO != null) {
		XMLHRO.open("GET", url);
		XMLHRO.onreadystatechange = function()
		{	
			if (XMLHRO.readyState == 4 && XMLHRO.status == 200) {  
				callbackFunction(XMLHRO.responseXML);
				
				delete XMLHRO;				
			}
		}
		XMLHRO.send(" ");	
	}
}

function retrieveTextUsingPost(url, data, callbackFunction) {
	var XMLHRO = newAJAX();
	if (XMLHRO != null) {
		XMLHRO.open("POST", url);
		XMLHRO.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');		
		XMLHRO.onreadystatechange = function()
		{	
			if (XMLHRO.readyState == 4 && XMLHRO.status == 200) { 
				callbackFunction(XMLHRO.responseText);
				
				delete XMLHRO;				
			}
		}
		XMLHRO.send(data);	
	}
}

function retrieveXmlUsingPost(url, data, callbackFunction) {
	var XMLHRO = newAJAX();
	if (XMLHRO != null) {
		XMLHRO.open("POST", url);
		XMLHRO.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');		
		XMLHRO.onreadystatechange = function()
		{	
			if (XMLHRO.readyState == 4 && XMLHRO.status == 200) { 
				callbackFunction(XMLHRO.responseXML);
				
				delete XMLHRO;				
			}
		}
		XMLHRO.send(data);	
	}
}

function simpleXmlIntoArray(xmldoc, tagname) {
	var output = new Array();	
	var tags = xmldoc.getElementsByTagName(tagname);
	var i;
	for (i = 0 ; i < tags.length ; i++) { 
		output.push(tags[i].firstChild.data);
	}
	return output;
}

function extendedXmlIntoArrays(xmldoc, tagname) {
	var output = new Array();		
	var tags = xmldoc.getElementsByTagName(tagname); 
	var i;	
	var j;
	var k = 0;
	for (i = 0 ; i < tags.length ; i++) { 
		output[i] = new Array();	
		k = 0; 
		for (j = 0 ; j < tags[i].childNodes.length ; j++) {
			var child = tags[i].childNodes[j];	
			if (child.firstChild != null && child.nodeType == 1) { 				
				output[i][k] = child.firstChild.data;
				k++ ;
			}			
		}			
	}	
	return output;
}

function addListener(type, callbackFunction)
{
	if (document.addEventListener) {
		document.addEventListener(type, callbackFunction, false);
	} else if (document.attachEvent) {
		document.attachEvent("on" + type, callbackFunction, false);
	}
}
function removeListener(type, callbackFunction)
{
	if (document.removeEventListener) {
		document.removeEventListener(type, callbackFunction, false);
	} else if (document.detachEvent) {
		document.detachEvent("on" + type, callbackFunction, false);
	}
}

function MouseEvent(e)
{
	if(e) {
		this.e = e;
	} else {
		this.e = window.event;
	}
	if(e.pageX) {
		this.x = e.pageX;
	} else {
		this.x = e.clientX;
	}
	if(e.pageY) {
		this.y = e.pageY;
	} else {
		this.y = e.clientY;
	}
	if(e.target) {
		this.target = e.target;
	} else {
		this.target = e.srcElement;
	}
}