function Notify() {
	/* to allow java-esque self referencing */
	var self = this;
	
	this.tell = function( tell, arg, callback ) {
		/* create the correct url with the [eself] tag */
		var url = '/?q=yyy&amp;notify=xxx';
		
		/* js-replace the parameters (for now, we can only pass one string arg) */
		var re = new RegExp ('xxx', 'gi'); url = url.replace( re, tell );
		var re = new RegExp ('yyy', 'gi'); url = url.replace( re, arg  );
		
		var req;
		/* initalise the obj.req object (moz or ie) */
		if (window.XMLHttpRequest)     { req = new XMLHttpRequest();                   }
		else if (window.ActiveXObject) { req = new ActiveXObject("Microsoft.XMLHTTP"); }
		
		/* start the request, and push it into uids */
		req.onreadystatechange = function() {
			/* when the xml doc has been loaded,  */
			if( req.readyState == 4 && req.status == 200 ) {
				
				var obj = new Object;
				/* extract the return values */
				var tags = req.responseXML.getElementsByTagName('retr');
				for( var n=0; n<tags.length; n++ ) {
					obj[tags[n].getAttribute('id')] = tags[n].textContent;
				}
				
				/* call back the callback function (duh) */
				callback( arg, obj );
			}
		};
		
		req.open("GET", url, true);
		req.send(null);
	}
}

var notify = new Notify();
