/******************************************************************************* * 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 boundElements()  * @type boundElements  * @super Array  * @memberOf boundElements  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms537442.aspx*/function boundElements(){};boundElements.prototype= new Array();/**  * Property length  * @type Number  * @returns {Number}
  * @memberOf boundElements  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms534101.aspx*/boundElements.prototype.length=0;/**  * function item(vIndex,iSubindex)  * @param {Number} vIndex  * @param {Number} iSubindex  * @memberOf boundElements  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536460.aspx*/boundElements.prototype.item=function(vIndex,iSubindex){};/**  * function item(vIndex,iSubindex)  * @param {Number} vIndex  * @param {Number} iSubindex  * @memberOf boundElements  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536460.aspx*/boundElements.prototype.item=function(vIndex,iSubindex){};/**  * Property all  * @type all  * @returns {all}
  * @memberOf boundElements  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms537434.aspx*/boundElements.prototype.all= new all();/**  * function namedItem(sName)  * @param {String} sName  * @memberOf boundElements  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536634.aspx*/boundElements.prototype.namedItem=function(sName){};/**  * function tags(sTag)  * @param {Variant} sTag  * @memberOf boundElements  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536776.aspx*/boundElements.prototype.tags=function(sTag){};/**  * function urns(sUrn)  * @param {String} sUrn  * @memberOf boundElements  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536780.aspx*/boundElements.prototype.urns=function(sUrn){};