XMLObject	= function(url, callbackID, data, method){
	var obj			=	this;
	this.tiedurl	=	url;
	this.callback	=	callbackID || function(){};
	obj.updating	=	false;
	obj.ajax		=	false;
	
	this.abort	=	function(){
		if(obj.updating){
			obj.updating	=	false;
			obj.ajax.abort();
			obj.ajax		=	null;
		}
	}
	
	this.send	=	function(data, method){
		if(obj.updating){ return(false); }
		obj.ajax = null;
		if (window.XMLHttpRequest) {
			obj.ajax = new XMLHttpRequest();
		} else if(window.ActiveXObject) {
			try { obj.ajax = new ActiveXObject("Msxml2.XMLHTTP");}
			catch(e) {
				try { obj.ajax = new ActiveXObject("Microsoft.XMLHTTP"); } 
				catch(e) { obj.ajax = false; }
			}
		}
		if (obj.ajax == null) {
			return false;
		} else {
			obj.ajax.onreadystatechange = function(){
				if(obj.ajax.readyState == 4){
					obj.updating	=	false;
					obj.callback(obj.ajax.responseText, obj.ajax.status, obj.ajax.responseXML);
					obj.ajax	=	null;
				}
			}
			obj.updating	=	new Date();
			if (/post/i.test(method)) {
				this.fullurl	=	this.tiedurl+'?'+this.updating.getTime();
				obj.ajax.open("POST", this.fullurl, true);
				obj.ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
				obj.ajax.setRequestHeader("Content-Length", data.length);
				obj.ajax.send(data);
			} else {
				this.fullurl	=	this.tiedurl+'?'+data+'&timestamp='+(this.updating.getTime()); 
				obj.ajax.open("GET", this.fullurl, true);
				obj.ajax.send(null);
			}
			return true;
		}
	}

	if(data) this.send(data, method);
};