function Browser()
{
}

function MozBrowser() { }

MozBrowser.prototype = new Browser;

MozBrowser.prototype.newXMLHttpRequest = function () {
    return new XMLHttpRequest();
};

// MSIE-style browser

function MSIEBrowser() { }

MSIEBrowser.prototype = new Browser;

MSIEBrowser.prototype.newXMLHttpRequest = function () {
    return new ActiveXObject("Microsoft.XMLHTTP");
};

if (navigator.userAgent.indexOf("MSIE") > 0) {
    window.browser = new MSIEBrowser();
} else {
    window.browser = new MozBrowser();
}


function xmljs (doc) {
   var obj = new Object;
   var elt = doc.firstChild;
   var i;

   obj._type = elt.tagName;
   var attrs = elt.attributes;

   for (i = 0; i < attrs.length; i++) {
      obj[attrs[i].nodeName] = attrs[i].nodeValue;
   }

   return obj;
}


function ajaxCall(path, args, callback, data) {
    var req = browser.newXMLHttpRequest();

    req.onreadystatechange = function () {
	if (req.readyState == 4) {
	    callback(xmljs(req.responseXML), data);
	}
    };

    var argstring = "_=1";
    for (name in args) {
	argstring += "&" + encodeURIComponent(name) + "=" + 
	    encodeURIComponent(args[name]);
    }

    req.open("POST", "http://wigflip.com" + path);
    req.setRequestHeader('Content-Type',
			 'application/x-www-form-urlencoded');
    req.send(argstring);
}
