/******************************************************************************* * 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 attributes()  * @type attributes  * @super Array  * @memberOf attributes  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms537438.aspx*/function attributes(){};attributes.prototype= new Array();/**  * Property length  * @type Number  * @returns {Number}
  * @memberOf attributes  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms534101.aspx*/attributes.prototype.length=0;/**  * function getNamedItem(sGetName)  * @param {String} sGetName  * @type attribute  * @returns {attribute}
  * @memberOf attributes  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536441.aspx*/attributes.prototype.getNamedItem=function(sGetName){};/**  * function getNamedItem(sGetName)  * @param {String} sGetName  * @type attribute  * @returns {attribute}
  * @memberOf attributes  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536441.aspx*/attributes.prototype.getNamedItem=function(sGetName){};/**  * Property attribute  * @type attribute  * @returns {attribute}
  * @memberOf attributes  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms535187.aspx*/attributes.prototype.attribute= new attribute();/**  * Property name  * @type String  * @returns {String}
  * @memberOf attributes  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms534184.aspx*/attributes.prototype.name="";/**  * function item(vIndex)  * @param {Number} vIndex  * @memberOf attributes  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536462.aspx*/attributes.prototype.item=function(vIndex){};/**  * function removeNamedItem(sName)  * @param {String} sName  * @type attribute  * @returns {attribute}
  * @memberOf attributes  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536706.aspx*/attributes.prototype.removeNamedItem=function(sName){};/**  * function setNamedItem(oNamedItem)  * @param {attribute} oNamedItem  * @type attribute  * @returns {attribute}
  * @memberOf attributes  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536751.aspx*/attributes.prototype.setNamedItem=function(oNamedItem){};