interface XMLHttpRequest {
// STATE
attribute int readyState; // readonly
attribute EventListener onreadystatechange;
const unsigned short UNSENT = 0; // innerHTML == "uninitialized"
const unsigned short OPENED = 1; // innerHTML == "loading"
const unsigned short HEADERS_RECEIVED = 2; // innerHTML == "loaded"
const unsigned short LOADING = 3; // innerHTML == "interactive"
const unsigned short DONE = 4; // innerHTML == "complete"
// REQUEST
void open(DOMString method, DOMString url, boolean async);
void open(DOMString method, DOMString url, boolean async, DOMString user, DOMString password);
void setRequestHeader(DOMString header, DOMString value);
void send(in DOMString data);
void send(in Document data);
void abort();
// RESPONSE readonly
attribute Document responseXML;
attribute DOMString responseText;
attribute int status;
attribute DOMString statusText;
DOMString getAllResponseHeaders();
DOMString getResponseHeader(in DOMString header);
};