/******************************************************************************* * 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 v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: *     IBM Corporation - initial API and implementation ****************************************************************************** * **//**  * Object dataTransfer()  * @type dataTransfer  * @super Object  * @memberOf dataTransfer  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms535861.aspx*/function dataTransfer(){};dataTransfer.prototype= new Object();/**  * Property dropEffect  * @type String  * @returns {String}
  * @memberOf dataTransfer  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms533741.aspx*/dataTransfer.prototype.dropEffect="";/**  * Property effectAllowed  * @type String  * @returns {String}
  * @memberOf dataTransfer  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms533743.aspx*/dataTransfer.prototype.effectAllowed="";/**  * function clearData(sDataFormat)  * @param {String} sDataFormat  * @memberOf dataTransfer  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536352.aspx*/dataTransfer.prototype.clearData=function(sDataFormat){};/**  * function clearData(sDataFormat)  * @param {String} sDataFormat  * @memberOf dataTransfer  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536352.aspx*/dataTransfer.prototype.clearData=function(sDataFormat){};/**  * Property clipboardData  * @type clipboardData  * @returns {clipboardData}
  * @memberOf dataTransfer  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms535220.aspx*/dataTransfer.prototype.clipboardData= new clipboardData();/**  * function getData(sDataFormat)  * @param {String} sDataFormat  * @type String  * @returns {String}
  * @memberOf dataTransfer  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536436.aspx*/dataTransfer.prototype.getData=function(sDataFormat){};/**  * function setData(sDataFormat,sData)  * @param {String} sDataFormat  * @param {String} sData  * @type Boolean  * @returns {Boolean}
  * @memberOf dataTransfer  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536744.aspx*/dataTransfer.prototype.setData=function(sDataFormat,sData){};