﻿XmlHttp = {
	get: function(callback, url, userdata1, userdata2) {
		return this._send(callback, url, 'GET', null, true, userdata1, userdata2);
	},

	sget: function(callback, url, userdata1, userdata2) {
		return this._send(callback, url, 'GET', null, false, userdata1, userdata2);
	},
	
	post: function(callback, url, msg, userdata1, userdata2) {
		return this._send(callback, url, 'POST', msg, true, userdata1, userdata2);
	},

	spost: function(callback, url, msg, userdata1, userdata2) {
		return this._send(callback, url, 'POST', msg, false, userdata1, userdata2);
	},
	
	_send: function(cb, url, meth, msg, async, ud1, ud2) {
		var r = this._create(), hascb = typeof(cb) == 'function';
		if (!r) return false;
		
		r.open(meth, url, async);
		
		if (async && hascb)
			r.onreadystatechange = function() { if (r.readyState == 4) cb(r, ud1, ud2); };
		
		r.send(msg);

		if (!async && hascb)
			cb(r, ud1, ud2);
		
		return true;
	},
	
	_create: function() {
		if (window.XMLHttpRequest)
			return new XMLHttpRequest();
		else if (window.ActiveXObject) {
			try { return new ActiveXObject('Msxml2.XMLHTTP'); }
			catch(e) {
				try { return new ActiveXObject('Microsoft.XMLHTTP'); }
				catch(e) {}
			}
		}
		return null;
	}
};
