/******************************************************************************* * Copyright (c) 2007, 2008 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v2.0 * which accompanies this distribution, and is available at * https://www.eclipse.org/legal/epl-2.0/ * * Contributors: *     IBM Corporation - initial API and implementation ****************************************************************************** * **//**  * Object XMLHttpRequest()  * @type XMLHttpRequest  * @super Object  * @memberOf XMLHttpRequest  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms535874.aspx*/function XMLHttpRequest(){};XMLHttpRequest.prototype= new Object();/**  * Property onreadystatechange  * @type Object  * @returns {Object}  * @memberOf XMLHttpRequest  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms534308.aspx*/XMLHttpRequest.prototype.onreadystatechange=new Object();/**  * Property readyState  * @type Number  * @returns {Number}  * @memberOf XMLHttpRequest  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms534361.aspx*/XMLHttpRequest.prototype.readyState=0;/**  * Property responseBody  * @type Object  * @returns {Object}  * @memberOf XMLHttpRequest  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms534368.aspx*/XMLHttpRequest.prototype.responseBody=new Object();/**  * Property responseText  * @type String  * @returns {String}  * @memberOf XMLHttpRequest  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms534369.aspx*/XMLHttpRequest.prototype.responseText="";/**  * Property responseXML  * @type Object  * @returns {Object}  * @memberOf XMLHttpRequest  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms534370.aspx*/XMLHttpRequest.prototype.responseXML=new Object();/**  * Property status  * @type Number  * @returns {Number}  * @memberOf XMLHttpRequest  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms534650.aspx*/XMLHttpRequest.prototype.status=0;/**  * Property statusText  * @type String  * @returns {String}  * @memberOf XMLHttpRequest  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms534647.aspx*/XMLHttpRequest.prototype.statusText="";/**  * function abort()  * @memberOf XMLHttpRequest  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms535920.aspx*/XMLHttpRequest.prototype.abort=function(){};/**  * function getAllResponseHeaders()  * @type String  * @returns {String}  * @memberOf XMLHttpRequest  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536428.aspx*/XMLHttpRequest.prototype.getAllResponseHeaders=function(){};/**  * function getResponseHeader(bstrHeader)  * @param {String} bstrHeader  * @type String  * @returns {String}  * @memberOf XMLHttpRequest  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536442.aspx*/XMLHttpRequest.prototype.getResponseHeader=function(bstrHeader){};/**  * function open(sMethod,sUrl,bAsync,sUser,sPassword)  * @param {String} sMethod  * @param {String} sUrl  * @param {Variant} bAsync  * @param {Variant} sUser  * @param {Variant} sPassword  * @memberOf XMLHttpRequest  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536648.aspx*/XMLHttpRequest.prototype.open=function(sMethod,sUrl,bAsync,sUser,sPassword){};/**  * function send(varBody)  * @param {Variant} varBody  * @memberOf XMLHttpRequest  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536736.aspx*/XMLHttpRequest.prototype.send=function(varBody){};/**  * function setRequestHeader(sName,sValue)  * @param {String} sName  * @param {String} sValue  * @memberOf XMLHttpRequest  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536752.aspx*/XMLHttpRequest.prototype.setRequestHeader=function(sName,sValue){};